@astrato-io/visualizations 0.0.0-stage → 0.6.5

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.
Files changed (139) hide show
  1. package/CHANGELOG.md +23 -0
  2. package/LICENSE +93 -0
  3. package/README.md +843 -2
  4. package/THIRD_PARTY_NOTICES.md +8477 -0
  5. package/VISUALIZATION_DEFINITIONS.md +2378 -0
  6. package/chunks/ClickAwayListener-BbeNMAvj.js +52 -0
  7. package/chunks/LinearProgress-B1FeWaen.js +253 -0
  8. package/chunks/accessors-DemrDevR.js +128 -0
  9. package/chunks/app-filter-bar.compiler-BGJ7HAbr.js +64 -0
  10. package/chunks/bar.compiler-CT0ZbQKc.js +374 -0
  11. package/chunks/builder-B6dWSIdD.js +12289 -0
  12. package/chunks/color-settings-ZIvgNTq1.js +10 -0
  13. package/chunks/coloring-B1XAfg6b.js +664 -0
  14. package/chunks/debounce-fn-CUixuz45.js +7 -0
  15. package/chunks/definitions-D3OVqmXl.js +2102 -0
  16. package/chunks/escobar-eDjtGpkC.js +34606 -0
  17. package/chunks/events-WZut5Ow6.js +4 -0
  18. package/chunks/extend-BKUkc4_i.js +37 -0
  19. package/chunks/filter.compiler-DBsyRBJt.js +70 -0
  20. package/chunks/filtering-tqjAyJH5.js +1072 -0
  21. package/chunks/grouping-type-On4s9Thj.js +3 -0
  22. package/chunks/handlers-VTBfIZYZ.js +13072 -0
  23. package/chunks/isEqual-BDxAhUo8.js +7514 -0
  24. package/chunks/line.compiler-CzdM5Ld0.js +198 -0
  25. package/chunks/metadata-BGElBy5Z.js +28 -0
  26. package/chunks/number.compiler-G-R7y16P.js +53 -0
  27. package/chunks/operations-CTNUX6Sy.js +26249 -0
  28. package/chunks/range-CiwTbMig.js +22 -0
  29. package/chunks/registry-CsQQzukD.js +920 -0
  30. package/chunks/requirements-DYjZCFyf.js +6 -0
  31. package/chunks/rolldown-runtime-DleVn1XH.js +28 -0
  32. package/chunks/set-coloring-datafield-B3uIS1Pe.js +8 -0
  33. package/chunks/shared-CBvcC5YV.js +1218 -0
  34. package/chunks/src-BOS6SqkZ.js +67 -0
  35. package/chunks/src-D9XogOrc.js +422 -0
  36. package/chunks/standalone-0M4HlmDW2.js +3944 -0
  37. package/chunks/standalone-0ashe9w1.js +411 -0
  38. package/chunks/standalone-B7jax8wa.js +339 -0
  39. package/chunks/standalone-BK0VYU-l.js +463 -0
  40. package/chunks/standalone-BMIbT1b2.js +4619 -0
  41. package/chunks/standalone-BZV5vOwA.js +6 -0
  42. package/chunks/standalone-BhDrWj4p.js +1980 -0
  43. package/chunks/standalone-BtSHCp2U2.js +673 -0
  44. package/chunks/standalone-BvaKdky9.js +344 -0
  45. package/chunks/standalone-BwtM31-f.js +2 -0
  46. package/chunks/standalone-C3gg736V.js +1129 -0
  47. package/chunks/standalone-CC1VUjO32.js +299 -0
  48. package/chunks/standalone-C_rYnZ0N.js +741 -0
  49. package/chunks/standalone-CoLrAxRV.js +13198 -0
  50. package/chunks/standalone-DC-aUgXC.js +3855 -0
  51. package/chunks/standalone-DCtRoTWg.js +675 -0
  52. package/chunks/standalone-DUDFTBqL.js +833 -0
  53. package/chunks/standalone-DhZkX9Td.js +2 -0
  54. package/chunks/standalone-DtLElfuM.js +512 -0
  55. package/chunks/standalone-G9Q4Uczu.js +726 -0
  56. package/chunks/standalone-JuLF-OoH.js +1762 -0
  57. package/chunks/standalone-_DeX21JJ.js +383 -0
  58. package/chunks/standalone-gFhKZh8m.js +179 -0
  59. package/chunks/standalone-tDNy-SFH.js +281 -0
  60. package/chunks/standalone-v1oxfU20.js +68 -0
  61. package/chunks/standalone-vzBY6q0I2.js +140 -0
  62. package/chunks/stroke-dash-UgMEcCS4.js +6 -0
  63. package/chunks/table.compiler-tb914oj3.js +222 -0
  64. package/chunks/typeof-CJDtcySz.js +13 -0
  65. package/chunks/ui-DQWtv2iM.js +63551 -0
  66. package/chunks/url-utils-B17gj_mr.js +5501 -0
  67. package/chunks/useFieldName-BvdcoJRl.js +7 -0
  68. package/chunks/utils-Bg7K-t6K.js +32379 -0
  69. package/chunks/view-Bn83C8d9.js +12466 -0
  70. package/definitions.js +3 -0
  71. package/docs/operations/astrato-app-filter-bar.md +161 -0
  72. package/docs/operations/bar.md +6968 -0
  73. package/docs/operations/combo.md +5804 -0
  74. package/docs/operations/date-picker.md +644 -0
  75. package/docs/operations/distribution-gauge.md +3082 -0
  76. package/docs/operations/dot.md +5570 -0
  77. package/docs/operations/filter.md +1483 -0
  78. package/docs/operations/gauge.md +3316 -0
  79. package/docs/operations/heatMap.md +5944 -0
  80. package/docs/operations/histogram.md +1856 -0
  81. package/docs/operations/iframe.md +56 -0
  82. package/docs/operations/image.md +177 -0
  83. package/docs/operations/index.md +46 -0
  84. package/docs/operations/line.md +6391 -0
  85. package/docs/operations/number.md +3903 -0
  86. package/docs/operations/pie.md +5956 -0
  87. package/docs/operations/radar.md +4566 -0
  88. package/docs/operations/sankey.md +3088 -0
  89. package/docs/operations/scatter.md +5969 -0
  90. package/docs/operations/shape.md +315 -0
  91. package/docs/operations/simpleTextObject.md +699 -0
  92. package/docs/operations/slider.md +220 -0
  93. package/docs/operations/table.md +8800 -0
  94. package/docs/operations/tree.md +2867 -0
  95. package/docs/operations/treemap.md +3527 -0
  96. package/docs/operations/waterfall.md +2928 -0
  97. package/docs/operations/word-cloud.md +3000 -0
  98. package/getters.js +18 -0
  99. package/index.js +1183 -0
  100. package/metadata.js +20 -0
  101. package/operations.js +64 -0
  102. package/package.json +185 -4
  103. package/src/definitions/index.d.ts +2 -0
  104. package/src/definitions/model/definitions/available-fields.d.ts +35 -0
  105. package/src/definitions/model/definitions/compilers/compile.d.ts +7 -0
  106. package/src/definitions/model/definitions/data-item-resolution.d.ts +19 -0
  107. package/src/definitions/model/definitions/descriptors/descriptor-metadata.d.ts +1341 -0
  108. package/src/definitions/model/definitions/descriptors/json-schema.d.ts +2 -0
  109. package/src/definitions/model/definitions/diagnostics.d.ts +5 -0
  110. package/src/definitions/model/definitions/field-suggestions.d.ts +2 -0
  111. package/src/definitions/model/definitions/index.d.ts +23 -0
  112. package/src/definitions/model/definitions/registry/compile.d.ts +2 -0
  113. package/src/definitions/model/definitions/registry/descriptor-registry.d.ts +3 -0
  114. package/src/definitions/model/definitions/schema-registry.d.ts +660 -0
  115. package/src/definitions/model/definitions/schemas/app-filter-bar.schema.d.ts +22 -0
  116. package/src/definitions/model/definitions/schemas/bar.schema.d.ts +73 -0
  117. package/src/definitions/model/definitions/schemas/broad-chart.schema.d.ts +68 -0
  118. package/src/definitions/model/definitions/schemas/common.schema.d.ts +303 -0
  119. package/src/definitions/model/definitions/schemas/filter.schema.d.ts +22 -0
  120. package/src/definitions/model/definitions/schemas/index.d.ts +9 -0
  121. package/src/definitions/model/definitions/schemas/line.schema.d.ts +72 -0
  122. package/src/definitions/model/definitions/schemas/number.schema.d.ts +21 -0
  123. package/src/definitions/model/definitions/schemas/object.schema.d.ts +215 -0
  124. package/src/definitions/model/definitions/schemas/table.schema.d.ts +458 -0
  125. package/src/definitions/model/definitions/types/compilation.types.d.ts +36 -0
  126. package/src/definitions/model/definitions/types/definition.types.d.ts +2 -0
  127. package/src/definitions/model/definitions/types/descriptor.types.d.ts +39 -0
  128. package/src/definitions/model/definitions/types/index.d.ts +3 -0
  129. package/src/definitions/model/definitions/validation.d.ts +3 -0
  130. package/src/getters/index.d.ts +30 -0
  131. package/src/index.d.ts +4 -0
  132. package/src/metadata/index.d.ts +4 -0
  133. package/src/operations/index.d.ts +30 -0
  134. package/src/registry/index.d.ts +6 -0
  135. package/src/runtime/index.d.ts +2 -0
  136. package/src/types.d.ts +307 -0
  137. package/src/visualization-catalog.d.ts +82 -0
  138. package/src/web-components/index.d.ts +12 -0
  139. package/styles.css +2 -0
