@feedmepos/mf-report 5.19.20 → 5.19.21-beta.1

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 (34) hide show
  1. package/dist/{App-CpPkDCME.js → App-nUveJE2d.js} +31 -31
  2. package/dist/{BaseDialog.vue_vue_type_script_setup_true_lang-BLVm6EP9.js → BaseDialog.vue_vue_type_script_setup_true_lang-BMUdA00d.js} +2096 -1854
  3. package/dist/DateRangeSelect.vue_vue_type_script_setup_true_lang-BeBr4VIF.js +282 -0
  4. package/dist/{Default.vue_vue_type_script_setup_true_lang-DTHkWGvx.js → Default.vue_vue_type_script_setup_true_lang-B4KGPc-A.js} +2 -2
  5. package/dist/FilterSelector.vue_vue_type_script_setup_true_lang-TaboGeqe.js +2455 -0
  6. package/dist/{InsightView-wYbhKrWa.js → InsightView-VRhKOgcg.js} +5 -5
  7. package/dist/{Integration-GkPCivXG.js → Integration-BovNO2yX.js} +2 -2
  8. package/dist/{Integrations-BGNXoeWI.js → Integrations-DIXSWGS_.js} +3 -3
  9. package/dist/{Layout-B7pJLV4_.js → Layout-Djm1HkoE.js} +1 -1
  10. package/dist/MenuTab.vue_vue_type_script_setup_true_lang-BKLjwl2R.js +107 -0
  11. package/dist/{NavigationTab.vue_vue_type_script_setup_true_lang-Cl6q8Efn.js → NavigationTab.vue_vue_type_script_setup_true_lang-BRpEu6MW.js} +7331 -7518
  12. package/dist/{NoData.vue_vue_type_script_setup_true_lang-CUuIeYhQ.js → NoData.vue_vue_type_script_setup_true_lang-CtN7oqXx.js} +1 -1
  13. package/dist/{OverviewView-DzumtIfB.js → OverviewView-D58xngVs.js} +5 -5
  14. package/dist/{Report-B_SX8ejx.js → Report-B-YYrr3B.js} +4 -4
  15. package/dist/ReportEditor-0cP29pgc.js +1070 -0
  16. package/dist/{ReportView-DPMurcsC.js → ReportView-BgUotxrl.js} +7 -7
  17. package/dist/{SelectComponent.vue_vue_type_script_setup_true_lang-IdXw91_v.js → SelectComponent.vue_vue_type_script_setup_true_lang-BcQEW5MO.js} +1 -1
  18. package/dist/{Setting-BsikuNba.js → Setting-DgU3IvCo.js} +4 -4
  19. package/dist/TileEditor-DzDpc7L6.js +2766 -0
  20. package/dist/TransitionFade-DwcV3_6N.js +2366 -0
  21. package/dist/app.js +49 -23
  22. package/dist/assets/formatChartData.worker-Cb40k96i.js +134 -0
  23. package/dist/assets/processTableData.worker-DS6uNX_h.js +134 -0
  24. package/dist/{vue-i18n-D33f1SSo.js → vue-i18n-BJW_sJot.js} +405 -400
  25. package/package.json +1 -1
  26. package/dist/DateRangeSelect.vue_vue_type_script_setup_true_lang-C7mhpRK0.js +0 -185
  27. package/dist/DynamicWidget.vue_vue_type_script_setup_true_lang-DVY4vxAN.js +0 -1669
  28. package/dist/MenuTab.vue_vue_type_script_setup_true_lang-C7pQMilo.js +0 -352
  29. package/dist/ReportEditor-D5OHT5As.js +0 -1013
  30. package/dist/TileEditor-Bzk4U52d.js +0 -2735
  31. package/dist/TransitionFade-Blz6m84x.js +0 -2499
  32. package/dist/assets/formatChartData.worker-CO5zKPH5.js +0 -134
  33. package/dist/assets/processTableData.worker-BAMcED0j.js +0 -134
  34. package/dist/helper-B2iB0Dbh.js +0 -75
