@ic3/reporting-api 8.0.0-alpha.5 → 8.0.0-rc.2

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 (90) hide show
  1. package/dist/ApiUtils.d.ts +10 -0
  2. package/dist/ApiUtils.js +25 -1
  3. package/dist/ApiUtils.js.map +1 -1
  4. package/dist/INotification.d.ts +32 -0
  5. package/dist/{theme/ThemeWidgetBoxHeader.js → INotification.js} +1 -1
  6. package/dist/INotification.js.map +1 -0
  7. package/dist/IPluginDefinition.d.ts +4 -1
  8. package/dist/IReporting.d.ts +41 -4
  9. package/dist/IThemeManager.d.ts +13 -18
  10. package/dist/IThemeManager.js.map +1 -1
  11. package/dist/ITidyTableTransformation.d.ts +20 -1
  12. package/dist/IWidgetVariantManager.d.ts +20 -2
  13. package/dist/LazyTreeView.d.ts +43 -1
  14. package/dist/LazyTreeView.js +5 -1
  15. package/dist/LazyTreeView.js.map +1 -1
  16. package/dist/Loader.d.ts +10 -0
  17. package/dist/Loader.js +33 -0
  18. package/dist/Loader.js.map +1 -0
  19. package/dist/PublicContext.d.ts +58 -7
  20. package/dist/PublicContext.js.map +1 -1
  21. package/dist/PublicLayout.d.ts +6 -6
  22. package/dist/PublicTemplate.d.ts +161 -58
  23. package/dist/PublicTemplate.js +16 -1
  24. package/dist/PublicTemplate.js.map +1 -1
  25. package/dist/PublicTemplateForm.d.ts +129 -29
  26. package/dist/PublicTemplateForm.js +7 -1
  27. package/dist/PublicTemplateForm.js.map +1 -1
  28. package/dist/PublicTheme.d.ts +117 -73
  29. package/dist/PublicTheme.js.map +1 -1
  30. package/dist/PublicTidyColumn.d.ts +327 -257
  31. package/dist/PublicTidyColumn.js +48 -2
  32. package/dist/PublicTidyColumn.js.map +1 -1
  33. package/dist/PublicTidyHistogram.d.ts +24 -0
  34. package/dist/PublicTidyHistogram.js +77 -0
  35. package/dist/PublicTidyHistogram.js.map +1 -0
  36. package/dist/PublicTidyMath.d.ts +48 -44
  37. package/dist/PublicTidyMath.js +0 -280
  38. package/dist/PublicTidyMath.js.map +1 -1
  39. package/dist/PublicTidyTable.d.ts +170 -154
  40. package/dist/PublicTidyTableInteractions.d.ts +25 -23
  41. package/dist/PublicTidyTableInteractions.js +5 -4
  42. package/dist/PublicTidyTableInteractions.js.map +1 -1
  43. package/dist/PublicTidyTableTypes.d.ts +133 -55
  44. package/dist/PublicTidyTableTypes.js +35 -18
  45. package/dist/PublicTidyTableTypes.js.map +1 -1
  46. package/dist/PublicTidyTree.d.ts +27 -37
  47. package/dist/PublicTidyTree.js +30 -58
  48. package/dist/PublicTidyTree.js.map +1 -1
  49. package/dist/RemoteContainerUtils.d.ts +1 -1
  50. package/dist/RemoteContainerUtils.js +9 -1
  51. package/dist/RemoteContainerUtils.js.map +1 -1
  52. package/dist/ReportingVersion.d.ts +1 -1
  53. package/dist/ReportingVersion.js +1 -1
  54. package/dist/ReportingVersion.js.map +1 -1
  55. package/dist/index.d.ts +3 -2
  56. package/dist/index.js +3 -2
  57. package/dist/index.js.map +1 -1
  58. package/dist/theme/ThemeFilterAutocomplete.d.ts +30 -0
  59. package/dist/theme/ThemeFilterAutocomplete.js +23 -0
  60. package/dist/theme/ThemeFilterAutocomplete.js.map +1 -0
  61. package/dist/theme/ThemeFilterButtons.d.ts +38 -0
  62. package/dist/theme/ThemeFilterButtons.js +23 -0
  63. package/dist/theme/ThemeFilterButtons.js.map +1 -0
  64. package/dist/theme/ThemeFilterCheckboxes.d.ts +18 -0
  65. package/dist/theme/ThemeFilterCheckboxes.js +11 -0
  66. package/dist/theme/ThemeFilterCheckboxes.js.map +1 -0
  67. package/dist/theme/ThemeFilterSlider.d.ts +47 -0
  68. package/dist/theme/ThemeFilterSlider.js +29 -0
  69. package/dist/theme/ThemeFilterSlider.js.map +1 -0
  70. package/dist/theme/ThemeFilterTree.d.ts +70 -0
  71. package/dist/theme/ThemeFilterTree.js +11 -0
  72. package/dist/theme/ThemeFilterTree.js.map +1 -0
  73. package/dist/theme/ThemeGoogleMapMarker.d.ts +51 -0
  74. package/dist/theme/{ThemeWidgetBoxUserMenu.js → ThemeGoogleMapMarker.js} +1 -1
  75. package/dist/theme/ThemeGoogleMapMarker.js.map +1 -0
  76. package/dist/theme/ThemeHtmlBox.d.ts +7 -1
  77. package/dist/theme/ThemePivotTable.d.ts +23 -0
  78. package/dist/theme/ThemePivotTable.js +21 -0
  79. package/dist/theme/ThemePivotTable.js.map +1 -0
  80. package/dist/theme/ThemeTable.d.ts +15 -0
  81. package/dist/theme/ThemeTable.js +5 -0
  82. package/dist/theme/ThemeTable.js.map +1 -0
  83. package/dist/theme/ThemeWidgetBox.d.ts +37 -17
  84. package/dist/theme/ThemeWidgetBox.js +56 -0
  85. package/dist/theme/ThemeWidgetBox.js.map +1 -1
  86. package/package.json +11 -10
  87. package/dist/theme/ThemeWidgetBoxHeader.d.ts +0 -11
  88. package/dist/theme/ThemeWidgetBoxHeader.js.map +0 -1
  89. package/dist/theme/ThemeWidgetBoxUserMenu.d.ts +0 -23
  90. package/dist/theme/ThemeWidgetBoxUserMenu.js.map +0 -1
