@bluemarble/bi 0.4.0 → 0.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{DashboardDevtools-7L93aV1-.js → DashboardDevtools-SCewfQGR.js} +1081 -240
- package/dist/DashboardDevtools-SCewfQGR.js.map +1 -0
- package/dist/{ModelDictionary-Y7W9oK1J.js → ModelDictionary-C2tzlOY8.js} +82 -5
- package/dist/ModelDictionary-C2tzlOY8.js.map +1 -0
- package/dist/cli.d.ts +1 -0
- package/dist/cli.js +164 -0
- package/dist/cli.js.map +1 -0
- package/dist/client/index.d.ts +32 -3
- package/dist/client/index.js +79 -100
- package/dist/client/index.js.map +1 -1
- package/dist/codegen-DBe4-XW_.js +354 -0
- package/dist/codegen-DBe4-XW_.js.map +1 -0
- package/dist/{types-HXAn-3I1.d.ts → layout-B7eYgNyR.d.ts} +236 -150
- package/dist/{layout-676sEvvb.js → layout-BS51SQcJ.js} +242 -345
- package/dist/layout-BS51SQcJ.js.map +1 -0
- package/dist/server/index.d.ts +1 -1
- package/dist/server/index.js +2 -1
- package/dist/server/index.js.map +1 -1
- package/dist/types.d.ts +1 -1
- package/package.json +4 -1
- package/dist/DashboardDevtools-7L93aV1-.js.map +0 -1
- package/dist/ModelDictionary-Y7W9oK1J.js.map +0 -1
- package/dist/layout-676sEvvb.js.map +0 -1
|
@@ -119,6 +119,183 @@ declare function modelMeta(model: ModelDef): ModelMeta;
|
|
|
119
119
|
*/
|
|
120
120
|
declare function validateModel(model: ModelDef): string[];
|
|
121
121
|
//#endregion
|
|
122
|
+
//#region src/types.d.ts
|
|
123
|
+
type FilterValue = string | number;
|
|
124
|
+
/** Filtros por dimensão; lista vazia (ou ausente) = sem filtro ("Todos"). */
|
|
125
|
+
type DashboardFilters = Record<string, FilterValue[]>;
|
|
126
|
+
/**
|
|
127
|
+
* Pedidos do devtools. O servidor só aceita quando o `runQuery` recebe `devtools` (em dev); fora
|
|
128
|
+
* disso `debug` é ignorado e o resto é recusado com 400.
|
|
129
|
+
*/
|
|
130
|
+
type DashboardDevtoolsRequest = {
|
|
131
|
+
/** Devolve SQL compilado, parâmetros e tempos em `result.devtools.debug`. */
|
|
132
|
+
debug?: boolean;
|
|
133
|
+
/** Rascunho do modelo editado no devtools: substitui o modelo registrado só nesta consulta. */
|
|
134
|
+
model?: ModelDef;
|
|
135
|
+
/** Devolve a definição do modelo registrado e o que o servidor permite (`capabilities`). */
|
|
136
|
+
describe?: boolean;
|
|
137
|
+
/** Esvazia o cache de resultados do processo antes de executar. */
|
|
138
|
+
clearCache?: boolean;
|
|
139
|
+
/**
|
|
140
|
+
* Só compila: devolve o SQL e os parâmetros em `result.devtools.debug`, sem executar (o devtools
|
|
141
|
+
* usa para mostrar o SQL de uma consulta que deu erro).
|
|
142
|
+
*/
|
|
143
|
+
compile?: boolean;
|
|
144
|
+
/** Devolve o `EXPLAIN` da consulta em vez das linhas. */
|
|
145
|
+
explain?: boolean;
|
|
146
|
+
/** Mede a agregação de cada fato usada pela consulta, isoladamente. */
|
|
147
|
+
profile?: boolean;
|
|
148
|
+
/** Tabelas e colunas do banco (`information_schema`), para o autocomplete do editor. */
|
|
149
|
+
schema?: boolean;
|
|
150
|
+
/** Colunas de cada tabela (uma linha de cada), para o diagrama do modelo. */
|
|
151
|
+
columns?: boolean;
|
|
152
|
+
/** Executa cada pedaço do modelo (`devtools.model` ou o registrado) contra o banco. */
|
|
153
|
+
validate?: boolean;
|
|
154
|
+
/** Grava o rascunho no arquivo do modelo (`preview` só devolve o conteúdo novo). */
|
|
155
|
+
save?: 'preview' | 'write';
|
|
156
|
+
/** Grava o layout de gráficos em `<layoutsDir>/<id>.json` (`preview` só devolve o conteúdo novo). */
|
|
157
|
+
saveLayout?: {
|
|
158
|
+
layout: ChartsLayout;
|
|
159
|
+
mode: 'preview' | 'write';
|
|
160
|
+
};
|
|
161
|
+
/** Grava o resultado da consulta (modelo registrado) como snapshot de regressão. */
|
|
162
|
+
snapshot?: {
|
|
163
|
+
name: string;
|
|
164
|
+
overwrite?: boolean;
|
|
165
|
+
};
|
|
166
|
+
/** Lista os snapshots salvos deste modelo. */
|
|
167
|
+
snapshots?: boolean;
|
|
168
|
+
};
|
|
169
|
+
type DashboardQuery = {
|
|
170
|
+
model: string;
|
|
171
|
+
/** Dimensões agrupadas (viram GROUP BY). */
|
|
172
|
+
dimensions?: string[];
|
|
173
|
+
/** Medidas calculadas para cada grupo. */
|
|
174
|
+
measures?: string[];
|
|
175
|
+
filters?: DashboardFilters;
|
|
176
|
+
/** Devolve só os metadados do modelo (rótulos, descrições, formatos; sem SQL) em `result.meta`. */
|
|
177
|
+
meta?: boolean;
|
|
178
|
+
devtools?: DashboardDevtoolsRequest;
|
|
179
|
+
};
|
|
180
|
+
type DashboardRow = Record<string, string | number | null>;
|
|
181
|
+
type DashboardQueryDebug = {
|
|
182
|
+
sql: string;
|
|
183
|
+
params: (string | number)[];
|
|
184
|
+
/** Tempo da execução no banco (num cache hit, o da execução original). */
|
|
185
|
+
durationMs: number;
|
|
186
|
+
cached: boolean;
|
|
187
|
+
/** A consulta rodou contra o rascunho do devtools, não contra o modelo registrado. */
|
|
188
|
+
draft: boolean;
|
|
189
|
+
};
|
|
190
|
+
type ProfileStep = {
|
|
191
|
+
/** `fato:<tabela>` ou `consulta` (a consulta inteira). */
|
|
192
|
+
name: string;
|
|
193
|
+
durationMs: number;
|
|
194
|
+
/** Linhas da agregação da fato (grupos) com os filtros aplicados. */
|
|
195
|
+
rows: number | null;
|
|
196
|
+
};
|
|
197
|
+
type SchemaTable = {
|
|
198
|
+
name: string;
|
|
199
|
+
type: 'table' | 'view';
|
|
200
|
+
columns: {
|
|
201
|
+
name: string;
|
|
202
|
+
type: string;
|
|
203
|
+
}[];
|
|
204
|
+
};
|
|
205
|
+
/** Colunas devolvidas por cada pedaço do modelo (vazio quando não veio nenhuma linha). */
|
|
206
|
+
type ModelColumns = {
|
|
207
|
+
/** Colunas de cada tabela. */
|
|
208
|
+
tables: Record<string, string[]>;
|
|
209
|
+
/** `tabela.coluna` com valor numérico na linha lida. */
|
|
210
|
+
numeric: string[];
|
|
211
|
+
};
|
|
212
|
+
type ModelValidation = {
|
|
213
|
+
/**
|
|
214
|
+
* Erro do banco por pedaço: `table:<nome>`, `relationship:<índice>`, `dimension:<nome>`,
|
|
215
|
+
* `measure:<nome>`.
|
|
216
|
+
*/
|
|
217
|
+
errors: Record<string, string>;
|
|
218
|
+
warnings: Record<string, string>;
|
|
219
|
+
columns: ModelColumns;
|
|
220
|
+
};
|
|
221
|
+
type SaveModelResult = {
|
|
222
|
+
path: string;
|
|
223
|
+
previous: string;
|
|
224
|
+
content: string;
|
|
225
|
+
written: boolean;
|
|
226
|
+
warnings: string[];
|
|
227
|
+
};
|
|
228
|
+
type DashboardSnapshot = {
|
|
229
|
+
name: string;
|
|
230
|
+
createdAt: string;
|
|
231
|
+
query: Omit<DashboardQuery, 'devtools' | 'meta'>;
|
|
232
|
+
rows: DashboardRow[];
|
|
233
|
+
};
|
|
234
|
+
type DevtoolsCapabilities = {
|
|
235
|
+
/** O endpoint sabe onde ficam os arquivos dos modelos (`modelsDir`). */
|
|
236
|
+
saveModel: boolean;
|
|
237
|
+
/** O endpoint sabe onde gravar snapshots (`snapshotsDir`). */
|
|
238
|
+
snapshots: boolean;
|
|
239
|
+
/** O endpoint sabe onde ficam os arquivos de layout de gráficos (`layoutsDir`). */
|
|
240
|
+
saveLayout: boolean;
|
|
241
|
+
/** Tipos de gráfico do app que o endpoint conhece (`chartTypes`): só esses ele aceita salvar. */
|
|
242
|
+
chartTypes: string[];
|
|
243
|
+
};
|
|
244
|
+
type DashboardResult = {
|
|
245
|
+
rows: DashboardRow[];
|
|
246
|
+
meta?: ModelMeta;
|
|
247
|
+
devtools?: {
|
|
248
|
+
model?: ModelDef;
|
|
249
|
+
capabilities?: DevtoolsCapabilities;
|
|
250
|
+
debug?: DashboardQueryDebug;
|
|
251
|
+
explain?: DashboardRow[];
|
|
252
|
+
profile?: ProfileStep[];
|
|
253
|
+
schema?: SchemaTable[];
|
|
254
|
+
validation?: ModelValidation;
|
|
255
|
+
columns?: ModelColumns;
|
|
256
|
+
/** Pedaços que o banco recusou ao ler as colunas (mesmas chaves da validação). */
|
|
257
|
+
columnErrors?: Record<string, string>;
|
|
258
|
+
save?: SaveModelResult;
|
|
259
|
+
snapshot?: {
|
|
260
|
+
path: string;
|
|
261
|
+
};
|
|
262
|
+
snapshots?: DashboardSnapshot[];
|
|
263
|
+
};
|
|
264
|
+
};
|
|
265
|
+
//#endregion
|
|
266
|
+
//#region src/formatRules.d.ts
|
|
267
|
+
declare const COLUMN_ALIGNS: readonly ['left', 'center', 'right'];
|
|
268
|
+
type ColumnAlign = (typeof COLUMN_ALIGNS)[number];
|
|
269
|
+
declare const COLUMN_VERTICAL_ALIGNS: readonly ['top', 'middle', 'bottom'];
|
|
270
|
+
type ColumnVerticalAlign = (typeof COLUMN_VERTICAL_ALIGNS)[number];
|
|
271
|
+
declare const RULE_OPERATORS: readonly ['>', '>=', '<', '<=', '=', '!=', 'between', 'contains', 'empty', 'notEmpty'];
|
|
272
|
+
type RuleOperator = (typeof RULE_OPERATORS)[number];
|
|
273
|
+
type FormatRule = {
|
|
274
|
+
/**
|
|
275
|
+
* Dimensão ou medida avaliada. Pode estar fora da tabela: entra na consulta sem coluna (uma
|
|
276
|
+
* dimensão de fora divide as linhas se tiver mais de um valor por linha).
|
|
277
|
+
*/
|
|
278
|
+
field: string;
|
|
279
|
+
operator: RuleOperator;
|
|
280
|
+
/** Valor comparado com o valor bruto (percentual como fração: 10% = 0.1). */
|
|
281
|
+
value?: number | string;
|
|
282
|
+
/** Fim do intervalo do `between` (inclusivo, como o `value`). */
|
|
283
|
+
to?: number;
|
|
284
|
+
/** `cell` (padrão) pinta uma célula; `row`, a linha inteira. */
|
|
285
|
+
target?: 'cell' | 'row';
|
|
286
|
+
/** Coluna pintada quando `target` é `cell`. Padrão: o próprio `field`. */
|
|
287
|
+
column?: string;
|
|
288
|
+
/** Cor do texto. */
|
|
289
|
+
color?: string;
|
|
290
|
+
/** Cor de fundo. */
|
|
291
|
+
background?: string;
|
|
292
|
+
bold?: boolean;
|
|
293
|
+
/** Alinhamento horizontal da célula (ou das células da linha). */
|
|
294
|
+
align?: ColumnAlign;
|
|
295
|
+
/** Alinhamento vertical da célula (ou das células da linha). */
|
|
296
|
+
verticalAlign?: ColumnVerticalAlign;
|
|
297
|
+
};
|
|
298
|
+
//#endregion
|
|
122
299
|
//#region src/layout.d.ts
|
|
123
300
|
declare const CHART_TYPES: readonly ['kpi', 'combo', 'bar', 'donut', 'table'];
|
|
124
301
|
type ChartType = (typeof CHART_TYPES)[number];
|
|
@@ -206,14 +383,36 @@ type TableChartDef = BaseChartDef & ColumnsDisplay & {
|
|
|
206
383
|
percentOf?: string[];
|
|
207
384
|
/** Casas decimais das colunas de percentual. Padrão: 1. */
|
|
208
385
|
percentDecimals?: number;
|
|
386
|
+
/**
|
|
387
|
+
* Ordem das colunas misturando dimensões, medidas e percentuais (`%:medida`), ex.: uma medida
|
|
388
|
+
* antes de uma dimensão. Ausente = dimensões e depois medidas; percentual fora da ordem vem logo
|
|
389
|
+
* depois da medida dele (ou no fim, se a medida não é coluna).
|
|
390
|
+
*/
|
|
391
|
+
columnOrder?: string[];
|
|
209
392
|
/** Formatter por dimensão (`{ mes: 'nomeMes' }`). */
|
|
210
393
|
formatDimensions?: Record<string, string>;
|
|
211
394
|
/** Linha de total, consultada sem as dimensões (razões saem certas, não somadas). */
|
|
212
395
|
showTotal?: boolean;
|
|
213
|
-
/**
|
|
396
|
+
/**
|
|
397
|
+
* Dimensão ou medida da ordem inicial; o usuário reordena clicando no cabeçalho. Pode estar fora
|
|
398
|
+
* da tabela (ex.: número do mês para ordenar o nome do mês): entra na consulta sem coluna.
|
|
399
|
+
*/
|
|
214
400
|
sortBy?: string;
|
|
215
401
|
sortDirection?: 'asc' | 'desc';
|
|
216
402
|
clickToFilter?: boolean;
|
|
403
|
+
/** Formatação condicional: cor do texto/fundo da célula ou da linha conforme uma regra. */
|
|
404
|
+
formatRules?: FormatRule[];
|
|
405
|
+
/** Bordas entre as células (grade). Padrão: só a linha embaixo de cada linha. */
|
|
406
|
+
cellBorders?: boolean;
|
|
407
|
+
/** Cor das bordas da grade. */
|
|
408
|
+
borderColor?: string;
|
|
409
|
+
/**
|
|
410
|
+
* Alinhamento horizontal por coluna (`{ coluna: 'center' }`, `%:medida` para o percentual), no
|
|
411
|
+
* cabeçalho, nas células e no total. Padrão: dimensão à esquerda, número à direita.
|
|
412
|
+
*/
|
|
413
|
+
align?: Record<string, ColumnAlign>;
|
|
414
|
+
/** Alinhamento vertical por coluna (`top`, `middle`, `bottom`). Padrão: `middle`. */
|
|
415
|
+
verticalAlign?: Record<string, ColumnVerticalAlign>;
|
|
217
416
|
};
|
|
218
417
|
type KpiChartDef = Omit<BaseChartDef, 'height'> & ColumnsDisplay & {
|
|
219
418
|
type: 'kpi';
|
|
@@ -287,7 +486,7 @@ type FieldSpec = {
|
|
|
287
486
|
label: string;
|
|
288
487
|
hint?: string;
|
|
289
488
|
/** Agrupamento no formulário do devtools. */
|
|
290
|
-
section: 'Gráfico' | 'Dados' | 'Aparência' | 'Rótulos e formatos' | 'Filtro' | 'Tela' | 'Card';
|
|
489
|
+
section: 'Gráfico' | 'Dados' | 'Aparência' | 'Rótulos e formatos' | 'Formatação condicional' | 'Filtro' | 'Tela' | 'Card';
|
|
291
490
|
required?: boolean;
|
|
292
491
|
/** Valor que o componente usa quando o campo não está no JSON. */
|
|
293
492
|
default?: unknown;
|
|
@@ -310,7 +509,15 @@ type FieldSpec = {
|
|
|
310
509
|
{
|
|
311
510
|
kind: 'dimension' | 'measure';
|
|
312
511
|
} | {
|
|
313
|
-
kind: 'dimensions'
|
|
512
|
+
kind: 'dimensions';
|
|
513
|
+
} |
|
|
514
|
+
/**
|
|
515
|
+
* `percent`: cada medida vira uma coluna de % do total (`%:medida`), que entra no `columnOrder`
|
|
516
|
+
* como as outras colunas.
|
|
517
|
+
*/
|
|
518
|
+
{
|
|
519
|
+
kind: 'measures';
|
|
520
|
+
percent?: boolean;
|
|
314
521
|
} |
|
|
315
522
|
/** Nome de um formatter do `<DashboardCharts formatters>`. */
|
|
316
523
|
{
|
|
@@ -320,9 +527,13 @@ type FieldSpec = {
|
|
|
320
527
|
{
|
|
321
528
|
kind: 'formatters';
|
|
322
529
|
} |
|
|
323
|
-
/**
|
|
530
|
+
/**
|
|
531
|
+
* Uma das dimensões/medidas escolhidas no próprio gráfico. `outside`: também qualquer dimensão ou
|
|
532
|
+
* medida do modelo (o componente consulta o que estiver fora do gráfico, sem mostrar).
|
|
533
|
+
*/
|
|
324
534
|
{
|
|
325
535
|
kind: 'column';
|
|
536
|
+
outside?: boolean;
|
|
326
537
|
} |
|
|
327
538
|
/** `{ dimensãoOuMedida: rótulo }` das colunas do gráfico. */
|
|
328
539
|
{
|
|
@@ -331,6 +542,25 @@ type FieldSpec = {
|
|
|
331
542
|
/** `{ medida: ChartNumberFormat }` das medidas do gráfico. */
|
|
332
543
|
{
|
|
333
544
|
kind: 'formats';
|
|
545
|
+
} |
|
|
546
|
+
/** `{ coluna: 'left' | 'center' | 'right' }`: alinhamento horizontal de cada coluna. */
|
|
547
|
+
{
|
|
548
|
+
kind: 'aligns';
|
|
549
|
+
} |
|
|
550
|
+
/** `{ coluna: 'top' | 'middle' | 'bottom' }`: alinhamento vertical de cada coluna. */
|
|
551
|
+
{
|
|
552
|
+
kind: 'verticalAligns';
|
|
553
|
+
} |
|
|
554
|
+
/**
|
|
555
|
+
* Ordem das colunas (dimensões e medidas misturadas). O devtools junta os campos `dimensions` e
|
|
556
|
+
* `measures` da mesma seção numa lista só e grava a ordem aqui quando não é a padrão.
|
|
557
|
+
*/
|
|
558
|
+
{
|
|
559
|
+
kind: 'columnOrder';
|
|
560
|
+
} |
|
|
561
|
+
/** Regras de formatação condicional (`FormatRule[]`). */
|
|
562
|
+
{
|
|
563
|
+
kind: 'formatRules';
|
|
334
564
|
});
|
|
335
565
|
/**
|
|
336
566
|
* Tipo de gráfico: nome no devtools e campos do JSON. Para um tipo do app, `title`, `span` e
|
|
@@ -375,149 +605,5 @@ declare function validateLayout(layout: ChartsLayout, types?: ChartTypes): strin
|
|
|
375
605
|
*/
|
|
376
606
|
declare function layoutModelWarnings(layout: ChartsLayout, model: Pick<ModelDef, 'dimensions' | 'measures'>, types?: ChartTypes): string[];
|
|
377
607
|
//#endregion
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
/** Filtros por dimensão; lista vazia (ou ausente) = sem filtro ("Todos"). */
|
|
381
|
-
type DashboardFilters = Record<string, FilterValue[]>;
|
|
382
|
-
/**
|
|
383
|
-
* Pedidos do devtools. O servidor só aceita quando o `runQuery` recebe `devtools` (em dev); fora
|
|
384
|
-
* disso `debug` é ignorado e o resto é recusado com 400.
|
|
385
|
-
*/
|
|
386
|
-
type DashboardDevtoolsRequest = {
|
|
387
|
-
/** Devolve SQL compilado, parâmetros e tempos em `result.devtools.debug`. */
|
|
388
|
-
debug?: boolean;
|
|
389
|
-
/** Rascunho do modelo editado no devtools: substitui o modelo registrado só nesta consulta. */
|
|
390
|
-
model?: ModelDef;
|
|
391
|
-
/** Devolve a definição do modelo registrado e o que o servidor permite (`capabilities`). */
|
|
392
|
-
describe?: boolean;
|
|
393
|
-
/** Esvazia o cache de resultados do processo antes de executar. */
|
|
394
|
-
clearCache?: boolean;
|
|
395
|
-
/**
|
|
396
|
-
* Só compila: devolve o SQL e os parâmetros em `result.devtools.debug`, sem executar (o devtools
|
|
397
|
-
* usa para mostrar o SQL de uma consulta que deu erro).
|
|
398
|
-
*/
|
|
399
|
-
compile?: boolean;
|
|
400
|
-
/** Devolve o `EXPLAIN` da consulta em vez das linhas. */
|
|
401
|
-
explain?: boolean;
|
|
402
|
-
/** Mede a agregação de cada fato usada pela consulta, isoladamente. */
|
|
403
|
-
profile?: boolean;
|
|
404
|
-
/** Tabelas e colunas do banco (`information_schema`), para o autocomplete do editor. */
|
|
405
|
-
schema?: boolean;
|
|
406
|
-
/** Colunas de cada tabela (uma linha de cada), para o diagrama do modelo. */
|
|
407
|
-
columns?: boolean;
|
|
408
|
-
/** Executa cada pedaço do modelo (`devtools.model` ou o registrado) contra o banco. */
|
|
409
|
-
validate?: boolean;
|
|
410
|
-
/** Grava o rascunho no arquivo do modelo (`preview` só devolve o conteúdo novo). */
|
|
411
|
-
save?: 'preview' | 'write';
|
|
412
|
-
/** Grava o layout de gráficos em `<layoutsDir>/<id>.json` (`preview` só devolve o conteúdo novo). */
|
|
413
|
-
saveLayout?: {
|
|
414
|
-
layout: ChartsLayout;
|
|
415
|
-
mode: 'preview' | 'write';
|
|
416
|
-
};
|
|
417
|
-
/** Grava o resultado da consulta (modelo registrado) como snapshot de regressão. */
|
|
418
|
-
snapshot?: {
|
|
419
|
-
name: string;
|
|
420
|
-
overwrite?: boolean;
|
|
421
|
-
};
|
|
422
|
-
/** Lista os snapshots salvos deste modelo. */
|
|
423
|
-
snapshots?: boolean;
|
|
424
|
-
};
|
|
425
|
-
type DashboardQuery = {
|
|
426
|
-
model: string;
|
|
427
|
-
/** Dimensões agrupadas (viram GROUP BY). */
|
|
428
|
-
dimensions?: string[];
|
|
429
|
-
/** Medidas calculadas para cada grupo. */
|
|
430
|
-
measures?: string[];
|
|
431
|
-
filters?: DashboardFilters;
|
|
432
|
-
/** Devolve só os metadados do modelo (rótulos, descrições, formatos; sem SQL) em `result.meta`. */
|
|
433
|
-
meta?: boolean;
|
|
434
|
-
devtools?: DashboardDevtoolsRequest;
|
|
435
|
-
};
|
|
436
|
-
type DashboardRow = Record<string, string | number | null>;
|
|
437
|
-
type DashboardQueryDebug = {
|
|
438
|
-
sql: string;
|
|
439
|
-
params: (string | number)[];
|
|
440
|
-
/** Tempo da execução no banco (num cache hit, o da execução original). */
|
|
441
|
-
durationMs: number;
|
|
442
|
-
cached: boolean;
|
|
443
|
-
/** A consulta rodou contra o rascunho do devtools, não contra o modelo registrado. */
|
|
444
|
-
draft: boolean;
|
|
445
|
-
};
|
|
446
|
-
type ProfileStep = {
|
|
447
|
-
/** `fato:<tabela>` ou `consulta` (a consulta inteira). */
|
|
448
|
-
name: string;
|
|
449
|
-
durationMs: number;
|
|
450
|
-
/** Linhas da agregação da fato (grupos) com os filtros aplicados. */
|
|
451
|
-
rows: number | null;
|
|
452
|
-
};
|
|
453
|
-
type SchemaTable = {
|
|
454
|
-
name: string;
|
|
455
|
-
type: 'table' | 'view';
|
|
456
|
-
columns: {
|
|
457
|
-
name: string;
|
|
458
|
-
type: string;
|
|
459
|
-
}[];
|
|
460
|
-
};
|
|
461
|
-
/** Colunas devolvidas por cada pedaço do modelo (vazio quando não veio nenhuma linha). */
|
|
462
|
-
type ModelColumns = {
|
|
463
|
-
/** Colunas de cada tabela. */
|
|
464
|
-
tables: Record<string, string[]>;
|
|
465
|
-
/** `tabela.coluna` com valor numérico na linha lida. */
|
|
466
|
-
numeric: string[];
|
|
467
|
-
};
|
|
468
|
-
type ModelValidation = {
|
|
469
|
-
/**
|
|
470
|
-
* Erro do banco por pedaço: `table:<nome>`, `relationship:<índice>`, `dimension:<nome>`,
|
|
471
|
-
* `measure:<nome>`.
|
|
472
|
-
*/
|
|
473
|
-
errors: Record<string, string>;
|
|
474
|
-
warnings: Record<string, string>;
|
|
475
|
-
columns: ModelColumns;
|
|
476
|
-
};
|
|
477
|
-
type SaveModelResult = {
|
|
478
|
-
path: string;
|
|
479
|
-
previous: string;
|
|
480
|
-
content: string;
|
|
481
|
-
written: boolean;
|
|
482
|
-
warnings: string[];
|
|
483
|
-
};
|
|
484
|
-
type DashboardSnapshot = {
|
|
485
|
-
name: string;
|
|
486
|
-
createdAt: string;
|
|
487
|
-
query: Omit<DashboardQuery, 'devtools' | 'meta'>;
|
|
488
|
-
rows: DashboardRow[];
|
|
489
|
-
};
|
|
490
|
-
type DevtoolsCapabilities = {
|
|
491
|
-
/** O endpoint sabe onde ficam os arquivos dos modelos (`modelsDir`). */
|
|
492
|
-
saveModel: boolean;
|
|
493
|
-
/** O endpoint sabe onde gravar snapshots (`snapshotsDir`). */
|
|
494
|
-
snapshots: boolean;
|
|
495
|
-
/** O endpoint sabe onde ficam os arquivos de layout de gráficos (`layoutsDir`). */
|
|
496
|
-
saveLayout: boolean;
|
|
497
|
-
/** Tipos de gráfico do app que o endpoint conhece (`chartTypes`): só esses ele aceita salvar. */
|
|
498
|
-
chartTypes: string[];
|
|
499
|
-
};
|
|
500
|
-
type DashboardResult = {
|
|
501
|
-
rows: DashboardRow[];
|
|
502
|
-
meta?: ModelMeta;
|
|
503
|
-
devtools?: {
|
|
504
|
-
model?: ModelDef;
|
|
505
|
-
capabilities?: DevtoolsCapabilities;
|
|
506
|
-
debug?: DashboardQueryDebug;
|
|
507
|
-
explain?: DashboardRow[];
|
|
508
|
-
profile?: ProfileStep[];
|
|
509
|
-
schema?: SchemaTable[];
|
|
510
|
-
validation?: ModelValidation;
|
|
511
|
-
columns?: ModelColumns;
|
|
512
|
-
/** Pedaços que o banco recusou ao ler as colunas (mesmas chaves da validação). */
|
|
513
|
-
columnErrors?: Record<string, string>;
|
|
514
|
-
save?: SaveModelResult;
|
|
515
|
-
snapshot?: {
|
|
516
|
-
path: string;
|
|
517
|
-
};
|
|
518
|
-
snapshots?: DashboardSnapshot[];
|
|
519
|
-
};
|
|
520
|
-
};
|
|
521
|
-
//#endregion
|
|
522
|
-
export { FilterDef as A, FormulaMeasure as B, ChartTypeSpec as C, CustomChartDef as D, ComboChartDef as E, validateLayout as F, RatioMeasure as G, MeasureMeta as H, AggregateMeasure as I, TableDef as J, RelationshipDef as K, Aggregation as L, TableChartDef as M, layoutModelWarnings as N, DonutChartDef as O, resolveChartTypes as P, DimensionDef as R, ChartType as S, ChartsLayout as T, ModelDef as U, MeasureDef as V, ModelMeta as W, modelMeta as X, ValueFormat as Y, validateModel as Z, CanvasDef as _, DashboardResult as a, ChartDef as b, DevtoolsCapabilities as c, ModelValidation as d, ProfileStep as f, BuiltinChartDef as g, BarChartDef as h, DashboardQueryDebug as i, KpiChartDef as j, FieldSpec as k, FilterValue as l, SchemaTable as m, DashboardFilters as n, DashboardRow as o, SaveModelResult as p, SumMeasure as q, DashboardQuery as r, DashboardSnapshot as s, DashboardDevtoolsRequest as t, ModelColumns as u, CardStyle as v, ChartTypes as w, ChartNumberFormat as x, CardsStyle as y, FieldMeta as z };
|
|
523
|
-
//# sourceMappingURL=types-HXAn-3I1.d.ts.map
|
|
608
|
+
export { modelMeta as $, DashboardRow as A, Aggregation as B, ColumnVerticalAlign as C, DashboardQuery as D, DashboardFilters as E, ModelValidation as F, MeasureMeta as G, FieldMeta as H, ProfileStep as I, RatioMeasure as J, ModelDef as K, SaveModelResult as L, DevtoolsCapabilities as M, FilterValue as N, DashboardQueryDebug as O, ModelColumns as P, ValueFormat as Q, SchemaTable as R, ColumnAlign as S, DashboardDevtoolsRequest as T, FormulaMeasure as U, DimensionDef as V, MeasureDef as W, SumMeasure as X, RelationshipDef as Y, TableDef as Z, KpiChartDef as _, CardsStyle as a, resolveChartTypes as b, ChartType as c, ChartsLayout as d, validateModel as et, ComboChartDef as f, FilterDef as g, FieldSpec as h, CardStyle as i, DashboardSnapshot as j, DashboardResult as k, ChartTypeSpec as l, DonutChartDef as m, BuiltinChartDef as n, ChartDef as o, CustomChartDef as p, ModelMeta as q, CanvasDef as r, ChartNumberFormat as s, BarChartDef as t, ChartTypes as u, TableChartDef as v, FormatRule as w, validateLayout as x, layoutModelWarnings as y, AggregateMeasure as z };
|
|
609
|
+
//# sourceMappingURL=layout-B7eYgNyR.d.ts.map
|