@@ -0,0 +1,2766 @@
1
+ import { defineComponent as A, mergeModels as J, useModel as ee, computed as _, ref as W, resolveComponent as x, createElementBlock as I, openBlock as h, createVNode as m, createElementVNode as C, unref as e, withCtx as $, toDisplayString as L, Fragment as Z, renderList as de, withModifiers as te, createTextVNode as me, watch as se, createCommentVNode as U, createBlock as T, onMounted as ke, onUnmounted as Xe, renderSlot as Ne, onBeforeUnmount as We, resolveDynamicComponent as Oe, normalizeClass as Ie, withDirectives as ae, vShow as ne, normalizeStyle as qe, isRef as He } from "vue";
2
+ import { useRoute as Ye, useRouter as Ee } from "vue-router";
3
+ import { h as Je, d as _e, S as we, _ as Ge, W as Ke, b as Qe, T as Ze, a as el } from "./TransitionFade-DwcV3_6N.js";
4
+ import { W as B, b as Be, d as pe, D as ll, S as Te, C as ol, P as Ue, a as tl } from "./BaseDialog.vue_vue_type_script_setup_true_lang-BMUdA00d.js";
5
+ import { storeToRefs as ue } from "pinia";
6
+ import { u as Le } from "./message-dialog-UoMWOnil.js";
7
+ import { u as Y, h as je, p as al, b as Re, d as ce } from "./vue-i18n-BJW_sJot.js";
8
+ import { useSnackbar as nl, useBreakpoints as Me, FmButtonColorThemeVariant as ve } from "@feedmepos/ui-library";
9
+ import { _ as K } from "./SelectComponent.vue_vue_type_script_setup_true_lang-BcQEW5MO.js";
10
+ import { r as Q } from "./i18n-Cif1I9J2.js";
11
+ import { g as fe, u as ge, L as ie, b as Ve, _ as ze, a as il } from "./FilterSelector.vue_vue_type_script_setup_true_lang-TaboGeqe.js";
12
+ import { d as be } from "./DateRangeSelect.vue_vue_type_script_setup_true_lang-BeBr4VIF.js";
13
+ import { _ as Pe } from "./NoData.vue_vue_type_script_setup_true_lang-CtN7oqXx.js";
14
+ const he = [
15
+ {
16
+ type: B.Circular,
17
+ maxDimension: null,
18
+ maxMetric: 1,
19
+ hasBreakdownDimension: !1,
20
+ canTranspose: !1,
21
+ isDrillConfigurable: !1,
22
+ hasChart: !0,
23
+ hasTable: !1,
24
+ hasLabel: !0,
25
+ hasLegend: !0,
26
+ hasXy: !1,
27
+ canRollup: !1,
28
+ showRollupPosition: !1,
29
+ canSearch: !1,
30
+ periodType: null
31
+ },
32
+ {
33
+ type: B.Table,
34
+ maxDimension: null,
35
+ maxMetric: null,
36
+ hasBreakdownDimension: !1,
37
+ canTranspose: !1,
38
+ isDrillConfigurable: !0,
39
+ hasChart: !1,
40
+ hasTable: !0,
41
+ hasLabel: !1,
42
+ hasLegend: !1,
43
+ hasXy: !1,
44
+ canRollup: !0,
45
+ showRollupPosition: !0,
46
+ canSearch: !0,
47
+ periodType: null
48
+ },
49
+ {
50
+ type: B.BarChart,
51
+ maxDimension: null,
52
+ maxMetric: 1,
53
+ hasBreakdownDimension: !0,
54
+ canTranspose: !0,
55
+ isDrillConfigurable: !1,
56
+ hasChart: !0,
57
+ hasTable: !1,
58
+ hasLabel: !0,
59
+ hasLegend: !0,
60
+ hasXy: !0,
61
+ canRollup: !1,
62
+ showRollupPosition: !1,
63
+ canSearch: !1,
64
+ periodType: null
65
+ },
66
+ {
67
+ type: B.LineChart,
68
+ maxDimension: null,
69
+ maxMetric: 1,
70
+ hasBreakdownDimension: !0,
71
+ canTranspose: !0,
72
+ isDrillConfigurable: !1,
73
+ hasChart: !0,
74
+ hasTable: !1,
75
+ hasLabel: !0,
76
+ hasLegend: !0,
77
+ hasXy: !0,
78
+ canRollup: !1,
79
+ showRollupPosition: !1,
80
+ canSearch: !1,
81
+ periodType: null
82
+ },
83
+ {
84
+ type: B.StackBarChart,
85
+ maxDimension: null,
86
+ maxMetric: 1,
87
+ hasBreakdownDimension: !0,
88
+ canTranspose: !0,
89
+ isDrillConfigurable: !1,
90
+ hasChart: !0,
91
+ hasTable: !1,
92
+ hasLabel: !0,
93
+ hasLegend: !0,
94
+ hasXy: !0,
95
+ canRollup: !1,
96
+ showRollupPosition: !1,
97
+ canSearch: !1,
98
+ periodType: null
99
+ },
100
+ {
101
+ type: B.StackLineChart,
102
+ maxDimension: null,
103
+ maxMetric: 1,
104
+ hasBreakdownDimension: !0,
105
+ canTranspose: !0,
106
+ isDrillConfigurable: !1,
107
+ hasChart: !0,
108
+ hasTable: !1,
109
+ hasLabel: !0,
110
+ hasLegend: !0,
111
+ hasXy: !0,
112
+ canRollup: !1,
113
+ showRollupPosition: !1,
114
+ canSearch: !1,
115
+ periodType: null
116
+ },
117
+ {
118
+ type: B.Scorecard,
119
+ maxDimension: null,
120
+ maxMetric: 1,
121
+ hasBreakdownDimension: !1,
122
+ canTranspose: !1,
123
+ isDrillConfigurable: !1,
124
+ hasChart: !1,
125
+ hasTable: !1,
126
+ hasLabel: !1,
127
+ hasLegend: !1,
128
+ hasXy: !1,
129
+ canRollup: !1,
130
+ showRollupPosition: !1,
131
+ canSearch: !1,
132
+ periodType: null
133
+ },
134
+ {
135
+ type: B.Spacer,
136
+ maxDimension: 0,
137
+ maxMetric: 0,
138
+ hasBreakdownDimension: !1,
139
+ canTranspose: !1,
140
+ isDrillConfigurable: !1,
141
+ hasChart: !1,
142
+ hasTable: !1,
143
+ hasLabel: !1,
144
+ hasLegend: !1,
145
+ hasXy: !1,
146
+ canRollup: !1,
147
+ showRollupPosition: !1,
148
+ canSearch: !1,
149
+ periodType: null
150
+ }
151
+ ], sl = { class: "flex flex-col my-2 gap-8" }, ul = { class: "fm-typo-en-body-lg-600" }, dl = { class: "text-sm text-fm-color-neutral-gray-400" }, rl = ["onClick"], ml = { class: "fm-typo-en-body-lg-400 overflow-hidden text-ellipsis line-clamp-1" }, pl = /* @__PURE__ */ A({
152
+ __name: "SchemaSection",
153
+ props: /* @__PURE__ */ J({
154
+ options: {
155
+ type: Array,
156
+ default: () => []
157
+ },
158
+ label: {
159
+ type: String,
160
+ default: "Schema"
161
+ }
162
+ }, {
163
+ modelValue: { required: !0 },
164
+ modelModifiers: {}
165
+ }),
166
+ emits: ["update:modelValue"],
167
+ setup(w) {
168
+ const { t: c, te: o } = Y(), u = ee(w, "modelValue"), n = w, { schemas: g } = ue(Be()), d = _(
169
+ () => g.value.map((b) => ({
170
+ label: b.label,
171
+ value: b.name,
172
+ raw: b
173
+ }))
174
+ ), k = _(() => {
175
+ if (u.value.schemaNames.length === 0 || i.value === 0)
176
+ return d.value.filter((b) => !b.raw.isJoinOnly);
177
+ {
178
+ const b = u.value.schemaNames[0], y = g.value.find((v) => v.name === b), r = ((y == null ? void 0 : y.joins) || []).map((v) => v);
179
+ return d.value.filter((v) => r.includes(v.raw.name));
180
+ }
181
+ }), p = W(!1), t = W(""), i = W(), f = nl();
182
+ function N(b) {
183
+ var y;
184
+ return Q(
185
+ c,
186
+ o,
187
+ (y = g.value.find((r) => r.name === b)) == null ? void 0 : y.label,
188
+ "schema"
189
+ );
190
+ }
191
+ function D(b) {
192
+ i.value = b, p.value = !0, b !== void 0 ? t.value = u.value.schemaNames[b] : t.value = "";
193
+ }
194
+ function O() {
195
+ t.value !== "" ? (i.value !== void 0 ? u.value.schemaNames[i.value] = t.value : u.value.schemaNames.push(t.value), p.value = !1) : f.open({ message: c("report.section.schema.nothingSelected"), type: "error" });
196
+ }
197
+ return (b, y) => {
198
+ const r = x("FmForm"), v = x("FmIcon"), a = x("FmField");
199
+ return h(), I("div", sl, [
200
+ m(pe, {
201
+ modelValue: p.value,
202
+ "onUpdate:modelValue": y[1] || (y[1] = (l) => p.value = l),
203
+ title: n.label,
204
+ "primary-button-label": e(c)("report.common.confirm"),
205
+ "secondary-button-label": e(c)("report.common.cancel"),
206
+ onConfirm: O
207
+ }, {
208
+ content: $(() => [
209
+ m(r, { ref: "form" }, {
210
+ default: $(() => [
211
+ m(K, {
212
+ modelValue: t.value,
213
+ "onUpdate:modelValue": y[0] || (y[0] = (l) => t.value = l),
214
+ label: e(c)("report.section.schema.title"),
215
+ items: i.value === 0 ? d.value.map((l) => ({
216
+ label: e(Q)(e(c), e(o), l.label, "schema"),
217
+ value: l.value
218
+ })) : k.value.map((l) => ({
219
+ label: e(Q)(e(c), e(o), l.label, "schema"),
220
+ value: l.value
221
+ }))
222
+ }, null, 8, ["modelValue", "label", "items"])
223
+ ]),
224
+ _: 1
225
+ }, 512)
226
+ ]),
227
+ _: 1
228
+ }, 8, ["modelValue", "title", "primary-button-label", "secondary-button-label"]),
229
+ C("div", null, [
230
+ C("p", ul, L(e(c)("report.section.schema.title")), 1),
231
+ C("p", dl, L(e(c)("report.section.schema.description")), 1)
232
+ ]),
233
+ (h(!0), I(Z, null, de(u.value.schemaNames, (l, s) => (h(), I("div", {
234
+ key: s,
235
+ class: "flex flex-col gap-2 w-full"
236
+ }, [
237
+ C("div", {
238
+ class: "flex items-center gap-2 border rounded-md border-neutral-300 p-2 h-[40px]",
239
+ onClick: (F) => D(s)
240
+ }, [
241
+ C("p", ml, L(N(l)), 1),
242
+ y[3] || (y[3] = C("div", { class: "grow" }, null, -1)),
243
+ m(v, {
244
+ name: "close",
245
+ onClick: te(
246
+ () => {
247
+ u.value.schemaNames = e(Je)(u.value.schemaNames, s);
248
+ },
249
+ ["stop"]
250
+ )
251
+ }, null, 8, ["onClick"])
252
+ ], 8, rl)
253
+ ]))), 128)),
254
+ m(a, {
255
+ class: "text-fm-color-typo-tertiary",
256
+ onClick: y[2] || (y[2] = () => {
257
+ D();
258
+ })
259
+ }, {
260
+ default: $(() => [
261
+ me(L(e(c)("report.section.schema.add")), 1)
262
+ ]),
263
+ _: 1
264
+ })
265
+ ]);
266
+ };
267
+ }
268
+ }), cl = {
269
+ key: 0,
270
+ class: "flex flex-col my-2 gap-8"
271
+ }, vl = { class: "fm-typo-en-body-lg-600 text-ellipsis line-clamp-1" }, fl = { class: "fm-typo-en-body-sm-600 text-fm-color-neutral-gray-400" }, gl = { class: "fm-typo-en-body-lg-400 text-ellipsis overflow-hidden line-clamp-1" }, Fe = /* @__PURE__ */ A({
272
+ __name: "DimensionSection",
273
+ props: /* @__PURE__ */ J({
274
+ options: {
275
+ type: Array,
276
+ default: () => []
277
+ },
278
+ label: {
279
+ type: String,
280
+ default: "Dimension"
281
+ },
282
+ max: {
283
+ type: Number,
284
+ default: void 0
285
+ },
286
+ config: {
287
+ type: Object,
288
+ default: () => {
289
+ }
290
+ },
291
+ hasRowColumn: {
292
+ type: Boolean,
293
+ default: !1
294
+ }
295
+ }, {
296
+ modelValue: {
297
+ required: !1,
298
+ default: []
299
+ },
300
+ modelModifiers: {}
301
+ }),
302
+ emits: ["update:modelValue"],
303
+ setup(w) {
304
+ const { t: c, te: o } = Y(), u = ee(w, "modelValue"), n = w, g = W(!1), d = _(
305
+ () => u.value.map((a, l) => ({
306
+ index: l,
307
+ labels: [a.label || a.name],
308
+ value: a
309
+ }))
310
+ ), k = W(u.value.length > 0 ? 0 : void 0);
311
+ function p(a) {
312
+ var l, s, F;
313
+ g.value = !0, t.value = a != null && a.value ? JSON.parse(
314
+ JSON.stringify({
315
+ ...a.value,
316
+ label: Q(c, o, (l = a.value) == null ? void 0 : l.label, "other")
317
+ })
318
+ ) : void 0, k.value = a == null ? void 0 : a.index, i.value = !!((s = t.value) != null && s.dataFormula || (F = t.value) != null && F.displayFormula), t.value && t.value.formatter === void 0 && (n.options.find(
319
+ (V) => {
320
+ var M, z;
321
+ return V.schemaName === ((M = t.value) == null ? void 0 : M.schemaName) && V.name === ((z = t.value) == null ? void 0 : z.name);
322
+ }
323
+ ), a.value.timeFormatter && t.value.formatter === void 0 && (t.value.formatter = a.value.timeFormatter, t.value.timeFormatter = void 0));
324
+ }
325
+ const t = W(void 0), i = W(!1), f = _(
326
+ () => n.options.find(
327
+ (a) => {
328
+ var l, s;
329
+ return a.schemaName === ((l = t.value) == null ? void 0 : l.schemaName) && a.name === ((s = t.value) == null ? void 0 : s.name);
330
+ }
331
+ ) ?? {}
332
+ );
333
+ se(
334
+ () => {
335
+ var a;
336
+ return (a = t.value) == null ? void 0 : a.option;
337
+ },
338
+ () => {
339
+ !N.value && t.value && (t.value.fillGap = !1);
340
+ }
341
+ );
342
+ const N = _(
343
+ () => {
344
+ var a, l, s;
345
+ return (s = (a = f.value) == null ? void 0 : a.fillGapDimensionOptions) == null ? void 0 : s.includes(((l = t.value) == null ? void 0 : l.option) || "");
346
+ }
347
+ );
348
+ function D(a) {
349
+ var l, s;
350
+ (a.schemaName !== ((l = t.value) == null ? void 0 : l.schemaName) || a.name !== ((s = t.value) == null ? void 0 : s.name)) && (t.value = {
351
+ schemaName: a.schemaName,
352
+ name: a.name,
353
+ option: a.dimensionOptions[0],
354
+ label: Q(c, o, a.label, "other"),
355
+ decimal: a.isNumericType ? 2 : void 0,
356
+ hide: !1
357
+ }, i.value = !1);
358
+ }
359
+ function O() {
360
+ if (!t.value) {
361
+ console.error("new field is undefined");
362
+ return;
363
+ }
364
+ const a = [...d.value.map((l) => l.value)];
365
+ i.value || (t.value.dataFormula = void 0), k.value !== void 0 ? a[k.value] = t.value : a.push(t.value), u.value = a, g.value = !1;
366
+ }
367
+ function b(a) {
368
+ const s = [...d.value.map((F) => F.value)].filter((F, V) => V !== a);
369
+ u.value = s;
370
+ }
371
+ function y(a) {
372
+ t.value && (t.value.decimal = Number(a));
373
+ }
374
+ const r = _(
375
+ () => n.options.map((a) => ({
376
+ label: a.labels.join(" "),
377
+ value: a
378
+ }))
379
+ ), v = _(
380
+ () => n.label ? n.label : c(`report.section.dimension.${n.label}`)
381
+ );
382
+ return (a, l) => {
383
+ const s = x("FmTextField"), F = x("FmStepperField"), V = x("FmCheckbox"), M = x("FmTextarea"), z = x("FmForm"), P = x("FmIcon"), q = x("FmButton"), G = x("FmListItem"), oe = x("FmList"), S = x("FmField");
384
+ return w.max !== 0 ? (h(), I("div", cl, [
385
+ m(pe, {
386
+ modelValue: g.value,
387
+ "onUpdate:modelValue": l[12] || (l[12] = (X) => g.value = X),
388
+ title: v.value,
389
+ "primary-button-label": e(c)("report.common.confirm"),
390
+ "secondary-button-label": e(c)("report.common.cancel"),
391
+ onConfirm: O
392
+ }, {
393
+ content: $(() => [
394
+ m(z, {
395
+ ref: "form",
396
+ class: "flex flex-col gap-2 w-[490px]"
397
+ }, {
398
+ default: $(() => {
399
+ var X, H, le, E, re, R, Se;
400
+ return [
401
+ m(K, {
402
+ "model-value": f.value,
403
+ items: r.value,
404
+ placeholder: v.value,
405
+ label: v.value,
406
+ "onUpdate:modelValue": l[0] || (l[0] = (j) => D(j))
407
+ }, null, 8, ["model-value", "items", "placeholder", "label"]),
408
+ t.value ? (h(), I(Z, { key: 0 }, [
409
+ m(s, {
410
+ modelValue: t.value.label,
411
+ "onUpdate:modelValue": l[1] || (l[1] = (j) => t.value.label = j),
412
+ label: e(c)("report.section.dimension.label")
413
+ }, null, 8, ["modelValue", "label"]),
414
+ (((X = f.value) == null ? void 0 : X.dimensionOptions) || []).length > 0 ? (h(), T(K, {
415
+ key: 0,
416
+ modelValue: t.value.option,
417
+ "onUpdate:modelValue": l[2] || (l[2] = (j) => t.value.option = j),
418
+ items: ((H = f.value) == null ? void 0 : H.dimensionOptions.map((j) => ({
419
+ label: e(Q)(e(c), e(o), j, "field"),
420
+ value: j
421
+ }))) ?? []
422
+ }, null, 8, ["modelValue", "items"])) : U("", !0),
423
+ (le = f.value) != null && le.isNumericType ? (h(), T(F, {
424
+ key: 1,
425
+ label: e(c)("report.common.decimal"),
426
+ "model-value": ((E = t.value) == null ? void 0 : E.decimal) ?? 2,
427
+ "onUpdate:modelValue": l[3] || (l[3] = (j) => {
428
+ y(j);
429
+ })
430
+ }, null, 8, ["label", "model-value"])) : U("", !0),
431
+ (re = f.value) != null && re.isNumericType ? (h(), T(K, {
432
+ key: 2,
433
+ modelValue: t.value.formatter,
434
+ "onUpdate:modelValue": l[4] || (l[4] = (j) => t.value.formatter = j),
435
+ placeholder: e(c)("report.section.dimension.formatter"),
436
+ label: e(c)("report.section.dimension.formatter"),
437
+ items: [
438
+ { label: "NONE", value: null },
439
+ ...(((R = f.value) == null ? void 0 : R.formatters) || []).map((j) => ({
440
+ label: j,
441
+ value: j
442
+ }))
443
+ ]
444
+ }, null, 8, ["modelValue", "placeholder", "label", "items"])) : U("", !0),
445
+ N.value ? (h(), T(V, {
446
+ key: 3,
447
+ "model-value": t.value.fillGap ?? !1,
448
+ label: e(c)("report.section.dimension.fillGap"),
449
+ value: "",
450
+ placeholder: "Fill gap",
451
+ "onUpdate:modelValue": l[5] || (l[5] = (j) => {
452
+ t.value && (t.value.fillGap = j);
453
+ })
454
+ }, null, 8, ["model-value", "label"])) : U("", !0),
455
+ ((Se = f.value) == null ? void 0 : Se.type) === e(ll).Timestamp ? (h(), T(V, {
456
+ key: 4,
457
+ "model-value": t.value.dateComparison ?? !1,
458
+ label: e(c)("report.section.dimension.dateComparison"),
459
+ value: "",
460
+ "onUpdate:modelValue": l[6] || (l[6] = (j) => {
461
+ t.value && (t.value.dateComparison = j);
462
+ })
463
+ }, null, 8, ["model-value", "label"])) : U("", !0),
464
+ m(V, {
465
+ modelValue: t.value.hide,
466
+ "onUpdate:modelValue": l[7] || (l[7] = (j) => t.value.hide = j),
467
+ label: e(c)("report.section.dimension.hide"),
468
+ value: ""
469
+ }, null, 8, ["modelValue", "label"]),
470
+ n.hasRowColumn ? (h(), T(V, {
471
+ key: 5,
472
+ modelValue: t.value.moveToColumn,
473
+ "onUpdate:modelValue": l[8] || (l[8] = (j) => t.value.moveToColumn = j),
474
+ label: e(c)("report.section.dimension.moveToColumn"),
475
+ value: ""
476
+ }, null, 8, ["modelValue", "label"])) : U("", !0),
477
+ m(V, {
478
+ modelValue: i.value,
479
+ "onUpdate:modelValue": l[9] || (l[9] = (j) => i.value = j),
480
+ label: e(c)("report.section.dimension.advance"),
481
+ value: !0
482
+ }, null, 8, ["modelValue", "label"]),
483
+ i.value ? (h(), T(M, {
484
+ key: 6,
485
+ modelValue: t.value.dataFormula,
486
+ "onUpdate:modelValue": l[10] || (l[10] = (j) => t.value.dataFormula = j),
487
+ placeholder: e(c)("report.section.dimension.dataFormula")
488
+ }, null, 8, ["modelValue", "placeholder"])) : U("", !0),
489
+ i.value ? (h(), T(M, {
490
+ key: 7,
491
+ modelValue: t.value.displayFormula,
492
+ "onUpdate:modelValue": l[11] || (l[11] = (j) => t.value.displayFormula = j),
493
+ placeholder: e(c)("report.section.dimension.displayFormula")
494
+ }, null, 8, ["modelValue", "placeholder"])) : U("", !0)
495
+ ], 64)) : U("", !0)
496
+ ];
497
+ }),
498
+ _: 1
499
+ }, 512)
500
+ ]),
501
+ _: 1
502
+ }, 8, ["modelValue", "title", "primary-button-label", "secondary-button-label"]),
503
+ C("div", null, [
504
+ C("p", vl, L(v.value), 1),
505
+ C("p", fl, L(e(c)("report.section.dimension.description")), 1)
506
+ ]),
507
+ m(oe, null, {
508
+ default: $(() => [
509
+ m(e(_e), {
510
+ list: u.value,
511
+ "item-key": "id",
512
+ class: "flex flex-col gap-2"
513
+ }, {
514
+ item: $(({ element: X, index: H }) => [
515
+ m(G, {
516
+ class: "!cursor-grab border rounded-md border-neutral-300 h-[40px] !p-[8px]",
517
+ onClick: te((le) => p(d.value[H]), ["stop"])
518
+ }, {
519
+ default: $(() => [
520
+ m(P, { name: "drag_handle" }),
521
+ C("p", gl, L(e(Q)(e(c), e(o), X.label, "other")), 1),
522
+ l[14] || (l[14] = C("div", { class: "grow" }, null, -1)),
523
+ m(q, {
524
+ icon: "close",
525
+ size: "md",
526
+ variant: "tertiary",
527
+ onClick: te((le) => b(H), ["stop"])
528
+ }, null, 8, ["onClick"])
529
+ ]),
530
+ _: 2
531
+ }, 1032, ["onClick"])
532
+ ]),
533
+ _: 1
534
+ }, 8, ["list"])
535
+ ]),
536
+ _: 1
537
+ }),
538
+ m(S, {
539
+ class: "text-fm-color-typo-tertiary",
540
+ onClick: l[13] || (l[13] = () => {
541
+ p();
542
+ })
543
+ }, {
544
+ default: $(() => [
545
+ me(L(e(c)("report.section.dimension.add")), 1)
546
+ ]),
547
+ _: 1
548
+ })
549
+ ])) : U("", !0);
550
+ };
551
+ }
552
+ }), xe = {
553
+ value: "_metric_name"
554
+ };
555
+ function bl(w, c, o) {
556
+ switch (w) {
557
+ case B.BarChart:
558
+ case B.StackBarChart:
559
+ case B.LineChart:
560
+ case B.StackLineChart:
561
+ case B.Circular:
562
+ return c.length > 1;
563
+ default:
564
+ return o;
565
+ }
566
+ }
567
+ function yl(w) {
568
+ var u;
569
+ const { rowIds: c, columnIds: o } = ye(w.widget.config);
570
+ return {
571
+ ...w,
572
+ widget: {
573
+ ...w.widget,
574
+ config: {
575
+ ...w.widget.config,
576
+ rowIds: c,
577
+ columnIds: o,
578
+ isDrillable: bl(
579
+ w.widget.type,
580
+ w.widget.config.dimensions,
581
+ w.widget.config.isDrillable
582
+ ),
583
+ joinDatasources: (u = w.widget.config.joinDatasources) == null ? void 0 : u.map((n) => {
584
+ const { rowIds: g, columnIds: d } = ye(n);
585
+ return {
586
+ ...n,
587
+ rowIds: g,
588
+ columnIds: d
589
+ };
590
+ })
591
+ }
592
+ }
593
+ };
594
+ }
595
+ function ye(w) {
596
+ const c = w.dimensions.filter((d) => d.hide !== !0 && !d.moveToColumn).map((d) => fe(d)), o = w.dimensions.filter((d) => d.hide !== !0 && d.moveToColumn == !0).map((d) => fe(d)), u = w.metrics.length > 0;
597
+ u && w.metrics.find((d) => d.moveToRow == !0) ? c.push(xe.value) : u && o.push(xe.value);
598
+ const n = [], g = [];
599
+ for (const d of c)
600
+ n.push(d);
601
+ for (const d of o)
602
+ g.push(d);
603
+ return {
604
+ rowIds: n,
605
+ columnIds: g
606
+ };
607
+ }
608
+ const hl = { class: "flex flex-col my-2 gap-8" }, Vl = { class: "fm-typo-en-body-lg-600" }, Fl = { class: "fm-typo-en-body-sm-600 text-fm-color-neutral-gray-400" }, wl = { class: "fm-typo-en-body-lg-400 overflow-hidden text-ellipsis line-clamp-1" }, xl = /* @__PURE__ */ A({
609
+ __name: "MetricSection",
610
+ props: /* @__PURE__ */ J({
611
+ options: {
612
+ type: Array,
613
+ default: () => []
614
+ },
615
+ label: {
616
+ type: String,
617
+ default: "Metric"
618
+ },
619
+ max: {
620
+ type: Number,
621
+ default: void 0
622
+ },
623
+ config: {
624
+ type: Object,
625
+ default: () => {
626
+ }
627
+ },
628
+ hasRowColumn: {
629
+ type: Boolean,
630
+ default: !1
631
+ }
632
+ }, {
633
+ modelValue: { required: !1, default: [] },
634
+ modelModifiers: {}
635
+ }),
636
+ emits: /* @__PURE__ */ J(["config"], ["update:modelValue"]),
637
+ setup(w, { emit: c }) {
638
+ const { t: o, te: u } = Y(), n = ee(w, "modelValue"), g = w;
639
+ _(() => !!g.max && n.value.length === g.max);
640
+ const d = W(!1), k = _(
641
+ () => n.value.map((l, s) => ({
642
+ index: s,
643
+ labels: [l.label || l.name],
644
+ value: l
645
+ }))
646
+ ), p = W(n.value.length > 0 ? 0 : void 0);
647
+ function t(l) {
648
+ var s, F, V;
649
+ d.value = !0, i.value = l != null && l.value ? JSON.parse(
650
+ JSON.stringify({
651
+ ...l.value,
652
+ label: Q(o, u, l.value.label, "other")
653
+ })
654
+ ) : void 0, p.value = l == null ? void 0 : l.index, f.value = !!((s = i.value) != null && s.dataFormula || (F = i.value) != null && F.displayFormula), i.value && i.value.formatter === void 0 && (g.options.find(
655
+ (M) => {
656
+ var z, P;
657
+ return M.schemaName === ((z = i.value) == null ? void 0 : z.schemaName) && M.name === ((P = i.value) == null ? void 0 : P.name);
658
+ }
659
+ ), l.value.timeFormatter && i.value.formatter === void 0 && (i.value.formatter = l.value.timeFormatter, i.value.timeFormatter = void 0)), ((V = g.config.rowIds) == null ? void 0 : V.findIndex((M) => M === xe.value)) !== -1 && i.value && (i.value.moveToRow = !0);
660
+ }
661
+ const i = W(void 0), f = W(!1), N = _(
662
+ () => g.options.find(
663
+ (l) => {
664
+ var s, F;
665
+ return l.schemaName === ((s = i.value) == null ? void 0 : s.schemaName) && l.name === ((F = i.value) == null ? void 0 : F.name);
666
+ }
667
+ ) ?? {}
668
+ );
669
+ function D(l, s) {
670
+ var F;
671
+ return (l == null ? void 0 : l.isNumericType) || ((F = l == null ? void 0 : l.isNumericAggregations) == null ? void 0 : F.includes(s || ""));
672
+ }
673
+ const O = _(
674
+ () => {
675
+ var l;
676
+ return D(N.value, (l = i.value) == null ? void 0 : l.aggregation);
677
+ }
678
+ );
679
+ se(O, (l) => {
680
+ i.value && (l ? i.value.decimal = typeof i.value.decimal != "number" ? 2 : i.value.decimal : i.value.decimal = void 0);
681
+ });
682
+ function b(l) {
683
+ var s, F;
684
+ (l.schemaName !== ((s = i.value) == null ? void 0 : s.schemaName) || l.name !== ((F = i.value) == null ? void 0 : F.name)) && (i.value = {
685
+ schemaName: l.schemaName,
686
+ name: l.name,
687
+ aggregation: l.aggregations[0],
688
+ label: Q(o, u, l.label, "other"),
689
+ decimal: D(l, l.aggregations[0]) ? 2 : void 0,
690
+ moveToRow: !1,
691
+ hide: !1
692
+ }, f.value = !1);
693
+ }
694
+ function y() {
695
+ const l = [...k.value.map((s) => s.value)];
696
+ i.value && (f.value || (i.value.dataFormula = void 0), p.value !== void 0 ? l[p.value] = i.value : l.push(i.value)), n.value = l, d.value = !1;
697
+ }
698
+ function r(l) {
699
+ const s = [...k.value.map((F) => F.value)];
700
+ s.splice(l, 1), n.value = s;
701
+ }
702
+ const v = _(
703
+ () => g.options.map((l) => ({
704
+ label: l.labels.join(" "),
705
+ value: l
706
+ }))
707
+ ), a = _(
708
+ () => g.label ? g.label : o(`report.section.metric.${g.label}`)
709
+ );
710
+ return (l, s) => {
711
+ const F = x("FmTextField"), V = x("FmStepperField"), M = x("FmCheckbox"), z = x("FmTextarea"), P = x("FmForm"), q = x("FmIcon"), G = x("FmButton"), oe = x("FmListItem"), S = x("FmList"), X = x("FmField");
712
+ return h(), I("div", hl, [
713
+ m(pe, {
714
+ modelValue: d.value,
715
+ "onUpdate:modelValue": s[10] || (s[10] = (H) => d.value = H),
716
+ title: a.value,
717
+ onConfirm: y
718
+ }, {
719
+ content: $(() => [
720
+ m(P, {
721
+ ref: "form",
722
+ class: "flex flex-col gap-2 w-[490px]"
723
+ }, {
724
+ default: $(() => {
725
+ var H, le, E, re;
726
+ return [
727
+ m(K, {
728
+ "model-value": N.value,
729
+ items: v.value,
730
+ placeholder: a.value,
731
+ label: a.value,
732
+ "onUpdate:modelValue": s[0] || (s[0] = (R) => b(R))
733
+ }, null, 8, ["model-value", "items", "placeholder", "label"]),
734
+ i.value ? (h(), I(Z, { key: 0 }, [
735
+ m(F, {
736
+ modelValue: i.value.label,
737
+ "onUpdate:modelValue": s[1] || (s[1] = (R) => i.value.label = R),
738
+ label: e(o)("report.section.metric.label")
739
+ }, null, 8, ["modelValue", "label"]),
740
+ (((H = N.value) == null ? void 0 : H.aggregations) || []).length > 0 ? (h(), T(K, {
741
+ key: 0,
742
+ modelValue: i.value.aggregation,
743
+ "onUpdate:modelValue": s[2] || (s[2] = (R) => i.value.aggregation = R),
744
+ label: e(o)("report.section.metric.aggregation"),
745
+ items: ((le = N.value) == null ? void 0 : le.aggregations.map((R) => ({
746
+ label: e(Q)(e(o), e(u), R, "field"),
747
+ value: R
748
+ }))) ?? []
749
+ }, null, 8, ["modelValue", "label", "items"])) : U("", !0),
750
+ O.value ? (h(), T(V, {
751
+ key: 1,
752
+ label: e(o)("report.common.decimal"),
753
+ "model-value": ((E = i.value) == null ? void 0 : E.decimal) ?? 2,
754
+ "onUpdate:modelValue": s[3] || (s[3] = (R) => {
755
+ i.value && (i.value.decimal = R);
756
+ })
757
+ }, null, 8, ["label", "model-value"])) : U("", !0),
758
+ O.value ? (h(), T(K, {
759
+ key: 2,
760
+ modelValue: i.value.formatter,
761
+ "onUpdate:modelValue": s[4] || (s[4] = (R) => i.value.formatter = R),
762
+ placeholder: e(o)("report.section.metric.formatter"),
763
+ label: e(o)("report.section.metric.formatter"),
764
+ items: [
765
+ { label: "NONE", value: null },
766
+ ...(((re = N.value) == null ? void 0 : re.formatters) || []).map((R) => ({
767
+ label: R,
768
+ value: R
769
+ }))
770
+ ]
771
+ }, null, 8, ["modelValue", "placeholder", "label", "items"])) : U("", !0),
772
+ m(M, {
773
+ modelValue: i.value.hide,
774
+ "onUpdate:modelValue": s[5] || (s[5] = (R) => i.value.hide = R),
775
+ label: e(o)("report.section.metric.hide"),
776
+ value: ""
777
+ }, null, 8, ["modelValue", "label"]),
778
+ g.hasRowColumn ? (h(), T(M, {
779
+ key: 3,
780
+ modelValue: i.value.moveToRow,
781
+ "onUpdate:modelValue": s[6] || (s[6] = (R) => i.value.moveToRow = R),
782
+ label: e(o)("report.section.metric.moveToRow"),
783
+ value: ""
784
+ }, null, 8, ["modelValue", "label"])) : U("", !0),
785
+ m(M, {
786
+ modelValue: f.value,
787
+ "onUpdate:modelValue": s[7] || (s[7] = (R) => f.value = R),
788
+ label: e(o)("report.section.metric.advance"),
789
+ value: !0
790
+ }, null, 8, ["modelValue", "label"]),
791
+ f.value ? (h(), T(z, {
792
+ key: 4,
793
+ modelValue: i.value.dataFormula,
794
+ "onUpdate:modelValue": s[8] || (s[8] = (R) => i.value.dataFormula = R),
795
+ placeholder: e(o)("report.section.metric.dataFormula")
796
+ }, null, 8, ["modelValue", "placeholder"])) : U("", !0),
797
+ f.value ? (h(), T(z, {
798
+ key: 5,
799
+ modelValue: i.value.displayFormula,
800
+ "onUpdate:modelValue": s[9] || (s[9] = (R) => i.value.displayFormula = R),
801
+ placeholder: e(o)("report.section.metric.displayFormula")
802
+ }, null, 8, ["modelValue", "placeholder"])) : U("", !0)
803
+ ], 64)) : U("", !0)
804
+ ];
805
+ }),
806
+ _: 1
807
+ }, 512)
808
+ ]),
809
+ _: 1
810
+ }, 8, ["modelValue", "title"]),
811
+ C("div", null, [
812
+ C("p", Vl, L(a.value), 1),
813
+ C("p", Fl, L(e(o)("report.section.metric.description")), 1)
814
+ ]),
815
+ m(S, null, {
816
+ default: $(() => [
817
+ m(e(_e), {
818
+ list: n.value,
819
+ "item-key": "id",
820
+ class: "flex flex-col gap-2 w-full"
821
+ }, {
822
+ item: $(({ element: H, index: le }) => [
823
+ m(oe, {
824
+ class: "!cursor-grab border rounded-md border-neutral-300 h-[40px] !p-[8px]",
825
+ onClick: te((E) => t(k.value[le]), ["stop"])
826
+ }, {
827
+ default: $(() => [
828
+ m(q, { name: "drag_handle" }),
829
+ C("p", wl, L(e(Q)(e(o), e(u), H.label, "other")), 1),
830
+ s[12] || (s[12] = C("div", { class: "grow" }, null, -1)),
831
+ m(G, {
832
+ icon: "close",
833
+ size: "md",
834
+ variant: "tertiary",
835
+ onClick: te((E) => r(le), ["stop"])
836
+ }, null, 8, ["onClick"])
837
+ ]),
838
+ _: 2
839
+ }, 1032, ["onClick"])
840
+ ]),
841
+ _: 1
842
+ }, 8, ["list"])
843
+ ]),
844
+ _: 1
845
+ }),
846
+ m(X, {
847
+ class: "text-fm-color-typo-tertiary",
848
+ onClick: s[11] || (s[11] = () => {
849
+ t();
850
+ })
851
+ }, {
852
+ default: $(() => [
853
+ me(L(e(o)("report.section.metric.add")), 1)
854
+ ]),
855
+ _: 1
856
+ })
857
+ ]);
858
+ };
859
+ }
860
+ }), Cl = { class: "flex flex-col my-2 gap-8" }, kl = { class: "fm-typo-en-body-lg-600" }, _l = { class: "fm-typo-en-body-sm-600 text-fm-color-neutral-gray-400" }, Sl = { class: "fm-typo-en-body-lg-400 text-ellipsis overflow-hidden line-clamp-1" }, Tl = /* @__PURE__ */ A({
861
+ __name: "SortSection",
862
+ props: /* @__PURE__ */ J({
863
+ options: {
864
+ type: Array,
865
+ default: () => []
866
+ },
867
+ label: {
868
+ type: String,
869
+ default: "Sort"
870
+ }
871
+ }, {
872
+ modelValue: { required: !1, default: [] },
873
+ modelModifiers: {}
874
+ }),
875
+ emits: ["update:modelValue"],
876
+ setup(w) {
877
+ const { t: c } = Y(), o = ee(w, "modelValue"), u = w, n = _(
878
+ () => u.label ? u.label : c(`report.section.sort.${u.label}`)
879
+ ), g = W(!1), d = _(
880
+ () => o.value.map((y, r) => {
881
+ const v = u.options.find(
882
+ (a) => a.schemaName === y.schemaName && a.name === y.name
883
+ );
884
+ return {
885
+ index: r,
886
+ labels: (v == null ? void 0 : v.labels) || [y.schemaName, y.name],
887
+ value: y
888
+ };
889
+ })
890
+ ), k = W(o.value.length > 0 ? 0 : void 0);
891
+ function p(y) {
892
+ var r;
893
+ g.value = !0, t.value = y != null && y.value ? JSON.parse(JSON.stringify(y.value)) : void 0, k.value = y == null ? void 0 : y.index, i.value = !!((r = t.value) != null && r.dataFormula);
894
+ }
895
+ const t = W(void 0), i = W(!1), f = _(
896
+ () => u.options.find(
897
+ (y) => {
898
+ var r, v;
899
+ return y.schemaName === ((r = t.value) == null ? void 0 : r.schemaName) && y.name === ((v = t.value) == null ? void 0 : v.name);
900
+ }
901
+ ) ?? {}
902
+ );
903
+ function N(y) {
904
+ var r, v;
905
+ (y.schemaName !== ((r = t.value) == null ? void 0 : r.schemaName) || y.name !== ((v = t.value) == null ? void 0 : v.name)) && (t.value = {
906
+ schemaName: y.schemaName,
907
+ name: y.name,
908
+ dimensionOption: y.dimensionOptions[0],
909
+ aggregation: null,
910
+ type: Te.Asc
911
+ });
912
+ }
913
+ function D() {
914
+ if (!t.value) {
915
+ console.log("new sort is undefined");
916
+ return;
917
+ }
918
+ const y = [...d.value.map((r) => r.value)];
919
+ i.value || (newField.value.dataFormula = void 0), k.value !== void 0 ? y[k.value] = t.value : y.push(t.value), o.value = y, g.value = !1;
920
+ }
921
+ function O(y) {
922
+ const r = [...d.value.map((v) => v.value)];
923
+ r.splice(y, 1), o.value = r, g.value = !1;
924
+ }
925
+ const b = _(
926
+ () => u.options.map((y) => ({
927
+ label: y.labels.join(" "),
928
+ value: y
929
+ }))
930
+ );
931
+ return (y, r) => {
932
+ const v = x("FmCheckbox"), a = x("FmTextarea"), l = x("FmForm"), s = x("FmIcon"), F = x("FmButton"), V = x("FmListItem"), M = x("FmList"), z = x("FmField");
933
+ return h(), I("div", Cl, [
934
+ m(pe, {
935
+ modelValue: g.value,
936
+ "onUpdate:modelValue": r[6] || (r[6] = (P) => g.value = P),
937
+ title: n.value,
938
+ onConfirm: D
939
+ }, {
940
+ content: $(() => [
941
+ m(l, {
942
+ ref: "form",
943
+ class: "flex flex-col gap-2 w-[490px]"
944
+ }, {
945
+ default: $(() => {
946
+ var P, q, G, oe;
947
+ return [
948
+ m(K, {
949
+ "model-value": f.value,
950
+ items: b.value,
951
+ placeholder: n.value,
952
+ label: n.value,
953
+ "onUpdate:modelValue": r[0] || (r[0] = (S) => N(S))
954
+ }, null, 8, ["model-value", "items", "placeholder", "label"]),
955
+ t.value ? (h(), I(Z, { key: 0 }, [
956
+ (((P = f.value) == null ? void 0 : P.dimensionOptions) || []).length > 0 ? (h(), T(K, {
957
+ key: 0,
958
+ modelValue: t.value.dimensionOption,
959
+ "onUpdate:modelValue": r[1] || (r[1] = (S) => t.value.dimensionOption = S),
960
+ items: ((q = f.value) == null ? void 0 : q.dimensionOptions.map((S) => ({ label: S, value: S }))) ?? [],
961
+ placeholder: e(c)("report.section.sort.format"),
962
+ label: e(c)("report.section.sort.format")
963
+ }, null, 8, ["modelValue", "items", "placeholder", "label"])) : U("", !0),
964
+ (((G = f.value) == null ? void 0 : G.aggregations) || []).length > 0 ? (h(), T(K, {
965
+ key: 1,
966
+ modelValue: t.value.aggregation,
967
+ "onUpdate:modelValue": r[2] || (r[2] = (S) => t.value.aggregation = S),
968
+ items: ((oe = f.value) == null ? void 0 : oe.aggregations.map((S) => ({ label: S, value: S }))) ?? [],
969
+ label: e(c)("report.section.sort.aggregation"),
970
+ placeholder: e(c)("report.section.sort.aggregation")
971
+ }, null, 8, ["modelValue", "items", "label", "placeholder"])) : U("", !0),
972
+ m(K, {
973
+ modelValue: t.value.type,
974
+ "onUpdate:modelValue": r[3] || (r[3] = (S) => t.value.type = S),
975
+ items: Object.values(e(Te)).map((S) => ({ label: S, value: S })),
976
+ placeholder: e(c)("report.section.sort.order"),
977
+ label: e(c)("report.section.sort.order")
978
+ }, null, 8, ["modelValue", "items", "placeholder", "label"]),
979
+ m(v, {
980
+ modelValue: i.value,
981
+ "onUpdate:modelValue": r[4] || (r[4] = (S) => i.value = S),
982
+ label: e(c)("report.section.sort.advance"),
983
+ value: !0
984
+ }, null, 8, ["modelValue", "label"]),
985
+ i.value ? (h(), T(a, {
986
+ key: 2,
987
+ modelValue: t.value.dataFormula,
988
+ "onUpdate:modelValue": r[5] || (r[5] = (S) => t.value.dataFormula = S),
989
+ placeholder: e(c)("report.section.sort.dataFormula")
990
+ }, null, 8, ["modelValue", "placeholder"])) : U("", !0)
991
+ ], 64)) : U("", !0)
992
+ ];
993
+ }),
994
+ _: 1
995
+ }, 512)
996
+ ]),
997
+ _: 1
998
+ }, 8, ["modelValue", "title"]),
999
+ C("div", null, [
1000
+ C("p", kl, L(n.value), 1),
1001
+ C("p", _l, L(e(c)("report.section.sort.description")), 1)
1002
+ ]),
1003
+ m(M, null, {
1004
+ default: $(() => [
1005
+ m(e(_e), {
1006
+ list: o.value,
1007
+ "item-key": "id",
1008
+ class: "flex flex-col gap-2 w-full"
1009
+ }, {
1010
+ item: $(({ element: P, index: q }) => [
1011
+ m(V, {
1012
+ class: "!cursor-grab border rounded-md border-neutral-300 h-[40px] !p-[8px]",
1013
+ onClick: te((G) => p(d.value[q]), ["stop"])
1014
+ }, {
1015
+ default: $(() => [
1016
+ m(s, { name: "drag_handle" }),
1017
+ C("p", Sl, L(e(je)(P.name)), 1),
1018
+ r[8] || (r[8] = C("div", { class: "grow" }, null, -1)),
1019
+ m(F, {
1020
+ icon: "close",
1021
+ size: "md",
1022
+ variant: "tertiary",
1023
+ onClick: te((G) => O(q), ["stop"])
1024
+ }, null, 8, ["onClick"])
1025
+ ]),
1026
+ _: 2
1027
+ }, 1032, ["onClick"])
1028
+ ]),
1029
+ _: 1
1030
+ }, 8, ["list"])
1031
+ ]),
1032
+ _: 1
1033
+ }),
1034
+ m(z, {
1035
+ class: "text-fm-color-typo-tertiary",
1036
+ onClick: r[7] || (r[7] = () => {
1037
+ p();
1038
+ })
1039
+ }, {
1040
+ default: $(() => [
1041
+ me(L(e(c)("report.section.sort.add")), 1)
1042
+ ]),
1043
+ _: 1
1044
+ })
1045
+ ]);
1046
+ };
1047
+ }
1048
+ }), Ul = { class: "fm-typo-en-body-lg-600" }, Dl = { class: "fm-typo-en-body-sm-600 text-fm-color-neutral-gray-400" }, $l = /* @__PURE__ */ A({
1049
+ __name: "LimitSection",
1050
+ props: {
1051
+ modelValue: { required: !0, default: null },
1052
+ modelModifiers: {}
1053
+ },
1054
+ emits: ["update:modelValue"],
1055
+ setup(w) {
1056
+ const { t: c } = Y(), o = ee(w, "modelValue"), u = be((n) => {
1057
+ n !== "" ? o.value = n : o.value = null;
1058
+ }, 1e3);
1059
+ return (n, g) => {
1060
+ const d = x("FmTextField");
1061
+ return h(), I(Z, null, [
1062
+ C("div", null, [
1063
+ C("p", Ul, L(e(c)("report.section.limit.title")), 1),
1064
+ C("p", Dl, L(e(c)("report.section.limit.description")), 1)
1065
+ ]),
1066
+ m(d, {
1067
+ "model-value": o.value,
1068
+ inputmode: "numeric",
1069
+ placeholder: e(c)("report.section.limit.placeholder"),
1070
+ "onUpdate:modelValue": g[0] || (g[0] = (k) => e(u)(k))
1071
+ }, null, 8, ["model-value", "placeholder"])
1072
+ ], 64);
1073
+ };
1074
+ }
1075
+ }), Nl = { class: "flex flex-col my-2 gap-8" }, Ol = { class: "fm-typo-en-body-lg-600" }, Il = { class: "fm-typo-en-body-sm-600 text-fm-color-neutral-gray-400" }, Bl = { class: "fm-typo-en-body-lg-400 text-ellipsis overflow-hidden line-clamp-1" }, Ll = /* @__PURE__ */ A({
1076
+ __name: "ConditionSection",
1077
+ props: /* @__PURE__ */ J({
1078
+ joinFieldOptions: {
1079
+ type: Array,
1080
+ default: () => []
1081
+ },
1082
+ mainFieldOptions: {
1083
+ type: Array,
1084
+ default: () => []
1085
+ }
1086
+ }, {
1087
+ modelValue: { required: !0 },
1088
+ modelModifiers: {}
1089
+ }),
1090
+ emits: ["update:modelValue"],
1091
+ setup(w) {
1092
+ const { t: c } = Y(), o = ee(w, "modelValue"), u = w, n = W(!1), g = _(
1093
+ () => o.value.map((r, v) => {
1094
+ var a, l;
1095
+ return {
1096
+ index: v,
1097
+ labels: [(a = r.joinDimension) == null ? void 0 : a.schemaName, (l = r.joinDimension) == null ? void 0 : l.name],
1098
+ value: r
1099
+ };
1100
+ })
1101
+ ), d = W(o.value.length > 0 ? 0 : void 0);
1102
+ function k(r) {
1103
+ r ? (p.value = r != null && r.value ? JSON.parse(JSON.stringify(r.value)) : void 0, d.value = r == null ? void 0 : r.index) : (p.value = {
1104
+ joinDimension: null,
1105
+ operator: "",
1106
+ mainDimensions: []
1107
+ }, d.value = void 0), n.value = !0;
1108
+ }
1109
+ const p = W(void 0), t = _(
1110
+ () => u.joinFieldOptions.find(
1111
+ (r) => {
1112
+ var v, a;
1113
+ return r.schemaName === ((a = (v = p.value) == null ? void 0 : v.joinDimension) == null ? void 0 : a.schemaName) && r.name === p.value.joinDimension.name;
1114
+ }
1115
+ ) ?? {}
1116
+ ), i = _(
1117
+ () => {
1118
+ var r;
1119
+ return (((r = p.value) == null ? void 0 : r.mainDimensions) || []).map(
1120
+ (v) => u.mainFieldOptions.find(
1121
+ (a) => a.schemaName === (v == null ? void 0 : v.schemaName) && a.name === v.name
1122
+ ) ?? {}
1123
+ );
1124
+ }
1125
+ ), f = _(
1126
+ () => u.joinFieldOptions.map((r) => ({ label: r.labels.join(" "), value: r }))
1127
+ );
1128
+ function N(r) {
1129
+ var v, a, l, s;
1130
+ p.value && (p.value && r.schemaName !== ((a = (v = p.value) == null ? void 0 : v.joinDimension) == null ? void 0 : a.schemaName) || r.name !== ((s = (l = p.value) == null ? void 0 : l.joinDimension) == null ? void 0 : s.name)) && (p.value = {
1131
+ ...p.value,
1132
+ joinDimension: {
1133
+ schemaName: r.schemaName,
1134
+ name: r.name,
1135
+ option: r.dimensionOptions[0],
1136
+ label: `_${r.label}`,
1137
+ hide: !0
1138
+ }
1139
+ }, r.joinConditionOperators.includes(p.value.operator) || O(r.joinConditionOperators[0]));
1140
+ }
1141
+ function D(r, v) {
1142
+ var a, l, s, F;
1143
+ if (p.value && v >= 0 && (p.value && r.schemaName !== ((l = (a = p.value) == null ? void 0 : a.mainDimensions[v]) == null ? void 0 : l.schemaName) || r.name !== ((F = (s = p.value) == null ? void 0 : s.mainDimensions[v]) == null ? void 0 : F.name))) {
1144
+ const V = [...p.value.mainDimensions];
1145
+ V[v] = {
1146
+ schemaName: r.schemaName,
1147
+ name: r.name,
1148
+ option: r.dimensionOptions[0],
1149
+ label: r.label,
1150
+ hide: !0
1151
+ }, p.value = {
1152
+ ...p.value,
1153
+ mainDimensions: V
1154
+ };
1155
+ }
1156
+ }
1157
+ function O(r) {
1158
+ if (p.value)
1159
+ switch (r) {
1160
+ case ol.Between:
1161
+ p.value = {
1162
+ ...p.value,
1163
+ operator: r,
1164
+ mainDimensions: [null, null]
1165
+ };
1166
+ break;
1167
+ default:
1168
+ p.value = {
1169
+ ...p.value,
1170
+ operator: r,
1171
+ mainDimensions: [null]
1172
+ };
1173
+ break;
1174
+ }
1175
+ }
1176
+ function b() {
1177
+ const r = [...g.value.map((v) => v.value)];
1178
+ p.value && (p.value.mainDimensions = p.value.mainDimensions.filter(
1179
+ (v) => v !== "" && v != null
1180
+ ), d.value !== void 0 ? r[d.value] = p.value : r.push(p.value)), o.value = r, n.value = !1;
1181
+ }
1182
+ function y(r) {
1183
+ const v = [...g.value.map((a) => a.value)];
1184
+ v.splice(r, 1), o.value = v;
1185
+ }
1186
+ return (r, v) => {
1187
+ const a = x("FmMenuDivider"), l = x("FmForm"), s = x("FmButton"), F = x("FmListItem"), V = x("FmList"), M = x("FmField");
1188
+ return h(), I("div", Nl, [
1189
+ m(pe, {
1190
+ modelValue: n.value,
1191
+ "onUpdate:modelValue": v[2] || (v[2] = (z) => n.value = z),
1192
+ title: e(c)("report.section.condition.condition"),
1193
+ onConfirm: b
1194
+ }, {
1195
+ content: $(() => [
1196
+ m(l, {
1197
+ ref: "form",
1198
+ class: "flex flex-col gap-2 w-[490px]"
1199
+ }, {
1200
+ default: $(() => {
1201
+ var z, P, q, G, oe;
1202
+ return [
1203
+ m(K, {
1204
+ label: e(c)("report.section.condition.joinDatasource"),
1205
+ "model-value": t.value,
1206
+ items: f.value,
1207
+ placeholder: e(c)("report.section.condition.joinDimension"),
1208
+ "onUpdate:modelValue": v[0] || (v[0] = (S) => N(S))
1209
+ }, null, 8, ["label", "model-value", "items", "placeholder"]),
1210
+ m(a),
1211
+ (z = p.value) != null && z.joinDimension && (((P = t.value) == null ? void 0 : P.dimensionOptions) || []).length > 0 ? (h(), T(K, {
1212
+ key: 0,
1213
+ modelValue: p.value.joinDimension.option,
1214
+ "onUpdate:modelValue": v[1] || (v[1] = (S) => p.value.joinDimension.option = S),
1215
+ label: e(c)("report.section.condition.format"),
1216
+ items: ((q = t.value) == null ? void 0 : q.dimensionOptions.map((S) => ({
1217
+ label: S,
1218
+ value: S
1219
+ }))) ?? []
1220
+ }, null, 8, ["modelValue", "label", "items"])) : U("", !0),
1221
+ p.value && (((G = t.value) == null ? void 0 : G.joinConditionOperators) || []).length > 0 ? (h(), T(K, {
1222
+ key: 1,
1223
+ "model-value": p.value.operator,
1224
+ label: e(c)("report.section.condition.operator"),
1225
+ items: t.value.joinConditionOperators.map((S) => ({
1226
+ label: S,
1227
+ value: S
1228
+ })) ?? [],
1229
+ "onUpdate:modelValue": O
1230
+ }, null, 8, ["model-value", "label", "items"])) : U("", !0),
1231
+ (h(!0), I(Z, null, de(((oe = p.value) == null ? void 0 : oe.mainDimensions) || [], (S, X) => {
1232
+ var H, le;
1233
+ return h(), I("div", {
1234
+ key: X,
1235
+ class: "flex flex-col gap-2"
1236
+ }, [
1237
+ m(K, {
1238
+ "model-value": i.value[X],
1239
+ label: e(c)("report.section.condition.mainDatasource", { index: X + 1 }),
1240
+ items: u.mainFieldOptions.map((E) => ({
1241
+ label: E.labels.join(" "),
1242
+ value: E
1243
+ })),
1244
+ "onUpdate:modelValue": (E) => D(E, X)
1245
+ }, null, 8, ["model-value", "label", "items", "onUpdate:modelValue"]),
1246
+ S && (((H = i.value[X]) == null ? void 0 : H.dimensionOptions) || []).length > 0 && S ? (h(), T(K, {
1247
+ key: 0,
1248
+ modelValue: S.option,
1249
+ "onUpdate:modelValue": (E) => S.option = E,
1250
+ items: (le = i.value[X]) == null ? void 0 : le.dimensionOptions.map((E) => ({
1251
+ label: E,
1252
+ value: E
1253
+ }))
1254
+ }, null, 8, ["modelValue", "onUpdate:modelValue", "items"])) : U("", !0),
1255
+ m(a)
1256
+ ]);
1257
+ }), 128))
1258
+ ];
1259
+ }),
1260
+ _: 1
1261
+ }, 512)
1262
+ ]),
1263
+ _: 1
1264
+ }, 8, ["modelValue", "title"]),
1265
+ C("div", null, [
1266
+ C("p", Ol, L(e(c)("report.section.condition.condition")), 1),
1267
+ C("p", Il, L(e(c)("report.section.condition.description")), 1)
1268
+ ]),
1269
+ m(V, { class: "flex flex-col gap-2" }, {
1270
+ default: $(() => [
1271
+ (h(!0), I(Z, null, de(o.value, (z, P) => (h(), T(F, {
1272
+ key: P,
1273
+ class: "!cursor-grab border rounded-md border-neutral-300 h-[40px] !p-[8px]",
1274
+ onClick: (q) => k(g.value[P])
1275
+ }, {
1276
+ default: $(() => {
1277
+ var q, G;
1278
+ return [
1279
+ C("p", Bl, L(e(al)(((q = z.joinDimension) == null ? void 0 : q.schemaName) ?? "")) + " " + L((G = z.joinDimension) == null ? void 0 : G.label), 1),
1280
+ v[4] || (v[4] = C("div", { class: "grow" }, null, -1)),
1281
+ m(s, {
1282
+ icon: "close",
1283
+ size: "md",
1284
+ variant: "tertiary",
1285
+ onClick: te((oe) => y(P), ["stop"])
1286
+ }, null, 8, ["onClick"])
1287
+ ];
1288
+ }),
1289
+ _: 2
1290
+ }, 1032, ["onClick"]))), 128))
1291
+ ]),
1292
+ _: 1
1293
+ }),
1294
+ m(M, {
1295
+ class: "text-fm-color-typo-tertiary cursor-pointer",
1296
+ onClick: v[3] || (v[3] = (z) => k())
1297
+ }, {
1298
+ default: $(() => [
1299
+ me(L(e(c)("report.section.condition.add")), 1)
1300
+ ]),
1301
+ _: 1
1302
+ })
1303
+ ]);
1304
+ };
1305
+ }
1306
+ }), jl = /* @__PURE__ */ A({
1307
+ __name: "TableResizeSection",
1308
+ props: {
1309
+ model: {}
1310
+ },
1311
+ setup(w) {
1312
+ const { t: c, te: o } = Y(), u = w, { isEditing: n, colWidths: g, rowHeight: d } = ue(ge()), { enableCellResizing: k, cancelResizingChanges: p } = ge();
1313
+ return ke(() => {
1314
+ u.model.rowHeight !== void 0 && (d.value = u.model.rowHeight), u.model.colWidths && (g.value = [...u.model.colWidths]);
1315
+ }), (t, i) => {
1316
+ const f = x("FmButton");
1317
+ return h(), I(Z, null, [
1318
+ m(f, {
1319
+ label: e(c)("report.section.datasource.resizeTable"),
1320
+ onClick: e(k)
1321
+ }, null, 8, ["label", "onClick"]),
1322
+ e(n) ? (h(), T(f, {
1323
+ key: 0,
1324
+ label: e(c)("report.common.cancel"),
1325
+ onClick: e(p)
1326
+ }, null, 8, ["label", "onClick"])) : U("", !0)
1327
+ ], 64);
1328
+ };
1329
+ }
1330
+ }), De = /* @__PURE__ */ A({
1331
+ __name: "Datasource",
1332
+ props: /* @__PURE__ */ J({
1333
+ label: {
1334
+ type: String,
1335
+ default: "Label"
1336
+ },
1337
+ config: {
1338
+ type: Object,
1339
+ default: null
1340
+ },
1341
+ closeable: {
1342
+ type: Boolean,
1343
+ default: !1
1344
+ },
1345
+ mainDatasourceConfig: {
1346
+ type: Object,
1347
+ default: () => {
1348
+ }
1349
+ },
1350
+ modelValue: {
1351
+ type: Object,
1352
+ default: () => {
1353
+ }
1354
+ }
1355
+ }, {
1356
+ modelValue: { required: !0 },
1357
+ modelModifiers: {}
1358
+ }),
1359
+ emits: /* @__PURE__ */ J(["click-close"], ["update:modelValue"]),
1360
+ setup(w, { emit: c }) {
1361
+ const { disableEditMode: o, resetStore: u } = ge(), n = ee(w, "modelValue");
1362
+ se(
1363
+ [() => n.value.dimensions, () => n.value.metrics],
1364
+ () => {
1365
+ const { rowIds: v, columnIds: a } = ye(n.value);
1366
+ n.value.rowIds = v, n.value.columnIds = a;
1367
+ },
1368
+ { deep: !0 }
1369
+ );
1370
+ const g = w, d = c, { schemas: k } = ue(Be());
1371
+ Xe(() => {
1372
+ o(), u();
1373
+ });
1374
+ const { t: p, te: t } = Y(), i = _(() => !g.mainDatasourceConfig), f = _(
1375
+ () => [B.BarChart, B.LineChart, B.Scorecard].includes(g.config.type)
1376
+ ), N = _(() => {
1377
+ const v = [...n.value.dimensions].filter((a) => !a.hide);
1378
+ return v.sort(
1379
+ (a, l) => (n.value.rowIds || []).indexOf(fe(a)) - (n.value.rowIds || []).indexOf(fe(l))
1380
+ ), v;
1381
+ }), D = _(() => g.config.type === B.Scorecard), O = _(
1382
+ () => {
1383
+ var v;
1384
+ return (((v = g.mainDatasourceConfig) == null ? void 0 : v.schemaNames) || []).reduce(
1385
+ (a, l) => {
1386
+ const s = k.value.find((F) => F.name === l);
1387
+ return s && (a = [
1388
+ ...a,
1389
+ ...s.fields.map((F) => ({
1390
+ ...F,
1391
+ labels: [
1392
+ Q(p, t, s.label, "schema"),
1393
+ Q(p, t, F.label || F.name, "other")
1394
+ ]
1395
+ }))
1396
+ ]), a;
1397
+ },
1398
+ []
1399
+ );
1400
+ }
1401
+ ), b = _(
1402
+ () => n.value.schemaNames.reduce((v, a) => {
1403
+ const l = k.value.find((s) => s.name === a);
1404
+ return l && (v = [
1405
+ ...v,
1406
+ ...l.fields.map((s) => ({
1407
+ ...s,
1408
+ labels: [
1409
+ Q(p, t, l.label, "schema"),
1410
+ Q(p, t, s.label || s.name, "other")
1411
+ ]
1412
+ }))
1413
+ ]), v;
1414
+ }, [])
1415
+ ), y = _(() => [
1416
+ { label: p("report.section.datasource.none"), value: null },
1417
+ { label: p("report.section.datasource.grandTotal"), value: 0 },
1418
+ ...[...N.value].slice(0, N.value.length - 1).map((v, a) => ({
1419
+ label: Q(p, t, v.label, "other"),
1420
+ value: a + 1
1421
+ }))
1422
+ ]), r = [
1423
+ {
1424
+ label: "None",
1425
+ value: null
1426
+ },
1427
+ ...Object.keys(Ue).map((v) => ({
1428
+ label: v,
1429
+ value: Ue[v]
1430
+ }))
1431
+ ];
1432
+ return (v, a) => {
1433
+ const l = x("FmButton"), s = x("FmSwitch"), F = x("FmSelect");
1434
+ return h(), T(we, null, {
1435
+ header: $(() => [
1436
+ C("p", null, L(g.label), 1),
1437
+ a[20] || (a[20] = C("div", { class: "grow" }, null, -1)),
1438
+ g.closeable ? (h(), T(l, {
1439
+ key: 0,
1440
+ icon: "close",
1441
+ variant: "tertiary",
1442
+ size: "md",
1443
+ onClick: a[0] || (a[0] = te((V) => d("click-close"), ["stop"]))
1444
+ })) : U("", !0)
1445
+ ]),
1446
+ content: $(() => [
1447
+ m(pl, {
1448
+ modelValue: n.value,
1449
+ "onUpdate:modelValue": a[1] || (a[1] = (V) => n.value = V),
1450
+ label: e(p)("report.section.schema.title")
1451
+ }, null, 8, ["modelValue", "label"]),
1452
+ m(Fe, {
1453
+ modelValue: n.value.dimensions,
1454
+ "onUpdate:modelValue": a[2] || (a[2] = (V) => n.value.dimensions = V),
1455
+ options: b.value,
1456
+ config: n.value,
1457
+ max: g.config.maxDimension,
1458
+ "has-row-column": !0,
1459
+ onConfig: a[3] || (a[3] = (V) => {
1460
+ n.value = V;
1461
+ })
1462
+ }, null, 8, ["modelValue", "options", "config", "max"]),
1463
+ m(s, {
1464
+ "label-placement": "right",
1465
+ label: e(p)("report.section.datasource.comparable"),
1466
+ "model-value": n.value.isComparable ?? !1,
1467
+ "onUpdate:modelValue": a[4] || (a[4] = (V) => {
1468
+ n.value.isComparable = V;
1469
+ })
1470
+ }, null, 8, ["label", "model-value"]),
1471
+ f.value ? (h(), T(s, {
1472
+ key: 0,
1473
+ "label-placement": "right",
1474
+ label: e(p)("report.section.datasource.cumulative"),
1475
+ "model-value": n.value.isCumulative ?? !1,
1476
+ "onUpdate:modelValue": a[5] || (a[5] = (V) => {
1477
+ n.value.isCumulative = V;
1478
+ })
1479
+ }, null, 8, ["label", "model-value"])) : U("", !0),
1480
+ g.config.isDrillConfigurable && i.value ? (h(), T(s, {
1481
+ key: 1,
1482
+ label: e(p)("report.section.datasource.drill"),
1483
+ "label-placement": "right",
1484
+ "model-value": n.value.isDrillable ?? !1,
1485
+ "onUpdate:modelValue": a[6] || (a[6] = (V) => {
1486
+ n.value.isDrillable = V;
1487
+ })
1488
+ }, null, 8, ["label", "model-value"])) : U("", !0),
1489
+ i.value ? (h(), T(s, {
1490
+ key: 2,
1491
+ modelValue: n.value.isBlend,
1492
+ "onUpdate:modelValue": a[7] || (a[7] = (V) => n.value.isBlend = V),
1493
+ label: e(p)("report.section.datasource.blend"),
1494
+ "label-placement": "right"
1495
+ }, null, 8, ["modelValue", "label"])) : U("", !0),
1496
+ g.config.canRollup && i.value ? (h(), T(F, {
1497
+ key: 3,
1498
+ modelValue: n.value.rollup,
1499
+ "onUpdate:modelValue": a[8] || (a[8] = (V) => n.value.rollup = V),
1500
+ label: e(p)("report.section.datasource.subTotal"),
1501
+ items: y.value
1502
+ }, null, 8, ["modelValue", "label", "items"])) : U("", !0),
1503
+ i.value ? U("", !0) : (h(), T(F, {
1504
+ key: 4,
1505
+ modelValue: n.value.periodType,
1506
+ "onUpdate:modelValue": a[9] || (a[9] = (V) => n.value.periodType = V),
1507
+ label: e(p)("report.section.datasource.periodType"),
1508
+ items: r
1509
+ }, null, 8, ["modelValue", "label"])),
1510
+ g.config.canTranspose && i.value ? (h(), T(s, {
1511
+ key: 5,
1512
+ modelValue: n.value.isTransposed,
1513
+ "onUpdate:modelValue": a[10] || (a[10] = (V) => n.value.isTransposed = V),
1514
+ label: e(p)("report.section.datasource.transpose"),
1515
+ "label-placement": "right"
1516
+ }, null, 8, ["modelValue", "label"])) : U("", !0),
1517
+ g.config.hasTable ? (h(), T(jl, {
1518
+ key: 6,
1519
+ model: n.value,
1520
+ "onUpdate:model": a[11] || (a[11] = (V) => n.value = V)
1521
+ }, null, 8, ["model"])) : U("", !0),
1522
+ g.config.hasBreakdownDimension ? (h(), T(Fe, {
1523
+ key: 7,
1524
+ "model-value": n.value.breakdownDimension ? [n.value.breakdownDimension] : [],
1525
+ label: e(p)("report.section.dimension.breakdownDimension"),
1526
+ max: 1,
1527
+ options: b.value,
1528
+ "onUpdate:modelValue": a[12] || (a[12] = (V) => {
1529
+ n.value.breakdownDimension = V[0];
1530
+ })
1531
+ }, null, 8, ["model-value", "label", "options"])) : U("", !0),
1532
+ D.value ? (h(), T(Fe, {
1533
+ key: 8,
1534
+ "model-value": n.value.sparklineDimension ? [n.value.sparklineDimension] : [],
1535
+ label: e(p)("report.section.dimension.sparklineDimension"),
1536
+ max: 1,
1537
+ options: b.value,
1538
+ "onUpdate:modelValue": a[13] || (a[13] = (V) => {
1539
+ n.value.sparklineDimension = V[0];
1540
+ })
1541
+ }, null, 8, ["model-value", "label", "options"])) : U("", !0),
1542
+ m(xl, {
1543
+ modelValue: n.value.metrics,
1544
+ "onUpdate:modelValue": a[14] || (a[14] = (V) => n.value.metrics = V),
1545
+ options: b.value,
1546
+ max: g.config.maxMetric,
1547
+ config: n.value,
1548
+ "has-row-column": g.config.type === e(B).Table,
1549
+ onConfig: a[15] || (a[15] = (V) => {
1550
+ n.value = V;
1551
+ })
1552
+ }, null, 8, ["modelValue", "options", "max", "config", "has-row-column"]),
1553
+ m(Ge, {
1554
+ modelValue: n.value.filters,
1555
+ "onUpdate:modelValue": a[16] || (a[16] = (V) => n.value.filters = V),
1556
+ options: b.value
1557
+ }, null, 8, ["modelValue", "options"]),
1558
+ m(Tl, {
1559
+ modelValue: n.value.sorts,
1560
+ "onUpdate:modelValue": a[17] || (a[17] = (V) => n.value.sorts = V),
1561
+ options: b.value
1562
+ }, null, 8, ["modelValue", "options"]),
1563
+ m($l, {
1564
+ modelValue: n.value.limit,
1565
+ "onUpdate:modelValue": a[18] || (a[18] = (V) => n.value.limit = V)
1566
+ }, null, 8, ["modelValue"]),
1567
+ n.value.conditions ? (h(), T(Ll, {
1568
+ key: 9,
1569
+ modelValue: n.value.conditions,
1570
+ "onUpdate:modelValue": a[19] || (a[19] = (V) => n.value.conditions = V),
1571
+ "join-field-options": b.value,
1572
+ "main-field-options": O.value
1573
+ }, null, 8, ["modelValue", "join-field-options", "main-field-options"])) : U("", !0)
1574
+ ]),
1575
+ _: 1
1576
+ });
1577
+ };
1578
+ }
1579
+ }), Rl = { class: "fm-typo-en-title-sm-600" }, Ce = /* @__PURE__ */ A({
1580
+ __name: "TileEditorTabHeader",
1581
+ props: /* @__PURE__ */ J({
1582
+ icon: {
1583
+ type: String,
1584
+ required: !0
1585
+ }
1586
+ }, {
1587
+ modelValue: { type: Boolean, required: !0, default: !1 },
1588
+ modelModifiers: {}
1589
+ }),
1590
+ emits: ["update:modelValue"],
1591
+ setup(w) {
1592
+ const { t: c } = Y(), o = ee(w, "modelValue"), u = w;
1593
+ return (n, g) => {
1594
+ const d = x("FmIcon");
1595
+ return h(), I("div", {
1596
+ class: "px-6 py-16 flex items-center gap-2 bg-fm-color-neutral-white border cursor-pointer",
1597
+ onClick: g[0] || (g[0] = (k) => o.value = !o.value)
1598
+ }, [
1599
+ C("p", Rl, L(e(c)("report.tile.setting")), 1),
1600
+ g[1] || (g[1] = C("div", { class: "grow" }, null, -1)),
1601
+ m(d, {
1602
+ name: u.icon
1603
+ }, null, 8, ["name"])
1604
+ ]);
1605
+ };
1606
+ }
1607
+ }), Ml = /* @__PURE__ */ A({
1608
+ __name: "TileEditorTabDesktop",
1609
+ props: {
1610
+ modelValue: { required: !0, default: !1 },
1611
+ modelModifiers: {}
1612
+ },
1613
+ emits: ["update:modelValue"],
1614
+ setup(w) {
1615
+ const c = ee(w, "modelValue");
1616
+ return (o, u) => (h(), I(Z, null, [
1617
+ m(Ce, {
1618
+ modelValue: c.value,
1619
+ "onUpdate:modelValue": u[0] || (u[0] = (n) => c.value = n),
1620
+ icon: "keyboard_double_arrow_left"
1621
+ }, null, 8, ["modelValue"]),
1622
+ Ne(o.$slots, "default")
1623
+ ], 64));
1624
+ }
1625
+ }), zl = { class: "fixed bottom-0 w-full" }, Pl = /* @__PURE__ */ A({
1626
+ __name: "TileEditorTabMobile",
1627
+ props: {
1628
+ modelValue: { required: !0, default: !1 },
1629
+ modelModifiers: {}
1630
+ },
1631
+ emits: ["update:modelValue"],
1632
+ setup(w) {
1633
+ const c = ee(w, "modelValue");
1634
+ return (o, u) => {
1635
+ const n = x("FmTopSheet");
1636
+ return h(), I("div", zl, [
1637
+ m(Ce, {
1638
+ modelValue: c.value,
1639
+ "onUpdate:modelValue": u[0] || (u[0] = (g) => c.value = g),
1640
+ icon: "keyboard_double_arrow_up"
1641
+ }, null, 8, ["modelValue"]),
1642
+ m(n, {
1643
+ modelValue: c.value,
1644
+ "onUpdate:modelValue": u[2] || (u[2] = (g) => c.value = g),
1645
+ "fullscreen-size": "sm"
1646
+ }, {
1647
+ default: $(() => [
1648
+ m(Ce, {
1649
+ modelValue: c.value,
1650
+ "onUpdate:modelValue": u[1] || (u[1] = (g) => c.value = g),
1651
+ icon: "keyboard_double_arrow_down"
1652
+ }, null, 8, ["modelValue"]),
1653
+ c.value ? Ne(o.$slots, "default", { key: 0 }) : U("", !0)
1654
+ ]),
1655
+ _: 3
1656
+ }, 8, ["modelValue"])
1657
+ ]);
1658
+ };
1659
+ }
1660
+ }), Al = { class: "flex gap-16" }, Xl = { class: "flex flex-col gap-8 max-w-[120px]" }, Wl = { class: "fm-typo-en-body-lg-600" }, ql = { class: "flex flex-col gap-16" }, Hl = { class: "flex flex-row gap-8" }, Yl = /* @__PURE__ */ A({
1661
+ __name: "TitleSection",
1662
+ props: {
1663
+ model: {}
1664
+ },
1665
+ emits: ["update:model"],
1666
+ setup(w, { emit: c }) {
1667
+ const o = w, u = c, { t: n } = Y(), g = _({
1668
+ get: () => o.model.showTitle ?? !1,
1669
+ set: (i) => u("update:model", { ...o.model, showTitle: i })
1670
+ }), d = _({
1671
+ get: () => o.model.titleFontSize ?? 14,
1672
+ set: (i) => u("update:model", { ...o.model, titleFontSize: Math.min(Number(i), 24) })
1673
+ }), k = _({
1674
+ get: () => o.model.titleBold ?? !1,
1675
+ set: (i) => u("update:model", { ...o.model, titleBold: i })
1676
+ }), p = _({
1677
+ get: () => o.model.titleItalic ?? !1,
1678
+ set: (i) => u("update:model", { ...o.model, titleItalic: i })
1679
+ }), t = _({
1680
+ get: () => o.model.titleUnderline ?? !1,
1681
+ set: (i) => u("update:model", { ...o.model, titleUnderline: i })
1682
+ });
1683
+ return (i, f) => {
1684
+ const N = x("FmStepperField"), D = x("FmButton"), O = x("FmSwitch");
1685
+ return h(), I(Z, null, [
1686
+ C("div", null, [
1687
+ C("div", Al, [
1688
+ C("div", Xl, [
1689
+ C("p", Wl, L(e(n)("report.section.datasource.title.titleFontSize")), 1),
1690
+ m(N, {
1691
+ modelValue: d.value,
1692
+ "onUpdate:modelValue": f[0] || (f[0] = (b) => d.value = b),
1693
+ max: 24,
1694
+ min: 1,
1695
+ type: "number"
1696
+ }, null, 8, ["modelValue"])
1697
+ ]),
1698
+ C("div", ql, [
1699
+ f[5] || (f[5] = C("p", { class: "fm-typo-en-body-lg-600" }, "Text style and format", -1)),
1700
+ C("div", Hl, [
1701
+ m(D, {
1702
+ "append-icon": "format_bold",
1703
+ "model-value": i.model.titleBold ?? !1,
1704
+ variant: "tertiary",
1705
+ "icon-color": i.model.titleBold ? "neutral-gray-400" : "neutral-gray-300",
1706
+ "bg-color": i.model.titleBold ? "neutral-gray-100" : "neutral-white",
1707
+ class: "rounded-sm",
1708
+ onClick: f[1] || (f[1] = (b) => k.value = !k.value)
1709
+ }, null, 8, ["model-value", "icon-color", "bg-color"]),
1710
+ m(D, {
1711
+ "append-icon": "format_italic",
1712
+ "model-value": i.model.titleItalic ?? !1,
1713
+ "icon-color": i.model.titleItalic ? "neutral-gray-400" : "neutral-gray-300",
1714
+ "bg-color": i.model.titleItalic ? "neutral-gray-100" : "neutral-white",
1715
+ class: "rounded-sm",
1716
+ onClick: f[2] || (f[2] = (b) => p.value = !p.value)
1717
+ }, null, 8, ["model-value", "icon-color", "bg-color"]),
1718
+ m(D, {
1719
+ "append-icon": "format_underlined",
1720
+ "model-value": i.model.titleUnderline ?? !1,
1721
+ "icon-color": i.model.titleUnderline ? "neutral-gray-400" : "neutral-gray-300",
1722
+ "bg-color": i.model.titleUnderline ? "neutral-gray-100" : "neutral-white",
1723
+ class: "rounded-sm",
1724
+ onClick: f[3] || (f[3] = (b) => t.value = !t.value)
1725
+ }, null, 8, ["model-value", "icon-color", "bg-color"])
1726
+ ])
1727
+ ])
1728
+ ])
1729
+ ]),
1730
+ m(O, {
1731
+ modelValue: g.value,
1732
+ "onUpdate:modelValue": f[4] || (f[4] = (b) => g.value = b),
1733
+ label: e(n)("report.section.datasource.title.showTitle"),
1734
+ "label-placement": "right"
1735
+ }, null, 8, ["modelValue", "label"])
1736
+ ], 64);
1737
+ };
1738
+ }
1739
+ }), El = { class: "flex gap-16 justify-center items-center" }, Jl = { class: "fm-typo-en-title-sm-600" }, Gl = { class: "fm-typo-en-body-lg-600" }, Kl = { class: "fm-typo-en-body-md-400 text-fm-color-typo-tertiary" }, Ql = { class: "h-[40x]" }, $e = "YYYY-MM-DD", Ae = /* @__PURE__ */ A({
1740
+ __name: "TileEditorTab",
1741
+ props: /* @__PURE__ */ J({
1742
+ hideConfiguration: {
1743
+ type: Boolean,
1744
+ default: !1
1745
+ }
1746
+ }, {
1747
+ modelValue: {
1748
+ required: !0
1749
+ },
1750
+ modelModifiers: {}
1751
+ }),
1752
+ emits: /* @__PURE__ */ J(["hideConfiguration"], ["update:modelValue"]),
1753
+ setup(w, { emit: c }) {
1754
+ var a, l;
1755
+ const o = Re(), { dateRange: u } = ue(o), n = {
1756
+ startDate: u.value.startDate,
1757
+ endDate: u.value.endDate
1758
+ }, g = W({
1759
+ startDate: (a = ce(u.value.startDate)) == null ? void 0 : a.local().format($e),
1760
+ endDate: (l = ce(u.value.endDate)) == null ? void 0 : l.local().format($e)
1761
+ });
1762
+ se(
1763
+ g,
1764
+ ({ startDate: s, endDate: F }) => {
1765
+ u.value = {
1766
+ startDate: ce(s).toISOString(),
1767
+ endDate: ce(F).toISOString()
1768
+ };
1769
+ },
1770
+ { deep: !0, immediate: !0 }
1771
+ ), We(() => {
1772
+ u.value = { ...n };
1773
+ });
1774
+ const d = ee(w, "modelValue"), { breakpoints: k } = Me(), p = w, { promptMessage: t } = Le(), i = c, { t: f } = Y();
1775
+ function N(s) {
1776
+ d.value = yl(s);
1777
+ }
1778
+ function D() {
1779
+ const s = [...d.value.widget.config.joinDatasources || []];
1780
+ s.push({ ...Qe(d.value.widget.type), conditions: [] }), N({
1781
+ ...d.value,
1782
+ widget: {
1783
+ ...d.value.widget,
1784
+ config: {
1785
+ ...d.value.widget.config,
1786
+ joinDatasources: s
1787
+ }
1788
+ }
1789
+ });
1790
+ }
1791
+ async function O(s) {
1792
+ if (!await t({
1793
+ title: f("report.tile.datasource.remove"),
1794
+ message: f("report.tile.datasource.confirmRemove", { index: s + 1 })
1795
+ })) return;
1796
+ const V = [...d.value.widget.config.joinDatasources || []];
1797
+ V.splice(s, 1), N({
1798
+ ...d.value,
1799
+ widget: {
1800
+ ...d.value.widget,
1801
+ config: {
1802
+ ...d.value.widget.config,
1803
+ joinDatasources: V
1804
+ }
1805
+ }
1806
+ });
1807
+ }
1808
+ const b = (s, F) => {
1809
+ let V = 1, M = 1;
1810
+ switch (s) {
1811
+ case B.Scorecard:
1812
+ V = 1, M = 2;
1813
+ break;
1814
+ case B.BarChart:
1815
+ case B.StackBarChart:
1816
+ case B.LineChart:
1817
+ case B.StackLineChart:
1818
+ V = 4, M = 6;
1819
+ break;
1820
+ case B.Table:
1821
+ V = 4, M = 12;
1822
+ break;
1823
+ case B.Circular:
1824
+ V = 4, M = 4;
1825
+ break;
1826
+ case B.Spacer:
1827
+ V = 0, M = 12;
1828
+ break;
1829
+ }
1830
+ return {
1831
+ size: {
1832
+ height: V,
1833
+ width: M
1834
+ },
1835
+ widget: {
1836
+ ...F.widget,
1837
+ type: s
1838
+ }
1839
+ };
1840
+ }, y = _(
1841
+ () => he.find((s) => s.type === d.value.widget.type)
1842
+ ), r = _(() => d.value.widget.config.joinDatasources), v = be((s) => {
1843
+ d.value.widget.title = s;
1844
+ }, 500);
1845
+ return se(
1846
+ () => d.value.size.height,
1847
+ (s) => {
1848
+ s < 1 && (d.value.size.height = 1), s > 12 && (d.value.size.height = 12);
1849
+ }
1850
+ ), se(
1851
+ () => d.value.size.width,
1852
+ (s) => {
1853
+ s < 1 && (d.value.size.width = 1), s > 12 && (d.value.size.width = 12);
1854
+ }
1855
+ ), (s, F) => {
1856
+ const V = x("FmCircularProgress"), M = x("FmSimpleDateRangePicker"), z = x("FmTextField"), P = x("FmTextarea"), q = x("FmStepperField"), G = x("FmButton"), oe = x("FmForm");
1857
+ return h(), T(Oe(e(k).lg || e(k).md ? Ml : Pl), {
1858
+ "model-value": p.hideConfiguration,
1859
+ "onUpdate:modelValue": F[8] || (F[8] = (S) => i("hideConfiguration", S))
1860
+ }, {
1861
+ default: $(() => [
1862
+ d.value ? (h(), T(oe, {
1863
+ key: 1,
1864
+ ref: "form",
1865
+ class: "px-6 py-16 flex flex-col gap-24 overflow-y-auto overflow-x-hidden"
1866
+ }, {
1867
+ default: $(() => [
1868
+ C("div", El, [
1869
+ m(M, {
1870
+ modelValue: g.value,
1871
+ "onUpdate:modelValue": F[0] || (F[0] = (S) => g.value = S)
1872
+ }, null, 8, ["modelValue"])
1873
+ ]),
1874
+ m(we, null, {
1875
+ header: $(() => [
1876
+ C("p", Jl, L(e(f)("report.tile.widget.details")), 1),
1877
+ F[9] || (F[9] = C("div", { class: "grow" }, null, -1))
1878
+ ]),
1879
+ content: $(() => [
1880
+ m(z, {
1881
+ "model-value": d.value.widget.title,
1882
+ label: e(f)("report.tile.widget.title"),
1883
+ placeholder: e(f)("report.tile.widget.titlePlaceholder"),
1884
+ "onUpdate:modelValue": e(v)
1885
+ }, null, 8, ["model-value", "label", "placeholder", "onUpdate:modelValue"]),
1886
+ m(P, {
1887
+ modelValue: d.value.widget.description,
1888
+ "onUpdate:modelValue": F[1] || (F[1] = (S) => d.value.widget.description = S),
1889
+ disabled: d.value.widget.title === "",
1890
+ placeholder: e(f)("report.tile.widget.descriptionPlaceholder"),
1891
+ "helper-text": e(f)("report.tile.widget.descriptionHelper")
1892
+ }, {
1893
+ label: $(() => [
1894
+ C("p", Gl, L(e(f)("report.tile.widget.widgetDescription")), 1),
1895
+ C("p", Kl, " (" + L(e(f)("report.tile.widget.optional")) + ") ", 1)
1896
+ ]),
1897
+ _: 1
1898
+ }, 8, ["modelValue", "disabled", "placeholder", "helper-text"]),
1899
+ m(Yl, {
1900
+ model: d.value.widget.config,
1901
+ "onUpdate:model": F[2] || (F[2] = (S) => d.value.widget.config = S)
1902
+ }, null, 8, ["model"]),
1903
+ C("div", {
1904
+ class: Ie(["flex flex-row", `${e(k).sm || e(k).xs ? "gap-16" : "gap-2"}`])
1905
+ }, [
1906
+ m(q, {
1907
+ modelValue: d.value.size.width,
1908
+ "onUpdate:modelValue": F[3] || (F[3] = (S) => d.value.size.width = S),
1909
+ label: e(f)("report.tile.widget.width"),
1910
+ min: 1,
1911
+ max: 12
1912
+ }, null, 8, ["modelValue", "label"]),
1913
+ m(q, {
1914
+ modelValue: d.value.size.height,
1915
+ "onUpdate:modelValue": F[4] || (F[4] = (S) => d.value.size.height = S),
1916
+ label: e(f)("report.tile.widget.height"),
1917
+ min: 1,
1918
+ max: 12,
1919
+ disabled: d.value.widget.type === e(B).Scorecard
1920
+ }, null, 8, ["modelValue", "label", "disabled"])
1921
+ ], 2)
1922
+ ]),
1923
+ _: 1
1924
+ }),
1925
+ m(we, null, {
1926
+ header: $(() => [
1927
+ C("p", null, L(e(f)("report.tile.widget.type")), 1),
1928
+ F[10] || (F[10] = C("div", { class: "grow" }, null, -1))
1929
+ ]),
1930
+ content: $(() => [
1931
+ m(Ke, {
1932
+ "is-list": !0,
1933
+ "model-value": d.value.widget.type,
1934
+ class: "grid grid-cols-1 gap-2",
1935
+ "child-class": "flex flex-row p-[8px] gap-2",
1936
+ "exclude-widge-type": [e(B).Spacer],
1937
+ "onUpdate:modelValue": F[5] || (F[5] = (S) => d.value = b(S, d.value))
1938
+ }, null, 8, ["model-value", "exclude-widge-type"])
1939
+ ]),
1940
+ _: 1
1941
+ }),
1942
+ m(De, {
1943
+ modelValue: d.value.widget.config,
1944
+ "onUpdate:modelValue": F[6] || (F[6] = (S) => d.value.widget.config = S),
1945
+ label: e(f)("report.tile.datasource.main"),
1946
+ config: y.value
1947
+ }, null, 8, ["modelValue", "label", "config"]),
1948
+ r.value ? (h(!0), I(Z, { key: 0 }, de(r.value, (S, X) => (h(), I("div", { key: X }, [
1949
+ m(De, {
1950
+ modelValue: r.value[X],
1951
+ "onUpdate:modelValue": (H) => r.value[X] = H,
1952
+ label: e(f)("report.tile.datasource.join", { index: X + 1 }),
1953
+ config: y.value,
1954
+ "main-datasource-config": d.value.widget.config,
1955
+ closeable: !0,
1956
+ onClickClose: (H) => O(X)
1957
+ }, null, 8, ["modelValue", "onUpdate:modelValue", "label", "config", "main-datasource-config", "onClickClose"])
1958
+ ]))), 128)) : U("", !0),
1959
+ C("div", Ql, [
1960
+ m(G, {
1961
+ label: e(f)("report.tile.datasource.joinButton"),
1962
+ variant: "secondary",
1963
+ icon: "add",
1964
+ "icon-position": "prepend",
1965
+ "border-color": e(ve).ColorPrimary,
1966
+ "text-color": e(ve).ColorPrimary,
1967
+ class: "w-full",
1968
+ onClick: F[7] || (F[7] = (S) => D())
1969
+ }, null, 8, ["label", "border-color", "text-color"])
1970
+ ])
1971
+ ]),
1972
+ _: 1
1973
+ }, 512)) : (h(), T(V, { key: 0 }))
1974
+ ]),
1975
+ _: 1
1976
+ }, 8, ["model-value"]);
1977
+ };
1978
+ }
1979
+ }), Zl = { class: "flex flex-col gap-8" }, eo = { class: "pl-32 flex flex-col gap-8" }, lo = { class: "fm-typo-en-body-lg-600" }, oo = { class: "flex flex-row gap-8" }, to = { class: "fm-typo-en-body-lg-600" }, ao = { class: "flex flex-row gap-8" }, no = /* @__PURE__ */ A({
1980
+ __name: "LabelSection",
1981
+ props: {
1982
+ model: {}
1983
+ },
1984
+ emits: ["update:model"],
1985
+ setup(w, { emit: c }) {
1986
+ const o = w, u = c, { t: n } = Y(), g = _({
1987
+ get: () => o.model.showLabel ?? !1,
1988
+ set: (D) => {
1989
+ u("update:model", { ...o.model, showLabel: D });
1990
+ }
1991
+ }), d = _({
1992
+ get: () => o.model.labelRotation ?? 0,
1993
+ set: (D) => u("update:model", { ...o.model, labelRotation: D })
1994
+ }), k = _({
1995
+ get: () => o.model.labelOffset ?? 0,
1996
+ set: (D) => u("update:model", { ...o.model, labelOffset: D })
1997
+ }), p = _({
1998
+ get: () => o.model.labelFontSize ?? 12,
1999
+ set: (D) => u("update:model", { ...o.model, labelFontSize: D })
2000
+ }), t = (D) => {
2001
+ u("update:model", {
2002
+ ...o.model,
2003
+ labelAlign: o.model.labelAlign === D ? void 0 : D
2004
+ });
2005
+ }, i = (D) => {
2006
+ u("update:model", {
2007
+ ...o.model,
2008
+ labelAnchor: o.model.labelAnchor === D ? void 0 : D
2009
+ });
2010
+ }, f = [
2011
+ { icon: "align_horizontal_left", value: ie.left, tooltip: "alignLeft" },
2012
+ { icon: "align_justify_center", value: ie.center, tooltip: "alignCenter" },
2013
+ { icon: "align_horizontal_right", value: ie.right, tooltip: "alignRight" },
2014
+ { icon: "align_justify_flex_start", value: ie.start, tooltip: "alignStart" },
2015
+ { icon: "align_justify_flex_end", value: ie.end, tooltip: "alignEnd" },
2016
+ { icon: "align_flex_start", value: ie.top, tooltip: "alignTop" },
2017
+ { icon: "align_flex_end", value: ie.bottom, tooltip: "alignBottom" }
2018
+ ], N = [
2019
+ { icon: "format_align_left", value: Ve.start, tooltip: "anchorStart" },
2020
+ { icon: "format_align_center", value: Ve.center, tooltip: "anchorCenter" },
2021
+ { icon: "format_align_right", value: Ve.end, tooltip: "anchorEnd" }
2022
+ ];
2023
+ return (D, O) => {
2024
+ const b = x("FmCheckbox"), y = x("FmButton"), r = x("FmTooltip"), v = x("FmTextField"), a = x("FmStepperField");
2025
+ return h(), I("div", Zl, [
2026
+ m(b, {
2027
+ modelValue: g.value,
2028
+ "onUpdate:modelValue": O[0] || (O[0] = (l) => g.value = l),
2029
+ value: !1,
2030
+ label: e(n)("report.section.datasource.label.showLabel"),
2031
+ "label-placement": "right",
2032
+ class: "fm-typo-en-body-lg-400"
2033
+ }, null, 8, ["modelValue", "label"]),
2034
+ ae(C("div", eo, [
2035
+ C("p", lo, L(e(n)("report.section.datasource.alignment.textAlignment")), 1),
2036
+ C("div", oo, [
2037
+ (h(), I(Z, null, de(f, ({ icon: l, value: s, tooltip: F }) => m(r, {
2038
+ key: s,
2039
+ variant: "plain",
2040
+ placement: "top",
2041
+ content: e(n)(`report.section.datasource.alignment.alignOptions.${F}`),
2042
+ "z-index": 50
2043
+ }, {
2044
+ default: $(() => [
2045
+ m(y, {
2046
+ "append-icon": l,
2047
+ variant: "tertiary",
2048
+ "icon-color": D.model.labelAlign === s ? "neutral-gray-400" : "neutral-gray-300",
2049
+ "bg-color": D.model.labelAlign === s ? "neutral-gray-100" : "neutral-white",
2050
+ class: "rounded-sm",
2051
+ onClick: (V) => t(s)
2052
+ }, null, 8, ["append-icon", "icon-color", "bg-color", "onClick"])
2053
+ ]),
2054
+ _: 2
2055
+ }, 1032, ["content"])), 64))
2056
+ ]),
2057
+ C("p", to, L(e(n)("report.section.datasource.alignment.anchor")), 1),
2058
+ C("div", ao, [
2059
+ (h(), I(Z, null, de(N, ({ icon: l, value: s, tooltip: F }) => m(r, {
2060
+ key: s,
2061
+ variant: "plain",
2062
+ placement: "top",
2063
+ content: e(n)(`report.section.datasource.alignment.anchorOptions.${F}`),
2064
+ "z-index": 50
2065
+ }, {
2066
+ default: $(() => [
2067
+ m(y, {
2068
+ "append-icon": l,
2069
+ variant: "tertiary",
2070
+ "icon-color": D.model.labelAnchor === s ? "neutral-gray-400" : "neutral-gray-300",
2071
+ "bg-color": D.model.labelAnchor === s ? "neutral-gray-100" : "neutral-white",
2072
+ class: "rounded-sm",
2073
+ onClick: (V) => i(s)
2074
+ }, null, 8, ["append-icon", "icon-color", "bg-color", "onClick"])
2075
+ ]),
2076
+ _: 2
2077
+ }, 1032, ["content"])), 64))
2078
+ ]),
2079
+ m(v, {
2080
+ modelValue: d.value,
2081
+ "onUpdate:modelValue": O[1] || (O[1] = (l) => d.value = l),
2082
+ label: e(n)("report.section.datasource.alignment.rotation"),
2083
+ type: "number",
2084
+ min: -180,
2085
+ max: 180,
2086
+ step: 1
2087
+ }, null, 8, ["modelValue", "label"]),
2088
+ m(v, {
2089
+ modelValue: k.value,
2090
+ "onUpdate:modelValue": O[2] || (O[2] = (l) => k.value = l),
2091
+ label: e(n)("report.section.datasource.alignment.offset"),
2092
+ type: "number"
2093
+ }, null, 8, ["modelValue", "label"]),
2094
+ m(a, {
2095
+ modelValue: p.value,
2096
+ "onUpdate:modelValue": O[3] || (O[3] = (l) => p.value = l),
2097
+ label: e(n)("report.section.datasource.fontSize"),
2098
+ type: "number",
2099
+ min: 1
2100
+ }, null, 8, ["modelValue", "label"])
2101
+ ], 512), [
2102
+ [ne, g.value]
2103
+ ])
2104
+ ]);
2105
+ };
2106
+ }
2107
+ }), io = { class: "flex flex-col gap-8" }, so = { class: "pl-32 flex flex-col gap-8" }, uo = { class: "pl-32 flex flex-col gap-8" }, ro = { class: "pl-32 flex flex-col gap-8" }, mo = { class: "pl-32 flex flex-col gap-8" }, po = { class: "pl-32 flex flex-col gap-8" }, co = { class: "pl-32 flex flex-col gap-8" }, vo = /* @__PURE__ */ A({
2108
+ __name: "XySection",
2109
+ props: {
2110
+ model: {}
2111
+ },
2112
+ emits: ["update:model"],
2113
+ setup(w, { emit: c }) {
2114
+ const o = w, u = c, { t: n } = Y(), g = _({
2115
+ get: () => o.model.showX ?? !0,
2116
+ set: (b) => {
2117
+ u("update:model", { ...o.model, showX: b });
2118
+ }
2119
+ }), d = _({
2120
+ get: () => o.model.showXGrid ?? !1,
2121
+ set: (b) => {
2122
+ u("update:model", { ...o.model, showXGrid: b });
2123
+ }
2124
+ }), k = _({
2125
+ get: () => o.model.showXTick ?? !0,
2126
+ set: (b) => {
2127
+ u("update:model", { ...o.model, showXTick: b });
2128
+ }
2129
+ }), p = _({
2130
+ get: () => o.model.showY ?? !0,
2131
+ set: (b) => {
2132
+ u("update:model", { ...o.model, showY: b });
2133
+ }
2134
+ }), t = _({
2135
+ get: () => o.model.showYGrid ?? !0,
2136
+ set: (b) => {
2137
+ u("update:model", { ...o.model, showYGrid: b });
2138
+ }
2139
+ }), i = _({
2140
+ get: () => o.model.showYTick ?? !0,
2141
+ set: (b) => {
2142
+ u("update:model", { ...o.model, showYTick: b });
2143
+ }
2144
+ }), f = _({
2145
+ get: () => o.model.showXTitle ?? !1,
2146
+ set: (b) => {
2147
+ u("update:model", { ...o.model, showXTitle: b });
2148
+ }
2149
+ }), N = _({
2150
+ get: () => o.model.showYTitle ?? !1,
2151
+ set: (b) => {
2152
+ u("update:model", { ...o.model, showYTitle: b });
2153
+ }
2154
+ }), D = be((b) => {
2155
+ u("update:model", { ...o.model, xTitle: b });
2156
+ }, 500), O = be((b) => {
2157
+ u("update:model", { ...o.model, yTitle: b });
2158
+ }, 500);
2159
+ return ke(() => {
2160
+ var b, y, r, v;
2161
+ !o.model.xTitle && ((y = (b = o.model.metrics) == null ? void 0 : b[0]) != null && y.label) && D(o.model.metrics[0].label), !o.model.yTitle && ((v = (r = o.model.dimensions) == null ? void 0 : r[0]) != null && v.label) && O(o.model.dimensions[0].label);
2162
+ }), (b, y) => {
2163
+ const r = x("FmCheckbox"), v = x("FmStepperField"), a = x("FmTextField");
2164
+ return h(), I("div", io, [
2165
+ m(r, {
2166
+ modelValue: g.value,
2167
+ "onUpdate:modelValue": y[0] || (y[0] = (l) => g.value = l),
2168
+ label: e(n)("report.section.datasource.axis.showX"),
2169
+ "label-placement": "right",
2170
+ value: !0
2171
+ }, null, 8, ["modelValue", "label"]),
2172
+ ae(C("div", so, [
2173
+ m(r, {
2174
+ modelValue: d.value,
2175
+ "onUpdate:modelValue": y[1] || (y[1] = (l) => d.value = l),
2176
+ label: e(n)("report.section.datasource.axis.showGrid"),
2177
+ "label-placement": "right",
2178
+ value: !1
2179
+ }, null, 8, ["modelValue", "label"]),
2180
+ m(r, {
2181
+ modelValue: k.value,
2182
+ "onUpdate:modelValue": y[2] || (y[2] = (l) => k.value = l),
2183
+ label: e(n)("report.section.datasource.axis.showTick"),
2184
+ "label-placement": "right",
2185
+ value: !0
2186
+ }, null, 8, ["modelValue", "label"]),
2187
+ ae(C("div", uo, [
2188
+ m(v, {
2189
+ label: e(n)("report.section.datasource.fontSize"),
2190
+ type: "number",
2191
+ "model-value": b.model.xTickFontSize ?? 12,
2192
+ min: 1,
2193
+ "onUpdate:modelValue": y[3] || (y[3] = (l) => {
2194
+ u("update:model", { ...b.model, xTickFontSize: Number(l) });
2195
+ })
2196
+ }, null, 8, ["label", "model-value"])
2197
+ ], 512), [
2198
+ [ne, b.model.showXTick ?? !0]
2199
+ ]),
2200
+ m(r, {
2201
+ modelValue: f.value,
2202
+ "onUpdate:modelValue": y[4] || (y[4] = (l) => f.value = l),
2203
+ label: e(n)("report.section.datasource.axis.showTitle"),
2204
+ "label-placement": "right",
2205
+ value: !0
2206
+ }, null, 8, ["modelValue", "label"]),
2207
+ ae(C("div", ro, [
2208
+ m(a, {
2209
+ "model-value": b.model.xTitle,
2210
+ label: e(n)("report.common.title"),
2211
+ placeholder: e(n)("report.tile.widget.titlePlaceholder"),
2212
+ "onUpdate:modelValue": e(D)
2213
+ }, null, 8, ["model-value", "label", "placeholder", "onUpdate:modelValue"]),
2214
+ m(v, {
2215
+ label: e(n)("report.section.datasource.fontSize"),
2216
+ type: "number",
2217
+ "model-value": b.model.xTitleFontSize ?? 12,
2218
+ min: 1,
2219
+ "onUpdate:modelValue": y[5] || (y[5] = (l) => {
2220
+ u("update:model", { ...b.model, xTitleFontSize: Number(l) });
2221
+ })
2222
+ }, null, 8, ["label", "model-value"])
2223
+ ], 512), [
2224
+ [ne, f.value]
2225
+ ])
2226
+ ], 512), [
2227
+ [ne, b.model.showX ?? !0]
2228
+ ]),
2229
+ m(r, {
2230
+ modelValue: p.value,
2231
+ "onUpdate:modelValue": y[6] || (y[6] = (l) => p.value = l),
2232
+ label: e(n)("report.section.datasource.axis.showY"),
2233
+ "label-placement": "right",
2234
+ value: !0
2235
+ }, null, 8, ["modelValue", "label"]),
2236
+ ae(C("div", mo, [
2237
+ m(r, {
2238
+ modelValue: t.value,
2239
+ "onUpdate:modelValue": y[7] || (y[7] = (l) => t.value = l),
2240
+ label: e(n)("report.section.datasource.axis.showGrid"),
2241
+ "label-placement": "right",
2242
+ value: !1
2243
+ }, null, 8, ["modelValue", "label"]),
2244
+ m(r, {
2245
+ modelValue: i.value,
2246
+ "onUpdate:modelValue": y[8] || (y[8] = (l) => i.value = l),
2247
+ label: e(n)("report.section.datasource.axis.showTick"),
2248
+ "label-placement": "right",
2249
+ value: !0
2250
+ }, null, 8, ["modelValue", "label"]),
2251
+ ae(C("div", po, [
2252
+ m(v, {
2253
+ label: e(n)("report.section.datasource.fontSize"),
2254
+ type: "number",
2255
+ "model-value": b.model.yTickFontSize ?? 12,
2256
+ min: 1,
2257
+ "onUpdate:modelValue": y[9] || (y[9] = (l) => {
2258
+ u("update:model", { ...b.model, yTickFontSize: Number(l) });
2259
+ })
2260
+ }, null, 8, ["label", "model-value"])
2261
+ ], 512), [
2262
+ [ne, b.model.showYTick ?? !0]
2263
+ ]),
2264
+ m(r, {
2265
+ modelValue: N.value,
2266
+ "onUpdate:modelValue": y[10] || (y[10] = (l) => N.value = l),
2267
+ label: e(n)("report.section.datasource.axis.showTitle"),
2268
+ "label-placement": "right",
2269
+ value: !0
2270
+ }, null, 8, ["modelValue", "label"]),
2271
+ ae(C("div", co, [
2272
+ m(a, {
2273
+ "model-value": b.model.yTitle,
2274
+ label: e(n)("report.common.title"),
2275
+ placeholder: e(n)("report.tile.widget.titlePlaceholder"),
2276
+ "onUpdate:modelValue": e(O)
2277
+ }, null, 8, ["model-value", "label", "placeholder", "onUpdate:modelValue"]),
2278
+ m(v, {
2279
+ label: e(n)("report.section.datasource.fontSize"),
2280
+ type: "number",
2281
+ "model-value": b.model.yTitleFontSize ?? 12,
2282
+ min: 1,
2283
+ "onUpdate:modelValue": y[11] || (y[11] = (l) => {
2284
+ u("update:model", { ...b.model, yTitleFontSize: Number(l) });
2285
+ })
2286
+ }, null, 8, ["label", "model-value"])
2287
+ ], 512), [
2288
+ [ne, N.value]
2289
+ ])
2290
+ ], 512), [
2291
+ [ne, b.model.showY ?? !0]
2292
+ ])
2293
+ ]);
2294
+ };
2295
+ }
2296
+ }), fo = { class: "flex flex-col gap-8" }, go = { class: "pl-32 flex flex-col gap-8" }, bo = /* @__PURE__ */ A({
2297
+ __name: "LegendSection",
2298
+ props: {
2299
+ model: {},
2300
+ isCircularWidget: { type: Boolean }
2301
+ },
2302
+ emits: ["update:model"],
2303
+ setup(w, { emit: c }) {
2304
+ const o = w, u = c, { t: n } = Y(), g = [
2305
+ { label: n("report.section.datasource.position.top"), value: "top" },
2306
+ { label: n("report.section.datasource.position.bottom"), value: "bottom" },
2307
+ { label: n("report.section.datasource.position.left"), value: "left" },
2308
+ { label: n("report.section.datasource.position.right"), value: "right" }
2309
+ ], d = _({
2310
+ get: () => o.model.showLegend !== void 0 ? o.model.showLegend : o.isCircularWidget === !0,
2311
+ set: (i) => {
2312
+ u("update:model", { ...o.model, showLegend: i });
2313
+ }
2314
+ }), k = _({
2315
+ get: () => o.model.usePointStyle ?? !0,
2316
+ set: (i) => {
2317
+ u("update:model", { ...o.model, usePointStyle: i });
2318
+ }
2319
+ }), p = _({
2320
+ get: () => o.model.legendMaxHeight ?? 54,
2321
+ set: (i) => {
2322
+ u("update:model", { ...o.model, legendMaxHeight: i });
2323
+ }
2324
+ }), t = _({
2325
+ get: () => o.model.legendMaxWidth ?? 54,
2326
+ set: (i) => {
2327
+ u("update:model", { ...o.model, legendMaxWidth: i });
2328
+ }
2329
+ });
2330
+ return (i, f) => {
2331
+ const N = x("FmCheckbox"), D = x("FmSelect"), O = x("FmStepperField");
2332
+ return h(), I("div", fo, [
2333
+ m(N, {
2334
+ modelValue: d.value,
2335
+ "onUpdate:modelValue": f[0] || (f[0] = (b) => d.value = b),
2336
+ class: "fm-typo-en-body-lg-400",
2337
+ value: !1,
2338
+ label: e(n)("report.section.datasource.legend.showLegend")
2339
+ }, null, 8, ["modelValue", "label"]),
2340
+ ae(C("div", go, [
2341
+ m(D, {
2342
+ label: e(n)("report.section.datasource.position.showPosition"),
2343
+ items: g,
2344
+ "model-value": i.model.legendPosition ?? "top",
2345
+ "onUpdate:modelValue": f[1] || (f[1] = (b) => u("update:model", { ...i.model, legendPosition: b }))
2346
+ }, null, 8, ["label", "model-value"]),
2347
+ m(N, {
2348
+ modelValue: k.value,
2349
+ "onUpdate:modelValue": f[2] || (f[2] = (b) => k.value = b),
2350
+ label: e(n)("report.section.datasource.legend.usePointStyle"),
2351
+ value: !1
2352
+ }, null, 8, ["modelValue", "label"]),
2353
+ i.model.legendPosition === "top" || i.model.legendPosition === "bottom" || !i.model.legendPosition ? (h(), T(O, {
2354
+ key: 0,
2355
+ label: e(n)("report.section.datasource.legend.maxHeight"),
2356
+ "model-value": p.value,
2357
+ "onUpdate:modelValue": f[3] || (f[3] = (b) => u("update:model", { ...i.model, legendMaxHeight: b }))
2358
+ }, null, 8, ["label", "model-value"])) : U("", !0),
2359
+ i.model.legendPosition === "left" || i.model.legendPosition === "right" ? (h(), T(O, {
2360
+ key: 1,
2361
+ label: e(n)("report.section.datasource.legend.maxWidth"),
2362
+ "model-value": t.value,
2363
+ "onUpdate:modelValue": f[4] || (f[4] = (b) => u("update:model", { ...i.model, legendMaxWidth: b }))
2364
+ }, null, 8, ["label", "model-value"])) : U("", !0)
2365
+ ], 512), [
2366
+ [ne, d.value]
2367
+ ])
2368
+ ]);
2369
+ };
2370
+ }
2371
+ }), yo = { class: "flex flex-row gap-16" }, ho = /* @__PURE__ */ A({
2372
+ __name: "ChartSizeSection",
2373
+ props: {
2374
+ model: {}
2375
+ },
2376
+ emits: ["update:model"],
2377
+ setup(w, { emit: c }) {
2378
+ const o = w, u = c, { t: n } = Y(), g = _({
2379
+ get: () => o.model.chartHeight ?? null,
2380
+ set: (k) => {
2381
+ u("update:model", { ...o.model, chartHeight: k ?? void 0 });
2382
+ }
2383
+ }), d = _({
2384
+ get: () => o.model.chartWidth ?? null,
2385
+ set: (k) => {
2386
+ u("update:model", { ...o.model, chartWidth: k ?? void 0 });
2387
+ }
2388
+ });
2389
+ return (k, p) => {
2390
+ const t = x("FmStepperField");
2391
+ return h(), I("div", yo, [
2392
+ m(t, {
2393
+ modelValue: g.value,
2394
+ "onUpdate:modelValue": p[0] || (p[0] = (i) => g.value = i),
2395
+ type: "number",
2396
+ label: e(n)("report.section.datasource.chartHeight"),
2397
+ suffix: "px",
2398
+ min: 1,
2399
+ placeholder: "Auto"
2400
+ }, null, 8, ["modelValue", "label"]),
2401
+ m(t, {
2402
+ modelValue: d.value,
2403
+ "onUpdate:modelValue": p[1] || (p[1] = (i) => d.value = i),
2404
+ type: "number",
2405
+ label: e(n)("report.section.datasource.chartWidth"),
2406
+ suffix: "px",
2407
+ min: 1,
2408
+ placeholder: "Auto"
2409
+ }, null, 8, ["modelValue", "label"])
2410
+ ]);
2411
+ };
2412
+ }
2413
+ }), Vo = { class: "flex flex-col gap-16" }, Fo = { class: "flex flex-col gap-8" }, wo = { class: "flex flex-col gap-8" }, xo = /* @__PURE__ */ A({
2414
+ __name: "StyleDatasource",
2415
+ props: /* @__PURE__ */ J({
2416
+ label: {
2417
+ type: String,
2418
+ default: "Label"
2419
+ },
2420
+ config: {
2421
+ type: Object,
2422
+ default: null
2423
+ },
2424
+ closeable: {
2425
+ type: Boolean,
2426
+ default: !1
2427
+ },
2428
+ mainDatasourceConfig: {
2429
+ type: Object,
2430
+ default: () => {
2431
+ }
2432
+ },
2433
+ modelValue: {
2434
+ type: Object,
2435
+ default: () => {
2436
+ }
2437
+ }
2438
+ }, {
2439
+ modelValue: { required: !0 },
2440
+ modelModifiers: {}
2441
+ }),
2442
+ emits: /* @__PURE__ */ J(["click-close"], ["update:modelValue"]),
2443
+ setup(w, { emit: c }) {
2444
+ const o = ee(w, "modelValue");
2445
+ se(
2446
+ [() => o.value.dimensions, () => o.value.metrics],
2447
+ () => {
2448
+ const { rowIds: p, columnIds: t } = ye(o.value);
2449
+ o.value.rowIds = p, o.value.columnIds = t;
2450
+ },
2451
+ { deep: !0 }
2452
+ );
2453
+ const u = w, n = c, { t: g, te: d } = Y(), k = _(() => u.config.type === B.Circular);
2454
+ return (p, t) => {
2455
+ const i = x("FmButton");
2456
+ return h(), I(Z, null, [
2457
+ t[6] || (t[6] = C("div", { class: "grow" }, null, -1)),
2458
+ u.closeable ? (h(), T(i, {
2459
+ key: 0,
2460
+ icon: "close",
2461
+ variant: "tertiary",
2462
+ size: "md",
2463
+ onClick: t[0] || (t[0] = te((f) => n("click-close"), ["stop"]))
2464
+ })) : U("", !0),
2465
+ C("div", Vo, [
2466
+ u.config.hasChart ? (h(), T(ho, {
2467
+ key: 0,
2468
+ model: o.value,
2469
+ "onUpdate:model": t[1] || (t[1] = (f) => o.value = f)
2470
+ }, null, 8, ["model"])) : U("", !0),
2471
+ C("div", Fo, [
2472
+ t[5] || (t[5] = C("p", { class: "fm-typo-en-body-lg-600" }, "Configuration", -1)),
2473
+ C("div", wo, [
2474
+ u.config.hasLabel ? (h(), T(no, {
2475
+ key: 0,
2476
+ model: o.value,
2477
+ "onUpdate:model": t[2] || (t[2] = (f) => o.value = f)
2478
+ }, null, 8, ["model"])) : U("", !0),
2479
+ u.config.hasLegend ? (h(), T(bo, {
2480
+ key: 1,
2481
+ model: o.value,
2482
+ "is-circular-widget": k.value,
2483
+ "onUpdate:model": t[3] || (t[3] = (f) => o.value = f)
2484
+ }, null, 8, ["model", "is-circular-widget"])) : U("", !0),
2485
+ u.config.hasXy ? (h(), T(vo, {
2486
+ key: 2,
2487
+ model: o.value,
2488
+ "onUpdate:model": t[4] || (t[4] = (f) => o.value = f)
2489
+ }, null, 8, ["model"])) : U("", !0)
2490
+ ])
2491
+ ])
2492
+ ])
2493
+ ], 64);
2494
+ };
2495
+ }
2496
+ }), Co = { class: "fixed bottom-6 right-6" }, ko = { class: "flex items-center gap-8" }, _o = /* @__PURE__ */ A({
2497
+ __name: "StyleEditorTab",
2498
+ props: {
2499
+ modelValue: {
2500
+ required: !0
2501
+ },
2502
+ modelModifiers: {}
2503
+ },
2504
+ emits: ["update:modelValue"],
2505
+ setup(w) {
2506
+ const { t: c } = Y(), o = ee(w, "modelValue"), u = _(
2507
+ () => he.find((g) => g.type === o.value.widget.type)
2508
+ ), n = W(!1);
2509
+ return (g, d) => {
2510
+ const k = x("FmCircularProgress"), p = x("FmButton"), t = x("FmSideSheet");
2511
+ return h(), T(t, {
2512
+ modelValue: n.value,
2513
+ "onUpdate:modelValue": d[2] || (d[2] = (i) => n.value = i),
2514
+ "close-button": !1,
2515
+ "no-overlay": "",
2516
+ "dismiss-away": !0
2517
+ }, {
2518
+ "side-sheet-button": $(() => [
2519
+ C("div", Co, [
2520
+ m(p, {
2521
+ label: "Style setting",
2522
+ icon: "edit",
2523
+ variant: "secondary",
2524
+ size: "md"
2525
+ })
2526
+ ])
2527
+ ]),
2528
+ "side-sheet-header": $(() => [
2529
+ C("div", ko, [
2530
+ m(p, {
2531
+ "prepend-icon": "arrow_back",
2532
+ variant: "tertiary",
2533
+ class: "fm-icon--rounded fm-icon--md text-fm-color-black",
2534
+ onClick: d[0] || (d[0] = (i) => n.value = !1)
2535
+ }),
2536
+ d[3] || (d[3] = C("p", { class: "fm-typo-en-title-sm-600" }, "Report style settings", -1))
2537
+ ])
2538
+ ]),
2539
+ default: $(() => [
2540
+ o.value ? U("", !0) : (h(), T(k, { key: 0 })),
2541
+ m(xo, {
2542
+ modelValue: o.value.widget.config,
2543
+ "onUpdate:modelValue": d[1] || (d[1] = (i) => o.value.widget.config = i),
2544
+ config: u.value
2545
+ }, null, 8, ["modelValue", "config"])
2546
+ ]),
2547
+ _: 1
2548
+ }, 8, ["modelValue"]);
2549
+ };
2550
+ }
2551
+ }), So = { class: "bg-fm-color-neutral-white flex flex-col h-full w-[510px]" }, To = { class: "flex bg-fm-color-neutral-white w-[88px]" }, Uo = { class: "w-full overflow-y-auto" }, Do = {
2552
+ class: "grid grid-cols-12 w-full p-24",
2553
+ style: { backgroundColor: "#F6F8FC" }
2554
+ }, $o = /* @__PURE__ */ A({
2555
+ __name: "TileEditorDesktop",
2556
+ props: /* @__PURE__ */ J({
2557
+ hideConfiguration: { type: Boolean, required: !0, default: !1 },
2558
+ index: { type: Number, required: !0, default: 0 }
2559
+ }, {
2560
+ modelValue: {
2561
+ required: !0
2562
+ },
2563
+ modelModifiers: {}
2564
+ }),
2565
+ emits: /* @__PURE__ */ J(["hideConfiguration"], ["update:modelValue"]),
2566
+ setup(w, { emit: c }) {
2567
+ const o = ee(w, "modelValue"), u = w, n = _(
2568
+ () => he.find((p) => {
2569
+ var t;
2570
+ return p.type === ((t = o.value) == null ? void 0 : t.widget.type);
2571
+ })
2572
+ ), g = c, d = [
2573
+ B.BarChart,
2574
+ B.StackBarChart,
2575
+ B.LineChart,
2576
+ B.StackLineChart,
2577
+ B.Circular
2578
+ ], k = _(() => d.includes(o.value.widget.type));
2579
+ return (p, t) => {
2580
+ const i = x("FmCircularProgress"), f = x("FmButton");
2581
+ return h(), I("div", null, [
2582
+ o.value ? (h(), I(Z, { key: 1 }, [
2583
+ m(Ze, {
2584
+ "model-value": !w.hideConfiguration
2585
+ }, {
2586
+ right: $(() => [
2587
+ C("div", So, [
2588
+ m(Ae, {
2589
+ modelValue: o.value,
2590
+ "onUpdate:modelValue": t[0] || (t[0] = (N) => o.value = N),
2591
+ config: n.value,
2592
+ "hide-configuration": w.hideConfiguration,
2593
+ onHideConfiguration: t[1] || (t[1] = (N) => {
2594
+ g("hideConfiguration", N);
2595
+ })
2596
+ }, null, 8, ["modelValue", "config", "hide-configuration"])
2597
+ ])
2598
+ ]),
2599
+ left: $(() => [
2600
+ C("div", To, [
2601
+ m(f, {
2602
+ variant: "secondary",
2603
+ icon: "keyboard_double_arrow_right",
2604
+ "border-color": e(ve).ColorPrimary,
2605
+ "text-color": e(ve).ColorPrimary,
2606
+ class: "m-24 my-16",
2607
+ size: "md",
2608
+ onClick: t[2] || (t[2] = (N) => g("hideConfiguration", !u.hideConfiguration))
2609
+ }, null, 8, ["border-color", "text-color"])
2610
+ ])
2611
+ ]),
2612
+ _: 1
2613
+ }, 8, ["model-value"]),
2614
+ C("div", Uo, [
2615
+ C("div", Do, [
2616
+ o.value ? (h(), T(ze, {
2617
+ key: 0,
2618
+ "model-value": o.value,
2619
+ index: u.index,
2620
+ "hide-export": !0
2621
+ }, null, 8, ["model-value", "index"])) : (h(), T(Pe, { key: 1 }))
2622
+ ])
2623
+ ]),
2624
+ k.value ? (h(), T(_o, {
2625
+ key: 0,
2626
+ modelValue: o.value,
2627
+ "onUpdate:modelValue": t[3] || (t[3] = (N) => o.value = N),
2628
+ "hide-configuration": w.hideConfiguration,
2629
+ onHideConfiguration: t[4] || (t[4] = (N) => {
2630
+ g("hideConfiguration", N);
2631
+ })
2632
+ }, null, 8, ["modelValue", "hide-configuration"])) : U("", !0)
2633
+ ], 64)) : (h(), T(i, { key: 0 }))
2634
+ ]);
2635
+ };
2636
+ }
2637
+ }), No = {
2638
+ key: 0,
2639
+ class: "flex w-full justify-center items-center"
2640
+ }, Oo = { class: "w-full grid grid-cols-12 pb-28 pt-5 px-5 h-full" }, Io = /* @__PURE__ */ A({
2641
+ __name: "TileEditorMobile",
2642
+ props: /* @__PURE__ */ J({
2643
+ hideConfiguration: { type: Boolean, required: !0, default: !1 },
2644
+ index: { type: Number, required: !0, default: 0 }
2645
+ }, {
2646
+ modelValue: {
2647
+ required: !0
2648
+ },
2649
+ modelModifiers: {}
2650
+ }),
2651
+ emits: /* @__PURE__ */ J(["hideConfiguration"], ["update:modelValue"]),
2652
+ setup(w, { emit: c }) {
2653
+ const o = ee(w, "modelValue"), u = w, n = _(
2654
+ () => he.find((d) => {
2655
+ var k;
2656
+ return d.type === ((k = o.value) == null ? void 0 : k.widget.type);
2657
+ })
2658
+ ), g = c;
2659
+ return (d, k) => {
2660
+ const p = x("FmCircularProgress");
2661
+ return h(), I("div", null, [
2662
+ o.value ? (h(), I(Z, { key: 1 }, [
2663
+ C("div", Oo, [
2664
+ o.value ? (h(), T(ze, {
2665
+ key: 0,
2666
+ "model-value": o.value,
2667
+ index: u.index,
2668
+ "hide-export": !0
2669
+ }, null, 8, ["model-value", "index"])) : (h(), T(Pe, { key: 1 }))
2670
+ ]),
2671
+ m(Ae, {
2672
+ modelValue: o.value,
2673
+ "onUpdate:modelValue": k[0] || (k[0] = (t) => o.value = t),
2674
+ config: n.value,
2675
+ "hide-configuration": w.hideConfiguration,
2676
+ onHideConfiguration: k[1] || (k[1] = (t) => {
2677
+ g("hideConfiguration", t);
2678
+ })
2679
+ }, null, 8, ["modelValue", "config", "hide-configuration"])
2680
+ ], 64)) : (h(), I("div", No, [
2681
+ m(p)
2682
+ ]))
2683
+ ]);
2684
+ };
2685
+ }
2686
+ }), Bo = {
2687
+ key: 0,
2688
+ class: "fm-typo-en-title-md-600"
2689
+ }, Lo = {
2690
+ key: 0,
2691
+ class: "flex items-start justify-start px-24 py-12 flex-wrap w-full"
2692
+ }, Go = /* @__PURE__ */ A({
2693
+ __name: "TileEditor",
2694
+ setup(w) {
2695
+ const { rowHeight: c, colWidths: o } = ue(ge()), u = Ye(), n = Ee(), g = tl(), { globalFilters: d } = ue(Re()), { currentSelectWidgetType: k, editingReport: p, editingTile: t, editingTileIndex: i } = ue(g), { breakpoints: f } = Me(), { promptMessage: N } = Le(), { t: D } = Y(), O = W(!1);
2696
+ function b() {
2697
+ k.value = void 0, t.value = void 0, i.value = -1, n.back();
2698
+ }
2699
+ async function y() {
2700
+ var a;
2701
+ if (!p.value) return;
2702
+ await N({
2703
+ title: D("report.tile.save.title"),
2704
+ message: D("report.tile.save.confirm", { title: (a = t.value) == null ? void 0 : a.widget.title })
2705
+ }) && t.value && (t.value.widget.config = {
2706
+ ...t.value.widget.config,
2707
+ rowHeight: c.value,
2708
+ colWidths: [...o.value]
2709
+ }, i.value === -1 ? p.value.tiles.push(t.value) : p.value.tiles[i.value] = t.value, b());
2710
+ }
2711
+ async function r() {
2712
+ var a;
2713
+ if (!p.value) return;
2714
+ await N({
2715
+ title: D("report.tile.cancel.title"),
2716
+ message: D("report.tile.cancel.confirm", { title: (a = t.value) == null ? void 0 : a.widget.title })
2717
+ }) && b();
2718
+ }
2719
+ return ke(() => {
2720
+ p.value || n.push({ name: "reports" });
2721
+ }), (v, a) => {
2722
+ const l = x("FmPageHead");
2723
+ return h(), T(el, null, {
2724
+ default: $(() => [
2725
+ m(l, {
2726
+ actions: [
2727
+ { label: "Cancel", value: "cancel", isPrimary: !1 },
2728
+ { label: "Save", value: "save", isPrimary: !0 }
2729
+ ],
2730
+ "onClick:action": a[0] || (a[0] = (s) => {
2731
+ s === "cancel" && r(), s === "save" && y();
2732
+ })
2733
+ }, {
2734
+ title: $(() => {
2735
+ var s;
2736
+ return [
2737
+ e(f).lg || e(f).md ? (h(), I("p", Bo, L(e(je)(((s = e(t)) == null ? void 0 : s.widget.type) ?? "New report")), 1)) : U("", !0)
2738
+ ];
2739
+ }),
2740
+ _: 1
2741
+ }),
2742
+ e(t) && (e(d) || []).some((s) => {
2743
+ const F = s.tileIds, V = e(t) && e(t).id;
2744
+ return Array.isArray(F) && typeof V == "string" && F.includes(V);
2745
+ }) ? (h(), I("div", Lo, [
2746
+ m(il)
2747
+ ])) : U("", !0),
2748
+ e(t) ? (h(), T(Oe(e(f).lg || e(f).md ? $o : Io), {
2749
+ key: 1,
2750
+ modelValue: e(t),
2751
+ "onUpdate:modelValue": a[1] || (a[1] = (s) => He(t) ? t.value = s : null),
2752
+ class: Ie(`${e(f).lg || e(f).md ? "flex" : ""} w-full`),
2753
+ style: qe({ height: `calc( 100% - ${e(f).lg || e(f).md ? 72 : 64}px)` }),
2754
+ "hide-configuration": O.value,
2755
+ index: Number(e(u).params.tileIndex),
2756
+ onHideConfiguration: a[2] || (a[2] = (s) => O.value = s)
2757
+ }, null, 40, ["modelValue", "class", "style", "hide-configuration", "index"])) : U("", !0)
2758
+ ]),
2759
+ _: 1
2760
+ });
2761
+ };
2762
+ }
2763
+ });
2764
+ export {
2765
+ Go as default
2766
+ };