@@ -1,14 +1,85 @@
1
1
  import { ITidyTable } from "./PublicTidyTable";
2
- import { ChartTemplateDataMapping, TidyColumnsType } from "./PublicTidyTableTypes";
3
2
  import { ITidyTableInteraction } from "./PublicTidyTableInteractions";
4
3
  import { IWidgetPublicContext } from "./PublicContext";
5
- import { FormFieldDef, FormFieldObject, FormFields } from "./PublicTemplateForm";
4
+ import { FormFieldDef, FormFieldObject, FormFields, IFormColumnChooserFieldDef } from "./PublicTemplateForm";
6
5
  import { IWidgetVariantManager } from "./IWidgetVariantManager";
7
6
  import { ITidyColumn } from "./PublicTidyColumn";
8
7
  import { ReactElement } from "react";
9
- import { Theme } from "@material-ui/core/styles";
8
+ import { Theme } from "@mui/material/styles";
10
9
  declare type ChartTemplateWidgetProps = any;
11
10
  export declare type IPublicWidgetTemplateDefinition<T extends FormFieldObject> = IPublicWidgetReactTemplateDefinition<T> | IPublicWidgetJsTemplateDefinition<T>;
11
+ export declare enum IWidgetTemplateMdxBuilderAxisPropsConstraint {
12
+ DateType = "DateType",
13
+ GeoLatLong = "GeoLatLong",
14
+ GeoIso2Code = "GeoIso2Code"
15
+ }
16
+ export interface IWidgetTemplateMdxBuilderAxisProps {
17
+ /**
18
+ * Unique name used in the UI and if mdxAxisName not defined for building the query.
19
+ * If name is 'rows' for example, then in the query it will use 'ON "rows"'.
20
+ */
21
+ name: string;
22
+ /**
23
+ * The axis can be empty
24
+ */
25
+ isOptional?: true;
26
+ /**
27
+ * All axes with the same (not null) value for mdxAxisName are put as a tuple on the same axis. The axis name
28
+ * of the first one in the set is used.
29
+ */
30
+ mdxAxisName?: string;
31
+ /**
32
+ * The test used to generated the axis role (see KPI card).
33
+ */
34
+ mdxAxisRole?: string;
35
+ /**
36
+ * Disable empty
37
+ */
38
+ disableNonEmpty?: true;
39
+ /**
40
+ * For filters add lazy load feature to the axis
41
+ */
42
+ addLazyLoad?: true;
43
+ /**
44
+ * Allow only a single member
45
+ */
46
+ singleMember?: true;
47
+ /**
48
+ * Allow a multiple hierarchies to build a crossjoin
49
+ */
50
+ multipleHierarchy?: true;
51
+ /**
52
+ * Additional constraints for the set/members
53
+ */
54
+ constraint?: IWidgetTemplateMdxBuilderAxisPropsConstraint;
55
+ decoration?: {
56
+ with?: string;
57
+ set: string;
58
+ };
59
+ /**
60
+ * Show the mdxAxis names in this order in the builder
61
+ */
62
+ showOrder?: number;
63
+ }
64
+ export interface IWidgetTemplateMdxBuilderMapping {
65
+ /**
66
+ * The order determines the order of the statements in the query. E.g., the first position is ON 0, the second ON 1,
67
+ * etc., where '0' and '1' are replaced by the name.
68
+ */
69
+ mdxAxis: Readonly<IWidgetTemplateMdxBuilderAxisProps[]>;
70
+ /**
71
+ * The generated Mdx is for a filter (the cell values are not of interest)
72
+ */
73
+ mdxIsForFilter?: true;
74
+ /**
75
+ * the cell values are not needed
76
+ */
77
+ withoutCellValues?: true;
78
+ /**
79
+ * an MDX query if the builder is empty
80
+ */
81
+ mdxQueryIfEmpty?: boolean;
82
+ }
12
83
  /**
13
84
  * A widget that renders using React.
14
85
  *
@@ -56,6 +127,14 @@ export interface IPublicWidgetJsTemplateDefinition<T extends FormFieldObject> ex
56
127
  jsCode: (context: IWidgetPublicContext, container: HTMLDivElement) => IPublicJsChartTemplate<T>;
57
128
  reactComponent?: false;
58
129
  }
130
+ /**
131
+ * List of special selection granularities (column selectors)
132
+ */
133
+ export declare enum SelectionGranularityOptions {
134
+ PivotTableTopHeader = "ic3pivotTableTopHeader",
135
+ PivotTableLeftHeader = "ic3pivotTableLeftHeader",
136
+ PivotTableCell = "ic3pivotTableCell"
137
+ }
59
138
  /**
60
139
  * Definition - static - of a widget template
61
140
  */