@@ -0,0 +1,1341 @@
1
+ import type { VisualizationDefinition } from '../types/definition.types';
2
+ import type { VisualizationDefinitionDocumentation, VisualizationDefinitionFeature } from '../types/descriptor.types';
3
+ type VisualizationDefinitionType = VisualizationDefinition['type'];
4
+ export interface VisualizationDefinitionDescriptorMetadataEntry<TType extends VisualizationDefinitionType = VisualizationDefinitionType> {
5
+ /** Additional named scenarios that demonstrate materially different valid definition shapes. */
6
+ additionalExamples?: readonly {
7
+ definition: VisualizationDefinition & {
8
+ type: TType;
9
+ };
10
+ title: string;
11
+ }[];
12
+ /** Product-facing explanation of the selected visualization's requirements and semantics. */
13
+ documentation: VisualizationDefinitionDocumentation;
14
+ /** Canonical valid definition used by generated documentation and Nash prompting examples. */
15
+ example: VisualizationDefinition & {
16
+ type: TType;
17
+ };
18
+ /** Concise capability list used when callers or Nash discover and compare visualization types. */
19
+ supportedFeatures: readonly VisualizationDefinitionFeature[];
20
+ /** VisualizationDefinition discriminator associated with this metadata entry. */
21
+ type: TType;
22
+ }
23
+ interface ExampleDimension {
24
+ fieldKey: string;
25
+ format: {
26
+ formatType: 'none';
27
+ };
28
+ ref: string;
29
+ showNullValues?: boolean;
30
+ }
31
+ interface ExampleField {
32
+ fieldKey: string;
33
+ ref: string;
34
+ }
35
+ interface ExampleMeasure {
36
+ aggregation: string;
37
+ fieldKey: string;
38
+ format: {
39
+ formatType: 'number2Decimal';
40
+ negativeType: 'parenthesis';
41
+ };
42
+ ref: string;
43
+ }
44
+ /**
45
+ * Complete metadata catalog used by public descriptors and generated reference documentation.
46
+ * Adding a new VisualizationDefinition type without a corresponding entry fails TypeScript compilation.
47
+ */
48
+ export declare const visualizationDefinitionDescriptorMetadata: readonly [{
49
+ readonly additionalExamples: readonly [{
50
+ readonly definition: {
51
+ readonly data: {
52
+ readonly dimensions: [ExampleDimension];
53
+ readonly measures: [ExampleMeasure];
54
+ };
55
+ readonly presentation: {
56
+ readonly coloring: {
57
+ readonly overwrites: [{
58
+ readonly color: "#0F766E";
59
+ readonly value: "Audi";
60
+ }, {
61
+ readonly color: "#D97706";
62
+ readonly operator: "inList";
63
+ readonly values: ["BMW", "Buick"];
64
+ }];
65
+ readonly rules: [{
66
+ readonly color: "#DC2626";
67
+ readonly measure: "sales";
68
+ readonly operator: "less";
69
+ readonly value: 20;
70
+ }];
71
+ };
72
+ };
73
+ readonly type: "bar";
74
+ readonly version: 1;
75
+ };
76
+ readonly title: "Colors bound to dimension values and a measure threshold";
77
+ }];
78
+ readonly documentation: {
79
+ readonly constraints: readonly ["Sorting and Top N refer to definition-local refs, not generated data-item IDs.", "Every dimension and measure must resolve to an available field with a compatible role.", "Set axis per measure to plot it against the primary or the secondary measure axis.", "presentation.axes.primaryMeasure.bands shades the plot between two primary measure axis values; start and end are measure values, and the bands replace any on the base vSpec.", "Set range on a measure axis to fix its min, max, or both, for example to give several charts one shared scale; leave both unset and set startsAtZero to keep an auto-fitted axis anchored at zero. Set inverted on a measure axis to reverse its values, for example to put rank 1 at the top.", "Set scale to log on a measure axis to draw it logarithmically, with gridlines at powers of ten. Zero and negative values are drawn at the floor of a log axis."];
80
+ readonly dataRequirements: readonly ["At least one dimension.", "At least one measure."];
81
+ readonly summary: "Categorical comparison chart with sorting, limiting, per-measure axes, labels, and orientation controls.";
82
+ readonly title: "Bar chart";
83
+ };
84
+ readonly example: {
85
+ readonly data: {
86
+ readonly dimensions: [{
87
+ readonly showNullValues: false;
88
+ readonly fieldKey: string;
89
+ readonly format: {
90
+ formatType: "none";
91
+ };
92
+ readonly ref: string;
93
+ }];
94
+ readonly measures: [{
95
+ readonly dataLabels: {
96
+ readonly placements: ["outside", "inside"];
97
+ readonly visible: true;
98
+ };
99
+ readonly aggregation: string;
100
+ readonly fieldKey: string;
101
+ readonly format: {
102
+ formatType: "number2Decimal";
103
+ negativeType: "parenthesis";
104
+ };
105
+ readonly ref: string;
106
+ }];
107
+ };
108
+ readonly filterGroup: {
109
+ filters: {
110
+ fieldKey: "[Cars].[Manufacturer]";
111
+ operator: "inList";
112
+ values: string[];
113
+ }[];
114
+ operator: "and";
115
+ };
116
+ readonly limiting: {
117
+ readonly queryLimit: 100;
118
+ readonly topN: {
119
+ readonly by: "sales";
120
+ readonly count: 10;
121
+ readonly direction: "desc";
122
+ readonly showOthers: false;
123
+ };
124
+ };
125
+ readonly presentation: {
126
+ readonly axes: {
127
+ readonly primaryMeasure: {
128
+ readonly bands: [{
129
+ readonly color: "#E6E6E6";
130
+ readonly end: 150000;
131
+ readonly label: "Target range";
132
+ readonly start: 100000;
133
+ }];
134
+ readonly labelsVisible: boolean;
135
+ readonly title: string;
136
+ readonly titleVisible: boolean;
137
+ };
138
+ readonly dimension: {
139
+ labelsVisible: boolean;
140
+ title: string;
141
+ titleVisible: boolean;
142
+ };
143
+ readonly secondaryMeasure: {
144
+ labelsVisible: boolean;
145
+ title: string;
146
+ titleVisible: boolean;
147
+ };
148
+ };
149
+ readonly legend: {
150
+ position: "right";
151
+ title: string;
152
+ visible: boolean;
153
+ };
154
+ readonly orientation: "vertical";
155
+ };
156
+ readonly sorting: [{
157
+ readonly by: "sales";
158
+ readonly direction: "desc";
159
+ }];
160
+ readonly type: "bar";
161
+ readonly version: 1;
162
+ };
163
+ readonly supportedFeatures: readonly ["axes", "axis-bands", "axis-range", "axis-scale", "conditional-coloring", "data-labels", "dimensions", "filters", "legend", "measure-axis", "measures", "orientation", "query-limit", "sorting", "top-n", "value-formatting"];
164
+ readonly type: "bar";
165
+ }, {
166
+ readonly documentation: {
167
+ readonly constraints: readonly ["The single dimension is assigned the combo category role.", "Set seriesType per measure to create bar, line, or point series; omission keeps the existing line default.", "Data labels apply only to bar series.", "Sorting refers to definition-local refs, not generated data-item IDs.", "Set axis per measure to plot it against the primary or the secondary measure axis. Bar series share one axis: state it on any bar measure, and every bar measure that states one must state the same axis.", "presentation.axes.primaryMeasure.bands shades the plot between two primary measure axis values; start and end are measure values, and the bands replace any on the base vSpec.", "Set range on a measure axis to fix its min, max, or both, for example to give several charts one shared scale; leave both unset and set startsAtZero to keep an auto-fitted axis anchored at zero. Set inverted on a measure axis to reverse its values, for example to put rank 1 at the top.", "Set scale to log on a measure axis to draw it logarithmically, with gridlines at powers of ten. Zero and negative values are drawn at the floor of a log axis."];
168
+ readonly dataRequirements: readonly ["Exactly one dimension.", "Between one and ten measures."];
169
+ readonly summary: "Combined categorical chart supporting multiple measures, per-measure axes, sorting, limiting, labels, legend, and orientation.";
170
+ readonly title: "Combo chart";
171
+ };
172
+ readonly example: {
173
+ readonly data: {
174
+ readonly dimensions: [ExampleDimension];
175
+ readonly measures: [{
176
+ readonly dataLabels: {
177
+ readonly visible: true;
178
+ };
179
+ readonly seriesType: "bar";
180
+ readonly aggregation: string;
181
+ readonly fieldKey: string;
182
+ readonly format: {
183
+ formatType: "number2Decimal";
184
+ negativeType: "parenthesis";
185
+ };
186
+ readonly ref: string;
187
+ }, {
188
+ readonly axis: "secondary";
189
+ readonly seriesType: "line";
190
+ readonly aggregation: string;
191
+ readonly fieldKey: string;
192
+ readonly format: {
193
+ formatType: "number2Decimal";
194
+ negativeType: "parenthesis";
195
+ };
196
+ readonly ref: string;
197
+ }];
198
+ };
199
+ readonly filterGroup: {
200
+ filters: {
201
+ fieldKey: "[Cars].[Manufacturer]";
202
+ operator: "inList";
203
+ values: string[];
204
+ }[];
205
+ operator: "and";
206
+ };
207
+ readonly limiting: {
208
+ readonly queryLimit: 100;
209
+ };
210
+ readonly presentation: {
211
+ readonly axes: {
212
+ dimension: {
213
+ labelsVisible: boolean;
214
+ title: string;
215
+ titleVisible: boolean;
216
+ };
217
+ primaryMeasure: {
218
+ labelsVisible: boolean;
219
+ title: string;
220
+ titleVisible: boolean;
221
+ };
222
+ };
223
+ readonly dataLabels: {
224
+ readonly visible: true;
225
+ };
226
+ readonly legend: {
227
+ position: "right";
228
+ title: string;
229
+ visible: boolean;
230
+ };
231
+ readonly orientation: "vertical";
232
+ };
233
+ readonly sorting: [{
234
+ readonly by: "sales";
235
+ readonly direction: "desc";
236
+ }];
237
+ readonly type: "combo";
238
+ readonly version: 1;
239
+ };
240
+ readonly supportedFeatures: readonly [...VisualizationDefinitionFeature[], "axes", "axis-bands", "axis-range", "axis-scale", "data-labels", "legend", "measure-axis", "orientation", "query-limit", "series-type", "sorting"];
241
+ readonly type: "combo";
242
+ }, {
243
+ readonly documentation: {
244
+ readonly constraints: readonly ["All measures are assigned the gauge-value role.", "Distribution definitions enable the established gauge comparison mode."];
245
+ readonly dataRequirements: readonly ["Zero or one dimension.", "Between one and twenty measures."];
246
+ readonly summary: "Gauge distribution across one or more values, optionally grouped by a dimension.";
247
+ readonly title: "Distribution gauge";
248
+ };
249
+ readonly example: {
250
+ readonly data: {
251
+ readonly dimensions: [ExampleDimension];
252
+ readonly measures: [ExampleMeasure, ExampleMeasure];
253
+ };
254
+ readonly filterGroup: {
255
+ filters: {
256
+ fieldKey: "[Cars].[Manufacturer]";
257
+ operator: "inList";
258
+ values: string[];
259
+ }[];
260
+ operator: "and";
261
+ };
262
+ readonly presentation: {
263
+ readonly displayMode: "bar";
264
+ readonly legend: {
265
+ position: "right";
266
+ title: string;
267
+ visible: boolean;
268
+ };
269
+ };
270
+ readonly type: "distribution-gauge";
271
+ readonly version: 1;
272
+ };
273
+ readonly supportedFeatures: readonly [...VisualizationDefinitionFeature[], "conditional-coloring", "display-mode", "legend"];
274
+ readonly type: "distribution-gauge";
275
+ }, {
276
+ readonly documentation: {
277
+ readonly constraints: readonly ["Dimension order is significant and maps to the two dot-chart dimension roles.", "Set range on the primary measure axis to fix its min, max, or both, for example to give several charts one shared scale; leave both unset and set startsAtZero to keep an auto-fitted axis anchored at zero. Set inverted on the primary measure axis to reverse its values."];
278
+ readonly dataRequirements: readonly ["Exactly two dimensions.", "Exactly one measure."];
279
+ readonly summary: "Dot comparison using two categorical dimensions and one measure.";
280
+ readonly title: "Dot chart";
281
+ };
282
+ readonly example: {
283
+ readonly data: {
284
+ readonly dimensions: [ExampleDimension, ExampleDimension];
285
+ readonly measures: [ExampleMeasure];
286
+ };
287
+ readonly filterGroup: {
288
+ filters: {
289
+ fieldKey: "[Cars].[Manufacturer]";
290
+ operator: "inList";
291
+ values: string[];
292
+ }[];
293
+ operator: "and";
294
+ };
295
+ readonly presentation: {
296
+ readonly axes: {
297
+ dimension: {
298
+ labelsVisible: boolean;
299
+ title: string;
300
+ titleVisible: boolean;
301
+ };
302
+ primaryMeasure: {
303
+ labelsVisible: boolean;
304
+ title: string;
305
+ titleVisible: boolean;
306
+ };
307
+ };
308
+ readonly legend: {
309
+ position: "right";
310
+ title: string;
311
+ visible: boolean;
312
+ };
313
+ readonly orientation: "horizontal";
314
+ };
315
+ readonly type: "dot";
316
+ readonly version: 1;
317
+ };
318
+ readonly supportedFeatures: readonly [...VisualizationDefinitionFeature[], "conditional-coloring", "axes", "axis-range", "legend", "orientation"];
319
+ readonly type: "dot";
320
+ }, {
321
+ readonly documentation: {
322
+ readonly constraints: readonly ["With a dimension, the first measure is the gauge value and the optional second measure is the target.", "Without a dimension, supplied measures are gauge values.", "When a target measure is supplied, the compiler enables the established data-target mode."];
323
+ readonly dataRequirements: readonly ["Zero or one dimension.", "Between one and twenty measures; with one dimension, at most two measures."];
324
+ readonly summary: "Gauge values with an optional grouping dimension and optional data target.";
325
+ readonly title: "Gauge chart";
326
+ };
327
+ readonly example: {
328
+ readonly data: {
329
+ readonly dimensions: [ExampleDimension];
330
+ readonly measures: [ExampleMeasure, ExampleMeasure];
331
+ };
332
+ readonly filterGroup: {
333
+ filters: {
334
+ fieldKey: "[Cars].[Manufacturer]";
335
+ operator: "inList";
336
+ values: string[];
337
+ }[];
338
+ operator: "and";
339
+ };
340
+ readonly presentation: {
341
+ readonly displayMode: "radial";
342
+ readonly legend: {
343
+ position: "right";
344
+ title: string;
345
+ visible: boolean;
346
+ };
347
+ };
348
+ readonly type: "gauge";
349
+ readonly version: 1;
350
+ };
351
+ readonly supportedFeatures: readonly [...VisualizationDefinitionFeature[], "conditional-coloring", "display-mode", "legend"];
352
+ readonly type: "gauge";
353
+ }, {
354
+ readonly documentation: {
355
+ readonly constraints: readonly ["Dimension order maps to horizontal then vertical roles.", "Measure order maps to color then optional size roles."];
356
+ readonly dataRequirements: readonly ["Exactly two dimensions.", "One or two measures."];
357
+ readonly summary: "Two-dimensional matrix colored and optionally sized by measures.";
358
+ readonly title: "Heat map";
359
+ };
360
+ readonly example: {
361
+ readonly data: {
362
+ readonly dimensions: [ExampleDimension, ExampleDimension];
363
+ readonly measures: [ExampleMeasure, ExampleMeasure];
364
+ };
365
+ readonly filterGroup: {
366
+ filters: {
367
+ fieldKey: "[Cars].[Manufacturer]";
368
+ operator: "inList";
369
+ values: string[];
370
+ }[];
371
+ operator: "and";
372
+ };
373
+ readonly limiting: {
374
+ readonly queryLimit: 100;
375
+ };
376
+ readonly presentation: {
377
+ readonly axes: {
378
+ dimension: {
379
+ labelsVisible: boolean;
380
+ title: string;
381
+ titleVisible: boolean;
382
+ };
383
+ primaryMeasure: {
384
+ labelsVisible: boolean;
385
+ title: string;
386
+ titleVisible: boolean;
387
+ };
388
+ secondaryDimension: {
389
+ labelsVisible: boolean;
390
+ title: string;
391
+ titleVisible: boolean;
392
+ };
393
+ };
394
+ readonly legend: {
395
+ position: "right";
396
+ title: string;
397
+ visible: boolean;
398
+ };
399
+ };
400
+ readonly sorting: [{
401
+ readonly by: "sales";
402
+ readonly direction: "desc";
403
+ }];
404
+ readonly type: "heatMap";
405
+ readonly version: 1;
406
+ };
407
+ readonly supportedFeatures: readonly [...VisualizationDefinitionFeature[], "conditional-coloring", "axes", "legend", "query-limit", "sorting"];
408
+ readonly type: "heatMap";
409
+ }, {
410
+ readonly documentation: {
411
+ readonly constraints: readonly ["The compiler creates the canonical generated count measure; callers do not provide measures.", "presentation.axes.primaryMeasure.bands shades the plot between two primary measure axis values; start and end are measure values, and the bands replace any on the base vSpec.", "Set range on the primary measure axis to fix its min, max, or both, for example to give several charts one shared scale; leave both unset and set startsAtZero to keep an auto-fitted axis anchored at zero. Set inverted on the primary measure axis to reverse its values."];
412
+ readonly dataRequirements: readonly ["Exactly one numeric dimension.", "No caller-supplied measures."];
413
+ readonly summary: "Distribution of a numeric field into generated bins and counts.";
414
+ readonly title: "Histogram";
415
+ };
416
+ readonly example: {
417
+ readonly data: {
418
+ readonly dimensions: [ExampleDimension];
419
+ };
420
+ readonly filterGroup: {
421
+ filters: {
422
+ fieldKey: "[Cars].[Manufacturer]";
423
+ operator: "inList";
424
+ values: string[];
425
+ }[];
426
+ operator: "and";
427
+ };
428
+ readonly presentation: {
429
+ readonly axes: {
430
+ dimension: {
431
+ labelsVisible: boolean;
432
+ title: string;
433
+ titleVisible: boolean;
434
+ };
435
+ primaryMeasure: {
436
+ labelsVisible: boolean;
437
+ title: string;
438
+ titleVisible: boolean;
439
+ };
440
+ };
441
+ readonly legend: {
442
+ position: "right";
443
+ title: string;
444
+ visible: boolean;
445
+ };
446
+ readonly orientation: "vertical";
447
+ };
448
+ readonly type: "histogram";
449
+ readonly version: 1;
450
+ };
451
+ readonly supportedFeatures: readonly ["axes", "axis-bands", "axis-range", "dimensions", "filters", "legend", "orientation", "value-formatting"];
452
+ readonly type: "histogram";
453
+ }, {
454
+ readonly additionalExamples: readonly [{
455
+ readonly definition: {
456
+ readonly data: {
457
+ readonly dimensions: [ExampleDimension];
458
+ readonly measures: [{
459
+ readonly dataPointShape: "circle";
460
+ readonly aggregation: string;
461
+ readonly fieldKey: string;
462
+ readonly format: {
463
+ formatType: "number2Decimal";
464
+ negativeType: "parenthesis";
465
+ };
466
+ readonly ref: string;
467
+ }];
468
+ };
469
+ readonly presentation: {
470
+ readonly axes: {
471
+ readonly primaryMeasure: {
472
+ readonly inverted: true;
473
+ readonly range: {
474
+ readonly max: 100;
475
+ readonly min: 1;
476
+ };
477
+ readonly title: "Rank";
478
+ };
479
+ };
480
+ };
481
+ readonly type: "line";
482
+ readonly version: 1;
483
+ };
484
+ readonly title: "Fixed, inverted measure axis";
485
+ }, {
486
+ readonly definition: {
487
+ readonly data: {
488
+ readonly dimensions: [ExampleDimension, ExampleDimension];
489
+ readonly measures: [{
490
+ readonly dataPointShape: "circle";
491
+ readonly aggregation: string;
492
+ readonly fieldKey: string;
493
+ readonly format: {
494
+ formatType: "number2Decimal";
495
+ negativeType: "parenthesis";
496
+ };
497
+ readonly ref: string;
498
+ }];
499
+ };
500
+ readonly presentation: {
501
+ readonly coloring: {
502
+ readonly overwrites: [{
503
+ readonly color: "#7C3AED";
504
+ readonly operator: "startsWith";
505
+ readonly value: "A";
506
+ }];
507
+ };
508
+ };
509
+ readonly type: "line";
510
+ readonly version: 1;
511
+ };
512
+ readonly title: "Series colored by dimension value";
513
+ }];
514
+ readonly documentation: {
515
+ readonly constraints: readonly ["Each measure may select the primary or secondary axis using its axis property.", "Visible data labels require dataPointShape on every measure.", "presentation.axes.primaryMeasure.bands shades the plot between two primary measure axis values; start and end are measure values, and the bands replace any on the base vSpec.", "Set range on a measure axis to fix its min, max, or both, for example to give several charts one shared scale; leave both unset and set startsAtZero to keep an auto-fitted axis anchored at zero. Set inverted on a measure axis to reverse its values, for example to put rank 1 at the top.", "Set scale to log on a measure axis to draw it logarithmically, with gridlines at powers of ten. Zero and negative values are drawn at the floor of a log axis.", "Value colors in presentation.coloring require at least two dimensions; measure color rules are not supported."];
516
+ readonly dataRequirements: readonly ["At least one dimension.", "At least one measure."];
517
+ readonly summary: "Trend chart with sorting, query limiting, dual measure axes, labels, legend, and orientation.";
518
+ readonly title: "Line chart";
519
+ };
520
+ readonly example: {
521
+ readonly data: {
522
+ readonly dimensions: [ExampleDimension];
523
+ readonly measures: [{
524
+ readonly axis: "primary";
525
+ readonly dataPointShape: "circle";
526
+ readonly aggregation: string;
527
+ readonly fieldKey: string;
528
+ readonly format: {
529
+ formatType: "number2Decimal";
530
+ negativeType: "parenthesis";
531
+ };
532
+ readonly ref: string;
533
+ }, {
534
+ readonly axis: "secondary";
535
+ readonly dataPointShape: "square";
536
+ readonly aggregation: string;
537
+ readonly fieldKey: string;
538
+ readonly format: {
539
+ formatType: "number2Decimal";
540
+ negativeType: "parenthesis";
541
+ };
542
+ readonly ref: string;
543
+ }];
544
+ };
545
+ readonly filterGroup: {
546
+ filters: {
547
+ fieldKey: "[Cars].[Manufacturer]";
548
+ operator: "inList";
549
+ values: string[];
550
+ }[];
551
+ operator: "and";
552
+ };
553
+ readonly limiting: {
554
+ readonly queryLimit: 100;
555
+ };
556
+ readonly presentation: {
557
+ readonly axes: {
558
+ dimension: {
559
+ labelsVisible: boolean;
560
+ title: string;
561
+ titleVisible: boolean;
562
+ };
563
+ primaryMeasure: {
564
+ labelsVisible: boolean;
565
+ title: string;
566
+ titleVisible: boolean;
567
+ };
568
+ secondaryMeasure: {
569
+ labelsVisible: boolean;
570
+ title: string;
571
+ titleVisible: boolean;
572
+ };
573
+ };
574
+ readonly dataLabels: {
575
+ readonly density: "medium";
576
+ readonly visible: true;
577
+ };
578
+ readonly legend: {
579
+ position: "right";
580
+ title: string;
581
+ visible: boolean;
582
+ };
583
+ readonly orientation: "vertical";
584
+ };
585
+ readonly sorting: [{
586
+ readonly by: "sales";
587
+ readonly direction: "desc";
588
+ }];
589
+ readonly type: "line";
590
+ readonly version: 1;
591
+ };
592
+ readonly supportedFeatures: readonly ["axes", "axis-bands", "axis-range", "axis-scale", "conditional-coloring", "data-labels", "data-points", "dimensions", "filters", "legend", "measure-axis", "measures", "orientation", "query-limit", "sorting", "value-formatting"];
593
+ readonly type: "line";
594
+ }, {
595
+ readonly documentation: {
596
+ readonly constraints: readonly ["Without dimensions, at least two measures are required.", "With dimensions, exactly one measure is supported.", "Value colors in presentation.coloring require two dimensions; measure color rules are not supported."];
597
+ readonly dataRequirements: readonly ["Zero to two dimensions.", "Two to five measures without dimensions, or one with dimensions."];
598
+ readonly summary: "Radial comparison chart for one or more measures with optional categorical dimensions.";
599
+ readonly title: "Radar chart";
600
+ };
601
+ readonly example: {
602
+ readonly data: {
603
+ readonly dimensions: [ExampleDimension];
604
+ readonly measures: [ExampleMeasure];
605
+ };
606
+ readonly filterGroup: {
607
+ filters: {
608
+ fieldKey: "[Cars].[Manufacturer]";
609
+ operator: "inList";
610
+ values: string[];
611
+ }[];
612
+ operator: "and";
613
+ };
614
+ readonly presentation: {
615
+ readonly legend: {
616
+ position: "right";
617
+ title: string;
618
+ visible: boolean;
619
+ };
620
+ };
621
+ readonly type: "radar";
622
+ readonly version: 1;
623
+ };
624
+ readonly supportedFeatures: readonly [...VisualizationDefinitionFeature[], "conditional-coloring", "legend"];
625
+ readonly type: "radar";
626
+ }, {
627
+ readonly additionalExamples: readonly [{
628
+ readonly definition: {
629
+ readonly data: {
630
+ readonly dimensions: [ExampleDimension];
631
+ readonly measures: [ExampleMeasure];
632
+ };
633
+ readonly presentation: {
634
+ readonly coloring: {
635
+ readonly overwrites: [{
636
+ readonly color: "#134E4A";
637
+ readonly value: "Audi";
638
+ }, {
639
+ readonly color: "#2DD4BF";
640
+ readonly value: "BMW";
641
+ }, {
642
+ readonly color: "#CCFBF1";
643
+ readonly value: "Buick";
644
+ }];
645
+ };
646
+ };
647
+ readonly type: "pie";
648
+ readonly version: 1;
649
+ };
650
+ readonly title: "Ordered bands colored along a ramp";
651
+ }];
652
+ readonly documentation: {
653
+ readonly constraints: readonly ["The first measure is the slice value; the optional second measure receives the length role."];
654
+ readonly dataRequirements: readonly ["Exactly one dimension.", "One or two measures."];
655
+ readonly summary: "Part-to-whole chart with optional secondary radial measure.";
656
+ readonly title: "Pie chart";
657
+ };
658
+ readonly example: {
659
+ readonly data: {
660
+ readonly dimensions: [ExampleDimension];
661
+ readonly measures: [ExampleMeasure];
662
+ };
663
+ readonly filterGroup: {
664
+ filters: {
665
+ fieldKey: "[Cars].[Manufacturer]";
666
+ operator: "inList";
667
+ values: string[];
668
+ }[];
669
+ operator: "and";
670
+ };
671
+ readonly limiting: {
672
+ readonly queryLimit: 100;
673
+ };
674
+ readonly presentation: {
675
+ readonly legend: {
676
+ position: "right";
677
+ title: string;
678
+ visible: boolean;
679
+ };
680
+ };
681
+ readonly sorting: [{
682
+ readonly by: "sales";
683
+ readonly direction: "desc";
684
+ }];
685
+ readonly type: "pie";
686
+ readonly version: 1;
687
+ };
688
+ readonly supportedFeatures: readonly [...VisualizationDefinitionFeature[], "conditional-coloring", "legend", "query-limit", "sorting"];
689
+ readonly type: "pie";
690
+ }, {
691
+ readonly documentation: {
692
+ readonly constraints: readonly ["At least one dimension or measure must be supplied.", "Trees with dimensions support at most one measure; measure-only trees may contain multiple measures."];
693
+ readonly dataRequirements: readonly ["Zero to ten dimensions.", "Zero to one hundred measures, or at most one with dimensions."];
694
+ readonly summary: "Hierarchical tree built from dimensions, measures, or both.";
695
+ readonly title: "Tree chart";
696
+ };
697
+ readonly example: {
698
+ readonly data: {
699
+ readonly dimensions: [ExampleDimension, ExampleDimension];
700
+ readonly measures: [ExampleMeasure];
701
+ };
702
+ readonly filterGroup: {
703
+ filters: {
704
+ fieldKey: "[Cars].[Manufacturer]";
705
+ operator: "inList";
706
+ values: string[];
707
+ }[];
708
+ operator: "and";
709
+ };
710
+ readonly limiting: {
711
+ readonly queryLimit: 100;
712
+ };
713
+ readonly presentation: {
714
+ readonly layout: {
715
+ readonly compact: true;
716
+ readonly direction: "top";
717
+ readonly forceAutoFit: false;
718
+ readonly initialExpandedLevels: 1;
719
+ };
720
+ };
721
+ readonly sorting: [{
722
+ readonly by: "sales";
723
+ readonly direction: "desc";
724
+ }];
725
+ readonly type: "tree";
726
+ readonly version: 1;
727
+ };
728
+ readonly supportedFeatures: readonly [...VisualizationDefinitionFeature[], "layout", "query-limit", "sorting"];
729
+ readonly type: "tree";
730
+ }, {
731
+ readonly documentation: {
732
+ readonly constraints: readonly ["Dimension order defines hierarchy depth."];
733
+ readonly dataRequirements: readonly ["Between one and ten dimensions.", "Exactly one measure."];
734
+ readonly summary: "Hierarchical area chart using ordered dimensions and one size measure.";
735
+ readonly title: "Treemap";
736
+ };
737
+ readonly example: {
738
+ readonly data: {
739
+ readonly dimensions: [ExampleDimension, ExampleDimension];
740
+ readonly measures: [ExampleMeasure];
741
+ };
742
+ readonly filterGroup: {
743
+ filters: {
744
+ fieldKey: "[Cars].[Manufacturer]";
745
+ operator: "inList";
746
+ values: string[];
747
+ }[];
748
+ operator: "and";
749
+ };
750
+ readonly presentation: {
751
+ readonly legend: {
752
+ position: "right";
753
+ title: string;
754
+ visible: boolean;
755
+ };
756
+ };
757
+ readonly type: "treemap";
758
+ readonly version: 1;
759
+ };
760
+ readonly supportedFeatures: readonly [...VisualizationDefinitionFeature[], "conditional-coloring", "legend"];
761
+ readonly type: "treemap";
762
+ }, {
763
+ readonly additionalExamples: readonly [{
764
+ readonly definition: {
765
+ readonly data: {
766
+ readonly dimensions: [ExampleDimension, ExampleDimension];
767
+ readonly measures: [ExampleMeasure];
768
+ };
769
+ readonly presentation: {
770
+ readonly coloring: {
771
+ readonly overwrites: [{
772
+ readonly color: "#CA8A04";
773
+ readonly dimension: "manufacturer";
774
+ readonly value: "Audi";
775
+ }];
776
+ };
777
+ };
778
+ readonly type: "sankey";
779
+ readonly version: 1;
780
+ };
781
+ readonly title: "A color bound to a value of one flow stage";
782
+ }];
783
+ readonly documentation: {
784
+ readonly constraints: readonly ["Dimension order defines the source-to-target flow stages.", "Every value color in presentation.coloring must name the dimension it applies to."];
785
+ readonly dataRequirements: readonly ["Between two and fifteen dimensions.", "Exactly one measure."];
786
+ readonly summary: "Flow chart across an ordered sequence of categorical dimensions.";
787
+ readonly title: "Sankey chart";
788
+ };
789
+ readonly example: {
790
+ readonly data: {
791
+ readonly dimensions: [ExampleDimension, ExampleDimension];
792
+ readonly measures: [ExampleMeasure];
793
+ };
794
+ readonly filterGroup: {
795
+ filters: {
796
+ fieldKey: "[Cars].[Manufacturer]";
797
+ operator: "inList";
798
+ values: string[];
799
+ }[];
800
+ operator: "and";
801
+ };
802
+ readonly type: "sankey";
803
+ readonly version: 1;
804
+ };
805
+ readonly supportedFeatures: readonly [...VisualizationDefinitionFeature[], "conditional-coloring"];
806
+ readonly type: "sankey";
807
+ }, {
808
+ readonly documentation: {
809
+ readonly constraints: readonly ["Measure order maps to horizontal, vertical, and optional size roles.", "The optional second dimension receives the image role.", "Roles come from item order only; a ref is a label and does not select a role.", "With a size measure, points scale between the setPointSize and setMaxPointSize operation values.", "Set range on a measure axis to fix its min, max, or both, for example to give several charts one shared scale; leave both unset and set startsAtZero to keep an auto-fitted axis anchored at zero. Set inverted on a measure axis to reverse its values, for example to put rank 1 at the top."];
810
+ readonly dataRequirements: readonly ["One or two dimensions.", "Two or three measures."];
811
+ readonly summary: "Relationship chart using horizontal and vertical measures with optional size and image roles.";
812
+ readonly title: "Scatter chart";
813
+ };
814
+ readonly example: {
815
+ readonly data: {
816
+ readonly dimensions: [ExampleDimension];
817
+ readonly measures: [ExampleMeasure, ExampleMeasure, ExampleMeasure];
818
+ };
819
+ readonly filterGroup: {
820
+ filters: {
821
+ fieldKey: "[Cars].[Manufacturer]";
822
+ operator: "inList";
823
+ values: string[];
824
+ }[];
825
+ operator: "and";
826
+ };
827
+ readonly presentation: {
828
+ readonly axes: {
829
+ primaryMeasure: {
830
+ labelsVisible: boolean;
831
+ title: string;
832
+ titleVisible: boolean;
833
+ };
834
+ secondaryMeasure: {
835
+ labelsVisible: boolean;
836
+ title: string;
837
+ titleVisible: boolean;
838
+ };
839
+ };
840
+ readonly legend: {
841
+ position: "right";
842
+ title: string;
843
+ visible: boolean;
844
+ };
845
+ };
846
+ readonly type: "scatter";
847
+ readonly version: 1;
848
+ };
849
+ readonly supportedFeatures: readonly [...VisualizationDefinitionFeature[], "conditional-coloring", "axes", "axis-range", "legend", "query-limit", "sorting"];
850
+ readonly type: "scatter";
851
+ }, {
852
+ readonly additionalExamples: readonly [{
853
+ readonly definition: {
854
+ readonly data: {
855
+ readonly dimensions: [ExampleDimension, ExampleDimension];
856
+ readonly measures: [ExampleMeasure];
857
+ readonly structure: "expandable";
858
+ };
859
+ readonly filterGroup: {
860
+ filters: {
861
+ fieldKey: "[Cars].[Manufacturer]";
862
+ operator: "inList";
863
+ values: string[];
864
+ }[];
865
+ operator: "and";
866
+ };
867
+ readonly limiting: {
868
+ readonly queryLimit: 100;
869
+ };
870
+ readonly sorting: [{
871
+ readonly by: "sales";
872
+ readonly direction: "desc";
873
+ }];
874
+ readonly type: "table";
875
+ readonly version: 1;
876
+ };
877
+ readonly title: "Expandable table";
878
+ }, {
879
+ readonly definition: {
880
+ readonly data: {
881
+ readonly columnDimensions: [ExampleDimension];
882
+ readonly measures: [ExampleMeasure];
883
+ readonly rowDimensions: [ExampleDimension];
884
+ readonly structure: "pivot";
885
+ };
886
+ readonly filterGroup: {
887
+ filters: {
888
+ fieldKey: "[Cars].[Manufacturer]";
889
+ operator: "inList";
890
+ values: string[];
891
+ }[];
892
+ operator: "and";
893
+ };
894
+ readonly limiting: {
895
+ readonly queryLimit: 100;
896
+ };
897
+ readonly sorting: [{
898
+ readonly by: "sales";
899
+ readonly direction: "desc";
900
+ }];
901
+ readonly type: "table";
902
+ readonly version: 1;
903
+ };
904
+ readonly title: "Pivot table";
905
+ }];
906
+ readonly documentation: {
907
+ readonly constraints: readonly ["Normal table column order is preserved, and each column declares whether it is a dimension or measure.", "Expandable table dimension order defines the expansion hierarchy.", "Pivot tables explicitly separate row dimensions, column dimensions, and measures.", "Measure definitions require valid aggregation for raw fields.", "Presentation settings initialize table appearance and layout; later runtime operations preserve them.", "Totals settings are optional; omitted totals properties preserve their values from the fresh default or preset vSpec."];
908
+ readonly dataRequirements: readonly ["Normal tables require at least one ordered dimension or measure column.", "Expandable tables require at least one dimension and one measure.", "Pivot tables require at least one row dimension, one column dimension, and one measure."];
909
+ readonly summary: "Normal, expandable, or pivot tabular output with formatting, filtering, sorting, query limiting, and totals.";
910
+ readonly title: "Table";
911
+ };
912
+ readonly example: {
913
+ readonly data: {
914
+ readonly columns: [{
915
+ readonly role: "dimension";
916
+ readonly fieldKey: string;
917
+ readonly format: {
918
+ formatType: "none";
919
+ };
920
+ readonly ref: string;
921
+ readonly showNullValues?: boolean;
922
+ }, {
923
+ readonly role: "dimension";
924
+ readonly fieldKey: string;
925
+ readonly format: {
926
+ formatType: "none";
927
+ };
928
+ readonly ref: string;
929
+ readonly showNullValues?: boolean;
930
+ }, {
931
+ readonly role: "measure";
932
+ readonly aggregation: string;
933
+ readonly fieldKey: string;
934
+ readonly format: {
935
+ formatType: "number2Decimal";
936
+ negativeType: "parenthesis";
937
+ };
938
+ readonly ref: string;
939
+ }];
940
+ readonly structure: "normal";
941
+ };
942
+ readonly filterGroup: {
943
+ filters: {
944
+ fieldKey: "[Cars].[Manufacturer]";
945
+ operator: "inList";
946
+ values: string[];
947
+ }[];
948
+ operator: "and";
949
+ };
950
+ readonly limiting: {
951
+ readonly queryLimit: 100;
952
+ };
953
+ readonly presentation: {
954
+ readonly background: {
955
+ readonly color: "#ffffff";
956
+ readonly type: "single";
957
+ };
958
+ readonly body: {
959
+ readonly fontColor: "#1f1c3b";
960
+ readonly fontFamily: "Roboto";
961
+ readonly fontSize: 13;
962
+ readonly horizontalAlign: "center";
963
+ readonly verticalAlign: "middle";
964
+ };
965
+ readonly borders: {
966
+ readonly color: "#e0e0e0";
967
+ readonly dividerColor: "#e0e0e0";
968
+ readonly dividers: "all";
969
+ readonly enabled: true;
970
+ readonly lineStyle: "line";
971
+ readonly radius: 4;
972
+ readonly strokeWidth: 1;
973
+ };
974
+ readonly header: {
975
+ readonly backgroundColor: "#ffffff";
976
+ readonly borderColor: "#e0e0e0";
977
+ readonly fontColor: "#1f1c3b";
978
+ readonly fontFamily: "Roboto";
979
+ readonly fontSize: 13;
980
+ };
981
+ readonly highlight: {
982
+ readonly backgroundColor: "#f2f2f2";
983
+ readonly mode: "row";
984
+ };
985
+ readonly layout: {
986
+ readonly columnWidthBehavior: "responsive";
987
+ readonly rowHeight: 41;
988
+ };
989
+ };
990
+ readonly sorting: [{
991
+ readonly by: "sales";
992
+ readonly direction: "desc";
993
+ }];
994
+ readonly totals: {
995
+ readonly applyTo: "both";
996
+ readonly enabled: true;
997
+ readonly showRecordsCount: true;
998
+ readonly style: {
999
+ readonly backgroundColor: "#f3f4f6";
1000
+ readonly fontColor: "#111827";
1001
+ readonly fontStyle: {
1002
+ readonly bold: true;
1003
+ };
1004
+ readonly position: "bottom";
1005
+ readonly responsiveHeight: true;
1006
+ };
1007
+ };
1008
+ readonly type: "table";
1009
+ readonly version: 1;
1010
+ };
1011
+ readonly supportedFeatures: readonly ["dimensions", "filters", "layout", "measures", "query-limit", "sorting", "table-structure", "totals", "value-formatting"];
1012
+ readonly type: "table";
1013
+ }, {
1014
+ readonly documentation: {
1015
+ readonly constraints: readonly ["Dimensions are not supported. Measure order defines the waterfall sequence.", "Set range on the primary measure axis to fix its min, max, or both, for example to give several charts one shared scale; leave both unset and set startsAtZero to keep an auto-fitted axis anchored at zero. Set inverted on the primary measure axis to reverse its values.", "presentation.axes.primaryMeasure.bands shades the plot between two primary measure axis values; start and end are measure values, and the bands replace any on the base vSpec."];
1016
+ readonly dataRequirements: readonly ["Between one and one hundred measures."];
1017
+ readonly summary: "Sequential contribution chart composed from one or more measures.";
1018
+ readonly title: "Waterfall chart";
1019
+ };
1020
+ readonly example: {
1021
+ readonly data: {
1022
+ readonly measures: [{
1023
+ readonly dataLabels: {
1024
+ readonly visible: true;
1025
+ };
1026
+ readonly aggregation: string;
1027
+ readonly fieldKey: string;
1028
+ readonly format: {
1029
+ formatType: "number2Decimal";
1030
+ negativeType: "parenthesis";
1031
+ };
1032
+ readonly ref: string;
1033
+ }, {
1034
+ readonly dataLabels: {
1035
+ readonly visible: true;
1036
+ };
1037
+ readonly aggregation: string;
1038
+ readonly fieldKey: string;
1039
+ readonly format: {
1040
+ formatType: "number2Decimal";
1041
+ negativeType: "parenthesis";
1042
+ };
1043
+ readonly ref: string;
1044
+ }];
1045
+ };
1046
+ readonly filterGroup: {
1047
+ filters: {
1048
+ fieldKey: "[Cars].[Manufacturer]";
1049
+ operator: "inList";
1050
+ values: string[];
1051
+ }[];
1052
+ operator: "and";
1053
+ };
1054
+ readonly presentation: {
1055
+ readonly axes: {
1056
+ dimension: {
1057
+ labelsVisible: boolean;
1058
+ title: string;
1059
+ titleVisible: boolean;
1060
+ };
1061
+ primaryMeasure: {
1062
+ labelsVisible: boolean;
1063
+ title: string;
1064
+ titleVisible: boolean;
1065
+ };
1066
+ };
1067
+ readonly dataLabels: {
1068
+ readonly visible: true;
1069
+ };
1070
+ readonly orientation: "vertical";
1071
+ };
1072
+ readonly type: "waterfall";
1073
+ readonly version: 1;
1074
+ };
1075
+ readonly supportedFeatures: readonly ["axes", "axis-bands", "axis-range", "data-labels", "filters", "measures", "orientation", "value-formatting"];
1076
+ readonly type: "waterfall";
1077
+ }, {
1078
+ readonly documentation: {
1079
+ readonly constraints: readonly ["The dimension supplies words and the measure supplies their weight."];
1080
+ readonly dataRequirements: readonly ["Exactly one dimension.", "Exactly one measure."];
1081
+ readonly summary: "Weighted word display using one label dimension and one measure.";
1082
+ readonly title: "Word cloud";
1083
+ };
1084
+ readonly example: {
1085
+ readonly data: {
1086
+ readonly dimensions: [ExampleDimension];
1087
+ readonly measures: [ExampleMeasure];
1088
+ };
1089
+ readonly filterGroup: {
1090
+ filters: {
1091
+ fieldKey: "[Cars].[Manufacturer]";
1092
+ operator: "inList";
1093
+ values: string[];
1094
+ }[];
1095
+ operator: "and";
1096
+ };
1097
+ readonly type: "word-cloud";
1098
+ readonly version: 1;
1099
+ };
1100
+ readonly supportedFeatures: readonly [...VisualizationDefinitionFeature[], "conditional-coloring"];
1101
+ readonly type: "word-cloud";
1102
+ }, {
1103
+ readonly documentation: {
1104
+ readonly constraints: readonly ["The selected field must be date- or timestamp-compatible."];
1105
+ readonly dataRequirements: readonly ["Exactly one field."];
1106
+ readonly summary: "Date selection control with single/range modes, labels, quick select, and responsive settings.";
1107
+ readonly title: "Date picker";
1108
+ };
1109
+ readonly example: {
1110
+ readonly data: {
1111
+ readonly field: ExampleField;
1112
+ };
1113
+ readonly settings: {
1114
+ readonly endDateLabel: "To";
1115
+ readonly pickerState: "expanded";
1116
+ readonly pickerType: "range";
1117
+ readonly quickSelect: true;
1118
+ readonly responsive: true;
1119
+ readonly startDateLabel: "From";
1120
+ readonly timePickerVisibility: "never";
1121
+ readonly weekStart: "1";
1122
+ };
1123
+ readonly type: "date-picker";
1124
+ readonly version: 1;
1125
+ };
1126
+ readonly supportedFeatures: readonly ["dimensions", "filter-settings"];
1127
+ readonly type: "date-picker";
1128
+ }, {
1129
+ readonly documentation: {
1130
+ readonly constraints: readonly ["The selected field is used as a filter dimension."];
1131
+ readonly dataRequirements: readonly ["Exactly one field."];
1132
+ readonly summary: "Interactive field filter with list/dropdown presentation and search/quick-select controls.";
1133
+ readonly title: "Filter";
1134
+ };
1135
+ readonly example: {
1136
+ readonly data: {
1137
+ readonly field: ExampleField;
1138
+ };
1139
+ readonly presentation: {
1140
+ readonly mode: "listbox";
1141
+ readonly quickSelect: true;
1142
+ readonly responsive: true;
1143
+ readonly searchable: true;
1144
+ readonly showProgressBar: false;
1145
+ };
1146
+ readonly type: "filter";
1147
+ readonly version: 1;
1148
+ };
1149
+ readonly supportedFeatures: readonly ["dimensions", "filter-settings"];
1150
+ readonly type: "filter";
1151
+ }, {
1152
+ readonly documentation: {
1153
+ readonly constraints: readonly ["The URL must be absolute and valid; null clears the source."];
1154
+ readonly dataRequirements: readonly ["No query data."];
1155
+ readonly summary: "Embedded external web content.";
1156
+ readonly title: "Iframe";
1157
+ };
1158
+ readonly example: {
1159
+ readonly settings: {
1160
+ readonly url: "https://example.com";
1161
+ };
1162
+ readonly type: "iframe";
1163
+ readonly version: 1;
1164
+ };
1165
+ readonly supportedFeatures: readonly ["content"];
1166
+ readonly type: "iframe";
1167
+ }, {
1168
+ readonly documentation: {
1169
+ readonly constraints: readonly ["The source must use one of the supported image source variants."];
1170
+ readonly dataRequirements: readonly ["No query data."];
1171
+ readonly summary: "Image content with fit, opacity, blur, saturation, and shadow controls.";
1172
+ readonly title: "Image";
1173
+ };
1174
+ readonly example: {
1175
+ readonly settings: {
1176
+ readonly blur: 0;
1177
+ readonly fit: "contain";
1178
+ readonly opacity: 0.95;
1179
+ readonly saturation: 0.9;
1180
+ readonly shadow: true;
1181
+ readonly source: {
1182
+ readonly imageUrl: "https://example.com/image.png";
1183
+ readonly sourceKind: "url";
1184
+ };
1185
+ };
1186
+ readonly type: "image";
1187
+ readonly version: 1;
1188
+ };
1189
+ readonly supportedFeatures: readonly ["content", "object-settings"];
1190
+ readonly type: "image";
1191
+ }, {
1192
+ readonly documentation: {
1193
+ readonly constraints: readonly ["A raw field measure requires aggregation; semantic measures and calculations omit it."];
1194
+ readonly dataRequirements: readonly ["Exactly one measure."];
1195
+ readonly summary: "Single aggregated or semantic value with value formatting and static filters.";
1196
+ readonly title: "Number";
1197
+ };
1198
+ readonly example: {
1199
+ readonly data: {
1200
+ readonly measure: ExampleMeasure;
1201
+ };
1202
+ readonly filterGroup: {
1203
+ filters: {
1204
+ fieldKey: "[Cars].[Manufacturer]";
1205
+ operator: "inList";
1206
+ values: string[];
1207
+ }[];
1208
+ operator: "and";
1209
+ };
1210
+ readonly type: "number";
1211
+ readonly version: 1;
1212
+ };
1213
+ readonly supportedFeatures: readonly ["filters", "measures", "value-formatting"];
1214
+ readonly type: "number";
1215
+ }, {
1216
+ readonly documentation: {
1217
+ readonly constraints: readonly ["Image-specific settings apply only when the selected shape/background mode supports them."];
1218
+ readonly dataRequirements: readonly ["No query data."];
1219
+ readonly summary: "Decorative shape with fill, stroke, sizing, rotation, and border controls.";
1220
+ readonly title: "Shape";
1221
+ };
1222
+ readonly example: {
1223
+ readonly settings: {
1224
+ readonly backgroundColor: {
1225
+ readonly code: "#2e6e9e";
1226
+ };
1227
+ readonly backgroundType: "color";
1228
+ readonly borderEnabled: true;
1229
+ readonly borderRadius: 8;
1230
+ readonly heightBasedSize: false;
1231
+ readonly lineThickness: 4;
1232
+ readonly preserveAspectRatio: true;
1233
+ readonly rotate: 12;
1234
+ readonly scale: 0.7;
1235
+ readonly shape: "hexagon";
1236
+ readonly strokeColor: {
1237
+ readonly code: "#18212b";
1238
+ };
1239
+ };
1240
+ readonly type: "shape";
1241
+ readonly version: 1;
1242
+ };
1243
+ readonly supportedFeatures: readonly ["object-settings"];
1244
+ readonly type: "shape";
1245
+ }, {
1246
+ readonly documentation: {
1247
+ readonly constraints: readonly ["Content interpretation follows the selected representation."];
1248
+ readonly dataRequirements: readonly ["No query data."];
1249
+ readonly summary: "Text or Markdown content with typography, alignment, wrapping, and responsive controls.";
1250
+ readonly title: "Text object";
1251
+ };
1252
+ readonly example: {
1253
+ readonly settings: {
1254
+ readonly align: "center";
1255
+ readonly content: "## Revenue overview";
1256
+ readonly fontFamily: "Arial";
1257
+ readonly fontSize: 30;
1258
+ readonly position: "middle";
1259
+ readonly representation: "markdown";
1260
+ readonly responsive: true;
1261
+ readonly textColor: "#18212b";
1262
+ readonly wordWrap: true;
1263
+ };
1264
+ readonly type: "simpleTextObject";
1265
+ readonly version: 1;
1266
+ };
1267
+ readonly supportedFeatures: readonly ["content", "object-settings"];
1268
+ readonly type: "simpleTextObject";
1269
+ }, {
1270
+ readonly documentation: {
1271
+ readonly constraints: readonly ["The referenced variable must exist in the host variable service when variable behavior is used."];
1272
+ readonly dataRequirements: readonly ["No query data; variable-backed input."];
1273
+ readonly summary: "Variable input control with input type, label, placeholder, and responsive settings.";
1274
+ readonly title: "Atomic input";
1275
+ };
1276
+ readonly example: {
1277
+ readonly settings: {
1278
+ readonly customLabel: {
1279
+ readonly enabled: true;
1280
+ readonly text: "Target";
1281
+ };
1282
+ readonly inputType: "text";
1283
+ readonly placeholder: "Enter target";
1284
+ readonly responsive: true;
1285
+ readonly variableId: "target-variable";
1286
+ };
1287
+ readonly type: "atomic-input";
1288
+ readonly version: 1;
1289
+ };
1290
+ readonly supportedFeatures: readonly ["input-settings"];
1291
+ readonly type: "atomic-input";
1292
+ }, {
1293
+ readonly documentation: {
1294
+ readonly constraints: readonly ["Orientation defaults to horizontal. Use vertical for stacked sidebar filters; editors open beside the sidebar when space permits.", "The bar displays active selections from its selection group, regardless of the fields allowed for creating new filters.", "An empty selectableFieldKeys list allows users to create filters on any selectable field.", "Selection mode overrides apply only to selections created by this bar; apply, cancel, and clear affect the shared selection group.", "Chart breakdown switching is hidden by default. Enable showChartBreakdown only when the app uses dimension groups; a group must have multiple available fields for the control to appear."];
1295
+ readonly dataRequirements: readonly ["No query data; uses field metadata and selections supplied by the host."];
1296
+ readonly summary: "App filter bar settings for selection behavior, filter creation, associative filtering, and selectable fields.";
1297
+ readonly title: "Astrato App Filter Bar";
1298
+ };
1299
+ readonly example: {
1300
+ readonly settings: {
1301
+ readonly enableAddingNewFilters: true;
1302
+ readonly enableAssociativeFilter: true;
1303
+ readonly selectableFieldKeys: ["[Cars].[Manufacturer]", "[Cars].[Model]"];
1304
+ readonly selectionMode: "inherit";
1305
+ readonly showChartBreakdown: false;
1306
+ readonly showClearAll: true;
1307
+ };
1308
+ readonly type: "astrato-app-filter-bar";
1309
+ readonly version: 1;
1310
+ };
1311
+ readonly supportedFeatures: readonly ["selection-settings"];
1312
+ readonly type: "astrato-app-filter-bar";
1313
+ }, {
1314
+ readonly documentation: {
1315
+ readonly constraints: readonly ["The field must be numeric or date-compatible with the configured range and step.", "Providing range enables manual bounds; omitting it keeps data-derived bounds."];
1316
+ readonly dataRequirements: readonly ["Exactly one field."];
1317
+ readonly summary: "Numeric or date range control with single/multi layout, step, and quick select.";
1318
+ readonly title: "Slider";
1319
+ };
1320
+ readonly example: {
1321
+ readonly data: {
1322
+ readonly field: ExampleField;
1323
+ };
1324
+ readonly settings: {
1325
+ readonly layout: "multi";
1326
+ readonly quickSelect: true;
1327
+ readonly range: {
1328
+ readonly max: 500;
1329
+ readonly min: 0;
1330
+ };
1331
+ readonly step: 10;
1332
+ };
1333
+ readonly type: "slider";
1334
+ readonly version: 1;
1335
+ };
1336
+ readonly supportedFeatures: readonly ["dimensions", "filter-settings"];
1337
+ readonly type: "slider";
1338
+ }];
1339
+ /** Returns the documentation metadata associated with one supported visualization type. */
1340
+ export declare const getVisualizationDefinitionDescriptorMetadata: <TType extends VisualizationDefinitionType>(type: TType) => VisualizationDefinitionDescriptorMetadataEntry<TType>;
1341
+ export {};