@sisense/sdk-ui 1.22.0 → 1.24.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (124) hide show
  1. package/dist/ai.cjs +53 -45
  2. package/dist/ai.js +780 -702
  3. package/dist/analytics-composer.cjs +89 -148
  4. package/dist/analytics-composer.js +1196 -1479
  5. package/dist/index.cjs +119 -118
  6. package/dist/index.js +4898 -5523
  7. package/dist/packages/sdk-ui/src/ai/api/chat-rest-api.d.ts +1 -1
  8. package/dist/packages/sdk-ui/src/ai/api/types.d.ts +3 -23
  9. package/dist/packages/sdk-ui/src/ai/chart/chart-insights.d.ts +6 -0
  10. package/dist/packages/sdk-ui/src/ai/chart/nlq-chart-widget.d.ts +46 -0
  11. package/dist/packages/sdk-ui/src/ai/icons/ai-icon.d.ts +2 -0
  12. package/dist/packages/sdk-ui/src/ai/icons/exclamation-mark-brand-icon.d.ts +3 -0
  13. package/dist/packages/sdk-ui/src/ai/index.d.ts +2 -3
  14. package/dist/packages/sdk-ui/src/ai/messages/chart-message.d.ts +1 -2
  15. package/dist/packages/sdk-ui/src/ai/use-get-data-source-fields.d.ts +1 -1
  16. package/dist/packages/sdk-ui/src/analytics-composer/{translators → code}/code-templates.d.ts +1 -1
  17. package/dist/packages/sdk-ui/src/analytics-composer/{translators → code}/generate-code.d.ts +3 -3
  18. package/dist/packages/sdk-ui/src/analytics-composer/{translators → common}/utils.d.ts +3 -1
  19. package/dist/packages/sdk-ui/src/analytics-composer/index.d.ts +12 -1
  20. package/dist/packages/sdk-ui/src/analytics-composer/query/index.d.ts +1 -0
  21. package/dist/packages/sdk-ui/src/analytics-composer/{translators → query}/query-translator.d.ts +2 -3
  22. package/dist/packages/sdk-ui/src/analytics-composer/types.d.ts +153 -0
  23. package/dist/packages/sdk-ui/src/{ai/messages → analytics-composer/widget/chart-options}/get-widget-options.d.ts +5 -14
  24. package/dist/packages/sdk-ui/src/analytics-composer/widget/stringify-filters.d.ts +2 -0
  25. package/dist/packages/sdk-ui/src/analytics-composer/widget/to-widget-code.d.ts +3 -0
  26. package/dist/packages/sdk-ui/src/analytics-composer/widget/to-widget-props.d.ts +3 -0
  27. package/dist/packages/sdk-ui/src/analytics-composer/widget/widget-composer.d.ts +16 -0
  28. package/dist/packages/sdk-ui/src/api/rest-api.d.ts +13 -2
  29. package/dist/packages/sdk-ui/src/api/types/dashboard-dto.d.ts +1 -1
  30. package/dist/packages/sdk-ui/src/app/client-application.d.ts +7 -7
  31. package/dist/packages/sdk-ui/src/app/settings/types/user.d.ts +0 -1
  32. package/dist/packages/sdk-ui/src/chart/advanced-chart.d.ts +1 -1
  33. package/dist/packages/sdk-ui/src/chart/helpers/derive-chart-family.d.ts +8 -0
  34. package/dist/packages/sdk-ui/src/chart/regular-chart.d.ts +3 -0
  35. package/dist/packages/sdk-ui/src/chart-data-options/utils.d.ts +1 -0
  36. package/dist/packages/sdk-ui/src/chart-options-processor/category-chart-options.d.ts +2 -1
  37. package/dist/packages/sdk-ui/src/chart-options-processor/translations/sunburst/sunburst-options.d.ts +2 -1
  38. package/dist/packages/sdk-ui/src/chart-options-processor/translations/treemap/treemap-options.d.ts +2 -1
  39. package/dist/packages/sdk-ui/src/chart-options-processor/translations/treemap/treemap-tooltip.d.ts +3 -2
  40. package/dist/packages/sdk-ui/src/chart-options-processor/translations/types.d.ts +2 -0
  41. package/dist/packages/sdk-ui/src/common/components/menu/types.d.ts +1 -0
  42. package/dist/packages/sdk-ui/src/dashboard/components/dashboard-container.d.ts +1 -1
  43. package/dist/packages/sdk-ui/src/dashboard/components/horizontal-collapse.d.ts +6 -0
  44. package/dist/packages/sdk-ui/src/dashboard/dashboard.d.ts +6 -1
  45. package/dist/packages/sdk-ui/src/dashboard/hooks/use-filters-panel-collapsed-state.d.ts +8 -0
  46. package/dist/packages/sdk-ui/src/dashboard/types.d.ts +19 -1
  47. package/dist/packages/sdk-ui/src/decorators/component-decorators/with-error-boundary.d.ts +3 -1
  48. package/dist/packages/sdk-ui/src/error-boundary/error-boundary.d.ts +4 -2
  49. package/dist/packages/sdk-ui/src/filters/components/cascading-filter-tile/cascading-filter-tile.d.ts +2 -0
  50. package/dist/packages/sdk-ui/src/filters/components/common/member-radio.d.ts +8 -0
  51. package/dist/packages/sdk-ui/src/filters/components/criteria-filter-tile/criteria-filter-tile.d.ts +2 -0
  52. package/dist/packages/sdk-ui/src/filters/components/custom-filter-tile.d.ts +2 -0
  53. package/dist/packages/sdk-ui/src/filters/components/date-filter/date-range-filter-tile/date-range-filter-tile.d.ts +2 -0
  54. package/dist/packages/sdk-ui/src/filters/components/date-filter/relative-date-filter-tile/helpers.d.ts +6 -0
  55. package/dist/packages/sdk-ui/src/filters/components/date-filter/relative-date-filter-tile/relative-date-filter-tile.d.ts +2 -0
  56. package/dist/packages/sdk-ui/src/filters/components/date-filter/relative-date-filter-tile/relative-date-filter.d.ts +2 -1
  57. package/dist/packages/sdk-ui/src/filters/components/filter-tile.d.ts +1 -0
  58. package/dist/packages/sdk-ui/src/filters/components/filters-panel/filters-panel-tile.d.ts +3 -1
  59. package/dist/packages/sdk-ui/src/filters/components/icons/trash-icon.d.ts +1 -1
  60. package/dist/packages/sdk-ui/src/filters/components/member-filter-tile/member-filter-tile.d.ts +2 -0
  61. package/dist/packages/sdk-ui/src/filters/components/member-filter-tile/member-list.d.ts +1 -0
  62. package/dist/packages/sdk-ui/src/filters/components/unsupported-filter-tile.d.ts +3 -1
  63. package/dist/packages/sdk-ui/src/index.d.ts +15 -8
  64. package/dist/packages/sdk-ui/src/models/dashboard/translate-dashboard-dto-utils.d.ts +2 -2
  65. package/dist/packages/sdk-ui/src/models/dashboard/translate-dashboard-utils.d.ts +1 -1
  66. package/dist/packages/sdk-ui/src/models/dashboard/use-dashboard-model/use-dasboard-model-utils.d.ts +2 -4
  67. package/dist/packages/sdk-ui/src/models/dashboard/use-dashboard-model/use-dashboard-model-reducer.d.ts +24 -16
  68. package/dist/packages/sdk-ui/src/models/dashboard/use-dashboard-model/use-dashboard-model.d.ts +1 -0
  69. package/dist/packages/sdk-ui/src/models/dashboard/use-get-dashboard-model.d.ts +2 -2
  70. package/dist/packages/sdk-ui/src/models/hierarchy/get-hierarchy-models.d.ts +6 -1
  71. package/dist/packages/sdk-ui/src/models/hierarchy/hierarchy-model-translator.d.ts +1 -1
  72. package/dist/packages/sdk-ui/src/models/hierarchy/types.d.ts +3 -0
  73. package/dist/packages/sdk-ui/src/models/hierarchy/use-get-hierarchy-models.d.ts +4 -4
  74. package/dist/packages/sdk-ui/src/models/widget/widget-model-translator.d.ts +12 -2
  75. package/dist/packages/sdk-ui/src/models/widget/widget-model.d.ts +1 -1
  76. package/dist/packages/sdk-ui/src/pivot-table/hooks/use-render-pivot.d.ts +3 -1
  77. package/dist/packages/sdk-ui/src/props.d.ts +29 -17
  78. package/dist/packages/sdk-ui/src/query-execution/types.d.ts +1 -1
  79. package/dist/packages/sdk-ui/src/sisense-context/custom-sisense-context-provider.d.ts +1 -3
  80. package/dist/packages/sdk-ui/src/sisense-context/sisense-context.d.ts +5 -0
  81. package/dist/packages/sdk-ui/src/table/table-component.d.ts +1 -1
  82. package/dist/packages/sdk-ui/src/translation/i18n-provider.d.ts +3 -1
  83. package/dist/packages/sdk-ui/src/translation/resources/en.d.ts +27 -2
  84. package/dist/packages/sdk-ui/src/translation/resources/index.d.ts +32 -4
  85. package/dist/packages/sdk-ui/src/types.d.ts +12 -5
  86. package/dist/packages/sdk-ui/src/utils/filters.d.ts +1 -0
  87. package/dist/packages/sdk-ui/src/{dashboard-widget → widget-by-id}/dashboard-widget.d.ts +2 -1
  88. package/dist/packages/sdk-ui/src/widget-by-id/translate-dashboard-filters.d.ts +4800 -0
  89. package/dist/packages/sdk-ui/src/{dashboard-widget → widget-by-id}/translate-panel-color-format.d.ts +3 -3
  90. package/dist/packages/sdk-ui/src/{dashboard-widget → widget-by-id}/translate-widget-data-options.d.ts +5 -5
  91. package/dist/packages/sdk-ui/src/{dashboard-widget → widget-by-id}/translate-widget-drilldown-options.d.ts +2 -2
  92. package/dist/packages/sdk-ui/src/{dashboard-widget → widget-by-id}/translate-widget-filters.d.ts +85 -83
  93. package/dist/packages/sdk-ui/src/{dashboard-widget → widget-by-id}/types.d.ts +1 -1
  94. package/dist/packages/sdk-ui/src/{dashboard-widget → widget-by-id}/use-fetch-widget-dto-model.d.ts +3 -3
  95. package/dist/packages/sdk-ui/src/{dashboard-widget → widget-by-id}/utils.d.ts +14 -13
  96. package/dist/packages/sdk-ui/src/widget-by-id/widget-by-id.d.ts +26 -0
  97. package/dist/packages/sdk-ui/src/widgets/common/use-drilldown-core.d.ts +7 -0
  98. package/dist/packages/sdk-ui/src/widgets/common/widget-container.d.ts +2 -0
  99. package/dist/packages/sdk-ui/src/widgets/common/widget-errors-and-warnings-context.d.ts +14 -0
  100. package/dist/packages/sdk-ui/src/widgets/common/widget-header-info-button.d.ts +3 -1
  101. package/dist/packages/sdk-ui/src/widgets/common/widget-header.d.ts +2 -0
  102. package/dist/packages/sdk-ui/src/widgets/hooks/use-drilldown.d.ts +2 -0
  103. package/dist/useQuery-CIeSzN0Z.js +7945 -0
  104. package/dist/useQuery-LqaaNBLw.cjs +175 -0
  105. package/dist/widget-composer-CvgsMHyb.cjs +237 -0
  106. package/dist/widget-composer-L8kmRhgX.js +624 -0
  107. package/dist/widget-model-translator-CYeCKnTa.js +116687 -0
  108. package/dist/widget-model-translator-_Z-8UaTN.cjs +917 -0
  109. package/package.json +7 -7
  110. package/dist/get-widget-options-DTIulxC2.js +0 -44253
  111. package/dist/get-widget-options-DixoCEhn.cjs +0 -271
  112. package/dist/packages/sdk-ui/src/ai/messages/jaql-element.d.ts +0 -28
  113. package/dist/packages/sdk-ui/src/analytics-composer/translators/index.d.ts +0 -3
  114. package/dist/packages/sdk-ui/src/analytics-composer/translators/model-translator.d.ts +0 -48
  115. package/dist/packages/sdk-ui/src/analytics-composer/translators/translate-filters-to-code.d.ts +0 -2
  116. package/dist/packages/sdk-ui/src/analytics-composer/translators/types.d.ts +0 -95
  117. package/dist/packages/sdk-ui/src/dashboard/components/HorizontalCollapse.d.ts +0 -5
  118. package/dist/packages/sdk-ui/src/dashboard-widget/translate-dashboard-filters.d.ts +0 -4798
  119. package/dist/packages/sdk-ui/src/translation/custom-translations-loader.d.ts +0 -10
  120. package/dist/table-widget-CLL1iN3H.js +0 -79317
  121. package/dist/table-widget-CYCcYqzZ.cjs +0 -821
  122. /package/dist/packages/sdk-ui/src/analytics-composer/{translators → query}/query-templates.d.ts +0 -0
  123. /package/dist/packages/sdk-ui/src/analytics-composer/{translators/translate-props-to-code.d.ts → widget/stringify-props.d.ts} +0 -0
  124. /package/dist/packages/sdk-ui/src/{dashboard-widget → widget-by-id}/translate-widget-style-options.d.ts +0 -0