@@ -66,7 +145,7 @@ interface IPublicCommonWidgetTemplateDefinition {
66
145
  */
67
146
  type: WidgetTemplateDefinitionType;
68
147
  /**
69
- * Unique within the plugin. Must not contain any dot.
148
+ * Unique within the plugin. Must not contain any dot (this is NOT the templateId)
70
149
  *
71
150
  * The widget chooser is using that id to localize its name and description.
72
151
  *
@@ -76,6 +155,18 @@ interface IPublicCommonWidgetTemplateDefinition {
76
155
  * </pre>
77
156
  */
78
157
  id: string;
158
+ /**
159
+ * Internal usage: while investigating lazy registration (setup upon registration).
160
+ */
161
+ debug?: string;
162
+ /**
163
+ * Internal usage: pluginId.templateId (setup upon registration).
164
+ */
165
+ qualifiedId?: string;
166
+ /**
167
+ * Internal usage: pluginId (setup upon registration).
168
+ */
169
+ pluginId?: string;
79
170
  /**
80
171
  * Used for localization right now.
81
172
  *
@@ -95,15 +186,23 @@ interface IPublicCommonWidgetTemplateDefinition {
95
186
  * in the "Maps" group in the widget chooser.
96
187
  */
97
188
  groupId: string;
98
- /**
99
- * Internal usage: pluginID.id
100
- */
101
- qualifiedId?: string;
102
189
  /**
103
190
  * A way to ensure we do not display in the widget chooser templates that cannot
104
191
  * be used because the rendering depends on a given theme.
105
192
  */
106
193
  dependsOnTheme?: string;
194
+ /**
195
+ * A sort of "preview" of the widget in the widget chooser. Providing an empty string will display a default image.
196
+ *
197
+ * <pre>
198
+ * import donut from "./images/donut.svg";
199
+ *
200
+ * {
201
+ * image: "donut",
202
+ * }
203
+ * </pre>
204
+ */
205
+ image: string;
107
206
  /**
108
207
  * No widget box decoration.
109
208
  */
@@ -122,7 +221,13 @@ interface IPublicCommonWidgetTemplateDefinition {
122
221
  withoutQuery?: boolean;
123
222
  withoutSelection?: boolean;
124
223
  withoutDrilldown?: boolean;
224
+ withoutEvents?: boolean;
125
225
  withoutUserMenu?: boolean;
226
+ withoutGlobalFilter?: boolean;
227
+ /**
228
+ * Otherwise the widget box is rendering a floating icon to mention some data errors.
229
+ */
230
+ handleCellsOnError?: boolean;
126
231
  renderIfNotInViewport?: boolean;
127
232
  /**
128
233
  * This widget needs to render even if its query has not been executed yet. The default is false.
@@ -138,12 +243,30 @@ interface IPublicCommonWidgetTemplateDefinition {
138
243
  * header is repeating on each page.
139
244
  */
140
245
  withOptionAutoExpandKeepTableHeader?: boolean;
246
+ /**
247
+ * If and only if not null, hide option 'Interactions' > 'Drilldown' > 'Pivot Table Like' and set it default value to withDrilldownPivotTableLikeAs.
248
+ */
249
+ withDrilldownPivotTableLikeAs?: boolean;
141
250
  userMenuOptions?: string[];
251
+ /**
252
+ * Additional widget user menu options when in editing mode.
253
+ */
142
254
  userMenuOptionsOnEditing?: string[];
255
+ /**
256
+ * Disables the user menu option to switch between selection and drilldown
257
+ *
258
+ * E.g a Pivot table can manage both modes
259
+ */
260
+ userMenuDisableInteractionMode?: boolean;
143
261
  /**
144
262
  * @deprecated
145
263
  */
146
264
  withoutTidyTable?: boolean;
265
+ /**
266
+ * This widget knows how to render a result without any data.
267
+ * (e.g., data picker)
268
+ */
269
+ handlesNoData?: boolean;
147
270
  /**
148
271
  * This widget is responsible to notify its rendered status. Required with asynchronous rendering
149
272
  * (e.g., Google maps).
@@ -152,27 +275,32 @@ interface IPublicCommonWidgetTemplateDefinition {
152
275
  */
153
276
  handlesWidgetStatus?: boolean;
154
277
  eventRoles?: ITemplateEventActionDef;
155
- /**
156
- * The meta information that defined which data column to use in the widget.
157
- */
158
- dataMappingMeta?: IWidgetTemplateDataMappingDef[];
278
+ selection?: {
279
+ /**
280
+ * The list of columns that can be part of the selection. The end-user can then select the actual
281
+ * columns from the Interaction/Selection configuration (see Selection Granularity).
282
+ */
283
+ allowedColumns: (column: ITidyColumn) => boolean;
284
+ optionValues?: undefined;
285
+ } | {
286
+ allowedColumns?: undefined;
287
+ optionValues?: SelectionGranularityOptions[];
288
+ };
289
+ mdxBuilderSettings?: IWidgetTemplateMdxBuilderMapping;
159
290
  /**
160
291
  * The meta information required for editing the widget options.
161
292
  */
162
293
  chartOptionsMeta?: FormFieldDef[] | FormFields<FormFieldObject>;
163
- registerVariants?: (theme: Theme, manager: IWidgetVariantManager) => void;
164
294
  /**
165
- * A sort of "preview" of the widget in the widget chooser. Providing an empty string will display a default image.
166
- *
295
+ * When registering a variant add the following field editor meta:
167
296
  * <pre>
168
- * import donut from "./images/donut.svg";
169
- *
170
- * {
171
- * image: "donut",
172
- * }
297
+ * widgetVariant: {
298
+ * fieldType: "widgetVariant",
299
+ * localizationTag: "variant" // icCube localization,
300
+ * },
173
301
  * </pre>
174
302
  */
175
- image: string;
303
+ registerVariants?: (theme: Theme, manager: IWidgetVariantManager) => void;
176
304
  /**
177
305
  * e.g., amCharts4.
178
306
  * */
@@ -181,9 +309,11 @@ interface IPublicCommonWidgetTemplateDefinition {
181
309
  * Whether or not that component is using React for rendering.
182
310
  */
183
311
  reactComponent?: boolean;
184
- selection?: {
185
- allowedColumns: (column: ITidyColumn) => boolean;
186
- };
312
+ resolveDefinition?: (library: IResolveDefinitionLibrary) => Promise<IPublicWidgetTemplateDefinition<any>>;
313
+ /**
314
+ * When defining new widgets using amCharts 4, this method registers the icCube license.
315
+ */
316
+ registerAmCharts4?: (callback: (am4core: any) => void) => void;
187
317
  }
188
318
  /**
189
319
  * *********************************************************************************************************************
@@ -197,7 +327,6 @@ export declare enum WidgetTemplateDefinitionType {
197
327
  Misc = "misc"
198
328
  }
199
329
  export interface IChartVisualizationInput {
200
- mapping: ChartTemplateDataMapping;
201
330
  table: ITidyTable;
202
331
  inter: ITidyTableInteraction;
203
332
  options: {
@@ -207,47 +336,18 @@ export interface IChartVisualizationInput {
207
336
  export interface IWidgetTemplateTidyData {
208
337
  table: ITidyTable;
209
338
  inter: ITidyTableInteraction;
210
- mapping: ChartTemplateDataMapping;
211
339
  }
212
340
  export interface IChartVisualizationTypedInput<T extends FormFieldObject> {
213
341
  table: ITidyTable;
214
342
  inter: ITidyTableInteraction;
215
- mapping: ChartTemplateDataMapping;
216
343
  options: T;
217
344
  }
218
345
  /**
219
- * The mapping meta describes the coordinate system of the chart (e.g. axis, groups, values).
220
- * An error occurs when the columns in the mapping do not uniquely identify each row in the table.
346
+ * The mapping meta are all the column that the user can select in the chart options. These options are checked for
347
+ * validity. The widget generates an error if columns are selected that are not in the allowed properties, or if
348
+ * columns are mandatory but there is no selection or fallback.
221
349
  */
222
- export interface IWidgetTemplateDataMappingDef {
223
- /**
224
- * The alias for the column.
225
- */
226
- mappingName: string;
227
- /**
228
- * When defined, adds the mapping options to a group in the widget editor.
229
- */
230
- mappingGroup?: string;
231
- /**
232
- * When defined, the value is added as a prefix to the fieldPath to defined the localization tag.
233
- */
234
- mappingTag?: string;
235
- /**
236
- * Only columns of this/these type(s) are allowed.
237
- */
238
- allowedTypes: TidyColumnsType[] | ((column: ITidyColumn) => boolean);
239
- /**
240
- * If true, fallback to a column that is both an Mdx axis and has a type that is allowed.
241
- * Note, properties of columns are not considered.
242
- */
243
- fallback?: boolean;
244
- /**
245
- * A column must be mapped to this alias, either by fallback or by user input.
246
- * Throw an error of no column is mapped to this alias.
247
- */
248
- mandatory?: boolean;
249
- isForDrilldown?: boolean;
250
- }
350
+ export declare type IWidgetTemplateDataMappingDef = IFormColumnChooserFieldDef;
251
351
  /**
252
352
  * Predefined roles
253
353
  */
@@ -285,4 +385,7 @@ export interface ITemplateEventActionDef {
285
385
  */
286
386
  selectionSubscribe?: string;
287
387
  }
388
+ export interface IResolveDefinitionLibrary {
389
+ wrapTemplateDefinition(id: string): Promise<IPublicWidgetTemplateDefinition<any>>;
390
+ }
288
391
  export {};
@@ -1,6 +1,21 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.TemplateEventActionNames = exports.WidgetTemplateDefinitionType = void 0;
3
+ exports.TemplateEventActionNames = exports.WidgetTemplateDefinitionType = exports.SelectionGranularityOptions = exports.IWidgetTemplateMdxBuilderAxisPropsConstraint = void 0;
4
+ var IWidgetTemplateMdxBuilderAxisPropsConstraint;
5
+ (function (IWidgetTemplateMdxBuilderAxisPropsConstraint) {
6
+ IWidgetTemplateMdxBuilderAxisPropsConstraint["DateType"] = "DateType";
7
+ IWidgetTemplateMdxBuilderAxisPropsConstraint["GeoLatLong"] = "GeoLatLong";
8
+ IWidgetTemplateMdxBuilderAxisPropsConstraint["GeoIso2Code"] = "GeoIso2Code";
9
+ })(IWidgetTemplateMdxBuilderAxisPropsConstraint = exports.IWidgetTemplateMdxBuilderAxisPropsConstraint || (exports.IWidgetTemplateMdxBuilderAxisPropsConstraint = {}));
10
+ /**
11
+ * List of special selection granularities (column selectors)
12
+ */
13
+ var SelectionGranularityOptions;
14
+ (function (SelectionGranularityOptions) {
15
+ SelectionGranularityOptions["PivotTableTopHeader"] = "ic3pivotTableTopHeader";
16
+ SelectionGranularityOptions["PivotTableLeftHeader"] = "ic3pivotTableLeftHeader";
17
+ SelectionGranularityOptions["PivotTableCell"] = "ic3pivotTableCell";
18
+ })(SelectionGranularityOptions = exports.SelectionGranularityOptions || (exports.SelectionGranularityOptions = {}));
4
19
  /**
5
20
  * *********************************************************************************************************************
6
21
  * DO NOT CHANGE THEIR VALUE : USED FOR FINDING THE DOCUMENTATION.
@@ -1 +1 @@
1
- {"version":3,"file":"PublicTemplate.js","sourceRoot":"","sources":["../src/PublicTemplate.ts"],"names":[],"mappings":";;;AAwOA;;;;GAIG;AACH,IAAY,4BAKX;AALD,WAAY,4BAA4B;IACpC,+CAAe,CAAA;IACf,iDAAiB,CAAA;IACjB,2CAAW,CAAA;IACX,6CAAa,CAAA;AACjB,CAAC,EALW,4BAA4B,GAA5B,oCAA4B,KAA5B,oCAA4B,QAKvC;AAuED;;GAEG;AACH,IAAY,wBAMX;AAND,WAAY,wBAAwB;IAChC,mDAAuB,CAAA;IAEvB,gBAAgB;IAChB,0DAA8B,CAAA;IAC9B,iEAAqC,CAAA;AACzC,CAAC,EANW,wBAAwB,GAAxB,gCAAwB,KAAxB,gCAAwB,QAMnC"}
1
+ {"version":3,"file":"PublicTemplate.js","sourceRoot":"","sources":["../src/PublicTemplate.ts"],"names":[],"mappings":";;;AAcA,IAAY,4CAIX;AAJD,WAAY,4CAA4C;IACpD,qEAAqB,CAAA;IACrB,yEAAyB,CAAA;IACzB,2EAA2B,CAAA;AAC/B,CAAC,EAJW,4CAA4C,GAA5C,oDAA4C,KAA5C,oDAA4C,QAIvD;AAmJD;;GAEG;AAEH,IAAY,2BAIX;AAJD,WAAY,2BAA2B;IACnC,6EAA8C,CAAA;IAC9C,+EAAgD,CAAA;IAChD,mEAAoC,CAAA;AACxC,CAAC,EAJW,2BAA2B,GAA3B,mCAA2B,KAA3B,mCAA2B,QAItC;AA6ND;;;;GAIG;AACH,IAAY,4BAKX;AALD,WAAY,4BAA4B;IACpC,+CAAe,CAAA;IACf,iDAAiB,CAAA;IACjB,2CAAW,CAAA;IACX,6CAAa,CAAA;AACjB,CAAC,EALW,4BAA4B,GAA5B,oCAA4B,KAA5B,oCAA4B,QAKvC;AAkCD;;GAEG;AACH,IAAY,wBAMX;AAND,WAAY,wBAAwB;IAChC,mDAAuB,CAAA;IAEvB,gBAAgB;IAChB,0DAA8B,CAAA;IAC9B,iEAAqC,CAAA;AACzC,CAAC,EANW,wBAAwB,GAAxB,gCAAwB,KAAxB,gCAAwB,QAMnC"}
@@ -1,8 +1,8 @@
1
1
  import { IWidgetEditorPublicContext } from "./PublicContext";
2
2
  import { ITidyColumn } from "./PublicTidyColumn";
3
3
  import * as React from "react";
4
- import { AutocompleteRenderInputParams, AutocompleteRenderOptionState } from "@material-ui/core/Autocomplete/Autocomplete";
5
- import { TidyTableMappingCoordinate } from "./PublicTidyTableTypes";
4
+ import { AutocompleteRenderInputParams, AutocompleteRenderOptionState } from "@mui/material/Autocomplete/Autocomplete";
5
+ import { TidyColumnsType, TidyTableColumnSelector } from "./PublicTidyTableTypes";
6
6
  export declare function formFieldIsSelection(field: IFormFieldDef<any>): boolean;
7
7
  export interface IFormFieldDef<DEFAULT_VALUE_TYPE> {
8
8
  /**
@@ -19,6 +19,9 @@ export interface IFormFieldDef<DEFAULT_VALUE_TYPE> {
19
19
  defaultValuePath?: string;
20
20
  /**
21
21
  * The optional group a field belongs too
22
+ *
23
+ * @see IFormGroupsFieldDef
24
+ * @see IFormBooleanFieldDef
22
25
  */
23
26
  group?: string;
24
27
  /**
@@ -48,7 +51,7 @@ export interface IFormFieldDef<DEFAULT_VALUE_TYPE> {
48
51
  /**
49
52
  * An optional field path value. The value of this field depends on the value of the dependsOn field.
50
53
  */
51
- dependsOn?: string;
54
+ dependsOn?: string | string[];
52
55
  /**
53
56
  * When defined a function that returns the visibility of the field according to the dependsOn value.
54
57
  */
@@ -64,6 +67,8 @@ export interface IFormFieldDef<DEFAULT_VALUE_TYPE> {
64
67
  }
65
68
  /**
66
69
  * The options (possibly edited and/or from the theme) of a widget.
70
+ *
71
+ * Aka Props
67
72
  */
68
73
  export interface FormFieldObject {
69
74
  readonly '0242ac130003': '0242ac130003';
@@ -78,7 +83,13 @@ export declare type FormFields<T extends FormFieldObject> = {
78
83
  defaultValue: unknown;
79
84
  } | {
80
85
  mandatory: true;
81
- }) & (Required<T>[key] extends FormFieldObject ? Omit<IFormEmbeddedFieldDef<Required<T>[key]>, 'fieldPath'> : Required<T>[key] extends TidyTableMappingCoordinate ? Omit<IFormColumnCoordinateFieldDef, 'fieldPath'> : Required<T>[key] extends boolean ? Omit<IFormBooleanFieldDef, 'fieldPath'> : Required<T>[key] extends number ? Omit<IFormNumberFieldDef, 'fieldPath'> : Required<T>[key] extends string ? Omit<IFormOptionFieldSingleDef, 'fieldPath'> | Omit<IFormStringFieldDef, 'fieldPath'> | Omit<IFormTidyTableTextRowExprFieldDef, 'fieldPath'> | Omit<IFormColorEditorFieldDef, 'fieldPath'> | Omit<IFormMuiVariantFieldDef, 'fieldPath'> | Omit<IFormMarkdownFieldDef, 'fieldPath'> : Required<T>[key] extends string[] ? Omit<IFormOptionFieldMultipleDef, 'fieldPath'> | Omit<IFormPaletteEditorFieldDef, 'fieldPath'> : never);
86
+ }) & (Required<T>[key] extends FormFieldObject ? unknown : {
87
+ defaultValue?: undefined;
88
+ mandatory: true;
89
+ } | {
90
+ defaultValue?: any;
91
+ mandatory?: false;
92
+ }) & (Required<T>[key] extends FormFieldObject ? Omit<IFormEmbeddedFieldDef<Required<T>[key]>, 'fieldPath'> : Required<T>[key] extends IPaletteDef ? Omit<IFormPaletteEditorFieldDef, 'fieldPath'> : Required<T>[key] extends IColorDef ? Omit<IFormColorEditorFieldDef, 'fieldPath'> : Required<T>[key] extends TidyTableColumnSelector[] ? Omit<IFormColumnChooserFieldDef, 'fieldPath'> : Required<T>[key] extends TidyTableColumnSelector ? Omit<IFormColumnChooserFieldDef, 'fieldPath'> : Required<T>[key] extends boolean ? Omit<IFormBooleanFieldDef, 'fieldPath'> : Required<T>[key] extends number ? Omit<IFormNumberFieldDef, 'fieldPath'> : Required<T>[key] extends string ? Omit<IFormOptionFieldSingleDef, 'fieldPath'> | Omit<IFormStringFieldDef, 'fieldPath'> | Omit<IFormWidgetVariantFieldDef, 'fieldPath'> | Omit<IFormTidyTableTextExprFieldDef, 'fieldPath'> | Omit<IFormTidyTableTextRowExprFieldDef, 'fieldPath'> | Omit<IFormTidyTableHtmlRowExprFieldDef, 'fieldPath'> | Omit<IFormTidyTableHtmlExprFieldDef, 'fieldPath'> | Omit<IFormTidyTableNumericExprFieldDef, 'fieldPath'> | Omit<IFormTidyTableNumericRowExprFieldDef, 'fieldPath'> | Omit<IFormTidyTableColorRowExprFieldDef, 'fieldPath'> | Omit<IFormTidyTableStringRowExprFieldDef, 'fieldPath'> | Omit<IFormTidyTableScaleRowExprFieldDef, 'fieldPath'> | Omit<IFormJsFieldDef, 'fieldPath'> | Omit<IFormJsonFieldDef, 'fieldPath'> | Omit<IFormMarkdownFieldDef, 'fieldPath'> : Required<T>[key] extends string[] ? Omit<IFormOptionFieldMultipleDef, 'fieldPath'> | Omit<IFormGroupsFieldDef, 'fieldPath'> : never);
82
93
  };
