@wibi-global/sdk 0.1.1 → 0.1.3
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/README.md +0 -0
- package/dist/artifact-schema/src/biCatalog.d.ts +0 -0
- package/dist/artifact-schema/src/biCatalog.d.ts.map +0 -0
- package/dist/artifact-schema/src/biCatalog.js +0 -0
- package/dist/artifact-schema/src/biCatalog.js.map +0 -0
- package/dist/artifact-schema/src/hash.d.ts +0 -0
- package/dist/artifact-schema/src/hash.d.ts.map +0 -0
- package/dist/artifact-schema/src/hash.js +0 -0
- package/dist/artifact-schema/src/hash.js.map +0 -0
- package/dist/artifact-schema/src/index.d.ts +0 -0
- package/dist/artifact-schema/src/index.d.ts.map +0 -0
- package/dist/artifact-schema/src/index.js +0 -0
- package/dist/artifact-schema/src/index.js.map +0 -0
- package/dist/artifact-schema/src/schema.d.ts +0 -0
- package/dist/artifact-schema/src/schema.d.ts.map +0 -0
- package/dist/artifact-schema/src/schema.js +0 -0
- package/dist/artifact-schema/src/schema.js.map +0 -0
- package/dist/artifact-schema/src/types.d.ts +0 -0
- package/dist/artifact-schema/src/types.d.ts.map +0 -0
- package/dist/artifact-schema/src/types.js +0 -0
- package/dist/artifact-schema/src/types.js.map +0 -0
- package/dist/artifact-schema/src/validate.d.ts +0 -0
- package/dist/artifact-schema/src/validate.d.ts.map +0 -0
- package/dist/artifact-schema/src/validate.js +0 -0
- package/dist/artifact-schema/src/validate.js.map +0 -0
- package/dist/instructions/AGENTS.md +47 -0
- package/dist/instructions/AGENT_COMMON.md +0 -0
- package/dist/instructions/CLAUDE.md +9 -0
- package/dist/instructions/CODEX.md +0 -0
- package/dist/instructions/GEMINI.md +0 -0
- package/dist/prompts/authoring.wbp +0 -0
- package/dist/sdk/src/builder.d.ts +0 -0
- package/dist/sdk/src/builder.d.ts.map +0 -0
- package/dist/sdk/src/builder.js +0 -0
- package/dist/sdk/src/builder.js.map +0 -0
- package/dist/sdk/src/context.d.ts +0 -0
- package/dist/sdk/src/context.d.ts.map +0 -0
- package/dist/sdk/src/context.js +0 -0
- package/dist/sdk/src/context.js.map +0 -0
- package/dist/sdk/src/dashboard-context.d.ts +0 -0
- package/dist/sdk/src/dashboard-context.d.ts.map +0 -0
- package/dist/sdk/src/dashboard-context.js +0 -0
- package/dist/sdk/src/dashboard-context.js.map +0 -0
- package/dist/sdk/src/dashboard-spec.d.ts +0 -0
- package/dist/sdk/src/dashboard-spec.d.ts.map +1 -1
- package/dist/sdk/src/dashboard-spec.js +176 -19
- package/dist/sdk/src/dashboard-spec.js.map +1 -1
- package/dist/sdk/src/data/ctx.wbx +0 -0
- package/dist/sdk/src/data/index.d.ts +0 -0
- package/dist/sdk/src/data/index.d.ts.map +1 -1
- package/dist/sdk/src/data/index.js +10 -10
- package/dist/sdk/src/data/index.js.map +1 -1
- package/dist/sdk/src/data/queries.wbx +0 -0
- package/dist/sdk/src/data/serialization/dashboard-serialization.types.d.ts +110 -2
- package/dist/sdk/src/data/serialization/dashboard-serialization.types.d.ts.map +1 -1
- package/dist/sdk/src/data/serialization/dashboard-serialization.types.js +0 -0
- package/dist/sdk/src/data/serialization/dashboard-serialization.types.js.map +0 -0
- package/dist/sdk/src/data/serialization/dashboard-serialization.types.ts +161 -32
- package/dist/sdk/src/data/serialization/index.d.ts +1 -1
- package/dist/sdk/src/data/serialization/index.d.ts.map +1 -1
- package/dist/sdk/src/data/serialization/index.js +0 -0
- package/dist/sdk/src/data/serialization/index.js.map +0 -0
- package/dist/sdk/src/data/syntax.wbx +0 -0
- package/dist/sdk/src/data/view-categories.wbx +0 -0
- package/dist/sdk/src/data/views.wbx +0 -0
- package/dist/sdk/src/data/widgets.wbx +79 -16
- package/dist/sdk/src/data.d.ts +0 -0
- package/dist/sdk/src/data.d.ts.map +0 -0
- package/dist/sdk/src/data.js +0 -0
- package/dist/sdk/src/data.js.map +0 -0
- package/dist/sdk/src/index.d.ts +0 -0
- package/dist/sdk/src/index.d.ts.map +0 -0
- package/dist/sdk/src/index.js +0 -0
- package/dist/sdk/src/index.js.map +0 -0
- package/package.json +2 -2
|
@@ -66,15 +66,17 @@ export interface SerializedLayout {
|
|
|
66
66
|
sections: SerializedSection[]
|
|
67
67
|
}
|
|
68
68
|
|
|
69
|
-
export type SerializedWidgetType =
|
|
70
|
-
| 'kpi'
|
|
71
|
-
| 'chart'
|
|
72
|
-
| 'grid'
|
|
73
|
-
| '
|
|
74
|
-
| '
|
|
75
|
-
| '
|
|
76
|
-
| '
|
|
77
|
-
| '
|
|
69
|
+
export type SerializedWidgetType =
|
|
70
|
+
| 'kpi'
|
|
71
|
+
| 'chart'
|
|
72
|
+
| 'grid'
|
|
73
|
+
| 'pivot'
|
|
74
|
+
| 'pivotgrid'
|
|
75
|
+
| 'progress-list'
|
|
76
|
+
| 'gauge'
|
|
77
|
+
| 'funnel'
|
|
78
|
+
| 'waterfall'
|
|
79
|
+
| 'heatmap'
|
|
78
80
|
| 'scatter'
|
|
79
81
|
| 'treemap'
|
|
80
82
|
| 'sankey'
|
|
@@ -154,6 +156,10 @@ export interface SerializedChartProperties {
|
|
|
154
156
|
bar_width?: number
|
|
155
157
|
/** Rotacionar labels do eixo X em 45° */
|
|
156
158
|
rotate_labels?: boolean
|
|
159
|
+
/** Rotacionar labels do eixo X em graus */
|
|
160
|
+
x_axis_label_rotate?: number
|
|
161
|
+
/** Formato textual de datas no eixo X */
|
|
162
|
+
x_axis_date_format?: string
|
|
157
163
|
/** Habilitar zoom interativo */
|
|
158
164
|
enable_zoom?: boolean
|
|
159
165
|
|
|
@@ -226,11 +232,11 @@ export interface SerializedGridColumnDef {
|
|
|
226
232
|
format?: SerializedGridColumnFormat
|
|
227
233
|
}
|
|
228
234
|
|
|
229
|
-
export interface SerializedGridProperties {
|
|
230
|
-
title: string
|
|
231
|
-
page_size: number
|
|
232
|
-
columns: string[]
|
|
233
|
-
column_labels: Record<string, string>
|
|
235
|
+
export interface SerializedGridProperties {
|
|
236
|
+
title: string
|
|
237
|
+
page_size: number
|
|
238
|
+
columns: string[]
|
|
239
|
+
column_labels: Record<string, string>
|
|
234
240
|
enable_filters: boolean
|
|
235
241
|
enable_export: boolean
|
|
236
242
|
enable_pagination: boolean
|
|
@@ -245,41 +251,162 @@ export interface SerializedGridProperties {
|
|
|
245
251
|
use_grid_v2?: boolean
|
|
246
252
|
/** Mensagem quando não há dados */
|
|
247
253
|
empty_message?: string
|
|
248
|
-
/** Mensagem durante carregamento */
|
|
249
|
-
loading_message?: string
|
|
250
|
-
}
|
|
251
|
-
|
|
252
|
-
export interface
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
254
|
+
/** Mensagem durante carregamento */
|
|
255
|
+
loading_message?: string
|
|
256
|
+
}
|
|
257
|
+
|
|
258
|
+
export interface SerializedPivotProperties {
|
|
259
|
+
/** Campo das linhas da tabela pivot (snake_case) */
|
|
260
|
+
row_field?: string
|
|
261
|
+
/** Alias em camelCase (compatibilidade) */
|
|
262
|
+
rowField?: string
|
|
263
|
+
|
|
264
|
+
/** Campo das colunas da tabela pivot (snake_case) */
|
|
265
|
+
col_field?: string
|
|
266
|
+
/** Alias alternativo (compatibilidade) */
|
|
267
|
+
column_field?: string
|
|
268
|
+
/** Alias em camelCase (compatibilidade) */
|
|
269
|
+
colField?: string
|
|
270
|
+
/** Alias em camelCase (compatibilidade) */
|
|
271
|
+
columnField?: string
|
|
272
|
+
|
|
273
|
+
/** Campo numerico com o valor a agregar (snake_case) */
|
|
274
|
+
value_field?: string
|
|
275
|
+
/** Alias em camelCase (compatibilidade) */
|
|
276
|
+
valueField?: string
|
|
277
|
+
|
|
278
|
+
/** Agregacao: sum | avg | count | min | max (padrao: sum) */
|
|
279
|
+
aggregation?: 'sum' | 'avg' | 'count' | 'min' | 'max'
|
|
280
|
+
|
|
281
|
+
/** Mostrar linha/coluna de totais */
|
|
282
|
+
show_totals?: boolean
|
|
283
|
+
/** Alias em camelCase (compatibilidade) */
|
|
284
|
+
showTotals?: boolean
|
|
285
|
+
|
|
286
|
+
/** Formato do valor: number | currency | percent */
|
|
287
|
+
format?: 'number' | 'currency' | 'percent'
|
|
288
|
+
/** Alias legado (compatibilidade) */
|
|
289
|
+
value_format?: 'number' | 'currency' | 'percent'
|
|
290
|
+
/** Alias legado em camelCase (compatibilidade) */
|
|
291
|
+
valueFormat?: 'number' | 'currency' | 'percent'
|
|
292
|
+
|
|
293
|
+
/** Numero de casas decimais */
|
|
294
|
+
decimals?: number
|
|
295
|
+
|
|
296
|
+
/** Moeda quando format='currency' */
|
|
297
|
+
currency?: string
|
|
298
|
+
|
|
299
|
+
/** Locale (padrao pt-BR) */
|
|
300
|
+
locale?: string
|
|
301
|
+
|
|
302
|
+
/** Habilita busca no pivotgrid (compatibilidade; pode ser ignorado pelo renderer) */
|
|
303
|
+
searchable?: boolean
|
|
304
|
+
/** Placeholder da busca (compatibilidade) */
|
|
305
|
+
search_placeholder?: string
|
|
306
|
+
/** Placeholder da busca (compatibilidade) */
|
|
307
|
+
searchPlaceholder?: string
|
|
308
|
+
|
|
309
|
+
/** Mensagem durante carregamento (compatibilidade) */
|
|
310
|
+
loading_message?: string
|
|
311
|
+
/** Mensagem durante carregamento (compatibilidade) */
|
|
312
|
+
loadingMessage?: string
|
|
313
|
+
|
|
314
|
+
/** Mensagem quando nao ha dados (compatibilidade) */
|
|
315
|
+
empty_message?: string
|
|
316
|
+
/** Mensagem quando nao ha dados (compatibilidade) */
|
|
317
|
+
emptyMessage?: string
|
|
318
|
+
}
|
|
319
|
+
|
|
320
|
+
export interface SerializedPivotGridProperties extends SerializedPivotProperties {
|
|
321
|
+
/**
|
|
322
|
+
* PivotGrid e um widget serializado separado da pivot tradicional.
|
|
323
|
+
* No contrato atual, herda as mesmas propriedades base da pivot.
|
|
324
|
+
*/
|
|
325
|
+
}
|
|
326
|
+
|
|
327
|
+
export interface SerializedPanelAction {
|
|
328
|
+
path: string
|
|
329
|
+
title: string
|
|
330
|
+
description: string
|
|
331
|
+
}
|
|
257
332
|
|
|
258
333
|
export interface SerializedProgressListProperties {
|
|
259
334
|
/** Campo de label (categoria/nome exibido na linha) */
|
|
260
335
|
labelField: string
|
|
336
|
+
/** Alias legado em snake_case */
|
|
337
|
+
label_field?: string
|
|
261
338
|
/** Campo de valor numérico para as barras */
|
|
262
339
|
valueField: string
|
|
340
|
+
/** Alias legado em snake_case */
|
|
341
|
+
value_field?: string
|
|
263
342
|
/** Agregação: sum | avg | count | min | max */
|
|
264
343
|
aggregation?: 'sum' | 'avg' | 'count' | 'min' | 'max'
|
|
265
344
|
/** Número máximo de itens exibidos */
|
|
266
345
|
maxItems?: number
|
|
346
|
+
/** Alias legado em snake_case */
|
|
347
|
+
max_items?: number
|
|
267
348
|
/** Exibir valor numérico ao lado da barra */
|
|
268
349
|
showValues?: boolean
|
|
350
|
+
/** Alias legado em snake_case */
|
|
351
|
+
show_values?: boolean
|
|
269
352
|
/** Exibir percentual ao lado da barra */
|
|
270
353
|
showPercentage?: boolean
|
|
354
|
+
/** Alias legado em snake_case */
|
|
355
|
+
show_percentage?: boolean
|
|
271
356
|
/** Formato do valor: number | currency | compact | percentage */
|
|
272
357
|
valueFormat?: 'number' | 'currency' | 'compact' | 'percentage'
|
|
358
|
+
/** Alias legado em snake_case */
|
|
359
|
+
value_format?: 'number' | 'currency' | 'compact' | 'percentage'
|
|
273
360
|
/** Altura em px das barras de progresso */
|
|
274
361
|
barHeight?: number
|
|
362
|
+
/** Alias legado em snake_case */
|
|
363
|
+
bar_height?: number
|
|
275
364
|
/** Esquema de cores: gradient | single | custom */
|
|
276
365
|
colorScheme?: 'gradient' | 'single' | 'custom'
|
|
366
|
+
/** Alias legado em snake_case */
|
|
367
|
+
color_scheme?: 'gradient' | 'single' | 'custom'
|
|
277
368
|
/** Cor primária (usada em colorScheme='single') */
|
|
278
369
|
primaryColor?: string
|
|
370
|
+
/** Alias legado em snake_case */
|
|
371
|
+
primary_color?: string
|
|
279
372
|
/** Ordenação: value | label | none */
|
|
280
373
|
sortBy?: 'value' | 'label' | 'none'
|
|
374
|
+
/** Alias legado em snake_case */
|
|
375
|
+
sort_by?: 'value' | 'label' | 'none'
|
|
281
376
|
/** Direção da ordenação: asc | desc */
|
|
282
377
|
sortOrder?: 'asc' | 'desc'
|
|
378
|
+
/** Alias legado em snake_case */
|
|
379
|
+
sort_order?: 'asc' | 'desc'
|
|
380
|
+
/** Alguns dashboards antigos incluem um title redundante nas properties */
|
|
381
|
+
title?: string
|
|
382
|
+
/** Exibir os filtros internos do componente (padrão: true quando filter1/filter2 definidos) */
|
|
383
|
+
showInternalFilters?: boolean
|
|
384
|
+
/** Filtro interno 1 — select discreto com query própria para popular as opções */
|
|
385
|
+
filter1?: {
|
|
386
|
+
/** Label do select (ex: "Filial", "Vendedor") */
|
|
387
|
+
label?: string
|
|
388
|
+
/** SQL para popular as opções; suporta ${startDate}, ${endDate}, ${empresaId}, ${companyFilter} */
|
|
389
|
+
sql: string
|
|
390
|
+
/** Campo do resultado SQL que será o valor da opção */
|
|
391
|
+
valueField: string
|
|
392
|
+
/** Campo do resultado SQL que será o label da opção (padrão: valueField) */
|
|
393
|
+
labelField?: string
|
|
394
|
+
/** Campo nos dados principais (rawData) pelo qual o filtro será aplicado */
|
|
395
|
+
filterField: string
|
|
396
|
+
}
|
|
397
|
+
/** Filtro interno 2 — select discreto com query própria para popular as opções */
|
|
398
|
+
filter2?: {
|
|
399
|
+
/** Label do select (ex: "Filial", "Vendedor") */
|
|
400
|
+
label?: string
|
|
401
|
+
/** SQL para popular as opções; suporta ${startDate}, ${endDate}, ${empresaId}, ${companyFilter} */
|
|
402
|
+
sql: string
|
|
403
|
+
/** Campo do resultado SQL que será o valor da opção */
|
|
404
|
+
valueField: string
|
|
405
|
+
/** Campo do resultado SQL que será o label da opção (padrão: valueField) */
|
|
406
|
+
labelField?: string
|
|
407
|
+
/** Campo nos dados principais (rawData) pelo qual o filtro será aplicado */
|
|
408
|
+
filterField: string
|
|
409
|
+
}
|
|
283
410
|
}
|
|
284
411
|
|
|
285
412
|
export interface SerializedPanelProperties {
|
|
@@ -379,15 +506,17 @@ export interface SerializedSpacerProperties {
|
|
|
379
506
|
height: number
|
|
380
507
|
}
|
|
381
508
|
|
|
382
|
-
export type SerializedWidgetProperties =
|
|
383
|
-
| SerializedKpiProperties
|
|
384
|
-
| SerializedChartProperties
|
|
385
|
-
| SerializedGridProperties
|
|
386
|
-
|
|
|
387
|
-
|
|
|
388
|
-
|
|
|
389
|
-
|
|
|
390
|
-
|
|
|
509
|
+
export type SerializedWidgetProperties =
|
|
510
|
+
| SerializedKpiProperties
|
|
511
|
+
| SerializedChartProperties
|
|
512
|
+
| SerializedGridProperties
|
|
513
|
+
| SerializedPivotProperties
|
|
514
|
+
| SerializedPivotGridProperties
|
|
515
|
+
| SerializedProgressListProperties
|
|
516
|
+
| SerializedPanelProperties
|
|
517
|
+
| SerializedDateWidgetProperties
|
|
518
|
+
| SerializedCompaniesWidgetProperties
|
|
519
|
+
| SerializedHeadingProperties
|
|
391
520
|
| SerializedTextProperties
|
|
392
521
|
| SerializedImageProperties
|
|
393
522
|
| SerializedDividerProperties
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export type { SerializedDashboard, SerializedMetadata, SerializedFilter, SerializedDateFilter, SerializedEmpresaFilter, SerializedLayout, SerializedSection, SerializedWidget, SerializedWidgetType, SerializedWidgetProperties, SerializedKpiProperties, SerializedChartProperties, SerializedGridProperties, SerializedProgressListProperties, SerializedPanelProperties, SerializedPanelAction, SerializedDateWidgetProperties, SerializedCompaniesWidgetProperties, SerializedGridColumnDef, SerializedGridColumnFormat, SerializedHeadingProperties, SerializedTextProperties, SerializedImageProperties, SerializedDividerProperties, SerializedSpacerProperties, SerializedQuery, DatePeriodType, } from './dashboard-serialization.types.js';
|
|
1
|
+
export type { SerializedDashboard, SerializedMetadata, SerializedFilter, SerializedDateFilter, SerializedEmpresaFilter, SerializedLayout, SerializedSection, SerializedWidget, SerializedWidgetType, SerializedWidgetProperties, SerializedKpiProperties, SerializedChartProperties, SerializedGridProperties, SerializedPivotProperties, SerializedPivotGridProperties, SerializedProgressListProperties, SerializedPanelProperties, SerializedPanelAction, SerializedDateWidgetProperties, SerializedCompaniesWidgetProperties, SerializedGridColumnDef, SerializedGridColumnFormat, SerializedHeadingProperties, SerializedTextProperties, SerializedImageProperties, SerializedDividerProperties, SerializedSpacerProperties, SerializedQuery, DatePeriodType, } from './dashboard-serialization.types.js';
|
|
2
2
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/data/serialization/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,mBAAmB,EACnB,kBAAkB,EAClB,gBAAgB,EAChB,oBAAoB,EACpB,uBAAuB,EACvB,gBAAgB,EAChB,iBAAiB,EACjB,gBAAgB,EAChB,oBAAoB,EACpB,0BAA0B,EAC1B,uBAAuB,EACvB,yBAAyB,EACzB,wBAAwB,EACxB,gCAAgC,EAChC,yBAAyB,EACzB,qBAAqB,EACrB,8BAA8B,EAC9B,mCAAmC,EACnC,uBAAuB,EACvB,0BAA0B,EAC1B,2BAA2B,EAC3B,wBAAwB,EACxB,yBAAyB,EACzB,2BAA2B,EAC3B,0BAA0B,EAC1B,eAAe,EACf,cAAc,GACf,MAAM,oCAAoC,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/data/serialization/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,mBAAmB,EACnB,kBAAkB,EAClB,gBAAgB,EAChB,oBAAoB,EACpB,uBAAuB,EACvB,gBAAgB,EAChB,iBAAiB,EACjB,gBAAgB,EAChB,oBAAoB,EACpB,0BAA0B,EAC1B,uBAAuB,EACvB,yBAAyB,EACzB,wBAAwB,EACxB,yBAAyB,EACzB,6BAA6B,EAC7B,gCAAgC,EAChC,yBAAyB,EACzB,qBAAqB,EACrB,8BAA8B,EAC9B,mCAAmC,EACnC,uBAAuB,EACvB,0BAA0B,EAC1B,2BAA2B,EAC3B,wBAAwB,EACxB,yBAAyB,EACzB,2BAA2B,EAC3B,0BAA0B,EAC1B,eAAe,EACf,cAAc,GACf,MAAM,oCAAoC,CAAA"}
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
@@ -102,7 +102,7 @@
|
|
|
102
102
|
"donut_proporcao": "widget_type='chart' com chart_type='pie' e inner_radius > 0",
|
|
103
103
|
"ranking_com_barra": "widget_type='progress-list' — top N itens com barra proporcional",
|
|
104
104
|
"tabela_de_dados": "widget_type='grid' — tabela paginável com formatação por coluna",
|
|
105
|
-
"tabela_cruzada": "widget_type='
|
|
105
|
+
"tabela_cruzada": "widget_type='pivotgrid' — linhas × colunas com valor agregado",
|
|
106
106
|
"velocimetro_meta": "widget_type='gauge' — medidor circular com escala",
|
|
107
107
|
"funil_conversao": "widget_type='funnel' — etapas de pipeline decrescentes",
|
|
108
108
|
"cascata_contribuicao": "widget_type='waterfall' — parcelas positivas/negativas para um total",
|
|
@@ -137,7 +137,8 @@
|
|
|
137
137
|
"multi-card": 160,
|
|
138
138
|
"chart": 400,
|
|
139
139
|
"grid": 350,
|
|
140
|
-
"pivot": 380,
|
|
140
|
+
"pivot": 380,
|
|
141
|
+
"pivotgrid": 380,
|
|
141
142
|
"progress-list": 350,
|
|
142
143
|
"gauge": 320,
|
|
143
144
|
"funnel": 350,
|
|
@@ -1101,7 +1102,7 @@
|
|
|
1101
1102
|
"fields": {
|
|
1102
1103
|
"id": { "type": "string", "required": true },
|
|
1103
1104
|
"type": { "type": "string", "required": true, "values": [
|
|
1104
|
-
"chart", "grid", "table", "card", "filter", "text", "image", "line", "pie", "gauge", "pivot", "map",
|
|
1105
|
+
"chart", "grid", "table", "card", "filter", "text", "image", "line", "pie", "gauge", "pivot", "pivotgrid", "map",
|
|
1105
1106
|
"area", "scatter", "treemap", "multi-card", "kpi", "sparkline", "funnel", "waterfall",
|
|
1106
1107
|
"filled-map", "dropdown", "timeline", "group",
|
|
1107
1108
|
"radar", "heatmap", "candlestick", "boxplot", "sankey", "graph", "sunburst", "tree",
|
|
@@ -1694,11 +1695,11 @@
|
|
|
1694
1695
|
},
|
|
1695
1696
|
"llm_instruction": "Para grids no dashboard.serialized.json, SEMPRE prefira use_grid_v2: true com column_defs quando souber os campos antecipadamente. O DataGridV2 é mais leve, suporta formatação por coluna (currency, percentage, date, etc.), resize e reorder de colunas nativo. Se não souber os campos, use o modo legado (columns + column_labels) que auto-detecta."
|
|
1696
1697
|
},
|
|
1697
|
-
"pivot": {
|
|
1698
|
-
"name": "Pivot",
|
|
1699
|
-
"category": "data",
|
|
1700
|
-
"description": "Tabela pivot (dinâmica) para análise cruzada — linhas × colunas com valores agregados.",
|
|
1701
|
-
"icon": "📋",
|
|
1698
|
+
"pivot": {
|
|
1699
|
+
"name": "Pivot",
|
|
1700
|
+
"category": "data",
|
|
1701
|
+
"description": "Tabela pivot (dinâmica) para análise cruzada — linhas × colunas com valores agregados.",
|
|
1702
|
+
"icon": "📋",
|
|
1702
1703
|
"render": "PivotComponent",
|
|
1703
1704
|
"defaultSize": { "width": 980, "height": 400 },
|
|
1704
1705
|
"llm_instruction": "Use widget_type='pivot' para tabela cruzada (ex: vendas por vendedor × mês). OBRIGATÓRIO: row_field (dimensão das linhas), col_field (dimensão das colunas), value_field (métrica). Aggregation padrão: sum.",
|
|
@@ -1707,10 +1708,30 @@
|
|
|
1707
1708
|
"col_field": { "type": "string", "required": true, "description": "Campo das colunas da tabela pivot. Ex: 'mes', 'ano', 'categoria'." },
|
|
1708
1709
|
"value_field": { "type": "string", "required": true, "description": "Campo numérico com o valor a agregar." },
|
|
1709
1710
|
"aggregation": { "type": "string", "required": false, "default": "sum", "values": ["sum", "avg", "count", "min", "max"] },
|
|
1710
|
-
"show_totals": { "type": "boolean", "required": false, "default": true, "description": "Mostrar linha/coluna de totais." },
|
|
1711
|
-
"format": { "type": "string", "required": false, "values": ["number", "currency", "percent"], "default": "number" }
|
|
1712
|
-
}
|
|
1713
|
-
},
|
|
1711
|
+
"show_totals": { "type": "boolean", "required": false, "default": true, "description": "Mostrar linha/coluna de totais." },
|
|
1712
|
+
"format": { "type": "string", "required": false, "values": ["number", "currency", "percent"], "default": "number" }
|
|
1713
|
+
}
|
|
1714
|
+
},
|
|
1715
|
+
"pivotgrid": {
|
|
1716
|
+
"name": "PivotGrid",
|
|
1717
|
+
"category": "data",
|
|
1718
|
+
"description": "Tabela pivot com visual inspirado em DataGridV2, com busca, totais e formatação.",
|
|
1719
|
+
"icon": "📋",
|
|
1720
|
+
"render": "PivotGrid",
|
|
1721
|
+
"defaultSize": { "width": 980, "height": 400 },
|
|
1722
|
+
"llm_instruction": "Use widget_type='pivotgrid' para tabela cruzada moderna (ex: vendas por vendedor × mês) quando quiser uma pivot com visual mais próximo de DataGridV2. OBRIGATÓRIO: row_field, col_field e value_field. Opcional: aggregation, show_totals e format.",
|
|
1723
|
+
"propertiesDetailed": {
|
|
1724
|
+
"row_field": { "type": "string", "required": true, "description": "Campo das linhas da tabela pivot." },
|
|
1725
|
+
"col_field": { "type": "string", "required": true, "description": "Campo das colunas da tabela pivot." },
|
|
1726
|
+
"value_field": { "type": "string", "required": true, "description": "Campo numérico com o valor a agregar." },
|
|
1727
|
+
"aggregation": { "type": "string", "required": false, "default": "sum", "values": ["sum", "avg", "count", "min", "max"] },
|
|
1728
|
+
"show_totals": { "type": "boolean", "required": false, "default": true, "description": "Mostrar linha/coluna de totais." },
|
|
1729
|
+
"format": { "type": "string", "required": false, "values": ["number", "currency", "percent"], "default": "number" },
|
|
1730
|
+
"searchable": { "type": "boolean", "required": false, "default": true },
|
|
1731
|
+
"loading_message": { "type": "string", "required": false, "default": "Carregando..." },
|
|
1732
|
+
"empty_message": { "type": "string", "required": false, "default": "Nenhum dado encontrado." }
|
|
1733
|
+
}
|
|
1734
|
+
},
|
|
1714
1735
|
"sparkline": {
|
|
1715
1736
|
"name": "Sparkline",
|
|
1716
1737
|
"category": "data",
|
|
@@ -1825,11 +1846,11 @@
|
|
|
1825
1846
|
"progress-list": {
|
|
1826
1847
|
"name": "Lista de Progresso",
|
|
1827
1848
|
"category": "data",
|
|
1828
|
-
"description": "Lista com barras de progresso, valores e percentuais. Exibe rankings de itens (top clientes, produtos, fornecedores, etc.) com barra proporcional ao valor.",
|
|
1849
|
+
"description": "Lista com barras de progresso, valores e percentuais. Exibe rankings de itens (top clientes, produtos, fornecedores, etc.) com barra proporcional ao valor. Suporta até 2 filtros dropdown internos para segmentação interativa dos dados.",
|
|
1829
1850
|
"icon": "📊",
|
|
1830
1851
|
"render": "ProgressListComponent",
|
|
1831
1852
|
"defaultSize": { "width": 480, "height": 400 },
|
|
1832
|
-
"llm_instruction": "Use widget_type='progress-list' para rankings com barra de progresso (ex: top clientes, top produtos, top cidades). OBRIGATÓRIO definir labelField (nome da categoria) e valueField (campo numérico). Os dados vêm da query SQL via query_id. NÃO use widget_type='kpi' ou 'panel' para este caso
|
|
1853
|
+
"llm_instruction": "Use widget_type='progress-list' para rankings com barra de progresso (ex: top clientes, top produtos, top cidades). OBRIGATÓRIO definir labelField (nome da categoria) e valueField (campo numérico). Os dados vêm da query SQL via query_id. NÃO use widget_type='kpi' ou 'panel' para este caso.\n\nEXEMPLO BÁSICO:\n{ \"widget_type\": \"progress-list\", \"properties\": { \"labelField\": \"nomeFornecedor\", \"valueField\": \"valorTotal\", \"maxItems\": 10, \"valueFormat\": \"currency\", \"colorScheme\": \"gradient\" } }\n\nFILTROS INTERNOS (filter1 / filter2): Use para adicionar selects discretos dentro do widget que filtram os dados localmente (client-side) sem nova query ao banco. Cada filtro tem: sql (query para popular as opções), valueField (campo valor da opção), labelField (campo label da opção, padrão=valueField), filterField (campo nos dados principais a filtrar), label (texto do select).\n\nVARIÁVEIS NAS SQLs DE FILTRO: As mesmas variáveis da query principal estão disponíveis: ${startDate}, ${endDate}, ${empresaId}, ${companyFilter:alias}.\n\nEXEMPLO COM FILTROS:\n{ \"widget_type\": \"progress-list\", \"properties\": { \"labelField\": \"nomeCliente\", \"valueField\": \"valorVendas\", \"maxItems\": 15, \"valueFormat\": \"currency\", \"showInternalFilters\": true, \"filter1\": { \"label\": \"Filial\", \"sql\": \"SELECT filialId AS value, nomeFilial AS label FROM vw_filiais WHERE empresaId = ${empresaId} ORDER BY nomeFilial\", \"valueField\": \"value\", \"labelField\": \"label\", \"filterField\": \"filialId\" }, \"filter2\": { \"label\": \"Vendedor\", \"sql\": \"SELECT vendedorId AS value, nomeVendedor AS label FROM vw_vendedores WHERE empresaId = ${empresaId} ORDER BY nomeVendedor\", \"valueField\": \"value\", \"labelField\": \"label\", \"filterField\": \"vendedorId\" } } }\n\nIMPORTANTE: labelField, valueField e filterField devem corresponder EXATAMENTE aos aliases camelCase da query SQL. Quando filter1 ou filter2 estão definidos, showInternalFilters pode ser omitido (padrão true) ou definido como false para ocultar os filtros.",
|
|
1833
1854
|
"properties": [
|
|
1834
1855
|
"labelField",
|
|
1835
1856
|
"valueField",
|
|
@@ -1842,8 +1863,50 @@
|
|
|
1842
1863
|
"colorScheme",
|
|
1843
1864
|
"primaryColor",
|
|
1844
1865
|
"sortBy",
|
|
1845
|
-
"sortOrder"
|
|
1846
|
-
|
|
1866
|
+
"sortOrder",
|
|
1867
|
+
"showInternalFilters",
|
|
1868
|
+
"filter1",
|
|
1869
|
+
"filter2"
|
|
1870
|
+
],
|
|
1871
|
+
"propertiesDetailed": {
|
|
1872
|
+
"labelField": { "type": "string", "required": true, "description": "Campo da categoria/nome exibido em cada linha. Deve ser alias camelCase da query." },
|
|
1873
|
+
"valueField": { "type": "string", "required": true, "description": "Campo numérico para as barras de progresso. Deve ser alias camelCase da query." },
|
|
1874
|
+
"aggregation": { "type": "string", "required": false, "values": ["sum", "avg", "count", "min", "max"], "default": "sum" },
|
|
1875
|
+
"maxItems": { "type": "number", "required": false, "default": 10, "description": "Número máximo de itens exibidos." },
|
|
1876
|
+
"showValues": { "type": "boolean", "required": false, "default": true, "description": "Exibir valor numérico ao lado da barra." },
|
|
1877
|
+
"showPercentage": { "type": "boolean", "required": false, "default": false, "description": "Exibir percentual ao lado da barra." },
|
|
1878
|
+
"valueFormat": { "type": "string", "required": false, "values": ["number", "currency", "compact", "percentage"], "default": "number" },
|
|
1879
|
+
"barHeight": { "type": "number", "required": false, "default": 8, "description": "Altura em px das barras de progresso." },
|
|
1880
|
+
"colorScheme": { "type": "string", "required": false, "values": ["gradient", "single", "custom"], "default": "gradient" },
|
|
1881
|
+
"primaryColor": { "type": "string", "required": false, "description": "Cor primária em hex (usado quando colorScheme='single')." },
|
|
1882
|
+
"sortBy": { "type": "string", "required": false, "values": ["value", "label", "none"], "default": "value" },
|
|
1883
|
+
"sortOrder": { "type": "string", "required": false, "values": ["asc", "desc"], "default": "desc" },
|
|
1884
|
+
"showInternalFilters": { "type": "boolean", "required": false, "default": true, "description": "Exibir os selects de filtro interno. Padrão true quando filter1 ou filter2 estão definidos." },
|
|
1885
|
+
"filter1": {
|
|
1886
|
+
"type": "object",
|
|
1887
|
+
"required": false,
|
|
1888
|
+
"description": "Filtro dropdown interno 1. Popula opções via SQL e filtra dados localmente.",
|
|
1889
|
+
"fields": {
|
|
1890
|
+
"label": { "type": "string", "required": false, "description": "Texto do label do select (ex: 'Filial', 'Vendedor')." },
|
|
1891
|
+
"sql": { "type": "string", "required": true, "description": "SQL para popular as opções. Suporta ${startDate}, ${endDate}, ${empresaId}, ${companyFilter:alias}." },
|
|
1892
|
+
"valueField": { "type": "string", "required": true, "description": "Campo do resultado SQL que será o valor da opção (deve ser alias camelCase)." },
|
|
1893
|
+
"labelField": { "type": "string", "required": false, "description": "Campo do resultado SQL que será o texto da opção (padrão: igual a valueField)." },
|
|
1894
|
+
"filterField": { "type": "string", "required": true, "description": "Campo nos dados principais (rawData) pelo qual o filtro será aplicado (deve ser alias camelCase)." }
|
|
1895
|
+
}
|
|
1896
|
+
},
|
|
1897
|
+
"filter2": {
|
|
1898
|
+
"type": "object",
|
|
1899
|
+
"required": false,
|
|
1900
|
+
"description": "Filtro dropdown interno 2. Popula opções via SQL e filtra dados localmente.",
|
|
1901
|
+
"fields": {
|
|
1902
|
+
"label": { "type": "string", "required": false, "description": "Texto do label do select (ex: 'Filial', 'Vendedor')." },
|
|
1903
|
+
"sql": { "type": "string", "required": true, "description": "SQL para popular as opções. Suporta ${startDate}, ${endDate}, ${empresaId}, ${companyFilter:alias}." },
|
|
1904
|
+
"valueField": { "type": "string", "required": true, "description": "Campo do resultado SQL que será o valor da opção (deve ser alias camelCase)." },
|
|
1905
|
+
"labelField": { "type": "string", "required": false, "description": "Campo do resultado SQL que será o texto da opção (padrão: igual a valueField)." },
|
|
1906
|
+
"filterField": { "type": "string", "required": true, "description": "Campo nos dados principais (rawData) pelo qual o filtro será aplicado (deve ser alias camelCase)." }
|
|
1907
|
+
}
|
|
1908
|
+
}
|
|
1909
|
+
}
|
|
1847
1910
|
},
|
|
1848
1911
|
"treemap": {
|
|
1849
1912
|
"name": "Treemap",
|
package/dist/sdk/src/data.d.ts
CHANGED
|
File without changes
|
|
File without changes
|
package/dist/sdk/src/data.js
CHANGED
|
File without changes
|
package/dist/sdk/src/data.js.map
CHANGED
|
File without changes
|
package/dist/sdk/src/index.d.ts
CHANGED
|
File without changes
|
|
File without changes
|
package/dist/sdk/src/index.js
CHANGED
|
File without changes
|
|
File without changes
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@wibi-global/sdk",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.3",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "dist/sdk/src/index.js",
|
|
6
6
|
"types": "dist/sdk/src/index.d.ts",
|
|
@@ -26,7 +26,7 @@
|
|
|
26
26
|
"clean": "node -e \"require('node:fs').rmSync('dist', { recursive: true, force: true })\""
|
|
27
27
|
},
|
|
28
28
|
"dependencies": {
|
|
29
|
-
"@wibi-global/artifact-schema": "0.1.
|
|
29
|
+
"@wibi-global/artifact-schema": "0.1.3"
|
|
30
30
|
},
|
|
31
31
|
"publishConfig": {
|
|
32
32
|
"access": "public"
|