@@ -0,0 +1,624 @@
1
+ var k = Object.defineProperty;
2
+ var E = Object.getOwnPropertySymbols;
3
+ var z = Object.prototype.hasOwnProperty, U = Object.prototype.propertyIsEnumerable;
4
+ var w = (e, t, r) => t in e ? k(e, t, { enumerable: !0, configurable: !0, writable: !0, value: r }) : e[t] = r, g = (e, t) => {
5
+ for (var r in t || (t = {}))
6
+ z.call(t, r) && w(e, r, t[r]);
7
+ if (E)
8
+ for (var r of E(t))
9
+ U.call(t, r) && w(e, r, t[r]);
10
+ return e;
11
+ };
12
+ import { dt as K, du as j, M as O, T as u, dv as Y, dw as I, av as J, aD as V, dx as H, dy as X, m as C, dz as Z, dA as G, ao as ee, bN as D } from "./widget-model-translator-CYeCKnTa.js";
13
+ class M extends K {
14
+ constructor(t, r) {
15
+ var a;
16
+ super((a = t.jaql.title) !== null && a !== void 0 ? a : "", r), this.expression = t.jaql.dim || t.jaql.formula, this.metadataItem = t, t.jaql.agg ? this.aggregation = t.jaql.agg : delete this.aggregation, t.jaql.formula ? this.formula = t.jaql.formula : delete this.formula, t.jaql.sort ? this.sortType = j(t.jaql.sort) : delete this.sortType, this.skipValidation = !0;
17
+ }
18
+ get id() {
19
+ return this.expression;
20
+ }
21
+ jaql() {
22
+ return this.metadataItem;
23
+ }
24
+ }
25
+ const te = {
26
+ text: O.TextAttribute,
27
+ numeric: O.NumericAttribute,
28
+ datetime: O.DateLevel
29
+ };
30
+ function Q(e) {
31
+ var t;
32
+ return new M(e, (t = te[e.jaql.datatype]) !== null && t !== void 0 ? t : "numeric");
33
+ }
34
+ const Ie = {
35
+ jaql: { datasource: { title: "" }, metadata: [] },
36
+ queryTitle: "",
37
+ chartRecommendations: {}
38
+ }, Me = {
39
+ model: "",
40
+ metadata: [],
41
+ chart: {},
42
+ queryTitle: ""
43
+ }, Qe = (e) => "widgetProps" in e, re = (e) => "dashboardOid" in e && "widgetOid" in e;
44
+ function ae(e) {
45
+ return e.replace(/\s+/g, "-").replace(/([a-z])([A-Z])/g, "$1-$2").toLowerCase();
46
+ }
47
+ function Le(e) {
48
+ return e.charAt(0).toUpperCase() + e.slice(1);
49
+ }
50
+ function Ae(e) {
51
+ const t = /\[(.+?)\s\(Calendar\)\]/;
52
+ return e.replace(t, "[$1]").trim();
53
+ }
54
+ function Fe(e) {
55
+ if (e)
56
+ if (e.metadata) {
57
+ if (!e.model)
58
+ throw new u("errors.missingModelTitle");
59
+ } else
60
+ throw new u("errors.missingMetadata");
61
+ else
62
+ throw new u("errors.emptyModel");
63
+ return e;
64
+ }
65
+ function ie(e) {
66
+ return !e || !e.jaql.datasource.title || !e.jaql.metadata.length;
67
+ }
68
+ function y(e) {
69
+ return e && e.replace(new RegExp("(?<!\\\\)'", "g"), "\\'");
70
+ }
71
+ function L(e) {
72
+ if (!Y.includes(e))
73
+ throw new u("errors.chartTypeNotSupported", { chartType: e });
74
+ }
75
+ const se = {
76
+ react: {
77
+ baseChartTmpl: `import { {{componentString}} } from '@sisense/sdk-ui';
78
+ {{extraImportsString}}
79
+ import * as DM from './{{dataSourceString}}'; // generated with @sisense/sdk-cli
80
+
81
+ export default function CodeExample() {
82
+ return (
83
+ <{{componentString}}
84
+ title={'{{titleString}}'}
85
+ dataSource={DM.DataSource}
86
+ chartType={'{{chartTypeString}}'}
87
+ dataOptions={ {{dataOptionsString}} }
88
+ filters={ {{filtersString}} }
89
+ />
90
+ );
91
+ }`,
92
+ chartTmpl: "{{baseChartTmpl}}",
93
+ chartWidgetTmpl: "{{baseChartTmpl}}",
94
+ widgetByIdTmpl: `import { WidgetById } from '@sisense/sdk-ui';
95
+
96
+ const CodeExample = () => {
97
+ return (
98
+ <>
99
+ <WidgetById
100
+ widgetOid="{{widgetOid}}"
101
+ dashboardOid="{{dashboardOid}}"
102
+ includeDashboardFilters={true}
103
+ />
104
+ </>
105
+ );
106
+ };
107
+
108
+ export default CodeExample;
109
+ `,
110
+ executeQueryByWidgetIdTmpl: `import { useExecuteQueryByWidgetId } from '@sisense/sdk-ui';
111
+
112
+ const CodeExample = () => {
113
+ const { data, isLoading, isError } = useExecuteQueryByWidgetId({
114
+ widgetOid: "{{widgetOid}}",
115
+ dashboardOid: "{{dashboardOid}}"
116
+ });
117
+
118
+ if (isLoading) {
119
+ return <div>Loading...</div>;
120
+ }
121
+ if (isError) {
122
+ return <div>Error</div>;
123
+ }
124
+ if (data) {
125
+ return <div>Total Rows: {data.rows.length}</div>;
126
+ }
127
+
128
+ return null;
129
+ };
130
+
131
+ export default CodeExample;
132
+ `,
133
+ executeQueryWidgetTmpl: `import { useExecuteQuery } from '@sisense/sdk-ui';
134
+ {{extraImportsString}}
135
+ import * as DM from './{{dataSourceString}}'; // generated with @sisense/sdk-cli
136
+
137
+ const CodeExample = () => {
138
+ const queryProps = {
139
+ dataSource: DM.DataSource,
140
+ dimensions: {{dimensionsString}},
141
+ measures: {{measuresString}},
142
+ filters: {{filtersString}},
143
+ highlights: {{highlightsString}},
144
+ }
145
+
146
+ const { data, isLoading, isError } = useExecuteQuery(queryProps);
147
+
148
+ if (isLoading) {
149
+ return <div>Loading...</div>;
150
+ }
151
+ if (isError) {
152
+ return <div>Error</div>;
153
+ }
154
+ if (data) {
155
+ return <div>Total Rows: {data.rows.length}</div>;
156
+ }
157
+
158
+ return null;
159
+ };
160
+
161
+ export default CodeExample;
162
+ `
163
+ },
164
+ angular: {
165
+ baseChartTmpl: `import { Component } from '@angular/core';
166
+ {{extraImportsString}}
167
+ import * as DM from './{{dataSourceString}}'; // generated with @sisense/sdk-cli
168
+
169
+ @Component({
170
+ selector: 'code-example',
171
+ template: \`
172
+ <csdk-chart-widget
173
+ chartType='{{chartTypeString}}'
174
+ [dataSource]='DM.DataSource'
175
+ [dataOptions]='dataOptions'
176
+ [filters]='filters'
177
+ />
178
+ \`
179
+ })
180
+ export class CodeExample {
181
+ DM = DM;
182
+ dataOptions = {{dataOptionsString}};
183
+ filters = {{filtersString}};
184
+ }`,
185
+ chartTmpl: "{{baseChartTmpl}}",
186
+ chartWidgetTmpl: "{{baseChartTmpl}}",
187
+ widgetByIdTmpl: `import { Component } from '@angular/core';
188
+
189
+ @Component({
190
+ selector: 'code-example',
191
+ template: \`
192
+ <csdk-widget-by-id
193
+ [widgetOid]="widgetOid"
194
+ [dashboardOid]="dashboardOid"
195
+ [includeDashboardFilters]="includeDashboardFilters"
196
+ />
197
+ \`,
198
+ })
199
+
200
+ export class CodeExample {
201
+ widgetOid = "{{widgetOid}}";
202
+ dashboardOid = "{{dashboardOid}}";
203
+ includeDashboardFilters = true;
204
+ }`,
205
+ executeQueryByWidgetIdTmpl: `import { Component } from '@angular/core';
206
+ import { QueryService } from '@sisense/sdk-ui-angular';
207
+ import { type QueryResultData } from '@sisense/sdk-data';
208
+
209
+ @Component({
210
+ selector: 'code-example',
211
+ template: '<div>Total Rows: {{ queryResult.rows.length }}</div>',
212
+ })
213
+
214
+ export class CodeExample {
215
+ queryResult: QueryResultData = { rows: [], columns: [] };
216
+
217
+ constructor(private queryService: QueryService) {}
218
+
219
+ async ngOnInit(): Promise<void> {
220
+ const { data } = await this.queryService.executeQueryByWidgetId({
221
+ widgetOid: "{{widgetOid}}",
222
+ dashboardOid: "{{dashboardOid}}",
223
+ });
224
+ this.queryResult = data as QueryResultData;
225
+ }
226
+ }
227
+ `,
228
+ executeQueryWidgetTmpl: `import { Component } from '@angular/core';
229
+ {{extraImportsString}}
230
+ import { type QueryResultData } from '@sisense/sdk-data';
231
+ import * as DM from './{{dataSourceString}}'; // generated with @sisense/sdk-cli
232
+ import { QueryService } from '@sisense/sdk-ui-angular';
233
+
234
+ @Component({
235
+ selector: 'code-example',
236
+ template: '<div>Total Rows: {{ queryResult.rows.length }}</div>',
237
+ })
238
+
239
+ export class CodeExample {
240
+ queryResult: QueryResultData = { rows: [], columns: [] };
241
+
242
+ constructor(private queryService: QueryService) {}
243
+
244
+ async ngOnInit(): Promise<void> {
245
+ const queryProps = {
246
+ dataSource: DM.DataSource,
247
+ dimensions: {{dimensionsString}},
248
+ measures: {{measuresString}},
249
+ filters: {{filtersString}},
250
+ highlights: {{highlightsString}},
251
+ }
252
+ const { data } = await this.queryService.executeQuery(queryProps);
253
+ this.queryResult = data as QueryResultData;
254
+ }
255
+ }
256
+ `
257
+ },
258
+ vue: {
259
+ baseChartTmpl: `<script setup lang="ts">
260
+ import { ref } from 'vue';
261
+ import { {{componentString}} } from '@sisense/sdk-ui-vue';
262
+ {{extraImportsString}}
263
+ import * as DM from './{{dataSourceString}}'; // generated with @sisense/sdk-cli
264
+
265
+ const dataOptions = ref({{dataOptionsString}});
266
+ const filters = ref({{filtersString}});
267
+ <\/script>
268
+
269
+ <template>
270
+ <{{componentString}}
271
+ chartType="{{chartTypeString}}"
272
+ :dataOptions="dataOptions"
273
+ :filters="filters"
274
+ :dataSource="DM.DataSource"
275
+ title="{{titleString}}" />
276
+ </template>`,
277
+ chartTmpl: "{{baseChartTmpl}}",
278
+ chartWidgetTmpl: "{{baseChartTmpl}}",
279
+ widgetByIdTmpl: `<script setup lang="ts">
280
+ import { WidgetById } from '@sisense/sdk-ui-vue';
281
+ <\/script>
282
+ <template>
283
+ <WidgetById
284
+ :widgetOid="{{widgetOid}}"
285
+ :dashboardOid="{{dashboardOid}}"
286
+ />
287
+ </template>
288
+ `,
289
+ executeQueryByWidgetIdTmpl: `<script setup lang="ts">
290
+ import { useExecuteQueryByWidgetId } from '@sisense/sdk-ui-vue';
291
+
292
+ const { data, isLoading, isError } = useExecuteQueryByWidgetId({
293
+ widgetOid: "{{widgetOid}}",
294
+ dashboardOid: "{{dashboardOid}}"
295
+ });
296
+ <\/script>
297
+ <template>
298
+ <div>
299
+ <div v-if="isLoading">Loading...</div>
300
+ <div v-else-if="isError">Error</div>
301
+ <div v-else-if="data">Total Rows: {{data.rows.length}}</div>
302
+ </div>
303
+ </template>
304
+ `,
305
+ executeQueryWidgetTmpl: `<script setup lang="ts">
306
+ import { useExecuteQuery } from '@sisense/sdk-ui-vue';
307
+ {{extraImportsString}}
308
+ import * as DM from './{{dataSourceString}}'; // generated with @sisense/sdk-cli
309
+
310
+ const queryProps = {
311
+ dataSource: DM.DataSource,
312
+ dimensions: {{dimensionsString}},
313
+ measures: {{measuresString}},
314
+ filters: {{filtersString}},
315
+ highlights: {{highlightsString}},
316
+ }
317
+ const { data, isLoading, isError } = useExecuteQuery(queryProps);
318
+ <\/script>
319
+ <template>
320
+ <div>
321
+ <div v-if="isLoading">Loading...</div>
322
+ <div v-else-if="isError">Error</div>
323
+ <div v-else-if="data">Total Rows: {{data.rows.length}}</div>
324
+ </div>
325
+ </template>`
326
+ }
327
+ }, A = (e, t) => se[t][e].replace(
328
+ /{{(.*?)Tmpl}}/g,
329
+ (a, s) => A(`${s}Tmpl`, t)
330
+ ), oe = (e, t) => e.replace(/{{(.*?)}}/g, (r, a) => a in t ? t[a] : (console.warn(`Placeholder ${a} not found in data`), r)), v = (e, t, r = "react") => {
331
+ const a = A(e, r);
332
+ return oe(a, t);
333
+ }, f = `
334
+ `, b = "UNKNOWN", ne = (e, t) => {
335
+ let r = "";
336
+ return r += `measureFactory.customFormula(
337
+ `, r += " ".repeat(t), r += ` '${y(e.title)}',
338
+ `, r += " ".repeat(t), r += ` '${e.formula}',
339
+ `, r += " ".repeat(t), r += ` {
340
+ `, Object.entries(e.context).forEach(([a, s]) => {
341
+ const i = I(
342
+ s.table || b,
343
+ s.column || b,
344
+ void 0,
345
+ "DM"
346
+ );
347
+ r += " ".repeat(t), r += ` '${a.slice(1, -1)}': ${i},
348
+ `;
349
+ }), r += " ".repeat(t), r += ` }
350
+ `, r += " ".repeat(t), r += ")", r;
351
+ }, le = (e, t) => {
352
+ const { level: r, table: a, column: s, agg: i, sort: o, title: l } = e;
353
+ let n;
354
+ return a && s && (n = I(a, s, r, "DM")), i && a && s && l && (n = `measureFactory.${J.aggregationFromJAQL(
355
+ i
356
+ )}(${n}, '${y(l)}')`), o && (n = `{column: ${n}, sortType: '${j(o)}'}`), n ? `${" ".repeat(t)}${n}` : b;
357
+ }, de = (e, t) => {
358
+ const r = e.jaql().jaql;
359
+ return "formula" in r ? ne(r, t) : f + le(r, t);
360
+ }, h = (e, t = 0, r = !1) => {
361
+ if (!e)
362
+ return "";
363
+ if (typeof e == "string")
364
+ return `'${y(e)}'`;
365
+ if (e instanceof M)
366
+ return de(e, t);
367
+ let a = "";
368
+ return Array.isArray(e) ? a += `[${e.map((s) => h(s, t + 2))}${e.length ? f + " ".repeat(t + 2) : ""}]` : (a += `{${f}`, Object.entries(e).forEach(([s, i]) => {
369
+ r && (s = `'${y(s)}'`), a += " ".repeat(t + 2), Array.isArray(i) ? a += `${s}: [${i.map((o) => h(o, t + 4, r))}${i.length ? f + " ".repeat(t + 2) : ""}]` : typeof i == "object" ? a += `${s}: ${h(i, t + 2, r)}` : ["number", "boolean", "undefined", null].includes(typeof i) ? a += `${s}: ${i}` : a += `${s}: '${y(i)}'`, a += `,${f}`;
370
+ }), a += " ".repeat(t), a += "}"), a;
371
+ }, $ = `
372
+ `, ue = (e, t) => {
373
+ if (e.composeCode)
374
+ return `${$}${" ".repeat(t)}${e.composeCode}`;
375
+ const r = e.jaql().jaql;
376
+ return `${$}${" ".repeat(t)}filterFactory.customFilter(${h(
377
+ r,
378
+ t,
379
+ !0
380
+ )})`;
381
+ }, ce = (e, t = 0) => {
382
+ if (!e)
383
+ return "";
384
+ let r = "";
385
+ return r += `[${e.map((a) => ue(a, t + 2))}${e.length ? `
386
+ ` + " ".repeat(t + 2) : ""}]`, r;
387
+ }, F = (e) => {
388
+ if (!e)
389
+ return "";
390
+ if (Array.isArray(e))
391
+ return ce(e, 2);
392
+ throw new u("errors.filterRelationsNotSupported");
393
+ }, pe = ["executeQueryByWidgetIdTmpl", "widgetByIdTmpl"], me = [
394
+ "executeQueryWidgetTmpl",
395
+ "chartWidgetTmpl"
396
+ ], P = (e) => {
397
+ if (!e)
398
+ throw new u("errors.undefinedDataSource");
399
+ let t;
400
+ return typeof e == "object" && "title" in e ? t = e.title : t = e, ae(t);
401
+ }, ge = (e) => e, fe = (e) => h(e, 2), B = (e) => {
402
+ const t = ["measureFactory"], { filters: r } = e;
403
+ return Array.isArray(r) && r.length > 0 && t.push("filterFactory"), `import { ${t.join(", ")} } from '@sisense/sdk-data';`;
404
+ }, ye = (e, t, r) => {
405
+ const a = {
406
+ titleString: e.title,
407
+ dataSourceString: P(e.dataSource),
408
+ chartTypeString: ge(e.chartType),
409
+ dataOptionsString: fe(e.dataOptions),
410
+ filtersString: F(e.filters),
411
+ componentString: "ChartWidget",
412
+ extraImportsString: B(e)
413
+ };
414
+ return v(r, a, t);
415
+ }, he = (e, t, r) => {
416
+ const a = H(e), s = X(a), i = {
417
+ dataSourceString: P(s.dataSource),
418
+ dimensionsString: "[]",
419
+ // TODO
420
+ measuresString: "[]",
421
+ // TODO
422
+ filtersString: F(s.filters),
423
+ highlightsString: "[]",
424
+ // TODO
425
+ extraImportsString: B(e)
426
+ };
427
+ return v(r, i, t);
428
+ }, Se = ({
429
+ dashboardOid: e,
430
+ widgetOid: t,
431
+ uiFramework: r = "react",
432
+ chartType: a = "table",
433
+ includeChart: s = !0
434
+ }) => {
435
+ L(a);
436
+ const i = { dashboardOid: e, widgetOid: t }, o = pe[Number(s)];
437
+ return v(o, i, r);
438
+ }, Te = ({
439
+ widgetProps: e,
440
+ uiFramework: t = "react",
441
+ includeChart: r = !0
442
+ }) => {
443
+ if (V(e)) {
444
+ L(e.chartType);
445
+ const a = me[Number(r)];
446
+ return r ? ye(e, t, a) : he(e, t, a);
447
+ }
448
+ throw new u("errors.otherWidgetTypesNotSupported");
449
+ }, xe = (e) => ({
450
+ dataOptions: { columns: e.map(Q) }
451
+ }), Oe = Object.freeze({
452
+ convolution: {
453
+ enabled: !0,
454
+ selectedConvolutionType: "bySlicesCount",
455
+ independentSlicesCount: 7
456
+ },
457
+ lineWidth: { width: "bold" },
458
+ markers: {
459
+ enabled: !1
460
+ },
461
+ legend: {
462
+ enabled: !1
463
+ },
464
+ yAxis: {
465
+ gridLines: !1
466
+ },
467
+ xAxis: {
468
+ gridLines: !1
469
+ }
470
+ }), q = Object.freeze({
471
+ line: "line/spline",
472
+ pie: "pie/donut",
473
+ bar: "bar/stacked",
474
+ column: "column/stackedcolumn"
475
+ }), be = (e, t) => {
476
+ const { axesMapping: r = {}, chartFamily: a } = t, s = e.reduce((o, l) => (o[l.jaql.title] = l, o), {}), i = Object.entries(r).reduce((o, l) => {
477
+ const [n, p] = l;
478
+ return o[`${n}`] = Array.isArray(p) ? p.map((m) => {
479
+ var S, T;
480
+ const d = s[m.name];
481
+ if (!d)
482
+ return { column: { type: "", name: m.name } };
483
+ const c = Q(d);
484
+ if (d.panel === "measures")
485
+ return {
486
+ column: c,
487
+ sortType: "sortNone"
488
+ };
489
+ if (G(c.type)) {
490
+ const x = (T = (S = d.format) == null ? void 0 : S.mask) == null ? void 0 : T[d.jaql.level];
491
+ if (x)
492
+ return {
493
+ column: c,
494
+ dateFormat: x
495
+ };
496
+ }
497
+ return c;
498
+ }) : p, o;
499
+ }, {});
500
+ switch (a) {
501
+ case "cartesian":
502
+ return g({
503
+ category: [],
504
+ value: [],
505
+ breakBy: []
506
+ }, i);
507
+ case "categorical":
508
+ return g({
509
+ category: [],
510
+ value: []
511
+ }, i);
512
+ case "scatter":
513
+ return Object.keys(i).forEach((o) => {
514
+ i[`${o}`] = i[`${o}`][0];
515
+ }), i;
516
+ case "scattermap":
517
+ return Object.keys(i).forEach((o) => {
518
+ o !== "geo" && (i[`${o}`] = i[`${o}`][0]);
519
+ }), i;
520
+ case "table":
521
+ return Object.keys(i).length === 0 ? xe(e).dataOptions : i;
522
+ case "boxplot":
523
+ case "areamap":
524
+ case "indicator":
525
+ default:
526
+ return i;
527
+ }
528
+ }, W = (e, t) => {
529
+ var r, a, s, i;
530
+ return t === "x" ? (a = (r = e.axesMapping.category) != null ? r : e.axesMapping.x) == null ? void 0 : a.map((o) => o.name).join(", ") : (i = (s = e.axesMapping.value) != null ? s : e.axesMapping.y) == null ? void 0 : i.map((o) => o.name).join(", ");
531
+ }, ve = (e, t, r = !0) => {
532
+ const a = be(e, t);
533
+ let s;
534
+ return r && t.chartType in q ? s = C(
535
+ C(Oe, {
536
+ subtype: q[t.chartType]
537
+ }),
538
+ {
539
+ legend: {
540
+ enabled: !0,
541
+ position: "right"
542
+ },
543
+ yAxis: {
544
+ title: {
545
+ enabled: !0,
546
+ text: W(t, "y")
547
+ }
548
+ },
549
+ xAxis: {
550
+ title: {
551
+ enabled: !0,
552
+ text: W(t, "x")
553
+ }
554
+ }
555
+ }
556
+ ) : s = Z(), {
557
+ dataOptions: a,
558
+ chartStyleOptions: s
559
+ };
560
+ }, Ee = (e) => "chartType" in e ? e : {
561
+ chartType: "table",
562
+ chartFamily: "table",
563
+ axesMapping: {}
564
+ }, we = (e) => e.map((t) => ee(t.jaql)), Ce = (e) => e.reduce(
565
+ (t, r) => {
566
+ if ((r.panel === "scope" || r.jaql.filter) && t.metadataFilters.push(D(r)), r.panel !== "scope") {
567
+ const a = D(r);
568
+ delete a.jaql.filter, t.metadataColumns.push(a);
569
+ }
570
+ return t;
571
+ },
572
+ { metadataColumns: [], metadataFilters: [] }
573
+ ), De = (e, t) => {
574
+ if (!ie(e))
575
+ try {
576
+ const { useCustomizedStyleOptions: r = !1 } = t || {}, { jaql: a, chartRecommendations: s, queryTitle: i } = e, {
577
+ metadata: o,
578
+ datasource: { title: l, id: n, type: p = "elasticube" }
579
+ } = a, m = Ee(s), d = m.chartType.toLowerCase(), c = {
580
+ cornerRadius: "Small",
581
+ header: {
582
+ // remove info button and render empty toolbar instead
583
+ renderToolbar: () => null
584
+ }
585
+ }, { metadataColumns: S, metadataFilters: T } = Ce(o), x = we(T), { dataOptions: N, chartStyleOptions: R } = ve(
586
+ S,
587
+ m,
588
+ r
589
+ ), _ = g(g({}, R), c);
590
+ return {
591
+ widgetType: "chart",
592
+ id: i,
593
+ title: i,
594
+ chartType: d,
595
+ dataSource: {
596
+ title: l,
597
+ id: n,
598
+ type: p
599
+ },
600
+ dataOptions: N,
601
+ filters: x,
602
+ styleOptions: _
603
+ };
604
+ } catch (r) {
605
+ console.error(r);
606
+ return;
607
+ }
608
+ }, $e = (e, t) => De(e, t), qe = (e) => re(e) ? Se(e) : Te(e), Pe = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
609
+ __proto__: null,
610
+ toWidgetCode: qe,
611
+ toWidgetProps: $e
612
+ }, Symbol.toStringTag, { value: "Module" }));
613
+ export {
614
+ Me as E,
615
+ Ie as a,
616
+ re as b,
617
+ Le as c,
618
+ Qe as i,
619
+ oe as p,
620
+ Ae as s,
621
+ $e as t,
622
+ Fe as v,
623
+ Pe as w
624
+ };