83
94
  export declare enum IFormFieldGroupTypes {
84
95
  Selection = "selection",
@@ -103,9 +114,9 @@ export declare type FormFieldType =
103
114
  */
104
115
  "color" |
105
116
  /**
106
- * @see IFormColumnCoordinateFieldDef
117
+ * @see IFormColumnChooserFieldDef
107
118
  */
108
- "columnCoordinate" |
119
+ "columnsChooser" |
109
120
  /**
110
121
  * @see IFormColumnSelectionFieldDef
111
122
  */
@@ -134,6 +145,10 @@ export declare type FormFieldType =
134
145
  * @see IFormJsFieldDef
135
146
  */
136
147
  "js" |
148
+ /**
149
+ * @see IFormJsonFieldDef
150
+ */
151
+ "json" |
137
152
  /**
138
153
  * @see IFormMarkdownFieldDef
139
154
  */
@@ -145,10 +160,6 @@ export declare type FormFieldType =
145
160
  /**
146
161
  * @see IFormMuiVariantFieldDef
147
162
  */
148
- "muiVariant" |
149
- /**
150
- * @see IFormNumberFieldDef
151
- */
152
163
  "number" |
153
164
  /**
154
165
  * @see IFormOptionFieldDef
@@ -190,6 +201,14 @@ export declare type FormFieldType =
190
201
  * @see IFormTidyTableNumericRowExprFieldDef
191
202
  */
192
203
  "tidyTableNumericRowExpr" |
204
+ /**
205
+ * @see IFormTidyTableStringRowExprFieldDef
206
+ */
207
+ "tidyTableStringRowExpr" |
208
+ /**
209
+ * @see IFormTidyTableColorRowExprFieldDef
210
+ */
211
+ "tidyTableColorRowExpr" |
193
212
  /**
194
213
  * @see IFormTidyTableScaleRowExprFieldDef
195
214
  */
@@ -206,7 +225,7 @@ export declare type FormFieldType =
206
225
  * @see IFormWidgetVariantFieldDef
207
226
  */
208
227
  "widgetVariant";
209
- export declare type FormFieldTidyTableExprType = "tidyTableHtmlExpr" | "tidyTableHtmlRowExpr" | "tidyTableNumericExpr" | "tidyTableNumericRowExpr" | "tidyTableScaleRowExpr" | "tidyTableTextExpr" | "tidyTableTextRowExpr";
228
+ export declare type FormFieldTidyTableExprType = "tidyTableHtmlExpr" | "tidyTableHtmlRowExpr" | "tidyTableNumericExpr" | "tidyTableNumericRowExpr" | "tidyTableScaleRowExpr" | "tidyTableTextExpr" | "tidyTableTextRowExpr" | "tidyTableStringRowExpr" | "tidyTableColorRowExpr";
210
229
  export declare function isTidyTableExpr(type: FormFieldType): type is FormFieldTidyTableExprType;
211
230
  export declare function isTidyTableExprTable(type: FormFieldType): boolean;
212
231
  export declare function isTidyTableExprRow(type: FormFieldType): boolean;
@@ -222,9 +241,9 @@ export declare enum AutocompleteNoOptionsText {
222
241
  NO_OPTIONS = "NO_OPTIONS",
223
242
  NO_QUERY_RESULT = "NO_QUERY_RESULT"
224
243
  }
225
- export declare type CodeMirrorMode = "plain" | "mdx" | "sql" | "js" | "csv" | "md" | FormFieldTidyTableExprType;
244
+ export declare type CodeMirrorMode = "plain" | "mdx" | "sql" | "js" | "json" | "csv" | "md" | FormFieldTidyTableExprType;
226
245
  export declare function isCodeMirrorModeExpr(mode: CodeMirrorMode): boolean;
227
- export declare type FormFieldDialogEditorModelType = "unknown" | "markdown" | FormFieldTidyTableExprType;
246
+ export declare type FormFieldDialogEditorModelType = "unknown" | "markdown" | "mdxExpression" | FormFieldTidyTableExprType;
228
247
  export interface IColorDef {
229
248
  /**
230
249
  * aka. name
@@ -266,10 +285,15 @@ export interface IFormAutocompleteFieldDef<OPTION> extends IFormFieldDef<OPTION>
266
285
  noOptionsText?: AutocompleteNoOptionsText;
267
286
  renderInput?: (params: AutocompleteRenderInputParams) => React.ReactNode;
268
287
  renderOption?: (props: React.HTMLAttributes<HTMLLIElement>, option: OPTION, state: AutocompleteRenderOptionState, onClose: () => void) => React.ReactNode;
288
+ disableClearable?: boolean;
269
289
  };
270
290
  }
271
291
  /**
292
+ * The "groupBoolean" allows for using that field as a group header and as a way
293
+ * to enable/disable the options in the group.
294
+ *
272
295
  * @see FormFieldDef
296
+ * @see IFormGroupsFieldDef
273
297
  */
274
298
  export interface IFormBooleanFieldDef extends IFormFieldDef<boolean> {
275
299
  fieldType: "boolean" | "groupBoolean";
@@ -282,14 +306,52 @@ export interface IFormColorEditorFieldDef extends IFormFieldDef<IColorDef> {
282
306
  }
283
307
  /**
284
308
  * @see FormFieldDef
309
+ *
310
+ * Use the fieldPath to access the column directly in the tidy table with table.getColumnByAlias(...).
311
+ * If multiple columns are in this field, it returns the first column.
312
+ *
313
+ * If the columns chooser is mandatory, the widget or transformation returns an error if there is no column either
314
+ * selected by the user or in the fallback.
315
+ *
285
316
  */
286
- export interface IFormColumnCoordinateFieldDef extends IFormFieldDef<never> {
287
- fieldType: "columnCoordinate";
317
+ export interface IFormColumnChooserFieldDef extends IFormFieldDef<TidyTableColumnSelector> {
318
+ fieldType: "columnsChooser";
288
319
  editorConf?: {
320
+ /**
321
+ * The user can select multiple columns / selectors
322
+ */
289
323
  multiple?: boolean;
324
+ /**
325
+ * The user can select the same column more than once
326
+ */
290
327
  allowDuplicate?: boolean;
291
- allowedTypes?: (column: ITidyColumn) => boolean;
328
+ /**
329
+ * Only columns of this/these type(s) are allowed.
330
+ */
331
+ allowedTypes?: TidyColumnsType[] | ((column: ITidyColumn) => boolean);
332
+ /**
333
+ * The user can select properties of columns
334
+ */
292
335
  includeProperties?: boolean;
336
+ /**
337
+ * The user can choose a selector, see TidyTableMappingColumnSelectorOptions
338
+ */
339
+ includeSelectors?: boolean;
340
+ /**
341
+ * Fallback to a column that has a type that is allowed. Note, properties of columns are not considered.
342
+ *
343
+ * It finds the column to fallback on by
344
+ * 1. role equal to fieldPath and type is allowed,
345
+ * 2. role equal to editorConfig.alias and type is allowed,
346
+ * 3. type is allowed.
347
+ *
348
+ * Already mapped columns are skipped.
349
+ */
350
+ fallback?: boolean;
351
+ /**
352
+ * In the expression editor, use the alias to reference the column. Use the alias in table.getColumnByAlias(...).
353
+ */
354
+ alias?: string;
293
355
  };
294
356
  }
295
357
  /**
@@ -311,7 +373,11 @@ export interface IFormEventMappingArrayFieldDef extends IFormFieldDef<any> {
311
373
  /**
312
374
  * Contains the ordering of the groups.
313
375
  *
376
+ * An optional (and invisible) field that is defining how the groups are ordered (does not need to contain all
377
+ * the groups). When none defined, the groups order depends on the field order themselves.
378
+ *
314
379
  * @see FormFieldDef
380
+ * @see IFormBooleanFieldDef
315
381
  */
316
382
  export interface IFormGroupsFieldDef extends IFormFieldDef<string[]> {
317
383
  fieldType: "groups";
@@ -323,6 +389,12 @@ export interface IFormGroupsFieldDef extends IFormFieldDef<string[]> {
323
389
  export interface IFormJsFieldDef extends IFormFieldDef<string> {
324
390
  fieldType: "js";
325
391
  }
392
+ /**
393
+ * @see FormFieldDef
394
+ */
395
+ export interface IFormJsonFieldDef extends IFormFieldDef<string> {
396
+ fieldType: "json";
397
+ }
326
398
  /**
327
399
  * @see FormFieldDef
328
400
  */
@@ -339,22 +411,17 @@ export interface IFormFileUploaderFieldDef extends IFormFieldDef<any> {
339
411
  export interface IFormMarkdownFieldDef extends IFormFieldDef<string> {
340
412
  fieldType: "markdown";
341
413
  }
414
+ export declare type MdxExpressionType = "calcMeasure" | "drilldown";
342
415
  /**
343
416
  * @see FormFieldDef
344
417
  */
345
418
  export interface IFormMdxFieldDef extends IFormFieldDef<string> {
346
419
  fieldType: "mdxExpression";
347
- }
348
- /**
349
- * Material-UI variants (defined in the theme's components).
350
- *
351
- * @see FormFieldDef
352
- */
353
- export interface IFormMuiVariantFieldDef extends IFormFieldDef<string> {
354
- fieldType: "muiVariant";
355
420
  editorConf: {
356
- componentName: string;
357
- predefinedVariants?: string[];
421
+ mdxExpressionType: MdxExpressionType;
422
+ metaReadOnly?: boolean;
423
+ schemaName?: string;
424
+ cubeName?: string;
358
425
  };
359
426
  }
360
427
  /**
@@ -417,6 +484,10 @@ export interface IFormEmbeddedFieldDef<T extends FormFieldObject> extends IFormF
417
484
  */
418
485
  export interface IFormPaletteEditorFieldDef extends IFormFieldDef<IPaletteDef> {
419
486
  fieldType: "palette";
487
+ editorConfig?: {
488
+ path: string;
489
+ reversed: boolean;
490
+ };
420
491
  }
421
492
  /**
422
493
  * @see FormFieldDef
@@ -443,6 +514,7 @@ export interface IFormStringFieldDef extends IFormFieldDef<string> {
443
514
  * A list of possible strings...
444
515
  */
445
516
  suggestions?: string[] | ((callback: ((candidates: string[]) => void), dependsOnValue?: any) => void);
517
+ copyToClipboard?: boolean;
446
518
  };
447
519
  }
448
520
  /**
@@ -481,6 +553,30 @@ export interface IFormTidyTableNumericExprFieldDef extends IFormFieldDef<string>
481
553
  defaultColumn?: boolean;
482
554
  };
483
555
  }
556
+ /**
557
+ * A string expression containing tidy table value accessor (e.g., chart's value axis minimum).
558
+ * The evaluation context is the table.
559
+ *
560
+ * @see FormFieldDef
561
+ */
562
+ export interface IFormTidyTableStringRowExprFieldDef extends IFormFieldDef<string> {
563
+ fieldType: "tidyTableStringRowExpr";
564
+ editorConf?: {
565
+ defaultColumn?: boolean;
566
+ };
567
+ }
568
+ /**
569
+ * A color (i.e., string) expression containing tidy table value accessor (e.g., chart's value axis minimum).
570
+ * The evaluation context is the table.
571
+ *
572
+ * @see FormFieldDef
573
+ */
574
+ export interface IFormTidyTableColorRowExprFieldDef extends IFormFieldDef<string> {
575
+ fieldType: "tidyTableColorRowExpr";
576
+ editorConf?: {
577
+ defaultColumn?: boolean;
578
+ };
579
+ }
484
580
  /**
485
581
  * A numeric expression containing tidy table value accessor (e.g., chart's value axis minimum).
486
582
  * The evaluation context is a row.
@@ -501,8 +597,8 @@ export interface IFormTidyTableNumericRowExprFieldDef extends IFormFieldDef<stri
501
597
  */
502
598
  export interface IFormTidyTableScaleRowExprFieldDef extends IFormFieldDef<string> {
503
599
  fieldType: "tidyTableScaleRowExpr";
504
- editorConf?: {
505
- defaultColumn?: boolean;
600
+ editorConf: {
601
+ defaultColumn: true;
506
602
  };
507
603
  }
508
604
  /**
@@ -536,6 +632,10 @@ export interface IFormTidyTableTextRowExprFieldDef extends IFormFieldDef<string>
536
632
  */
537
633
  export interface IFormWidgetVariantFieldDef extends IFormFieldDef<string> {
538
634
  fieldType: "widgetVariant";
635
+ editorConf?: {
636
+ componentName: string;
637
+ predefinedVariants?: string[];
638
+ };
539
639
  }
540
- export declare type FormFieldDef = IFormAutocompleteFieldDef<any> | IFormBooleanFieldDef | IFormColorEditorFieldDef | IFormColumnCoordinateFieldDef | IFormColumnSelectionFieldDef | IFormEventMappingArrayFieldDef | IFormFileUploaderFieldDef | IFormGroupsFieldDef | IFormJsFieldDef | IFormMarkdownFieldDef | IFormMdxFieldDef | IFormMuiVariantFieldDef | IFormNumberFieldDef | IFormOptionFieldDef | IFormOptionFieldSingleDef | IFormOptionFieldMultipleDef | IFormPaletteEditorFieldDef | IFormReportPathFieldDef | IFormReportPermaLinkFieldDef | IFormStringFieldDef | IFormTidyTableHtmlExprFieldDef | IFormTidyTableHtmlRowExprFieldDef | IFormTidyTableNumericExprFieldDef | IFormTidyTableNumericRowExprFieldDef | IFormTidyTableScaleRowExprFieldDef | IFormTidyTableTextExprFieldDef | IFormTidyTableTextRowExprFieldDef | IFormWidgetVariantFieldDef;
640
+ export declare type FormFieldDef = IFormAutocompleteFieldDef<any> | IFormBooleanFieldDef | IFormColorEditorFieldDef | IFormColumnChooserFieldDef | IFormColumnSelectionFieldDef | IFormEventMappingArrayFieldDef | IFormFileUploaderFieldDef | IFormGroupsFieldDef | IFormJsFieldDef | IFormMarkdownFieldDef | IFormMdxFieldDef | IFormNumberFieldDef | IFormOptionFieldDef | IFormOptionFieldSingleDef | IFormOptionFieldMultipleDef | IFormPaletteEditorFieldDef | IFormReportPathFieldDef | IFormReportPermaLinkFieldDef | IFormStringFieldDef | IFormTidyTableHtmlExprFieldDef | IFormTidyTableHtmlRowExprFieldDef | IFormTidyTableNumericExprFieldDef | IFormTidyTableNumericRowExprFieldDef | IFormTidyTableStringRowExprFieldDef | IFormTidyTableColorRowExprFieldDef | IFormTidyTableScaleRowExprFieldDef | IFormTidyTableTextExprFieldDef | IFormTidyTableTextRowExprFieldDef | IFormWidgetVariantFieldDef;
541
641
  export declare function createGroupsMeta(groups: string[]): IFormGroupsFieldDef;