@trilogy-data/trilogy-studio-components 0.1.27 → 0.1.29
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{AssetAutoImporter-OHphsfW9.js → AssetAutoImporter-CCbTLQ9v.js} +5 -5
- package/dist/{ChatCreatorModal-CuXha6Dg.js → ChatCreatorModal-C0OHgrEB.js} +1 -1
- package/dist/{CodeBlock-BBsaC6hX.js → CodeBlock-CS86Ipg1.js} +1 -1
- package/dist/{CommunityModels-CIQQhO-y.js → CommunityModels-BxJKe8_v.js} +4 -4
- package/dist/{ConnectionView-7Jj_Ggdi.js → ConnectionView-D-1gQNQ7.js} +4 -4
- package/dist/{CreateEditorFromDatasourcePopup-CrVHUWFl.js → CreateEditorFromDatasourcePopup-RkNgUdzU.js} +2 -2
- package/dist/{Dashboard-DxSi9W6Q.js → Dashboard-DWJPKIeQ.js} +5 -5
- package/dist/{DashboardImportSelector-kuDRDYi8.js → DashboardImportSelector-t6tKq5N4.js} +1 -1
- package/dist/{DashboardMobile-CZEgTb0R.js → DashboardMobile-CxObMuv6.js} +4 -4
- package/dist/{Editor-D6tdutTm.js → Editor-DD1inQuU.js} +6 -6
- package/dist/{GlobalChatPanel-BXZh0sdD.js → GlobalChatPanel-BArWsM8Y.js} +20 -20
- package/dist/{IDE-T8PmyAQ_.js → IDE-D5GKLVYn.js} +6 -6
- package/dist/{JobsView-Ca97MiSd.js → JobsView-By7OZgj_.js} +5 -5
- package/dist/{LLMChat-Cch33Yd_.js → LLMChat-B-q_7sa4.js} +2 -2
- package/dist/{LLMView-BDb6wD74.js → LLMView-8BKf70Ay.js} +9 -9
- package/dist/{LoadingView-B-xFwd2N.js → LoadingView-Da0HfQ56.js} +1 -1
- package/dist/{MarkdownRenderer-BWvdx0k3.js → MarkdownRenderer-CQppLv_n.js} +1 -1
- package/dist/{MobileIDE-DpdEQEqc.js → MobileIDE-C81gvbco.js} +12 -12
- package/dist/{ModelCard-DkAMP4X9.js → ModelCard-BMDgFDyQ.js} +4 -4
- package/dist/{ModelView-DomyhN8g.js → ModelView-C4B8qJwX.js} +4 -4
- package/dist/{PageLoading-BAvKGo9h.js → PageLoading-CRl9HNIg.js} +75 -75
- package/dist/{ResultComponent-zoOSoRLe.js → ResultComponent-C-A8sbr1.js} +4 -4
- package/dist/{Results-dq-SlJbU.js → Results-C1nNHU7C.js} +11 -11
- package/dist/{StatusIcon-AbxNvJ6p.js → StatusIcon-v2EhaU49.js} +1 -1
- package/dist/{StoreTokenModal-CM8WXdu1.js → StoreTokenModal-BV_gLE94.js} +1 -1
- package/dist/{SymbolsPane-DfaxeaPS.js → SymbolsPane-CuVCamJf.js} +1 -1
- package/dist/{TutorialPage-BtEJG7cT.js → TutorialPage-DGQGx3vF.js} +11 -11
- package/dist/{VegaLiteChart-BVyAab-o.js → VegaLiteChart-BIeSuNU8.js} +11413 -11363
- package/dist/{WelcomePage-BoqzYBLr.js → WelcomePage-T757Ynnn.js} +3 -3
- package/dist/components/VegaLiteChart.vue.d.ts.map +1 -1
- package/dist/components/chartControlsManager.d.ts +0 -1
- package/dist/components/chartControlsManager.d.ts.map +1 -1
- package/dist/dashboard.js +19 -19
- package/dist/dashboards/chartTheme.d.ts +68 -0
- package/dist/dashboards/chartTheme.d.ts.map +1 -0
- package/dist/dashboards/dashboardQueryExecutor.d.ts +9 -0
- package/dist/dashboards/dashboardQueryExecutor.d.ts.map +1 -1
- package/dist/dashboards/donutSpec.d.ts +2 -1
- package/dist/dashboards/donutSpec.d.ts.map +1 -1
- package/dist/dashboards/headlineSpec.d.ts +2 -1
- package/dist/dashboards/headlineSpec.d.ts.map +1 -1
- package/dist/dashboards/helpers.d.ts +23 -0
- package/dist/dashboards/helpers.d.ts.map +1 -1
- package/dist/dashboards/index.d.ts +2 -0
- package/dist/dashboards/index.d.ts.map +1 -1
- package/dist/dashboards/layerSpec.d.ts +4 -1
- package/dist/dashboards/layerSpec.d.ts.map +1 -1
- package/dist/dashboards/pointSpec.d.ts +2 -1
- package/dist/dashboards/pointSpec.d.ts.map +1 -1
- package/dist/dashboards/spec.d.ts +8 -1
- package/dist/dashboards/spec.d.ts.map +1 -1
- package/dist/{editorStore-CAlMJftt.js → editorStore-k4IbmW9-.js} +1094 -1094
- package/dist/{globalChatRuntime-CyS7vH51.js → globalChatRuntime-BWahbZxZ.js} +14 -14
- package/dist/{helpers-BbVlA3Pf.js → helpers-DDKx6kkf.js} +4 -4
- package/dist/llm/data/prompts.d.ts +1 -1
- package/dist/llm/data/prompts.d.ts.map +1 -1
- package/dist/llm/data/trilogySyntax.generated.d.ts +3 -3
- package/dist/llm/data/trilogySyntax.generated.d.ts.map +1 -1
- package/dist/{llm-ClU-2rgk.js → llm--BDQ6qkZ.js} +111 -77
- package/dist/llm.js +2 -2
- package/dist/{localStorage-CGQ1iJXt.js → localStorage-BYwXjN4M.js} +16 -16
- package/dist/monaco.js +2 -2
- package/dist/{reconcile-DXIvGwBk.js → reconcile-D-vMtlgJ.js} +1 -1
- package/dist/{remoteStoreSync-CuQBWpWf.js → remoteStoreSync-PLFQCOmY.js} +2 -2
- package/dist/{stores-LlyiwSbK.js → stores-S6dQ5cjI.js} +40 -32
- package/dist/stores.js +3 -3
- package/dist/trilogy-studio-components.css +1 -1
- package/dist/{useChatWithTools-m3Jn_SV-.js → useChatWithTools-Bkd9MeMh.js} +10 -10
- package/dist/{useDashboard-BOAuvVEw.js → useDashboard-50rwbG0x.js} +889 -889
- package/dist/{useGlobalChatPanel-DuP1q7_f.js → useGlobalChatPanel-JJZaHao8.js} +4 -4
- package/dist/views.js +11 -11
- package/dist/{vocabulary-CKLGILtR.js → vocabulary-DQK5jB7m.js} +3 -1
- package/package.json +1 -1
|
@@ -1,27 +1,27 @@
|
|
|
1
1
|
import { t as e } from "./_plugin-vue_export-helper-f9Rw-Il4.js";
|
|
2
2
|
import { o as t } from "./config-DwTONafa.js";
|
|
3
3
|
import { c as n, u as r } from "./base-DuKnVD-A.js";
|
|
4
|
-
import {
|
|
5
|
-
import { a as g, f as _, g as v, p as y } from "./stores-
|
|
6
|
-
import { S as b, _ as x, b as S, d as C, et as w, f as ee, g as T, h as E, it as te, l as D, m as O, p as ne, t as re, u as ie } from "./editorStore-
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
import { t as
|
|
11
|
-
import { t as
|
|
12
|
-
import { t as
|
|
13
|
-
import { t as
|
|
14
|
-
import { a as
|
|
4
|
+
import { It as i, Kt as a, Qt as o, an as s, dn as c, en as l, in as u, nn as d, on as f, pn as p, qt as m, un as h } from "./llm--BDQ6qkZ.js";
|
|
5
|
+
import { a as g, f as _, g as v, p as y } from "./stores-S6dQ5cjI.js";
|
|
6
|
+
import { S as b, _ as x, b as S, d as C, et as w, f as ee, g as T, h as E, it as te, l as D, m as O, p as ne, t as re, u as ie } from "./editorStore-k4IbmW9-.js";
|
|
7
|
+
import { t as ae } from "./VegaLiteChart-BIeSuNU8.js";
|
|
8
|
+
import { n as oe, t as se } from "./DashboardImportSelector-t6tKq5N4.js";
|
|
9
|
+
import { f as k, p as ce, r as le, u as ue } from "./useGlobalChatPanel-JJZaHao8.js";
|
|
10
|
+
import { t as A } from "./ErrorMessage-D5JeF3Iz.js";
|
|
11
|
+
import { t as de } from "./LoadingView-Da0HfQ56.js";
|
|
12
|
+
import { t as fe } from "./DrilldownPane-BheRHJMs.js";
|
|
13
|
+
import { t as pe } from "./MarkdownRenderer-CQppLv_n.js";
|
|
14
|
+
import { a as me, d as he, l as ge, o as j } from "./workers-B9Eybl-M.js";
|
|
15
15
|
import "./editor.main-BQh6DxDB.js";
|
|
16
|
-
import { t as
|
|
17
|
-
import { t as
|
|
18
|
-
import { n as
|
|
19
|
-
import { Fragment as
|
|
16
|
+
import { t as _e } from "./tokenTheme-DBbeCrCg.js";
|
|
17
|
+
import { t as ve } from "./SymbolsPane-CuVCamJf.js";
|
|
18
|
+
import { n as ye, t as be } from "./useResizableDialog-Cs90WJdF.js";
|
|
19
|
+
import { Fragment as M, Teleport as xe, computed as N, createBlock as P, createCommentVNode as F, createElementBlock as I, createElementVNode as L, createTextVNode as R, createVNode as z, defineComponent as B, inject as V, nextTick as Se, normalizeClass as H, normalizeStyle as Ce, onBeforeUnmount as we, onMounted as Te, onUnmounted as Ee, openBlock as U, ref as W, renderList as G, renderSlot as De, resolveComponent as K, resolveDynamicComponent as Oe, toDisplayString as q, unref as J, vModelRadio as ke, vModelText as Ae, vShow as je, watch as Y, withCtx as X, withDirectives as Z, withKeys as Me, withModifiers as Ne } from "vue";
|
|
20
20
|
//#region components/dashboard/DashboardSharePopup.vue?vue&type=script&setup=true&lang.ts
|
|
21
21
|
var Pe = { class: "share-popup-body" }, Fe = { class: "json-container" }, Ie = {
|
|
22
22
|
"data-testid": "dashboard-json",
|
|
23
23
|
class: "json-code"
|
|
24
|
-
}, Le = /*#__PURE__*/ e(/* @__PURE__ */
|
|
24
|
+
}, Le = /*#__PURE__*/ e(/* @__PURE__ */ B({
|
|
25
25
|
__name: "DashboardSharePopup",
|
|
26
26
|
props: {
|
|
27
27
|
dashboard: {},
|
|
@@ -29,7 +29,7 @@ var Pe = { class: "share-popup-body" }, Fe = { class: "json-container" }, Ie = {
|
|
|
29
29
|
},
|
|
30
30
|
emits: ["close"],
|
|
31
31
|
setup(e, { emit: t }) {
|
|
32
|
-
let n = e, r = t, i =
|
|
32
|
+
let n = e, r = t, i = W(""), a = W(!1), o = (e) => {
|
|
33
33
|
if (!e) return null;
|
|
34
34
|
let t = JSON.parse(JSON.stringify(e));
|
|
35
35
|
if (delete t.id, delete t.connection, delete t.storage, delete t.changed, delete t.deleted, t.layout && Array.isArray(t.layout) && (t.layout = t.layout.map((e) => {
|
|
@@ -44,7 +44,7 @@ var Pe = { class: "share-popup-body" }, Fe = { class: "json-container" }, Ie = {
|
|
|
44
44
|
return delete t.id, t;
|
|
45
45
|
})), t;
|
|
46
46
|
};
|
|
47
|
-
|
|
47
|
+
Y([() => n.dashboard, () => n.isOpen], ([e, t]) => {
|
|
48
48
|
if (t && e) {
|
|
49
49
|
let t = o(e);
|
|
50
50
|
i.value = JSON.stringify(t, null, 2), a.value = !1;
|
|
@@ -59,25 +59,25 @@ var Pe = { class: "share-popup-body" }, Fe = { class: "json-container" }, Ie = {
|
|
|
59
59
|
console.error("Could not copy text: ", e);
|
|
60
60
|
});
|
|
61
61
|
};
|
|
62
|
-
return (t, n) => (
|
|
62
|
+
return (t, n) => (U(), P(ce, {
|
|
63
63
|
show: e.isOpen,
|
|
64
64
|
title: "Export Definition",
|
|
65
65
|
"max-width": "860px",
|
|
66
66
|
"test-id": "dashboard-share-popup",
|
|
67
67
|
onClose: n[1] ||= (e) => r("close")
|
|
68
68
|
}, {
|
|
69
|
-
footer:
|
|
69
|
+
footer: X(() => [L("button", {
|
|
70
70
|
class: "secondary-button",
|
|
71
71
|
onClick: n[0] ||= (e) => r("close")
|
|
72
|
-
}, "Close"),
|
|
72
|
+
}, "Close"), L("button", {
|
|
73
73
|
onClick: s,
|
|
74
74
|
class: "dashboard-copy-button",
|
|
75
75
|
"data-testid": "copy-json-button"
|
|
76
|
-
}, [
|
|
77
|
-
class:
|
|
76
|
+
}, [L("i", {
|
|
77
|
+
class: H(["mdi", a.value ? "mdi-check-circle-outline" : "mdi-content-copy"]),
|
|
78
78
|
"aria-hidden": "true"
|
|
79
|
-
}, null, 2),
|
|
80
|
-
default:
|
|
79
|
+
}, null, 2), L("span", null, q(a.value ? "Copied" : "Copy JSON"), 1)])]),
|
|
80
|
+
default: X(() => [L("div", Pe, [n[3] ||= L("p", { class: "share-popup-description" }, " Copy a definition of this dashboard; it can be imported by others with the same model defined. Existing runtime/results info is removed automatically. ", -1), L("div", Fe, [n[2] ||= L("div", { class: "json-toolbar" }, [L("span", { class: "json-toolbar-label" }, "dashboard.json")], -1), L("pre", Ie, q(i.value), 1)])])]),
|
|
81
81
|
_: 1
|
|
82
82
|
}, 8, ["show"]));
|
|
83
83
|
}
|
|
@@ -111,7 +111,7 @@ var Pe = { class: "share-popup-body" }, Fe = { class: "json-container" }, Ie = {
|
|
|
111
111
|
"data-testid",
|
|
112
112
|
"onBlur",
|
|
113
113
|
"onKeyup"
|
|
114
|
-
], ut = ["disabled", "onClick"], dt = { class: "section" }, ft = ["disabled"], pt = /*#__PURE__*/ e(/* @__PURE__ */
|
|
114
|
+
], ut = ["disabled", "onClick"], dt = { class: "section" }, ft = ["disabled"], pt = /*#__PURE__*/ e(/* @__PURE__ */ B({
|
|
115
115
|
__name: "DashboardThemePopup",
|
|
116
116
|
props: {
|
|
117
117
|
dashboard: {},
|
|
@@ -119,39 +119,39 @@ var Pe = { class: "share-popup-body" }, Fe = { class: "json-container" }, Ie = {
|
|
|
119
119
|
},
|
|
120
120
|
emits: ["close", "theme-change"],
|
|
121
121
|
setup(e, { emit: n }) {
|
|
122
|
-
let r = e,
|
|
123
|
-
theme:
|
|
124
|
-
mode:
|
|
122
|
+
let r = e, i = n, a = V("userSettingsStore", null), o = t(a), p = N(() => r.dashboard?.theme || {}), m = N(() => p.value.preset || "default"), g = N(() => c({
|
|
123
|
+
theme: p.value,
|
|
124
|
+
mode: o.value
|
|
125
125
|
}).vars);
|
|
126
126
|
function _(e) {
|
|
127
|
-
return
|
|
127
|
+
return c({
|
|
128
128
|
theme: { preset: e },
|
|
129
|
-
mode:
|
|
129
|
+
mode: o.value
|
|
130
130
|
}).vars;
|
|
131
131
|
}
|
|
132
|
-
let v =
|
|
132
|
+
let v = N(() => Object.keys(p.value).length > 0);
|
|
133
133
|
function y(e) {
|
|
134
|
-
|
|
134
|
+
i("theme-change", { preset: e });
|
|
135
135
|
}
|
|
136
136
|
function b(e, t) {
|
|
137
|
-
|
|
137
|
+
i("theme-change", { [e]: t });
|
|
138
138
|
}
|
|
139
139
|
function x(e) {
|
|
140
|
-
|
|
140
|
+
i("theme-change", { mobileCards: e });
|
|
141
141
|
}
|
|
142
142
|
function S() {
|
|
143
|
-
|
|
143
|
+
i("theme-change", null);
|
|
144
144
|
}
|
|
145
|
-
let C =
|
|
146
|
-
|
|
145
|
+
let C = W({}), w = W({});
|
|
146
|
+
Y([() => r.isOpen, p], ([e]) => {
|
|
147
147
|
if (!e) return;
|
|
148
148
|
let t = {};
|
|
149
|
-
for (let e of
|
|
149
|
+
for (let e of f) t[e.key] = p.value[e.key] || "";
|
|
150
150
|
C.value = t, w.value = {};
|
|
151
151
|
}, { immediate: !0 });
|
|
152
152
|
function ee(e) {
|
|
153
|
-
let t =
|
|
154
|
-
return t && /^#[0-9a-f]{6}$/i.test(t) ? t :
|
|
153
|
+
let t = p.value[e];
|
|
154
|
+
return t && /^#[0-9a-f]{6}$/i.test(t) ? t : f.find((t) => t.key === e).placeholder[o.value];
|
|
155
155
|
}
|
|
156
156
|
function T(e) {
|
|
157
157
|
let t = (C.value[e] || "").trim();
|
|
@@ -159,10 +159,10 @@ var Pe = { class: "share-popup-body" }, Fe = { class: "json-container" }, Ie = {
|
|
|
159
159
|
w.value = {
|
|
160
160
|
...w.value,
|
|
161
161
|
[e]: !1
|
|
162
|
-
},
|
|
162
|
+
}, p.value[e] && i("theme-change", { [e]: void 0 });
|
|
163
163
|
return;
|
|
164
164
|
}
|
|
165
|
-
if (!
|
|
165
|
+
if (!h(t)) {
|
|
166
166
|
w.value = {
|
|
167
167
|
...w.value,
|
|
168
168
|
[e]: !0
|
|
@@ -172,7 +172,7 @@ var Pe = { class: "share-popup-body" }, Fe = { class: "json-container" }, Ie = {
|
|
|
172
172
|
w.value = {
|
|
173
173
|
...w.value,
|
|
174
174
|
[e]: !1
|
|
175
|
-
},
|
|
175
|
+
}, i("theme-change", { [e]: t });
|
|
176
176
|
}
|
|
177
177
|
function E(e, t) {
|
|
178
178
|
let n = t.target.value;
|
|
@@ -182,7 +182,7 @@ var Pe = { class: "share-popup-body" }, Fe = { class: "json-container" }, Ie = {
|
|
|
182
182
|
}, w.value = {
|
|
183
183
|
...w.value,
|
|
184
184
|
[e]: !1
|
|
185
|
-
},
|
|
185
|
+
}, i("theme-change", { [e]: n });
|
|
186
186
|
}
|
|
187
187
|
function te(e) {
|
|
188
188
|
C.value = {
|
|
@@ -191,155 +191,155 @@ var Pe = { class: "share-popup-body" }, Fe = { class: "json-container" }, Ie = {
|
|
|
191
191
|
}, w.value = {
|
|
192
192
|
...w.value,
|
|
193
193
|
[e]: !1
|
|
194
|
-
},
|
|
194
|
+
}, i("theme-change", { [e]: void 0 });
|
|
195
195
|
}
|
|
196
|
-
let D =
|
|
197
|
-
return (t, n) => (
|
|
196
|
+
let D = f, O = s, ne = l, re = d, ie = u;
|
|
197
|
+
return (t, n) => (U(), P(ce, {
|
|
198
198
|
show: e.isOpen,
|
|
199
199
|
title: "Dashboard theme",
|
|
200
200
|
"max-width": "640px",
|
|
201
201
|
"test-id": "dashboard-theme-popup",
|
|
202
|
-
onClose: n[7] ||= (e) =>
|
|
202
|
+
onClose: n[7] ||= (e) => i("close")
|
|
203
203
|
}, {
|
|
204
|
-
footer:
|
|
204
|
+
footer: X(() => [L("button", {
|
|
205
205
|
type: "button",
|
|
206
206
|
class: "btn btn-reset",
|
|
207
207
|
disabled: !v.value,
|
|
208
208
|
"data-testid": "theme-reset-button",
|
|
209
209
|
onClick: S
|
|
210
|
-
}, " Reset to default ", 8, ft),
|
|
210
|
+
}, " Reset to default ", 8, ft), L("button", {
|
|
211
211
|
type: "button",
|
|
212
212
|
class: "btn btn-done",
|
|
213
213
|
"data-testid": "theme-done-button",
|
|
214
|
-
onClick: n[6] ||= (e) =>
|
|
214
|
+
onClick: n[6] ||= (e) => i("close")
|
|
215
215
|
}, " Done ")]),
|
|
216
|
-
default:
|
|
217
|
-
n[20] ||=
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
216
|
+
default: X(() => [L("div", Re, [
|
|
217
|
+
n[20] ||= L("p", { class: "picker-intro" }, [
|
|
218
|
+
R(" Styling for this dashboard only. Anything left on "),
|
|
219
|
+
L("strong", null, "Auto"),
|
|
220
|
+
R(" follows the preset, and colors left blank follow your light/dark setting. ")
|
|
221
221
|
], -1),
|
|
222
|
-
|
|
222
|
+
L("section", ze, [n[9] ||= L("h4", { class: "section-title" }, "Preset", -1), L("div", Be, [(U(!0), I(M, null, G(J(O), (e) => (U(), I("button", {
|
|
223
223
|
key: e.value,
|
|
224
224
|
type: "button",
|
|
225
|
-
class:
|
|
225
|
+
class: H(["preset-card", { selected: m.value === e.value }]),
|
|
226
226
|
"data-testid": `theme-preset-${e.value}`,
|
|
227
|
-
"aria-pressed":
|
|
227
|
+
"aria-pressed": m.value === e.value,
|
|
228
228
|
onClick: (t) => y(e.value)
|
|
229
229
|
}, [
|
|
230
|
-
|
|
230
|
+
L("span", {
|
|
231
231
|
class: "preset-preview",
|
|
232
|
-
style:
|
|
232
|
+
style: Ce(_(e.value)),
|
|
233
233
|
"aria-hidden": "true"
|
|
234
|
-
}, [...n[8] ||= [
|
|
235
|
-
|
|
236
|
-
|
|
234
|
+
}, [...n[8] ||= [L("span", { class: "preview-card" }, [L("span", { class: "preview-card-header" })], -1), L("span", { class: "preview-card" }, [L("span", { class: "preview-card-header" })], -1)]], 4),
|
|
235
|
+
L("span", He, q(e.label), 1),
|
|
236
|
+
L("span", Ue, q(e.hint), 1)
|
|
237
237
|
], 10, Ve))), 128))])]),
|
|
238
|
-
|
|
239
|
-
n[14] ||=
|
|
240
|
-
|
|
238
|
+
L("section", We, [
|
|
239
|
+
n[14] ||= L("h4", { class: "section-title" }, "Adjustments", -1),
|
|
240
|
+
L("div", Ge, [n[10] ||= L("span", { class: "knob-label" }, "Corners", -1), L("div", Ke, [L("button", {
|
|
241
241
|
type: "button",
|
|
242
|
-
class:
|
|
242
|
+
class: H(["chip", { selected: !p.value.corners }]),
|
|
243
243
|
onClick: n[0] ||= (e) => b("corners", void 0)
|
|
244
|
-
}, " Auto ", 2), (
|
|
244
|
+
}, " Auto ", 2), (U(!0), I(M, null, G(J(ne), (e) => (U(), I("button", {
|
|
245
245
|
key: e.value,
|
|
246
246
|
type: "button",
|
|
247
|
-
class:
|
|
247
|
+
class: H(["chip", { selected: p.value.corners === e.value }]),
|
|
248
248
|
title: e.hint,
|
|
249
249
|
onClick: (t) => b("corners", e.value)
|
|
250
|
-
},
|
|
251
|
-
|
|
250
|
+
}, q(e.label), 11, qe))), 128))])]),
|
|
251
|
+
L("div", Je, [n[11] ||= L("span", { class: "knob-label" }, "Density", -1), L("div", Ye, [L("button", {
|
|
252
252
|
type: "button",
|
|
253
|
-
class:
|
|
253
|
+
class: H(["chip", { selected: !p.value.density }]),
|
|
254
254
|
onClick: n[1] ||= (e) => b("density", void 0)
|
|
255
|
-
}, " Auto ", 2), (
|
|
255
|
+
}, " Auto ", 2), (U(!0), I(M, null, G(J(re), (e) => (U(), I("button", {
|
|
256
256
|
key: e.value,
|
|
257
257
|
type: "button",
|
|
258
|
-
class:
|
|
258
|
+
class: H(["chip", { selected: p.value.density === e.value }]),
|
|
259
259
|
title: e.hint,
|
|
260
260
|
onClick: (t) => b("density", e.value)
|
|
261
|
-
},
|
|
262
|
-
|
|
261
|
+
}, q(e.label), 11, Xe))), 128))])]),
|
|
262
|
+
L("div", Ze, [n[12] ||= L("span", { class: "knob-label" }, "Elevation", -1), L("div", Qe, [L("button", {
|
|
263
263
|
type: "button",
|
|
264
|
-
class:
|
|
264
|
+
class: H(["chip", { selected: !p.value.elevation }]),
|
|
265
265
|
onClick: n[2] ||= (e) => b("elevation", void 0)
|
|
266
|
-
}, " Auto ", 2), (
|
|
266
|
+
}, " Auto ", 2), (U(!0), I(M, null, G(J(ie), (e) => (U(), I("button", {
|
|
267
267
|
key: e.value,
|
|
268
268
|
type: "button",
|
|
269
|
-
class:
|
|
269
|
+
class: H(["chip", { selected: p.value.elevation === e.value }]),
|
|
270
270
|
title: e.hint,
|
|
271
271
|
onClick: (t) => b("elevation", e.value)
|
|
272
|
-
},
|
|
273
|
-
|
|
274
|
-
|
|
272
|
+
}, q(e.label), 11, $e))), 128))])]),
|
|
273
|
+
L("div", et, [n[13] ||= L("span", { class: "knob-label" }, "On mobile", -1), L("div", tt, [
|
|
274
|
+
L("button", {
|
|
275
275
|
type: "button",
|
|
276
|
-
class:
|
|
276
|
+
class: H(["chip", { selected: p.value.mobileCards === void 0 }]),
|
|
277
277
|
onClick: n[3] ||= (e) => x(void 0)
|
|
278
278
|
}, " Auto ", 2),
|
|
279
|
-
|
|
279
|
+
L("button", {
|
|
280
280
|
type: "button",
|
|
281
|
-
class:
|
|
281
|
+
class: H(["chip", { selected: p.value.mobileCards === !1 }]),
|
|
282
282
|
title: "Panels flatten to the page background below 768px.",
|
|
283
283
|
onClick: n[4] ||= (e) => x(!1)
|
|
284
284
|
}, " Flatten ", 2),
|
|
285
|
-
|
|
285
|
+
L("button", {
|
|
286
286
|
type: "button",
|
|
287
|
-
class:
|
|
287
|
+
class: H(["chip", { selected: p.value.mobileCards === !0 }]),
|
|
288
288
|
title: "Panels keep their card treatment on narrow screens.",
|
|
289
289
|
onClick: n[5] ||= (e) => x(!0)
|
|
290
290
|
}, " Keep cards ", 2)
|
|
291
291
|
])])
|
|
292
292
|
]),
|
|
293
|
-
|
|
294
|
-
n[16] ||=
|
|
295
|
-
n[17] ||=
|
|
296
|
-
|
|
293
|
+
L("section", nt, [
|
|
294
|
+
n[16] ||= L("h4", { class: "section-title" }, "Colors", -1),
|
|
295
|
+
n[17] ||= L("p", { class: "section-note" }, " A color you set applies in both light and dark mode. Set them as a group so text stays readable, or leave them blank to follow the app theme. ", -1),
|
|
296
|
+
L("div", rt, [(U(!0), I(M, null, G(J(D), (e) => (U(), I("div", {
|
|
297
297
|
key: e.key,
|
|
298
298
|
class: "color-row"
|
|
299
|
-
}, [
|
|
299
|
+
}, [L("label", {
|
|
300
300
|
class: "color-label",
|
|
301
301
|
for: `theme-color-${e.key}`
|
|
302
|
-
}, [
|
|
303
|
-
|
|
302
|
+
}, [L("span", at, q(e.label), 1), L("span", ot, q(e.hint), 1)], 8, it), L("div", st, [
|
|
303
|
+
L("input", {
|
|
304
304
|
type: "color",
|
|
305
|
-
class:
|
|
305
|
+
class: H(["color-swatch", { unset: !p.value[e.key] }]),
|
|
306
306
|
value: ee(e.key),
|
|
307
307
|
"aria-label": `${e.label} color`,
|
|
308
308
|
onInput: (t) => E(e.key, t)
|
|
309
309
|
}, null, 42, ct),
|
|
310
|
-
|
|
310
|
+
Z(L("input", {
|
|
311
311
|
id: `theme-color-${e.key}`,
|
|
312
312
|
"onUpdate:modelValue": (t) => C.value[e.key] = t,
|
|
313
313
|
type: "text",
|
|
314
|
-
class:
|
|
314
|
+
class: H(["color-text", { invalid: w.value[e.key] }]),
|
|
315
315
|
"data-testid": `theme-color-${e.key}`,
|
|
316
316
|
placeholder: "Inherited",
|
|
317
317
|
spellcheck: "false",
|
|
318
318
|
onBlur: (t) => T(e.key),
|
|
319
319
|
onKeyup: Me((t) => T(e.key), ["enter"])
|
|
320
|
-
}, null, 42, lt), [[
|
|
321
|
-
|
|
320
|
+
}, null, 42, lt), [[Ae, C.value[e.key]]]),
|
|
321
|
+
L("button", {
|
|
322
322
|
type: "button",
|
|
323
323
|
class: "color-clear",
|
|
324
|
-
disabled: !
|
|
324
|
+
disabled: !p.value[e.key],
|
|
325
325
|
title: "Clear — follow the app theme",
|
|
326
326
|
"aria-label": "Clear color",
|
|
327
327
|
onClick: (t) => te(e.key)
|
|
328
|
-
}, [...n[15] ||= [
|
|
328
|
+
}, [...n[15] ||= [L("i", {
|
|
329
329
|
class: "mdi mdi-close",
|
|
330
330
|
"aria-hidden": "true"
|
|
331
331
|
}, null, -1)]], 8, ut)
|
|
332
332
|
])]))), 128))])
|
|
333
333
|
]),
|
|
334
|
-
|
|
334
|
+
L("section", dt, [n[19] ||= L("h4", { class: "section-title" }, "Preview", -1), L("div", {
|
|
335
335
|
class: "live-preview",
|
|
336
|
-
style:
|
|
337
|
-
}, [...n[18] ||= [
|
|
336
|
+
style: Ce(g.value)
|
|
337
|
+
}, [...n[18] ||= [L("div", { class: "preview-card large" }, [L("div", { class: "preview-card-header" }, [L("span", { class: "preview-title-bar" })]), L("div", { class: "preview-body" }, [L("span", { class: "preview-accent" })])], -1), L("div", { class: "preview-card large" }, [L("div", { class: "preview-card-header" }, [L("span", { class: "preview-title-bar" })]), L("div", { class: "preview-body" })], -1)]], 4)])
|
|
338
338
|
])]),
|
|
339
339
|
_: 1
|
|
340
340
|
}, 8, ["show"]));
|
|
341
341
|
}
|
|
342
|
-
}), [["__scopeId", "data-v-2a56fa57"]]), mt = ["onClick"], ht = { class: "completion-details" }, gt = { class: "completion-label" }, _t = { class: "completion-description" }, vt = /*#__PURE__*/ e(/* @__PURE__ */
|
|
342
|
+
}), [["__scopeId", "data-v-2a56fa57"]]), mt = ["onClick"], ht = { class: "completion-details" }, gt = { class: "completion-label" }, _t = { class: "completion-description" }, vt = /*#__PURE__*/ e(/* @__PURE__ */ B({
|
|
343
343
|
__name: "DashboardFilterAutocomplete",
|
|
344
344
|
props: {
|
|
345
345
|
inputValue: {
|
|
@@ -357,7 +357,7 @@ var Pe = { class: "share-popup-body" }, Fe = { class: "json-container" }, Ie = {
|
|
|
357
357
|
},
|
|
358
358
|
emits: ["select-completion"],
|
|
359
359
|
setup(e, { emit: t }) {
|
|
360
|
-
let n = e, r = t, i =
|
|
360
|
+
let n = e, r = t, i = W(!1), a = W(0), o = W(0), s = W(""), c = W(0), l = W(null), u = N(() => {
|
|
361
361
|
if (!n.inputElement) return {};
|
|
362
362
|
let e = n.inputElement.getBoundingClientRect();
|
|
363
363
|
return {
|
|
@@ -374,7 +374,7 @@ var Pe = { class: "share-popup-body" }, Fe = { class: "json-container" }, Ie = {
|
|
|
374
374
|
let r = o.value;
|
|
375
375
|
for (; r < e.length && !/\s/.test(e.charAt(r));) r++;
|
|
376
376
|
c.value = t, s.value = e.substring(t, r);
|
|
377
|
-
}, f =
|
|
377
|
+
}, f = N(() => {
|
|
378
378
|
if (!s.value.trim()) return [];
|
|
379
379
|
let e = s.value.toLowerCase();
|
|
380
380
|
return n.completionItems.filter((t) => t.label.toLowerCase().includes(e)).sort((t, n) => {
|
|
@@ -382,7 +382,7 @@ var Pe = { class: "share-popup-body" }, Fe = { class: "json-container" }, Ie = {
|
|
|
382
382
|
return r && !i ? -1 : !r && i ? 1 : t.label.localeCompare(n.label);
|
|
383
383
|
}).slice(0, 10);
|
|
384
384
|
});
|
|
385
|
-
|
|
385
|
+
Y(f, (e) => {
|
|
386
386
|
i.value = e.length > 0, a.value = 0;
|
|
387
387
|
});
|
|
388
388
|
let p = (e) => {
|
|
@@ -392,27 +392,27 @@ var Pe = { class: "share-popup-body" }, Fe = { class: "json-container" }, Ie = {
|
|
|
392
392
|
cursorPosition: c.value + e.label.length
|
|
393
393
|
}), i.value = !1;
|
|
394
394
|
}, m = (e) => e.trilogySubType ? e.trilogySubType.toLowerCase() : e.type.toLowerCase();
|
|
395
|
-
return
|
|
395
|
+
return Y(() => n.inputValue, () => {
|
|
396
396
|
d();
|
|
397
|
-
}),
|
|
397
|
+
}), oe(() => [l.value, n.inputElement], () => {
|
|
398
398
|
i.value = !1;
|
|
399
399
|
}, {
|
|
400
400
|
enabled: () => i.value,
|
|
401
401
|
eventName: "mousedown"
|
|
402
|
-
}), d(), (e, t) => i.value ? (
|
|
402
|
+
}), d(), (e, t) => i.value ? (U(), I("div", {
|
|
403
403
|
key: 0,
|
|
404
404
|
ref_key: "dropdown",
|
|
405
405
|
ref: l,
|
|
406
406
|
class: "autocomplete-dropdown",
|
|
407
|
-
style:
|
|
408
|
-
}, [(
|
|
407
|
+
style: Ce(u.value)
|
|
408
|
+
}, [(U(!0), I(M, null, G(f.value, (e, t) => (U(), I("div", {
|
|
409
409
|
key: t,
|
|
410
|
-
class:
|
|
410
|
+
class: H(["completion-item", { selected: t === a.value }]),
|
|
411
411
|
onClick: (t) => p(e)
|
|
412
|
-
}, [
|
|
412
|
+
}, [L("div", { class: H(["symbol-icon", m(e)]) }, [e.trilogySubType ? (U(), I("i", {
|
|
413
413
|
key: 0,
|
|
414
|
-
class:
|
|
415
|
-
}, null, 2)) : (
|
|
414
|
+
class: H(`mdi ${e.trilogySubType === "key" ? "mdi-key-outline" : e.trilogySubType === "property" ? "mdi-tag-outline" : "mdi-cube-outline"}`)
|
|
415
|
+
}, null, 2)) : (U(), I(M, { key: 1 }, [R(q(e.type === "function" ? "ƒ" : e.type === "variable" ? "V" : e.type === "class" ? "C" : e.type === "interface" ? "I" : e.type === "method" ? "M" : e.type === "property" ? "P" : e.type === "field" ? "F" : e.type === "constant" ? "K" : e.type === "enum" ? "E" : e.type === "keyword" ? "K" : "S"), 1)], 64))], 2), L("div", ht, [L("div", gt, q(e.label), 1), L("div", _t, q(e.description), 1)])], 10, mt))), 128))], 4)) : F("", !0);
|
|
416
416
|
}
|
|
417
417
|
}), [["__scopeId", "data-v-89468628"]]), yt = { class: "filter-container" }, bt = { class: "filter-input-wrapper" }, xt = ["value", "disabled"], St = [
|
|
418
418
|
"value",
|
|
@@ -432,7 +432,7 @@ var Pe = { class: "share-popup-body" }, Fe = { class: "json-container" }, Ie = {
|
|
|
432
432
|
}, jt = ["disabled"], Mt = { class: "button-content" }, Nt = ["disabled"], Pt = { class: "button-content" }, Ft = {
|
|
433
433
|
key: 0,
|
|
434
434
|
class: "loader-container"
|
|
435
|
-
}, It = ["disabled"], Lt = { class: "button-content" }, Rt = /*#__PURE__*/ e(/* @__PURE__ */
|
|
435
|
+
}, It = ["disabled"], Lt = { class: "button-content" }, Rt = /*#__PURE__*/ e(/* @__PURE__ */ B({
|
|
436
436
|
__name: "DashboardHeaderFilterInput",
|
|
437
437
|
props: {
|
|
438
438
|
filterValue: {
|
|
@@ -456,7 +456,7 @@ var Pe = { class: "share-popup-body" }, Fe = { class: "json-container" }, Ie = {
|
|
|
456
456
|
"clear-filter"
|
|
457
457
|
],
|
|
458
458
|
setup(e, { emit: t }) {
|
|
459
|
-
let n = e, r = t, i = v(), a =
|
|
459
|
+
let n = e, r = t, i = v(), a = W(n.isLoading), o = W(null), s = W(null), c = W(null), l = W(n.filterValue || ""), u = W(!1), d = W(!1), f = N(() => l.value.replace(/\n/g, " ")), p = N(() => l.value.trim().length > 0);
|
|
460
460
|
function m() {
|
|
461
461
|
r("filter-apply", l.value), u.value = !1, y();
|
|
462
462
|
}
|
|
@@ -500,20 +500,20 @@ var Pe = { class: "share-popup-body" }, Fe = { class: "json-container" }, Ie = {
|
|
|
500
500
|
function S(e) {
|
|
501
501
|
(e.ctrlKey || e.metaKey) && e.key === "Enter" && !e.shiftKey ? (e.preventDefault(), m()) : (e.ctrlKey || e.metaKey) && e.shiftKey && e.key === "Enter" ? (e.preventDefault(), b()) : e.key === "Escape" && (e.preventDefault(), y());
|
|
502
502
|
}
|
|
503
|
-
let C =
|
|
503
|
+
let C = N(() => (n.filterError || "").length > 0 ? "error" : l.value ? "valid" : "neutral");
|
|
504
504
|
function w(e) {
|
|
505
505
|
l.value = e.text, u.value = !0, r("filter-change", l.value);
|
|
506
506
|
let t = d.value ? s.value : o.value;
|
|
507
507
|
t && (t.focus(), t.setSelectionRange(e.cursorPosition, e.cursorPosition));
|
|
508
508
|
}
|
|
509
|
-
return
|
|
509
|
+
return Y(() => n.filterValue, (e) => {
|
|
510
510
|
e !== l.value && (l.value = e || "", u.value = !1);
|
|
511
|
-
}),
|
|
511
|
+
}), Y(() => n.isLoading, (e) => {
|
|
512
512
|
a.value = e;
|
|
513
|
-
}),
|
|
513
|
+
}), oe(() => [c.value, o.value], () => {
|
|
514
514
|
y();
|
|
515
|
-
}, { enabled: () => d.value }), (t, n) => (
|
|
516
|
-
|
|
515
|
+
}, { enabled: () => d.value }), (t, n) => (U(), I("div", yt, [L("div", bt, [
|
|
516
|
+
L("input", {
|
|
517
517
|
id: "filter",
|
|
518
518
|
ref_key: "filterInputRef",
|
|
519
519
|
ref: o,
|
|
@@ -524,59 +524,59 @@ var Pe = { class: "share-popup-body" }, Fe = { class: "json-container" }, Ie = {
|
|
|
524
524
|
onKeydown: x,
|
|
525
525
|
onFocus: _,
|
|
526
526
|
placeholder: "Add a global filter...",
|
|
527
|
-
class:
|
|
527
|
+
class: H({ "filter-error": C.value === "error" }),
|
|
528
528
|
disabled: a.value
|
|
529
529
|
}, null, 42, xt),
|
|
530
|
-
d.value ? (
|
|
530
|
+
d.value ? (U(), I("div", {
|
|
531
531
|
key: 0,
|
|
532
532
|
ref_key: "filterDropdownRef",
|
|
533
533
|
ref: c,
|
|
534
534
|
class: "filter-dropdown"
|
|
535
535
|
}, [
|
|
536
|
-
|
|
536
|
+
L("div", { class: "dropdown-header" }, [n[1] ||= L("span", null, "Global Filters", -1), L("button", {
|
|
537
537
|
onClick: y,
|
|
538
538
|
class: "close-button",
|
|
539
539
|
title: "Close (Esc)"
|
|
540
|
-
}, [...n[0] ||= [
|
|
541
|
-
|
|
540
|
+
}, [...n[0] ||= [L("i", { class: "mdi mdi-close" }, null, -1)]])]),
|
|
541
|
+
L("textarea", {
|
|
542
542
|
ref_key: "filterTextareaRef",
|
|
543
543
|
ref: s,
|
|
544
|
-
class:
|
|
544
|
+
class: H(["filter-textarea", { "filter-error": C.value === "error" }]),
|
|
545
545
|
value: l.value,
|
|
546
546
|
onInput: g,
|
|
547
547
|
onKeydown: S,
|
|
548
|
-
placeholder:
|
|
548
|
+
placeholder: J(i).hasActiveDefaultConnection ? "Use a SQL condition (ex color='blue' or color='red') or text to filter.\nUse Ctrl+Enter to apply, Ctrl+Shift+Enter for text to SQL" : "Use a SQL condition (ex color='blue') to filter.\nUse Ctrl+Enter to apply",
|
|
549
549
|
disabled: a.value,
|
|
550
550
|
rows: "4"
|
|
551
551
|
}, null, 42, St),
|
|
552
|
-
e.filterError ? (
|
|
553
|
-
|
|
554
|
-
|
|
552
|
+
e.filterError ? (U(), I("div", Ct, [n[2] ||= L("i", { class: "mdi mdi-alert-circle-outline" }, null, -1), L("span", null, q(e.filterError), 1)])) : F("", !0),
|
|
553
|
+
L("div", wt, [
|
|
554
|
+
L("button", {
|
|
555
555
|
onClick: m,
|
|
556
|
-
class:
|
|
556
|
+
class: H(["apply-button", { "has-changes": u.value }]),
|
|
557
557
|
disabled: a.value,
|
|
558
558
|
title: "Apply filter (Ctrl+Enter)"
|
|
559
|
-
}, [...n[3] ||= [
|
|
560
|
-
|
|
559
|
+
}, [...n[3] ||= [L("i", { class: "mdi mdi-check" }, null, -1), R(" Apply ", -1)]], 10, Tt),
|
|
560
|
+
J(i).hasActiveDefaultConnection ? (U(), I("button", {
|
|
561
561
|
key: 0,
|
|
562
562
|
onClick: b,
|
|
563
563
|
class: "llm-button",
|
|
564
564
|
disabled: a.value,
|
|
565
565
|
title: "Text to filter (Ctrl+Shift+Enter)"
|
|
566
566
|
}, [
|
|
567
|
-
|
|
568
|
-
a.value ? (
|
|
569
|
-
n[5] ||=
|
|
570
|
-
], 8, Et)) :
|
|
571
|
-
|
|
567
|
+
L("i", { class: H(["mdi mdi-auto-fix", { hidden: a.value }]) }, null, 2),
|
|
568
|
+
a.value ? (U(), I("div", Dt, [...n[4] ||= [L("div", { class: "loader" }, null, -1)]])) : F("", !0),
|
|
569
|
+
n[5] ||= R(" Text to Filter ", -1)
|
|
570
|
+
], 8, Et)) : F("", !0),
|
|
571
|
+
L("button", {
|
|
572
572
|
onClick: h,
|
|
573
573
|
class: "clear-button",
|
|
574
574
|
disabled: a.value,
|
|
575
575
|
title: "Clear filter"
|
|
576
|
-
}, [...n[6] ||= [
|
|
576
|
+
}, [...n[6] ||= [L("i", { class: "mdi mdi-close-circle-outline" }, null, -1), R(" Clear ", -1)]], 8, Ot)
|
|
577
577
|
])
|
|
578
|
-
], 512)) :
|
|
579
|
-
(d.value ? s.value : o.value) ? (
|
|
578
|
+
], 512)) : F("", !0),
|
|
579
|
+
(d.value ? s.value : o.value) ? (U(), P(vt, {
|
|
580
580
|
key: 1,
|
|
581
581
|
"input-value": l.value,
|
|
582
582
|
"completion-items": e.globalCompletion,
|
|
@@ -586,63 +586,63 @@ var Pe = { class: "share-popup-body" }, Fe = { class: "json-container" }, Ie = {
|
|
|
586
586
|
"input-value",
|
|
587
587
|
"completion-items",
|
|
588
588
|
"input-element"
|
|
589
|
-
])) :
|
|
590
|
-
|
|
591
|
-
C.value === "error" ? (
|
|
589
|
+
])) : F("", !0),
|
|
590
|
+
L("div", kt, [
|
|
591
|
+
C.value === "error" ? (U(), I("div", At, [n[8] ||= L("i", { class: "mdi mdi-alert-circle-outline" }, null, -1), z(k, {
|
|
592
592
|
content: e.filterError || "Unknown Error",
|
|
593
593
|
position: "bottom"
|
|
594
594
|
}, {
|
|
595
|
-
default:
|
|
595
|
+
default: X(() => [...n[7] ||= [L("span", {
|
|
596
596
|
class: "tooltip-trigger",
|
|
597
597
|
"data-testid": "filter-error-tooltip-trigger"
|
|
598
598
|
}, null, -1)]]),
|
|
599
599
|
_: 1
|
|
600
|
-
}, 8, ["content"])])) :
|
|
601
|
-
|
|
600
|
+
}, 8, ["content"])])) : F("", !0),
|
|
601
|
+
L("button", {
|
|
602
602
|
onClick: m,
|
|
603
|
-
class:
|
|
603
|
+
class: H(["input-icon-button", { "has-changes": u.value }]),
|
|
604
604
|
"data-testid": "filter-search-button",
|
|
605
605
|
disabled: a.value,
|
|
606
606
|
title: "Apply filter (Enter)"
|
|
607
|
-
}, [
|
|
607
|
+
}, [L("div", Mt, [n[10] ||= L("i", { class: "mdi mdi-magnify" }, null, -1), z(k, {
|
|
608
608
|
content: u.value ? "Apply changes (Enter)" : "Search (Enter)",
|
|
609
609
|
position: "top"
|
|
610
610
|
}, {
|
|
611
|
-
default:
|
|
611
|
+
default: X(() => [...n[9] ||= [L("span", { class: "tooltip-trigger" }, null, -1)]]),
|
|
612
612
|
_: 1
|
|
613
613
|
}, 8, ["content"])])], 10, jt),
|
|
614
|
-
|
|
614
|
+
J(i).hasActiveDefaultConnection ? (U(), I("button", {
|
|
615
615
|
key: 1,
|
|
616
616
|
onClick: b,
|
|
617
617
|
class: "input-icon-button",
|
|
618
618
|
"data-testid": "filter-llm-button",
|
|
619
619
|
disabled: a.value,
|
|
620
620
|
title: "Transform text to filter if you have a configured LLM connection"
|
|
621
|
-
}, [
|
|
622
|
-
|
|
623
|
-
a.value ? (
|
|
624
|
-
|
|
621
|
+
}, [L("div", Pt, [
|
|
622
|
+
L("i", { class: H(["mdi mdi-auto-fix", { hidden: a.value }]) }, null, 2),
|
|
623
|
+
a.value ? (U(), I("div", Ft, [...n[11] ||= [L("div", { class: "loader" }, null, -1)]])) : F("", !0),
|
|
624
|
+
z(k, {
|
|
625
625
|
content: a.value ? "Processing..." : "Text to filter (Ctrl+Shift+Enter)",
|
|
626
626
|
position: "top"
|
|
627
627
|
}, {
|
|
628
|
-
default:
|
|
628
|
+
default: X(() => [...n[12] ||= [L("span", { class: "tooltip-trigger" }, null, -1)]]),
|
|
629
629
|
_: 1
|
|
630
630
|
}, 8, ["content"])
|
|
631
|
-
])], 8, Nt)) :
|
|
632
|
-
p.value ? (
|
|
631
|
+
])], 8, Nt)) : F("", !0),
|
|
632
|
+
p.value ? (U(), I("button", {
|
|
633
633
|
key: 2,
|
|
634
634
|
onClick: h,
|
|
635
635
|
class: "input-icon-button clear-icon-button",
|
|
636
636
|
"data-testid": "clear-filters-button",
|
|
637
637
|
disabled: a.value,
|
|
638
638
|
title: "Clear all filters"
|
|
639
|
-
}, [
|
|
639
|
+
}, [L("div", Lt, [n[14] ||= L("i", { class: "mdi mdi-close" }, null, -1), z(k, {
|
|
640
640
|
content: "Clear all filters",
|
|
641
641
|
position: "top"
|
|
642
642
|
}, {
|
|
643
|
-
default:
|
|
643
|
+
default: X(() => [...n[13] ||= [L("span", { class: "tooltip-trigger" }, null, -1)]]),
|
|
644
644
|
_: 1
|
|
645
|
-
})])], 8, It)) :
|
|
645
|
+
})])], 8, It)) : F("", !0)
|
|
646
646
|
])
|
|
647
647
|
])]));
|
|
648
648
|
}
|
|
@@ -665,7 +665,7 @@ var Pe = { class: "share-popup-body" }, Fe = { class: "json-container" }, Ie = {
|
|
|
665
665
|
}, Gt = { class: "select-wrapper" }, Kt = ["value", "title"], qt = ["value"], Jt = ["value"], Yt = { class: "grid-actions top-actions" }, Xt = { class: "controls-row filter-row" }, Zt = { class: "grid-actions filter-actions" }, Qt = ["disabled", "title"], $t = { class: "filter-action-label" }, en = {
|
|
666
666
|
class: "mode-selector",
|
|
667
667
|
"data-testid": "mode-selector-wrapper"
|
|
668
|
-
}, tn = { class: "select-wrapper" }, nn = ["value", "disabled"], rn = /*#__PURE__*/ e(/* @__PURE__ */
|
|
668
|
+
}, tn = { class: "select-wrapper" }, nn = ["value", "disabled"], rn = /*#__PURE__*/ e(/* @__PURE__ */ B({
|
|
669
669
|
__name: "DashboardHeader",
|
|
670
670
|
props: {
|
|
671
671
|
dashboard: {
|
|
@@ -716,7 +716,7 @@ var Pe = { class: "share-popup-body" }, Fe = { class: "json-container" }, Ie = {
|
|
|
716
716
|
"theme-change"
|
|
717
717
|
],
|
|
718
718
|
setup(e, { emit: t }) {
|
|
719
|
-
let n = e, r = t, i = b(), a = re(), o = g(), s =
|
|
719
|
+
let n = e, r = t, i = b(), a = re(), o = g(), s = W(!1), c = W(!1), l = W(!1), u = W(!1), d = W(""), f = W(null);
|
|
720
720
|
function p() {
|
|
721
721
|
c.value = !c.value;
|
|
722
722
|
}
|
|
@@ -751,24 +751,24 @@ var Pe = { class: "share-popup-body" }, Fe = { class: "json-container" }, Ie = {
|
|
|
751
751
|
function C() {
|
|
752
752
|
u.value = !1, d.value = n.dashboard?.name || "Untitled Dashboard";
|
|
753
753
|
}
|
|
754
|
-
let w =
|
|
754
|
+
let w = N(() => n.selectedConnection ? i.connections[n.selectedConnection] || i.connectionByName(n.selectedConnection) : void 0), ee = N(() => {
|
|
755
755
|
let e = Object.values(i.connections).filter((e) => e.model && !e.deleted), t = w.value;
|
|
756
756
|
return t && !e.some((e) => e.id === t.id) && e.push(t), e.sort((e, t) => e.name.localeCompare(t.name));
|
|
757
|
-
}), T =
|
|
757
|
+
}), T = N(() => w.value?.id || n.selectedConnection), E = N(() => !!n.selectedConnection && !w.value), D = N(() => w.value?.name || n.selectedConnection), O = N(() => {
|
|
758
758
|
let e = w.value;
|
|
759
759
|
return e ? Object.values(a.editors).filter((t) => te(t.type) && t.connectionId === e.id).sort((e, t) => e.name.localeCompare(t.name)).map((e) => ({
|
|
760
760
|
id: e.id,
|
|
761
761
|
name: e.name.replace(/\//g, "."),
|
|
762
762
|
alias: ""
|
|
763
763
|
})) : [];
|
|
764
|
-
}), ne =
|
|
764
|
+
}), ne = N(() => n.dashboard?.imports || []);
|
|
765
765
|
function ie(e) {
|
|
766
766
|
r("import-change", e);
|
|
767
767
|
}
|
|
768
768
|
function ae() {
|
|
769
769
|
r("refresh");
|
|
770
770
|
}
|
|
771
|
-
let
|
|
771
|
+
let oe = N(() => {
|
|
772
772
|
switch (n.dashboard?.state) {
|
|
773
773
|
case "editing": return "mdi mdi-pencil-outline";
|
|
774
774
|
case "published": return "mdi mdi-eye-outline";
|
|
@@ -776,11 +776,11 @@ var Pe = { class: "share-popup-body" }, Fe = { class: "json-container" }, Ie = {
|
|
|
776
776
|
default: return "mdi mdi-eye-outline";
|
|
777
777
|
}
|
|
778
778
|
});
|
|
779
|
-
return (t, n) => (
|
|
780
|
-
|
|
779
|
+
return (t, n) => (U(), I("div", zt, [
|
|
780
|
+
L("div", { class: H(["controls-row title-row", { "view-title-row": e.dashboard.state !== "editing" }]) }, [L("div", {
|
|
781
781
|
class: "dashboard-title",
|
|
782
782
|
onClick: x
|
|
783
|
-
}, [u.value ?
|
|
783
|
+
}, [u.value ? Z((U(), I("input", {
|
|
784
784
|
key: 1,
|
|
785
785
|
ref_key: "titleInput",
|
|
786
786
|
ref: f,
|
|
@@ -790,46 +790,46 @@ var Pe = { class: "share-popup-body" }, Fe = { class: "json-container" }, Ie = {
|
|
|
790
790
|
onKeyup: [Me(S, ["enter"]), Me(C, ["esc"])],
|
|
791
791
|
class: "title-input",
|
|
792
792
|
type: "text"
|
|
793
|
-
}, null, 544)), [[
|
|
794
|
-
|
|
793
|
+
}, null, 544)), [[Ae, d.value]]) : (U(), I("span", Bt, [L("span", Vt, q(e.dashboard?.name || "Untitled Dashboard"), 1), e.editsLocked ? F("", !0) : (U(), I("span", Ht, [...n[11] ||= [L("i", { class: "mdi mdi-pencil-outline" }, null, -1)]]))]))]), e.dashboard.state === "editing" ? (U(), I("div", Ut, [
|
|
794
|
+
L("div", Wt, [L("div", Gt, [n[12] ||= L("i", { class: "mdi mdi-database-outline select-icon" }, null, -1), L("select", {
|
|
795
795
|
id: "connection",
|
|
796
796
|
"data-testid": "connection-selector",
|
|
797
797
|
onChange: n[1] ||= (e) => t.$emit("connection-change", e),
|
|
798
798
|
value: T.value,
|
|
799
799
|
title: D.value
|
|
800
|
-
}, [E.value ? (
|
|
800
|
+
}, [E.value ? (U(), I("option", {
|
|
801
801
|
key: 0,
|
|
802
802
|
value: e.selectedConnection,
|
|
803
803
|
disabled: ""
|
|
804
|
-
},
|
|
804
|
+
}, q(D.value) + " (unavailable) ", 9, qt)) : F("", !0), (U(!0), I(M, null, G(ee.value, (e) => (U(), I("option", {
|
|
805
805
|
key: e.id,
|
|
806
806
|
value: e.id
|
|
807
|
-
},
|
|
808
|
-
|
|
807
|
+
}, q(e.name), 9, Jt))), 128))], 40, Kt)])]),
|
|
808
|
+
z(se, {
|
|
809
809
|
"available-imports": O.value,
|
|
810
810
|
"active-imports": ne.value,
|
|
811
811
|
"onUpdate:imports": ie,
|
|
812
|
-
onExplore: n[2] ||= (e) =>
|
|
812
|
+
onExplore: n[2] ||= (e) => J(o).openTab("editors", null, e.id)
|
|
813
813
|
}, null, 8, ["available-imports", "active-imports"]),
|
|
814
|
-
|
|
814
|
+
L("div", Yt, [L("button", {
|
|
815
815
|
onClick: n[3] ||= (e) => t.$emit("add-item"),
|
|
816
816
|
class: "btn btn-success",
|
|
817
817
|
"data-testid": "add-item-button",
|
|
818
818
|
title: "Add Item"
|
|
819
|
-
}, [...n[13] ||= [
|
|
819
|
+
}, [...n[13] ||= [L("i", {
|
|
820
820
|
class: "mdi mdi-plus top-action-icon",
|
|
821
821
|
"aria-hidden": "true"
|
|
822
|
-
}, null, -1),
|
|
822
|
+
}, null, -1), L("span", { class: "top-action-label" }, "Add", -1)]]), L("button", {
|
|
823
823
|
onClick: n[4] ||= (e) => t.$emit("clear-items"),
|
|
824
824
|
class: "btn btn-danger",
|
|
825
825
|
"data-testid": "clear-items-button",
|
|
826
826
|
title: "Clear All"
|
|
827
|
-
}, [...n[14] ||= [
|
|
827
|
+
}, [...n[14] ||= [L("i", {
|
|
828
828
|
class: "mdi mdi-delete-outline top-action-icon",
|
|
829
829
|
"aria-hidden": "true"
|
|
830
|
-
}, null, -1),
|
|
831
|
-
])) :
|
|
832
|
-
|
|
830
|
+
}, null, -1), L("span", { class: "top-action-label" }, "Clear", -1)]])])
|
|
831
|
+
])) : F("", !0)], 2),
|
|
832
|
+
L("div", Xt, [z(Rt, {
|
|
833
833
|
"filter-value": e.dashboard?.filter || "",
|
|
834
834
|
"filter-error": e.filterError,
|
|
835
835
|
"is-loading": s.value,
|
|
@@ -843,8 +843,8 @@ var Pe = { class: "share-popup-body" }, Fe = { class: "json-container" }, Ie = {
|
|
|
843
843
|
"is-loading",
|
|
844
844
|
"global-completion",
|
|
845
845
|
"validate-filter"
|
|
846
|
-
]),
|
|
847
|
-
|
|
846
|
+
]), L("div", Zt, [
|
|
847
|
+
z(ue, {
|
|
848
848
|
action: v,
|
|
849
849
|
"use-default-style": !1,
|
|
850
850
|
class: "btn btn-secondary filter-action-btn dashboard-download-action",
|
|
@@ -853,73 +853,73 @@ var Pe = { class: "share-popup-body" }, Fe = { class: "json-container" }, Ie = {
|
|
|
853
853
|
title: "Download dashboard image",
|
|
854
854
|
"aria-label": "Download dashboard image"
|
|
855
855
|
}, {
|
|
856
|
-
default:
|
|
856
|
+
default: X(() => [...n[15] ||= [L("i", {
|
|
857
857
|
class: "mdi mdi-download-outline filter-action-icon",
|
|
858
858
|
"aria-hidden": "true"
|
|
859
|
-
}, null, -1),
|
|
859
|
+
}, null, -1), L("span", { class: "filter-action-label" }, "Download", -1)]]),
|
|
860
860
|
_: 1
|
|
861
861
|
}),
|
|
862
|
-
e.editsLocked ?
|
|
862
|
+
e.editsLocked ? F("", !0) : (U(), I("button", {
|
|
863
863
|
key: 0,
|
|
864
864
|
onClick: h,
|
|
865
|
-
class:
|
|
865
|
+
class: H(["btn filter-action-btn dashboard-theme-action", l.value ? "btn-primary" : "btn-secondary"]),
|
|
866
866
|
"data-testid": "dashboard-theme-button",
|
|
867
867
|
title: "Dashboard theme",
|
|
868
868
|
"aria-label": "Dashboard theme"
|
|
869
|
-
}, [...n[16] ||= [
|
|
869
|
+
}, [...n[16] ||= [L("i", {
|
|
870
870
|
class: "mdi mdi-palette-outline filter-action-icon",
|
|
871
871
|
"aria-hidden": "true"
|
|
872
|
-
}, null, -1),
|
|
873
|
-
|
|
872
|
+
}, null, -1), L("span", { class: "filter-action-label" }, "Theme", -1)]], 2)),
|
|
873
|
+
L("button", {
|
|
874
874
|
onClick: p,
|
|
875
875
|
class: "btn btn-secondary filter-action-btn dashboard-export-action",
|
|
876
876
|
"data-testid": "share-dashboard-button",
|
|
877
877
|
title: "Export dashboard",
|
|
878
878
|
"aria-label": "Export dashboard"
|
|
879
|
-
}, [...n[17] ||= [
|
|
879
|
+
}, [...n[17] ||= [L("i", {
|
|
880
880
|
class: "mdi mdi-export-variant filter-action-icon",
|
|
881
881
|
"aria-hidden": "true"
|
|
882
|
-
}, null, -1),
|
|
883
|
-
|
|
882
|
+
}, null, -1), L("span", { class: "filter-action-label" }, "Export", -1)]]),
|
|
883
|
+
L("button", {
|
|
884
884
|
onClick: n[6] ||= (e) => t.$emit("navigate-up"),
|
|
885
885
|
class: "btn btn-secondary filter-action-btn mobile-dashboard-nav-action",
|
|
886
886
|
title: "Previous dashboard item",
|
|
887
887
|
"aria-label": "Previous dashboard item"
|
|
888
|
-
}, [...n[18] ||= [
|
|
888
|
+
}, [...n[18] ||= [L("i", {
|
|
889
889
|
class: "mdi mdi-chevron-up filter-action-icon",
|
|
890
890
|
"aria-hidden": "true"
|
|
891
891
|
}, null, -1)]]),
|
|
892
|
-
|
|
892
|
+
L("button", {
|
|
893
893
|
onClick: n[7] ||= (e) => t.$emit("navigate-down"),
|
|
894
894
|
class: "btn btn-secondary filter-action-btn mobile-dashboard-nav-action",
|
|
895
895
|
title: "Next dashboard item",
|
|
896
896
|
"aria-label": "Next dashboard item"
|
|
897
|
-
}, [...n[19] ||= [
|
|
897
|
+
}, [...n[19] ||= [L("i", {
|
|
898
898
|
class: "mdi mdi-chevron-down filter-action-icon",
|
|
899
899
|
"aria-hidden": "true"
|
|
900
900
|
}, null, -1)]]),
|
|
901
|
-
|
|
901
|
+
L("button", {
|
|
902
902
|
onClick: n[8] ||= (e) => t.$emit("toggle-chat"),
|
|
903
|
-
class:
|
|
903
|
+
class: H(["btn filter-action-btn", e.chatOpen ? "btn-primary" : "btn-secondary"]),
|
|
904
904
|
disabled: !e.hasLlmConnection,
|
|
905
905
|
"data-testid": "toggle-chat-button",
|
|
906
906
|
title: e.hasLlmConnection ? "Toggle AI assistant" : "No LLM connection configured",
|
|
907
907
|
"aria-label": "Toggle AI assistant"
|
|
908
|
-
}, [n[20] ||=
|
|
908
|
+
}, [n[20] ||= L("i", {
|
|
909
909
|
class: "mdi mdi-creation-outline filter-action-icon",
|
|
910
910
|
"aria-hidden": "true"
|
|
911
|
-
}, null, -1),
|
|
912
|
-
|
|
911
|
+
}, null, -1), L("span", $t, q(e.chatOpen ? "Close AI" : "AI"), 1)], 10, Qt),
|
|
912
|
+
L("button", {
|
|
913
913
|
onClick: ae,
|
|
914
914
|
class: "btn btn-primary filter-action-btn",
|
|
915
915
|
"data-testid": "refresh-button",
|
|
916
916
|
title: "Refresh dashboard",
|
|
917
917
|
"aria-label": "Refresh dashboard"
|
|
918
|
-
}, [...n[21] ||= [
|
|
918
|
+
}, [...n[21] ||= [L("i", {
|
|
919
919
|
class: "mdi mdi-refresh filter-action-icon",
|
|
920
920
|
"aria-hidden": "true"
|
|
921
|
-
}, null, -1),
|
|
922
|
-
|
|
921
|
+
}, null, -1), L("span", { class: "filter-action-label" }, "Refresh", -1)]]),
|
|
922
|
+
L("div", en, [L("div", tn, [L("i", { class: H(oe.value + " select-icon") }, null, 2), L("select", {
|
|
923
923
|
id: "viewMode",
|
|
924
924
|
"data-testid": "mode-selector",
|
|
925
925
|
onChange: y,
|
|
@@ -927,26 +927,26 @@ var Pe = { class: "share-popup-body" }, Fe = { class: "json-container" }, Ie = {
|
|
|
927
927
|
disabled: e.editsLocked,
|
|
928
928
|
class: "mode-select"
|
|
929
929
|
}, [...n[22] ||= [
|
|
930
|
-
|
|
930
|
+
L("option", {
|
|
931
931
|
value: "editing",
|
|
932
932
|
"data-testid": "edit-mode-option"
|
|
933
933
|
}, "Edit", -1),
|
|
934
|
-
|
|
934
|
+
L("option", {
|
|
935
935
|
value: "published",
|
|
936
936
|
"data-testid": "view-mode-option"
|
|
937
937
|
}, "View", -1),
|
|
938
|
-
|
|
938
|
+
L("option", {
|
|
939
939
|
value: "fullscreen",
|
|
940
940
|
"data-testid": "fullscreen-mode-option"
|
|
941
941
|
}, "Fullscreen", -1)
|
|
942
942
|
]], 40, nn)])])
|
|
943
943
|
])]),
|
|
944
|
-
|
|
944
|
+
z(Le, {
|
|
945
945
|
dashboard: e.dashboard,
|
|
946
946
|
"is-open": c.value,
|
|
947
947
|
onClose: m
|
|
948
948
|
}, null, 8, ["dashboard", "is-open"]),
|
|
949
|
-
|
|
949
|
+
z(pt, {
|
|
950
950
|
dashboard: e.dashboard,
|
|
951
951
|
"is-open": l.value,
|
|
952
952
|
onClose: n[9] ||= (e) => l.value = !1,
|
|
@@ -958,14 +958,14 @@ var Pe = { class: "share-popup-body" }, Fe = { class: "json-container" }, Ie = {
|
|
|
958
958
|
//#endregion
|
|
959
959
|
//#region components/dashboard/useDashboardItemShell.ts
|
|
960
960
|
function an(e) {
|
|
961
|
-
let t =
|
|
961
|
+
let t = W(null), n = W(!1), r = W(null), i = W(!1), a = W(null), o = W(!1), s = () => {
|
|
962
962
|
a.value &&= (clearTimeout(a.value), null);
|
|
963
963
|
}, c = () => {
|
|
964
964
|
if (!t.value) return 0;
|
|
965
965
|
let e = t.value.getBoundingClientRect(), n = window.scrollY || document.documentElement.scrollTop, r = e.top + n, i = Math.floor(r / 200) * 10;
|
|
966
966
|
return Math.min(i, 100);
|
|
967
967
|
};
|
|
968
|
-
|
|
968
|
+
Te(() => {
|
|
969
969
|
setTimeout(() => {
|
|
970
970
|
let t = c();
|
|
971
971
|
if (!e.results.value) {
|
|
@@ -976,9 +976,9 @@ function an(e) {
|
|
|
976
976
|
n.value = !0;
|
|
977
977
|
}, t);
|
|
978
978
|
}, 0);
|
|
979
|
-
}),
|
|
979
|
+
}), Ee(() => {
|
|
980
980
|
s();
|
|
981
|
-
}),
|
|
981
|
+
}), Y(e.loading, (t) => {
|
|
982
982
|
if (s(), t) {
|
|
983
983
|
a.value = setTimeout(() => {
|
|
984
984
|
i.value = !0, a.value = null;
|
|
@@ -1022,13 +1022,13 @@ function an(e) {
|
|
|
1022
1022
|
}
|
|
1023
1023
|
//#endregion
|
|
1024
1024
|
//#region components/dashboard/DashboardChart.vue?vue&type=script&lang.ts
|
|
1025
|
-
var on =
|
|
1025
|
+
var on = B({
|
|
1026
1026
|
name: "DashboardChart",
|
|
1027
1027
|
components: {
|
|
1028
|
-
VegaLiteChart:
|
|
1029
|
-
ErrorMessage:
|
|
1030
|
-
LoadingView:
|
|
1031
|
-
DrilldownPane:
|
|
1028
|
+
VegaLiteChart: ae,
|
|
1029
|
+
ErrorMessage: A,
|
|
1030
|
+
LoadingView: de,
|
|
1031
|
+
DrilldownPane: fe
|
|
1032
1032
|
},
|
|
1033
1033
|
props: {
|
|
1034
1034
|
dashboardId: {
|
|
@@ -1069,12 +1069,12 @@ var on = V({
|
|
|
1069
1069
|
}
|
|
1070
1070
|
},
|
|
1071
1071
|
setup(e, { emit: t }) {
|
|
1072
|
-
let n =
|
|
1072
|
+
let n = W(null), r = N(() => e.getItemData(e.itemId, e.dashboardId)), i = N(() => r.value.structured_content.query), a = N(() => r.value.results || null), s = N(() => r.value.name || ""), c = N(() => (r.value.height || 300) - 75), l = N(() => r.value.width || 300), u = N(() => {
|
|
1073
1073
|
if (r.value.chartConfig) return {
|
|
1074
1074
|
...r.value.chartConfig,
|
|
1075
1075
|
showTitle: !1
|
|
1076
1076
|
};
|
|
1077
|
-
}), d =
|
|
1077
|
+
}), d = N(() => r.value.loading || !1), f = N(() => r.value.error || null), p = N(() => r.value.filters || []), m = N(() => r.value.loadStartTime || null), h = N(() => (r.value.chartFilters || []).map((e) => e.value)), g = N(() => r.value.hasDrilldown), _ = N(() => r.value.onRefresh || null), v = V("analyticsStore", null), y = (t) => {
|
|
1078
1078
|
let n = {
|
|
1079
1079
|
...t,
|
|
1080
1080
|
showTitle: !1
|
|
@@ -1106,10 +1106,10 @@ var on = V({
|
|
|
1106
1106
|
error: f,
|
|
1107
1107
|
filters: p,
|
|
1108
1108
|
query: i,
|
|
1109
|
-
chartHeight:
|
|
1109
|
+
chartHeight: c,
|
|
1110
1110
|
chartWidth: l,
|
|
1111
1111
|
chartConfig: u,
|
|
1112
|
-
chartTitle:
|
|
1112
|
+
chartTitle: s,
|
|
1113
1113
|
onChartConfigChange: y,
|
|
1114
1114
|
onRefresh: _,
|
|
1115
1115
|
handleLocalRefresh: ee,
|
|
@@ -1128,7 +1128,7 @@ var on = V({
|
|
|
1128
1128
|
},
|
|
1129
1129
|
activeDrilldown: n,
|
|
1130
1130
|
activateDrilldown: (e) => {
|
|
1131
|
-
let t = e.filters, r = Object.keys(t)[0], i =
|
|
1131
|
+
let t = e.filters, r = Object.keys(t)[0], i = o(e.filters);
|
|
1132
1132
|
r && (n.value = {
|
|
1133
1133
|
remove: r,
|
|
1134
1134
|
filter: i
|
|
@@ -1169,14 +1169,14 @@ var on = V({
|
|
|
1169
1169
|
class: "loading-overlay"
|
|
1170
1170
|
};
|
|
1171
1171
|
function cn(e, t, n, r, i, a) {
|
|
1172
|
-
let o =
|
|
1173
|
-
return
|
|
1172
|
+
let o = K("drilldown-pane"), s = K("ErrorMessage"), c = K("VegaLiteChart"), l = K("LoadingView");
|
|
1173
|
+
return U(), I("div", {
|
|
1174
1174
|
ref: "chartContainer",
|
|
1175
|
-
class:
|
|
1175
|
+
class: H(["chart-placeholder no-drag", { "chart-placeholder-edit-mode": e.editMode }]),
|
|
1176
1176
|
onMouseenter: t[3] ||= (...t) => e.onChartMouseEnter && e.onChartMouseEnter(...t),
|
|
1177
1177
|
onMouseleave: t[4] ||= (...t) => e.onChartMouseLeave && e.onChartMouseLeave(...t)
|
|
1178
1178
|
}, [
|
|
1179
|
-
e.activeDrilldown ? (
|
|
1179
|
+
e.activeDrilldown ? (U(), P(o, {
|
|
1180
1180
|
key: 0,
|
|
1181
1181
|
"drilldown-remove": e.activeDrilldown.remove,
|
|
1182
1182
|
"drilldown-filter": e.activeDrilldown.filter,
|
|
@@ -1188,7 +1188,7 @@ function cn(e, t, n, r, i, a) {
|
|
|
1188
1188
|
"drilldown-filter",
|
|
1189
1189
|
"symbols",
|
|
1190
1190
|
"onSubmit"
|
|
1191
|
-
])) : e.error && !e.loading ? (
|
|
1191
|
+
])) : e.error && !e.loading ? (U(), P(s, {
|
|
1192
1192
|
key: 1,
|
|
1193
1193
|
compact: !0,
|
|
1194
1194
|
details: e.error,
|
|
@@ -1198,7 +1198,7 @@ function cn(e, t, n, r, i, a) {
|
|
|
1198
1198
|
"details",
|
|
1199
1199
|
"query",
|
|
1200
1200
|
"filters"
|
|
1201
|
-
])) : e.results && e.ready ? (
|
|
1201
|
+
])) : e.results && e.ready ? (U(), P(c, {
|
|
1202
1202
|
key: 2,
|
|
1203
1203
|
id: `${e.itemId}-${e.dashboardId}`,
|
|
1204
1204
|
columns: e.results.headers,
|
|
@@ -1233,33 +1233,33 @@ function cn(e, t, n, r, i, a) {
|
|
|
1233
1233
|
"onRefreshClick",
|
|
1234
1234
|
"onDrilldownClick",
|
|
1235
1235
|
"onRevertDrilldown"
|
|
1236
|
-
])) :
|
|
1237
|
-
e.loading && e.showLoading ? (
|
|
1236
|
+
])) : F("", !0),
|
|
1237
|
+
e.loading && e.showLoading ? (U(), I("div", sn, [z(l, {
|
|
1238
1238
|
startTime: e.startTime,
|
|
1239
1239
|
text: "",
|
|
1240
1240
|
subtle: ""
|
|
1241
|
-
}, null, 8, ["startTime"])])) :
|
|
1242
|
-
!e.editMode || !(e.results && e.ready) ? (
|
|
1241
|
+
}, null, 8, ["startTime"])])) : F("", !0),
|
|
1242
|
+
!e.editMode || !(e.results && e.ready) ? (U(), I("div", {
|
|
1243
1243
|
key: 4,
|
|
1244
|
-
class:
|
|
1245
|
-
}, [
|
|
1244
|
+
class: H(["controls-toggle", { "controls-visible": e.controlsVisible }])
|
|
1245
|
+
}, [L("button", {
|
|
1246
1246
|
onClick: t[1] ||= (...t) => e.handleLocalRefresh && e.handleLocalRefresh(...t),
|
|
1247
1247
|
class: "control-btn",
|
|
1248
1248
|
"data-testid": "refresh-chart-btn",
|
|
1249
1249
|
title: "Refresh table"
|
|
1250
|
-
}, [...t[5] ||= [
|
|
1250
|
+
}, [...t[5] ||= [L("i", { class: "mdi mdi-refresh icon" }, null, -1)]]), L("button", {
|
|
1251
1251
|
onClick: t[2] ||= (...t) => e.revertDrilldown && e.revertDrilldown(...t),
|
|
1252
1252
|
class: "control-btn",
|
|
1253
1253
|
"data-testid": "refresh-chart-btn",
|
|
1254
1254
|
title: "Clear Drilldown"
|
|
1255
|
-
}, [...t[6] ||= [
|
|
1255
|
+
}, [...t[6] ||= [L("i", { class: "mdi mdi-undo icon" }, null, -1)]])], 2)) : F("", !0)
|
|
1256
1256
|
], 34);
|
|
1257
1257
|
}
|
|
1258
|
-
var ln = /*#__PURE__*/ e(on, [["render", cn], ["__scopeId", "data-v-36046d80"]]), un =
|
|
1258
|
+
var ln = /*#__PURE__*/ e(on, [["render", cn], ["__scopeId", "data-v-36046d80"]]), un = B({
|
|
1259
1259
|
name: "DynamicMarkdownChart",
|
|
1260
1260
|
components: {
|
|
1261
|
-
ErrorMessage:
|
|
1262
|
-
MarkdownRenderer:
|
|
1261
|
+
ErrorMessage: A,
|
|
1262
|
+
MarkdownRenderer: pe
|
|
1263
1263
|
},
|
|
1264
1264
|
props: {
|
|
1265
1265
|
dashboardId: {
|
|
@@ -1302,10 +1302,10 @@ var ln = /*#__PURE__*/ e(on, [["render", cn], ["__scopeId", "data-v-36046d80"]])
|
|
|
1302
1302
|
}
|
|
1303
1303
|
},
|
|
1304
1304
|
setup(e) {
|
|
1305
|
-
let t =
|
|
1305
|
+
let t = N(() => e.getItemData(e.itemId, e.dashboardId)), n = N(() => t.value.structured_content || {
|
|
1306
1306
|
markdown: "",
|
|
1307
1307
|
query: ""
|
|
1308
|
-
}), r =
|
|
1308
|
+
}), r = N(() => n.value.markdown || ""), i = N(() => n.value.query || ""), a = N(() => t.value.results || null), o = N(() => t.value.loading || !1), s = N(() => t.value.error || null), c = N(() => t.value.filters || []), l = N(() => t.value.loadStartTime || null), u = N(() => t.value.onRefresh || null), d = V("connectionStore"), f = V("analyticsStore");
|
|
1309
1309
|
if (!d) throw Error("Connection store not found!");
|
|
1310
1310
|
let { chartContainer: p, ready: m, controlsVisible: h, handleLocalRefresh: g, onChartMouseEnter: _, onChartMouseLeave: v } = an({
|
|
1311
1311
|
dashboardId: () => e.dashboardId,
|
|
@@ -1339,13 +1339,13 @@ var ln = /*#__PURE__*/ e(on, [["render", cn], ["__scopeId", "data-v-36046d80"]])
|
|
|
1339
1339
|
//#endregion
|
|
1340
1340
|
//#region components/dashboard/DashboardMarkdown.vue
|
|
1341
1341
|
function dn(e, t, n, r, i, a) {
|
|
1342
|
-
let o =
|
|
1343
|
-
return
|
|
1342
|
+
let o = K("ErrorMessage"), s = K("MarkdownRenderer");
|
|
1343
|
+
return U(), I("div", {
|
|
1344
1344
|
ref: "chartContainer",
|
|
1345
|
-
class:
|
|
1345
|
+
class: H(["chart-placeholder no-drag", { "chart-placeholder-edit-mode": e.editMode }]),
|
|
1346
1346
|
onMouseenter: t[1] ||= (...t) => e.onChartMouseEnter && e.onChartMouseEnter(...t),
|
|
1347
1347
|
onMouseleave: t[2] ||= (...t) => e.onChartMouseLeave && e.onChartMouseLeave(...t)
|
|
1348
|
-
}, [e.error && !e.loading ? (
|
|
1348
|
+
}, [e.error && !e.loading ? (U(), P(o, {
|
|
1349
1349
|
key: 0,
|
|
1350
1350
|
compact: !0,
|
|
1351
1351
|
details: e.error,
|
|
@@ -1355,7 +1355,7 @@ function dn(e, t, n, r, i, a) {
|
|
|
1355
1355
|
"details",
|
|
1356
1356
|
"query",
|
|
1357
1357
|
"filters"
|
|
1358
|
-
])) : e.ready ? (
|
|
1358
|
+
])) : e.ready ? (U(), P(s, {
|
|
1359
1359
|
key: 1,
|
|
1360
1360
|
markdown: e.markdown,
|
|
1361
1361
|
results: e.results,
|
|
@@ -1364,22 +1364,22 @@ function dn(e, t, n, r, i, a) {
|
|
|
1364
1364
|
"markdown",
|
|
1365
1365
|
"results",
|
|
1366
1366
|
"loading"
|
|
1367
|
-
])) :
|
|
1367
|
+
])) : F("", !0), !e.loading && e.editMode ? (U(), I("div", {
|
|
1368
1368
|
key: 2,
|
|
1369
|
-
class:
|
|
1370
|
-
}, [
|
|
1369
|
+
class: H(["controls-toggle", { "controls-visible": e.controlsVisible }])
|
|
1370
|
+
}, [L("button", {
|
|
1371
1371
|
onClick: t[0] ||= (...t) => e.handleLocalRefresh && e.handleLocalRefresh(...t),
|
|
1372
1372
|
class: "control-btn",
|
|
1373
1373
|
"data-testid": "refresh-chart-btn",
|
|
1374
1374
|
title: "Refresh text"
|
|
1375
|
-
}, [...t[3] ||= [
|
|
1375
|
+
}, [...t[3] ||= [L("i", { class: "mdi mdi-refresh icon" }, null, -1)]])], 2)) : F("", !0)], 34);
|
|
1376
1376
|
}
|
|
1377
|
-
var fn = /*#__PURE__*/ e(un, [["render", dn], ["__scopeId", "data-v-ffafce48"]]), pn =
|
|
1377
|
+
var fn = /*#__PURE__*/ e(un, [["render", dn], ["__scopeId", "data-v-ffafce48"]]), pn = B({
|
|
1378
1378
|
name: "DashboardTable",
|
|
1379
1379
|
components: {
|
|
1380
|
-
DataTable:
|
|
1381
|
-
ErrorMessage:
|
|
1382
|
-
LoadingView:
|
|
1380
|
+
DataTable: le,
|
|
1381
|
+
ErrorMessage: A,
|
|
1382
|
+
LoadingView: de
|
|
1383
1383
|
},
|
|
1384
1384
|
props: {
|
|
1385
1385
|
dashboardId: {
|
|
@@ -1416,7 +1416,7 @@ var fn = /*#__PURE__*/ e(un, [["render", dn], ["__scopeId", "data-v-ffafce48"]])
|
|
|
1416
1416
|
}
|
|
1417
1417
|
},
|
|
1418
1418
|
setup(e, { emit: t }) {
|
|
1419
|
-
let n =
|
|
1419
|
+
let n = N(() => e.getItemData(e.itemId, e.dashboardId)), r = N(() => n.value.content), i = N(() => n.value.results || null), a = N(() => n.value.loading || !1), o = N(() => n.value.error || null), s = N(() => n.value.filters || []), c = N(() => n.value.loadStartTime || null), l = N(() => (n.value.height || 300) - 75), u = N(() => (n.value.width || 300) - 100), d = N(() => n.value.onRefresh || null), f = V("connectionStore"), p = V("analyticsStore");
|
|
1420
1420
|
if (!f) throw Error("Connection store not found!");
|
|
1421
1421
|
let { chartContainer: m, ready: h, showLoading: g, controlsVisible: _, handleLocalRefresh: v, onChartMouseEnter: y, onChartMouseLeave: b } = an({
|
|
1422
1422
|
dashboardId: () => e.dashboardId,
|
|
@@ -1465,14 +1465,14 @@ var fn = /*#__PURE__*/ e(un, [["render", dn], ["__scopeId", "data-v-ffafce48"]])
|
|
|
1465
1465
|
class: "loading-overlay"
|
|
1466
1466
|
};
|
|
1467
1467
|
function hn(e, t, n, r, i, a) {
|
|
1468
|
-
let o =
|
|
1469
|
-
return
|
|
1468
|
+
let o = K("ErrorMessage"), s = K("data-table"), c = K("LoadingView");
|
|
1469
|
+
return U(), I("div", {
|
|
1470
1470
|
ref: "chartContainer",
|
|
1471
|
-
class:
|
|
1471
|
+
class: H(["chart-placeholder no-drag", { "chart-placeholder-edit-mode": e.editMode }]),
|
|
1472
1472
|
onMouseenter: t[1] ||= (...t) => e.onChartMouseEnter && e.onChartMouseEnter(...t),
|
|
1473
1473
|
onMouseleave: t[2] ||= (...t) => e.onChartMouseLeave && e.onChartMouseLeave(...t)
|
|
1474
1474
|
}, [
|
|
1475
|
-
e.error && !e.loading ? (
|
|
1475
|
+
e.error && !e.loading ? (U(), P(o, {
|
|
1476
1476
|
key: 0,
|
|
1477
1477
|
compact: !0,
|
|
1478
1478
|
details: e.error,
|
|
@@ -1482,7 +1482,7 @@ function hn(e, t, n, r, i, a) {
|
|
|
1482
1482
|
"details",
|
|
1483
1483
|
"query",
|
|
1484
1484
|
"filters"
|
|
1485
|
-
])) : e.results && e.ready ? (
|
|
1485
|
+
])) : e.results && e.ready ? (U(), P(s, {
|
|
1486
1486
|
key: 1,
|
|
1487
1487
|
id: `${e.itemId}-${e.dashboardId}`,
|
|
1488
1488
|
headers: e.results.headers,
|
|
@@ -1500,27 +1500,27 @@ function hn(e, t, n, r, i, a) {
|
|
|
1500
1500
|
"containerHeight",
|
|
1501
1501
|
"onCellClick",
|
|
1502
1502
|
"onBackgroundClick"
|
|
1503
|
-
])) :
|
|
1504
|
-
e.loading && e.showLoading ? (
|
|
1503
|
+
])) : F("", !0),
|
|
1504
|
+
e.loading && e.showLoading ? (U(), I("div", mn, [z(c, {
|
|
1505
1505
|
startTime: e.startTime,
|
|
1506
1506
|
text: "",
|
|
1507
1507
|
subtle: ""
|
|
1508
|
-
}, null, 8, ["startTime"])])) :
|
|
1509
|
-
!e.loading && e.editMode ? (
|
|
1508
|
+
}, null, 8, ["startTime"])])) : F("", !0),
|
|
1509
|
+
!e.loading && e.editMode ? (U(), I("div", {
|
|
1510
1510
|
key: 3,
|
|
1511
|
-
class:
|
|
1512
|
-
}, [
|
|
1511
|
+
class: H(["controls-toggle", { "controls-visible": e.controlsVisible }])
|
|
1512
|
+
}, [L("button", {
|
|
1513
1513
|
onClick: t[0] ||= (...t) => e.handleLocalRefresh && e.handleLocalRefresh(...t),
|
|
1514
1514
|
class: "control-btn",
|
|
1515
1515
|
"data-testid": "refresh-chart-btn",
|
|
1516
1516
|
title: "Refresh table"
|
|
1517
|
-
}, [...t[3] ||= [
|
|
1517
|
+
}, [...t[3] ||= [L("i", { class: "mdi mdi-refresh icon" }, null, -1)]])], 2)) : F("", !0)
|
|
1518
1518
|
], 34);
|
|
1519
1519
|
}
|
|
1520
1520
|
var gn = /*#__PURE__*/ e(pn, [["render", hn], ["__scopeId", "data-v-2fa93a82"]]), _n = { class: "filter-tile" }, vn = ["title"], yn = ["disabled", "aria-expanded"], bn = ["title"], xn = { class: "dropdown-search" }, Sn = ["placeholder"], Cn = { class: "dropdown-scroll" }, wn = ["checked"], Tn = ["checked", "onChange"], En = ["innerHTML"], Dn = {
|
|
1521
1521
|
key: 1,
|
|
1522
1522
|
class: "dropdown-empty"
|
|
1523
|
-
}, On = { class: "dropdown-footer" }, kn = /*#__PURE__*/ e(/* @__PURE__ */
|
|
1523
|
+
}, On = { class: "dropdown-footer" }, kn = /*#__PURE__*/ e(/* @__PURE__ */ B({
|
|
1524
1524
|
__name: "DashboardDataSelector",
|
|
1525
1525
|
props: {
|
|
1526
1526
|
headers: {
|
|
@@ -1547,7 +1547,7 @@ var gn = /*#__PURE__*/ e(pn, [["render", hn], ["__scopeId", "data-v-2fa93a82"]])
|
|
|
1547
1547
|
},
|
|
1548
1548
|
emits: ["cell-click", "background-click"],
|
|
1549
1549
|
setup(e, { emit: t }) {
|
|
1550
|
-
let r = e, i = t, a =
|
|
1550
|
+
let r = e, i = t, a = W([...r.initialSelection ?? []]), o = W([]), s = W(""), c = W(!1), l = W(null), u = W(null), d = W(null), f = N(() => Array.from(r.headers.values())), p = N(() => f.value[0] || null), m = N(() => f.value[1] || f.value[0] || null);
|
|
1551
1551
|
function h(e, t) {
|
|
1552
1552
|
switch (t.type) {
|
|
1553
1553
|
case n.FLOAT: return t.traits?.includes("usd") ? `$${Number(e).toFixed(t.scale || 2)}` : t.traits?.includes("percent") ? `${(Number(e) * 100).toFixed(2)}%` : Number(e).toFixed(t.scale || 2);
|
|
@@ -1561,7 +1561,7 @@ var gn = /*#__PURE__*/ e(pn, [["render", hn], ["__scopeId", "data-v-2fa93a82"]])
|
|
|
1561
1561
|
default: return String(e);
|
|
1562
1562
|
}
|
|
1563
1563
|
}
|
|
1564
|
-
let g =
|
|
1564
|
+
let g = N(() => {
|
|
1565
1565
|
let e = p.value, t = m.value;
|
|
1566
1566
|
if (!e || !t || !r.results || r.results.length === 0) return [];
|
|
1567
1567
|
let n = e.name, i = t.name, a = [];
|
|
@@ -1573,15 +1573,15 @@ var gn = /*#__PURE__*/ e(pn, [["render", hn], ["__scopeId", "data-v-2fa93a82"]])
|
|
|
1573
1573
|
});
|
|
1574
1574
|
}
|
|
1575
1575
|
return a;
|
|
1576
|
-
}), _ =
|
|
1576
|
+
}), _ = N(() => {
|
|
1577
1577
|
let e = /* @__PURE__ */ new Map();
|
|
1578
1578
|
for (let t of g.value) e.set(t.value, t.label);
|
|
1579
1579
|
return e;
|
|
1580
|
-
}), v =
|
|
1580
|
+
}), v = N(() => {
|
|
1581
1581
|
if (!s.value) return g.value;
|
|
1582
1582
|
let e = s.value.toLowerCase();
|
|
1583
1583
|
return g.value.filter((t) => t.label.toLowerCase().includes(e));
|
|
1584
|
-
}), y =
|
|
1584
|
+
}), y = N(() => p.value?.name || "Field"), b = N(() => a.value.length > 0), x = N(() => !g.value || g.value.length === 0 ? "No data available" : a.value.length === 0 ? `All (${g.value.length})` : a.value.length === 1 ? _.value.get(a.value[0]) ?? String(a.value[0]) : `${_.value.get(a.value[0]) ?? String(a.value[0])} +${a.value.length - 1}`), S = N(() => !g.value || g.value.length === 0), C = N(() => v.value.length > 0 && v.value.every((e) => o.value.includes(e.value))), w = W({});
|
|
1585
1585
|
function ee() {
|
|
1586
1586
|
let e = l.value;
|
|
1587
1587
|
if (!e) {
|
|
@@ -1599,7 +1599,7 @@ var gn = /*#__PURE__*/ e(pn, [["render", hn], ["__scopeId", "data-v-2fa93a82"]])
|
|
|
1599
1599
|
};
|
|
1600
1600
|
}
|
|
1601
1601
|
function T() {
|
|
1602
|
-
S.value || (o.value = [...a.value], s.value = "", c.value = !0,
|
|
1602
|
+
S.value || (o.value = [...a.value], s.value = "", c.value = !0, Se(() => {
|
|
1603
1603
|
ee(), d.value?.focus();
|
|
1604
1604
|
}));
|
|
1605
1605
|
}
|
|
@@ -1609,13 +1609,13 @@ var gn = /*#__PURE__*/ e(pn, [["render", hn], ["__scopeId", "data-v-2fa93a82"]])
|
|
|
1609
1609
|
function te() {
|
|
1610
1610
|
c.value ? E() : T();
|
|
1611
1611
|
}
|
|
1612
|
-
|
|
1612
|
+
oe(() => [l.value, u.value], () => E(), { enabled: () => c.value });
|
|
1613
1613
|
function D() {
|
|
1614
1614
|
c.value && ee();
|
|
1615
1615
|
}
|
|
1616
|
-
|
|
1616
|
+
Y(c, (e) => {
|
|
1617
1617
|
e ? (window.addEventListener("scroll", D, !0), window.addEventListener("resize", D), window.visualViewport?.addEventListener("scroll", D), window.visualViewport?.addEventListener("resize", D)) : (window.removeEventListener("scroll", D, !0), window.removeEventListener("resize", D), window.visualViewport?.removeEventListener("scroll", D), window.visualViewport?.removeEventListener("resize", D));
|
|
1618
|
-
}),
|
|
1618
|
+
}), we(() => {
|
|
1619
1619
|
window.removeEventListener("scroll", D, !0), window.removeEventListener("resize", D), window.visualViewport?.removeEventListener("scroll", D), window.visualViewport?.removeEventListener("resize", D);
|
|
1620
1620
|
});
|
|
1621
1621
|
function O(e) {
|
|
@@ -1636,7 +1636,7 @@ var gn = /*#__PURE__*/ e(pn, [["render", hn], ["__scopeId", "data-v-2fa93a82"]])
|
|
|
1636
1636
|
function ie() {
|
|
1637
1637
|
o.value = [];
|
|
1638
1638
|
}
|
|
1639
|
-
function
|
|
1639
|
+
function ae(e) {
|
|
1640
1640
|
let t = m.value?.address || m.value?.name;
|
|
1641
1641
|
if (!t) return;
|
|
1642
1642
|
if (e.length === 0) {
|
|
@@ -1655,41 +1655,41 @@ var gn = /*#__PURE__*/ e(pn, [["render", hn], ["__scopeId", "data-v-2fa93a82"]])
|
|
|
1655
1655
|
append: !1
|
|
1656
1656
|
});
|
|
1657
1657
|
}
|
|
1658
|
-
function
|
|
1659
|
-
a.value = [...o.value],
|
|
1658
|
+
function se() {
|
|
1659
|
+
a.value = [...o.value], ae(a.value), E();
|
|
1660
1660
|
}
|
|
1661
|
-
function
|
|
1662
|
-
a.value = [], o.value = [],
|
|
1661
|
+
function k() {
|
|
1662
|
+
a.value = [], o.value = [], ae([]), E();
|
|
1663
1663
|
}
|
|
1664
|
-
|
|
1664
|
+
Y(() => r.initialSelection, (e) => {
|
|
1665
1665
|
let t = e ?? [];
|
|
1666
1666
|
t.length === a.value.length && t.every((e, t) => e === a.value[t]) || (a.value = [...t]);
|
|
1667
1667
|
});
|
|
1668
|
-
function
|
|
1668
|
+
function ce(e) {
|
|
1669
1669
|
return e.replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">").replace(/"/g, """).replace(/'/g, "'");
|
|
1670
1670
|
}
|
|
1671
|
-
function
|
|
1672
|
-
let t =
|
|
1671
|
+
function le(e) {
|
|
1672
|
+
let t = ce(e);
|
|
1673
1673
|
if (!s.value) return t;
|
|
1674
1674
|
let n = s.value.toLowerCase(), r = t.toLowerCase().indexOf(n);
|
|
1675
1675
|
return r === -1 ? t : `${t.slice(0, r)}<mark>${t.slice(r, r + s.value.length)}</mark>${t.slice(r + s.value.length)}`;
|
|
1676
1676
|
}
|
|
1677
|
-
function
|
|
1677
|
+
function ue(e) {
|
|
1678
1678
|
(e.key === "Enter" || e.key === " " || e.key === "ArrowDown") && (e.preventDefault(), T());
|
|
1679
1679
|
}
|
|
1680
|
-
function
|
|
1681
|
-
e.key === "Escape" ? (e.preventDefault(), E(), l.value?.focus()) : e.key === "Enter" && (e.ctrlKey || e.metaKey) && (e.preventDefault(),
|
|
1680
|
+
function A(e) {
|
|
1681
|
+
e.key === "Escape" ? (e.preventDefault(), E(), l.value?.focus()) : e.key === "Enter" && (e.ctrlKey || e.metaKey) && (e.preventDefault(), se());
|
|
1682
1682
|
}
|
|
1683
|
-
return (e, t) => (
|
|
1684
|
-
|
|
1683
|
+
return (e, t) => (U(), I("div", _n, [
|
|
1684
|
+
L("div", {
|
|
1685
1685
|
class: "filter-label",
|
|
1686
1686
|
title: y.value
|
|
1687
|
-
},
|
|
1688
|
-
|
|
1687
|
+
}, q(y.value), 9, vn),
|
|
1688
|
+
L("button", {
|
|
1689
1689
|
ref_key: "triggerRef",
|
|
1690
1690
|
ref: l,
|
|
1691
1691
|
type: "button",
|
|
1692
|
-
class:
|
|
1692
|
+
class: H(["filter-trigger", {
|
|
1693
1693
|
"is-open": c.value,
|
|
1694
1694
|
"has-selection": b.value,
|
|
1695
1695
|
"is-disabled": S.value
|
|
@@ -1698,40 +1698,40 @@ var gn = /*#__PURE__*/ e(pn, [["render", hn], ["__scopeId", "data-v-2fa93a82"]])
|
|
|
1698
1698
|
"aria-expanded": c.value,
|
|
1699
1699
|
"aria-haspopup": "listbox",
|
|
1700
1700
|
onClick: te,
|
|
1701
|
-
onKeydown:
|
|
1701
|
+
onKeydown: ue
|
|
1702
1702
|
}, [
|
|
1703
|
-
|
|
1704
|
-
b.value && a.value.length > 1 ? (
|
|
1703
|
+
L("span", { class: H(["filter-value", { muted: !b.value }]) }, q(x.value), 3),
|
|
1704
|
+
b.value && a.value.length > 1 ? (U(), I("span", {
|
|
1705
1705
|
key: 0,
|
|
1706
1706
|
class: "filter-count-badge",
|
|
1707
1707
|
title: `${a.value.length} selected`
|
|
1708
|
-
},
|
|
1709
|
-
b.value ? (
|
|
1708
|
+
}, q(a.value.length), 9, bn)) : F("", !0),
|
|
1709
|
+
b.value ? (U(), I("span", {
|
|
1710
1710
|
key: 1,
|
|
1711
1711
|
class: "filter-clear",
|
|
1712
1712
|
role: "button",
|
|
1713
1713
|
tabindex: "-1",
|
|
1714
1714
|
title: "Clear selection",
|
|
1715
|
-
onClick: Ne(
|
|
1716
|
-
}, [...t[3] ||= [
|
|
1715
|
+
onClick: Ne(k, ["stop"])
|
|
1716
|
+
}, [...t[3] ||= [L("svg", {
|
|
1717
1717
|
viewBox: "0 0 24 24",
|
|
1718
1718
|
width: "14",
|
|
1719
1719
|
height: "14",
|
|
1720
1720
|
"aria-hidden": "true"
|
|
1721
|
-
}, [
|
|
1721
|
+
}, [L("path", {
|
|
1722
1722
|
d: "M6 6l12 12M18 6L6 18",
|
|
1723
1723
|
stroke: "currentColor",
|
|
1724
1724
|
"stroke-width": "2",
|
|
1725
1725
|
"stroke-linecap": "round",
|
|
1726
1726
|
fill: "none"
|
|
1727
|
-
})], -1)]])) :
|
|
1728
|
-
t[4] ||=
|
|
1727
|
+
})], -1)]])) : F("", !0),
|
|
1728
|
+
t[4] ||= L("svg", {
|
|
1729
1729
|
class: "chevron",
|
|
1730
1730
|
viewBox: "0 0 24 24",
|
|
1731
1731
|
width: "16",
|
|
1732
1732
|
height: "16",
|
|
1733
1733
|
"aria-hidden": "true"
|
|
1734
|
-
}, [
|
|
1734
|
+
}, [L("path", {
|
|
1735
1735
|
d: "M6 9l6 6 6-6",
|
|
1736
1736
|
stroke: "currentColor",
|
|
1737
1737
|
"stroke-width": "2",
|
|
@@ -1740,79 +1740,79 @@ var gn = /*#__PURE__*/ e(pn, [["render", hn], ["__scopeId", "data-v-2fa93a82"]])
|
|
|
1740
1740
|
fill: "none"
|
|
1741
1741
|
})], -1)
|
|
1742
1742
|
], 42, yn),
|
|
1743
|
-
(
|
|
1743
|
+
(U(), P(xe, { to: "body" }, [c.value ? (U(), I("div", {
|
|
1744
1744
|
key: 0,
|
|
1745
1745
|
ref_key: "dropdownRef",
|
|
1746
1746
|
ref: u,
|
|
1747
1747
|
class: "filter-dropdown",
|
|
1748
|
-
style:
|
|
1748
|
+
style: Ce(w.value),
|
|
1749
1749
|
role: "dialog",
|
|
1750
|
-
onKeydown:
|
|
1750
|
+
onKeydown: A
|
|
1751
1751
|
}, [
|
|
1752
|
-
|
|
1752
|
+
L("div", xn, [t[5] ||= L("svg", {
|
|
1753
1753
|
viewBox: "0 0 24 24",
|
|
1754
1754
|
width: "14",
|
|
1755
1755
|
height: "14",
|
|
1756
1756
|
"aria-hidden": "true"
|
|
1757
|
-
}, [
|
|
1757
|
+
}, [L("circle", {
|
|
1758
1758
|
cx: "11",
|
|
1759
1759
|
cy: "11",
|
|
1760
1760
|
r: "7",
|
|
1761
1761
|
stroke: "currentColor",
|
|
1762
1762
|
"stroke-width": "2",
|
|
1763
1763
|
fill: "none"
|
|
1764
|
-
}),
|
|
1764
|
+
}), L("path", {
|
|
1765
1765
|
d: "m20 20-3.5-3.5",
|
|
1766
1766
|
stroke: "currentColor",
|
|
1767
1767
|
"stroke-width": "2",
|
|
1768
1768
|
"stroke-linecap": "round"
|
|
1769
|
-
})], -1),
|
|
1769
|
+
})], -1), Z(L("input", {
|
|
1770
1770
|
ref_key: "searchInputRef",
|
|
1771
1771
|
ref: d,
|
|
1772
1772
|
"onUpdate:modelValue": t[0] ||= (e) => s.value = e,
|
|
1773
1773
|
type: "text",
|
|
1774
1774
|
class: "dropdown-search-input",
|
|
1775
1775
|
placeholder: `Search ${y.value.toLowerCase()}...`
|
|
1776
|
-
}, null, 8, Sn), [[
|
|
1777
|
-
|
|
1778
|
-
v.value.length > 0 ? (
|
|
1776
|
+
}, null, 8, Sn), [[Ae, s.value]])]),
|
|
1777
|
+
L("div", Cn, [
|
|
1778
|
+
v.value.length > 0 ? (U(), I("label", {
|
|
1779
1779
|
key: 0,
|
|
1780
1780
|
class: "dropdown-item dropdown-item--all",
|
|
1781
1781
|
onMousedown: t[1] ||= Ne(() => {}, ["prevent"])
|
|
1782
|
-
}, [
|
|
1782
|
+
}, [L("input", {
|
|
1783
1783
|
type: "checkbox",
|
|
1784
1784
|
checked: C.value,
|
|
1785
1785
|
onChange: re
|
|
1786
|
-
}, null, 40, wn),
|
|
1787
|
-
(
|
|
1786
|
+
}, null, 40, wn), L("span", null, q(s.value ? `Select ${v.value.length} matching` : `All (${g.value.length})`), 1)], 32)) : F("", !0),
|
|
1787
|
+
(U(!0), I(M, null, G(v.value, (e, n) => (U(), I("label", {
|
|
1788
1788
|
key: n,
|
|
1789
|
-
class:
|
|
1789
|
+
class: H(["dropdown-item", { selected: O(e.value) }]),
|
|
1790
1790
|
onMousedown: t[2] ||= Ne(() => {}, ["prevent"])
|
|
1791
|
-
}, [
|
|
1791
|
+
}, [L("input", {
|
|
1792
1792
|
type: "checkbox",
|
|
1793
1793
|
checked: O(e.value),
|
|
1794
1794
|
onChange: (t) => ne(e)
|
|
1795
|
-
}, null, 40, Tn),
|
|
1796
|
-
v.value.length === 0 ? (
|
|
1795
|
+
}, null, 40, Tn), L("span", { innerHTML: le(e.label) }, null, 8, En)], 34))), 128)),
|
|
1796
|
+
v.value.length === 0 ? (U(), I("div", Dn, "No matches found")) : F("", !0)
|
|
1797
1797
|
]),
|
|
1798
|
-
|
|
1798
|
+
L("div", On, [L("button", {
|
|
1799
1799
|
type: "button",
|
|
1800
1800
|
class: "footer-btn",
|
|
1801
1801
|
onClick: ie
|
|
1802
|
-
}, "Clear"),
|
|
1802
|
+
}, "Clear"), L("button", {
|
|
1803
1803
|
type: "button",
|
|
1804
1804
|
class: "footer-btn primary",
|
|
1805
|
-
onClick:
|
|
1806
|
-
}, " Apply" +
|
|
1807
|
-
], 36)) :
|
|
1805
|
+
onClick: se
|
|
1806
|
+
}, " Apply" + q(o.value.length > 0 ? ` (${o.value.length})` : ""), 1)])
|
|
1807
|
+
], 36)) : F("", !0)]))
|
|
1808
1808
|
]));
|
|
1809
1809
|
}
|
|
1810
|
-
}), [["__scopeId", "data-v-16a8f6a3"]]), An =
|
|
1810
|
+
}), [["__scopeId", "data-v-16a8f6a3"]]), An = B({
|
|
1811
1811
|
name: "DashboardFilter",
|
|
1812
1812
|
components: {
|
|
1813
1813
|
DashboardDataSelector: kn,
|
|
1814
|
-
ErrorMessage:
|
|
1815
|
-
LoadingView:
|
|
1814
|
+
ErrorMessage: A,
|
|
1815
|
+
LoadingView: de
|
|
1816
1816
|
},
|
|
1817
1817
|
props: {
|
|
1818
1818
|
dashboardId: {
|
|
@@ -1849,7 +1849,7 @@ var gn = /*#__PURE__*/ e(pn, [["render", hn], ["__scopeId", "data-v-2fa93a82"]])
|
|
|
1849
1849
|
}
|
|
1850
1850
|
},
|
|
1851
1851
|
setup(e, { emit: t }) {
|
|
1852
|
-
let n =
|
|
1852
|
+
let n = N(() => e.getItemData(e.itemId, e.dashboardId)), r = N(() => n.value.content), i = N(() => n.value.results || null), a = N(() => n.value.loading || !1), o = N(() => n.value.error || null), s = N(() => n.value.filters || []), c = N(() => n.value.loadStartTime || null), l = N(() => (n.value.height || 300) - 75), u = N(() => (n.value.width || 300) - 100), d = N(() => n.value.onRefresh || null), f = V("connectionStore"), p = V("analyticsStore");
|
|
1853
1853
|
if (!f) throw Error("Connection store not found!");
|
|
1854
1854
|
let { chartContainer: m, ready: h, showLoading: g, controlsVisible: _, handleLocalRefresh: v, onChartMouseEnter: y, onChartMouseLeave: b } = an({
|
|
1855
1855
|
dashboardId: () => e.dashboardId,
|
|
@@ -1898,13 +1898,13 @@ var gn = /*#__PURE__*/ e(pn, [["render", hn], ["__scopeId", "data-v-2fa93a82"]])
|
|
|
1898
1898
|
class: "loading-overlay"
|
|
1899
1899
|
};
|
|
1900
1900
|
function Mn(e, t, n, r, i, a) {
|
|
1901
|
-
let o =
|
|
1902
|
-
return
|
|
1901
|
+
let o = K("ErrorMessage"), s = K("dashboard-data-selector"), c = K("LoadingView");
|
|
1902
|
+
return U(), I("div", {
|
|
1903
1903
|
ref: "chartContainer",
|
|
1904
|
-
class:
|
|
1904
|
+
class: H(["chart-placeholder no-drag", { "chart-placeholder-edit-mode": e.editMode }]),
|
|
1905
1905
|
onMouseenter: t[0] ||= (...t) => e.onChartMouseEnter && e.onChartMouseEnter(...t),
|
|
1906
1906
|
onMouseleave: t[1] ||= (...t) => e.onChartMouseLeave && e.onChartMouseLeave(...t)
|
|
1907
|
-
}, [e.error && !e.loading ? (
|
|
1907
|
+
}, [e.error && !e.loading ? (U(), P(o, {
|
|
1908
1908
|
key: 0,
|
|
1909
1909
|
compact: !0,
|
|
1910
1910
|
details: e.error,
|
|
@@ -1914,7 +1914,7 @@ function Mn(e, t, n, r, i, a) {
|
|
|
1914
1914
|
"details",
|
|
1915
1915
|
"query",
|
|
1916
1916
|
"filters"
|
|
1917
|
-
])) : e.results && e.ready ? (
|
|
1917
|
+
])) : e.results && e.ready ? (U(), P(s, {
|
|
1918
1918
|
key: 1,
|
|
1919
1919
|
id: `${e.itemId}-${e.dashboardId}`,
|
|
1920
1920
|
headers: e.results.headers,
|
|
@@ -1931,22 +1931,22 @@ function Mn(e, t, n, r, i, a) {
|
|
|
1931
1931
|
"containerHeight",
|
|
1932
1932
|
"onCellClick",
|
|
1933
1933
|
"onBackgroundClick"
|
|
1934
|
-
])) :
|
|
1934
|
+
])) : F("", !0), e.loading && e.showLoading ? (U(), I("div", jn, [z(c, {
|
|
1935
1935
|
startTime: e.startTime,
|
|
1936
1936
|
text: "",
|
|
1937
1937
|
subtle: ""
|
|
1938
|
-
}, null, 8, ["startTime"])])) :
|
|
1938
|
+
}, null, 8, ["startTime"])])) : F("", !0)], 34);
|
|
1939
1939
|
}
|
|
1940
1940
|
var Nn = /*#__PURE__*/ e(An, [["render", Mn], ["__scopeId", "data-v-164bba0a"]]), Pn = {
|
|
1941
1941
|
good: "Good",
|
|
1942
1942
|
bad: "Bad",
|
|
1943
1943
|
mixed: "Mixed",
|
|
1944
1944
|
inconclusive: "Inconclusive"
|
|
1945
|
-
}, Fn =
|
|
1945
|
+
}, Fn = B({
|
|
1946
1946
|
name: "DashboardMemo",
|
|
1947
1947
|
components: {
|
|
1948
|
-
MarkdownRenderer:
|
|
1949
|
-
ErrorMessage:
|
|
1948
|
+
MarkdownRenderer: pe,
|
|
1949
|
+
ErrorMessage: A
|
|
1950
1950
|
},
|
|
1951
1951
|
props: {
|
|
1952
1952
|
dashboardId: {
|
|
@@ -1975,7 +1975,7 @@ var Nn = /*#__PURE__*/ e(An, [["render", Mn], ["__scopeId", "data-v-164bba0a"]])
|
|
|
1975
1975
|
}
|
|
1976
1976
|
},
|
|
1977
1977
|
setup(e) {
|
|
1978
|
-
let t =
|
|
1978
|
+
let t = N(() => e.getItemData(e.itemId, e.dashboardId)), n = N(() => t.value.memoData), r = N(() => n.value?.headline || ""), i = N(() => n.value?.verdict || "inconclusive"), a = N(() => Pn[i.value]), o = N(() => `Verdict: ${a.value}`), s = N(() => n.value?.magnitude || ""), c = N(() => n.value?.cause || ""), l = N(() => n.value?.action || ""), u = N(() => n.value?.confidence || "medium"), d = N(() => n.value?.confidenceRationale || ""), f = N(() => t.value.structured_content?.query || ""), p = N(() => t.value.results || null), m = N(() => t.value.loading || !1), h = N(() => t.value.error || null), g = N(() => t.value.filters || []), _ = N(() => t.value.onRefresh || null), v = V("connectionStore"), y = V("analyticsStore");
|
|
1979
1979
|
if (!v) throw Error("Connection store not found!");
|
|
1980
1980
|
let { ready: b, handleLocalRefresh: x } = an({
|
|
1981
1981
|
dashboardId: () => e.dashboardId,
|
|
@@ -2013,8 +2013,8 @@ var Nn = /*#__PURE__*/ e(An, [["render", Mn], ["__scopeId", "data-v-164bba0a"]])
|
|
|
2013
2013
|
class: "controls-toggle controls-visible"
|
|
2014
2014
|
};
|
|
2015
2015
|
function Gn(e, t, n, r, i, a) {
|
|
2016
|
-
let o =
|
|
2017
|
-
return
|
|
2016
|
+
let o = K("ErrorMessage"), s = K("MarkdownRenderer");
|
|
2017
|
+
return U(), I("div", { class: H(["memo-card no-drag", `verdict-${e.verdict}`]) }, [e.error && !e.loading ? (U(), P(o, {
|
|
2018
2018
|
key: 0,
|
|
2019
2019
|
compact: !0,
|
|
2020
2020
|
details: e.error,
|
|
@@ -2024,51 +2024,51 @@ function Gn(e, t, n, r, i, a) {
|
|
|
2024
2024
|
"details",
|
|
2025
2025
|
"query",
|
|
2026
2026
|
"filters"
|
|
2027
|
-
])) : e.ready ? (
|
|
2028
|
-
|
|
2029
|
-
t[1] ||=
|
|
2030
|
-
|
|
2027
|
+
])) : e.ready ? (U(), I(M, { key: 1 }, [
|
|
2028
|
+
L("div", In, [
|
|
2029
|
+
t[1] ||= L("span", { class: "memo-eyebrow" }, "Executive Memo", -1),
|
|
2030
|
+
L("span", {
|
|
2031
2031
|
class: "verdict-chip",
|
|
2032
2032
|
title: e.verdictTitle
|
|
2033
|
-
},
|
|
2034
|
-
|
|
2033
|
+
}, q(e.verdictLabel), 9, Ln),
|
|
2034
|
+
L("span", {
|
|
2035
2035
|
class: "confidence-chip",
|
|
2036
2036
|
title: e.confidenceRationale || ""
|
|
2037
|
-
}, " confidence: " +
|
|
2037
|
+
}, " confidence: " + q(e.confidence), 9, Rn)
|
|
2038
2038
|
]),
|
|
2039
|
-
|
|
2039
|
+
L("h1", zn, [z(s, {
|
|
2040
2040
|
markdown: e.headline || "_No headline yet_",
|
|
2041
2041
|
results: e.results
|
|
2042
2042
|
}, null, 8, ["markdown", "results"])]),
|
|
2043
|
-
|
|
2044
|
-
|
|
2043
|
+
L("div", Bn, [
|
|
2044
|
+
L("div", Vn, [t[2] ||= L("span", { class: "memo-label" }, "Magnitude", -1), z(s, {
|
|
2045
2045
|
class: "memo-prose",
|
|
2046
2046
|
markdown: e.magnitude || "_(not set)_",
|
|
2047
2047
|
results: e.results
|
|
2048
2048
|
}, null, 8, ["markdown", "results"])]),
|
|
2049
|
-
|
|
2049
|
+
L("div", Hn, [t[3] ||= L("span", { class: "memo-label" }, "Likely cause", -1), z(s, {
|
|
2050
2050
|
class: "memo-prose",
|
|
2051
2051
|
markdown: e.cause || "_(not set)_",
|
|
2052
2052
|
results: e.results
|
|
2053
2053
|
}, null, 8, ["markdown", "results"])]),
|
|
2054
|
-
|
|
2054
|
+
L("div", Un, [t[4] ||= L("span", { class: "memo-label" }, "Recommended action", -1), z(s, {
|
|
2055
2055
|
class: "memo-prose",
|
|
2056
2056
|
markdown: e.action || "_(not set)_",
|
|
2057
2057
|
results: e.results
|
|
2058
2058
|
}, null, 8, ["markdown", "results"])])
|
|
2059
2059
|
])
|
|
2060
|
-
], 64)) :
|
|
2060
|
+
], 64)) : F("", !0), !e.loading && e.editMode ? (U(), I("div", Wn, [L("button", {
|
|
2061
2061
|
onClick: t[0] ||= (...t) => e.handleLocalRefresh && e.handleLocalRefresh(...t),
|
|
2062
2062
|
class: "control-btn",
|
|
2063
2063
|
"data-testid": "refresh-memo-btn",
|
|
2064
2064
|
title: "Refresh memo data"
|
|
2065
|
-
}, [...t[5] ||= [
|
|
2065
|
+
}, [...t[5] ||= [L("i", { class: "mdi mdi-refresh icon" }, null, -1)]])])) : F("", !0)], 2);
|
|
2066
2066
|
}
|
|
2067
|
-
var Kn = /*#__PURE__*/ e(Fn, [["render", Gn], ["__scopeId", "data-v-076ae1b1"]]), qn =
|
|
2067
|
+
var Kn = /*#__PURE__*/ e(Fn, [["render", Gn], ["__scopeId", "data-v-076ae1b1"]]), qn = B({
|
|
2068
2068
|
name: "DashboardClaim",
|
|
2069
2069
|
components: {
|
|
2070
|
-
MarkdownRenderer:
|
|
2071
|
-
ErrorMessage:
|
|
2070
|
+
MarkdownRenderer: pe,
|
|
2071
|
+
ErrorMessage: A
|
|
2072
2072
|
},
|
|
2073
2073
|
props: {
|
|
2074
2074
|
dashboardId: {
|
|
@@ -2097,7 +2097,7 @@ var Kn = /*#__PURE__*/ e(Fn, [["render", Gn], ["__scopeId", "data-v-076ae1b1"]])
|
|
|
2097
2097
|
}
|
|
2098
2098
|
},
|
|
2099
2099
|
setup(e) {
|
|
2100
|
-
let t =
|
|
2100
|
+
let t = N(() => e.getItemData(e.itemId, e.dashboardId)), n = N(() => t.value.claimData), r = N(() => n.value?.heading || ""), i = N(() => n.value?.claim || ""), a = N(() => n.value?.caveat || ""), o = N(() => n.value?.drilldown || ""), s = N(() => t.value.structured_content?.query || ""), c = N(() => t.value.results || null), l = N(() => t.value.loading || !1), u = N(() => t.value.error || null), d = N(() => t.value.filters || []), f = N(() => t.value.onRefresh || null), p = V("connectionStore"), m = V("analyticsStore");
|
|
2101
2101
|
if (!p) throw Error("Connection store not found!");
|
|
2102
2102
|
let { ready: h, handleLocalRefresh: g } = an({
|
|
2103
2103
|
dashboardId: () => e.dashboardId,
|
|
@@ -2139,8 +2139,8 @@ var Kn = /*#__PURE__*/ e(Fn, [["render", Gn], ["__scopeId", "data-v-076ae1b1"]])
|
|
|
2139
2139
|
class: "controls-toggle controls-visible"
|
|
2140
2140
|
};
|
|
2141
2141
|
function er(e, t, n, r, i, a) {
|
|
2142
|
-
let o =
|
|
2143
|
-
return
|
|
2142
|
+
let o = K("ErrorMessage"), s = K("MarkdownRenderer");
|
|
2143
|
+
return U(), I("div", Jn, [e.error && !e.loading ? (U(), P(o, {
|
|
2144
2144
|
key: 0,
|
|
2145
2145
|
compact: !0,
|
|
2146
2146
|
details: e.error,
|
|
@@ -2150,34 +2150,34 @@ function er(e, t, n, r, i, a) {
|
|
|
2150
2150
|
"details",
|
|
2151
2151
|
"query",
|
|
2152
2152
|
"filters"
|
|
2153
|
-
])) : e.ready ? (
|
|
2154
|
-
e.heading ? (
|
|
2153
|
+
])) : e.ready ? (U(), I(M, { key: 1 }, [
|
|
2154
|
+
e.heading ? (U(), I("div", Yn, [z(s, {
|
|
2155
2155
|
markdown: e.heading,
|
|
2156
2156
|
results: e.results
|
|
2157
|
-
}, null, 8, ["markdown", "results"])])) :
|
|
2158
|
-
|
|
2157
|
+
}, null, 8, ["markdown", "results"])])) : F("", !0),
|
|
2158
|
+
L("div", Xn, [t[1] ||= L("span", { class: "claim-label" }, "Claim", -1), z(s, {
|
|
2159
2159
|
class: "claim-prose claim-main",
|
|
2160
2160
|
markdown: e.claim || "_(no claim yet — set one with the report agent)_",
|
|
2161
2161
|
results: e.results
|
|
2162
2162
|
}, null, 8, ["markdown", "results"])]),
|
|
2163
|
-
e.caveat ? (
|
|
2163
|
+
e.caveat ? (U(), I("div", Zn, [t[2] ||= L("span", { class: "claim-label" }, "Caveat", -1), z(s, {
|
|
2164
2164
|
class: "claim-prose",
|
|
2165
2165
|
markdown: e.caveat,
|
|
2166
2166
|
results: e.results
|
|
2167
|
-
}, null, 8, ["markdown", "results"])])) :
|
|
2168
|
-
e.drilldown ? (
|
|
2167
|
+
}, null, 8, ["markdown", "results"])])) : F("", !0),
|
|
2168
|
+
e.drilldown ? (U(), I("div", Qn, [t[3] ||= L("span", { class: "claim-label" }, "Next drilldown", -1), z(s, {
|
|
2169
2169
|
class: "claim-prose",
|
|
2170
2170
|
markdown: e.drilldown,
|
|
2171
2171
|
results: e.results
|
|
2172
|
-
}, null, 8, ["markdown", "results"])])) :
|
|
2173
|
-
], 64)) :
|
|
2172
|
+
}, null, 8, ["markdown", "results"])])) : F("", !0)
|
|
2173
|
+
], 64)) : F("", !0), !e.loading && e.editMode ? (U(), I("div", $n, [L("button", {
|
|
2174
2174
|
onClick: t[0] ||= (...t) => e.handleLocalRefresh && e.handleLocalRefresh(...t),
|
|
2175
2175
|
class: "control-btn",
|
|
2176
2176
|
"data-testid": "refresh-claim-btn",
|
|
2177
2177
|
title: "Refresh claim data"
|
|
2178
|
-
}, [...t[4] ||= [
|
|
2178
|
+
}, [...t[4] ||= [L("i", { class: "mdi mdi-refresh icon" }, null, -1)]])])) : F("", !0)]);
|
|
2179
2179
|
}
|
|
2180
|
-
var tr = /*#__PURE__*/ e(qn, [["render", er], ["__scopeId", "data-v-f46fbf38"]]), nr =
|
|
2180
|
+
var tr = /*#__PURE__*/ e(qn, [["render", er], ["__scopeId", "data-v-f46fbf38"]]), nr = B({
|
|
2181
2181
|
name: "DashboardAppendixHeader",
|
|
2182
2182
|
props: {
|
|
2183
2183
|
dashboardId: {
|
|
@@ -2194,15 +2194,15 @@ var tr = /*#__PURE__*/ e(qn, [["render", er], ["__scopeId", "data-v-f46fbf38"]])
|
|
|
2194
2194
|
}
|
|
2195
2195
|
},
|
|
2196
2196
|
setup(e) {
|
|
2197
|
-
let t =
|
|
2198
|
-
return { label:
|
|
2197
|
+
let t = N(() => e.getItemData(e.itemId, e.dashboardId));
|
|
2198
|
+
return { label: N(() => (t.value.name || "Appendix").replace(/^#+\s*/, "").trim()) };
|
|
2199
2199
|
}
|
|
2200
2200
|
}), rr = { class: "appendix-header no-drag" }, ir = { class: "appendix-label" };
|
|
2201
2201
|
function ar(e, t, n, r, i, a) {
|
|
2202
|
-
return
|
|
2203
|
-
t[0] ||=
|
|
2204
|
-
|
|
2205
|
-
t[1] ||=
|
|
2202
|
+
return U(), I("div", rr, [
|
|
2203
|
+
t[0] ||= L("span", { class: "appendix-eyebrow" }, "Appendix", -1),
|
|
2204
|
+
L("span", ir, q(e.label), 1),
|
|
2205
|
+
t[1] ||= L("span", {
|
|
2206
2206
|
class: "appendix-rule",
|
|
2207
2207
|
"aria-hidden": "true"
|
|
2208
2208
|
}, null, -1)
|
|
@@ -2826,11 +2826,11 @@ function Nr(e) {
|
|
|
2826
2826
|
}
|
|
2827
2827
|
//#endregion
|
|
2828
2828
|
//#region components/dashboard/DashboardFreeform.vue?vue&type=script&lang.ts
|
|
2829
|
-
var Pr =
|
|
2829
|
+
var Pr = B({
|
|
2830
2830
|
name: "DashboardFreeform",
|
|
2831
2831
|
components: {
|
|
2832
|
-
ErrorMessage:
|
|
2833
|
-
LoadingView:
|
|
2832
|
+
ErrorMessage: A,
|
|
2833
|
+
LoadingView: de
|
|
2834
2834
|
},
|
|
2835
2835
|
props: {
|
|
2836
2836
|
dashboardId: {
|
|
@@ -2864,7 +2864,7 @@ var Pr = V({
|
|
|
2864
2864
|
},
|
|
2865
2865
|
emits: ["dimension-click", "background-click"],
|
|
2866
2866
|
setup(e, { emit: n }) {
|
|
2867
|
-
let r =
|
|
2867
|
+
let r = W(null), i = W(null), a = W(null), o = W(0), s = null, c = null, l = N(() => e.getItemData(e.itemId, e.dashboardId)), u = N(() => l.value.freeformData || null), d = N(() => u.value?.html || ""), f = N(() => l.value.structured_content?.query || ""), p = N(() => l.value.results || null), m = N(() => l.value.loading || !1), h = N(() => l.value.error || null), g = N(() => l.value.filters || []), _ = N(() => l.value.loadStartTime || null), v = N(() => l.value.onRefresh || null), y = N(() => l.value.name || "Custom widget"), b = V("analyticsStore", null), x = V("userSettingsStore", null), S = t(x), { chartContainer: C, showLoading: w, controlsVisible: ee, handleLocalRefresh: T, onChartMouseEnter: te, onChartMouseLeave: D } = an({
|
|
2868
2868
|
dashboardId: () => e.dashboardId,
|
|
2869
2869
|
itemId: () => e.itemId,
|
|
2870
2870
|
query: f,
|
|
@@ -2883,10 +2883,10 @@ var Pr = V({
|
|
|
2883
2883
|
element: C.value
|
|
2884
2884
|
});
|
|
2885
2885
|
}
|
|
2886
|
-
let ne =
|
|
2886
|
+
let ne = N(() => d.value ? (o.value, S.value, kr({
|
|
2887
2887
|
html: d.value,
|
|
2888
2888
|
theme: O()
|
|
2889
|
-
})) : ""), re =
|
|
2889
|
+
})) : ""), re = N(() => a.value ? { height: `${a.value}px` } : void 0);
|
|
2890
2890
|
function ie() {
|
|
2891
2891
|
s && s.postState(yr({
|
|
2892
2892
|
status: m.value ? "loading" : h.value ? "error" : "ready",
|
|
@@ -2903,7 +2903,7 @@ var Pr = V({
|
|
|
2903
2903
|
s?.connected && !i.value && (i.value = "Widget did not finish loading.");
|
|
2904
2904
|
}, E);
|
|
2905
2905
|
}
|
|
2906
|
-
function
|
|
2906
|
+
function se(t) {
|
|
2907
2907
|
if (t.mode === "clear") {
|
|
2908
2908
|
n("background-click");
|
|
2909
2909
|
return;
|
|
@@ -2917,11 +2917,11 @@ var Pr = V({
|
|
|
2917
2917
|
append: t.mode === "append"
|
|
2918
2918
|
});
|
|
2919
2919
|
}
|
|
2920
|
-
function
|
|
2920
|
+
function k() {
|
|
2921
2921
|
ae(), s?.destroy(), s = null;
|
|
2922
2922
|
}
|
|
2923
|
-
function
|
|
2924
|
-
|
|
2923
|
+
function ce() {
|
|
2924
|
+
k();
|
|
2925
2925
|
let t = r.value;
|
|
2926
2926
|
t && (i.value = null, s = new xr({
|
|
2927
2927
|
itemId: e.itemId,
|
|
@@ -2929,7 +2929,7 @@ var Pr = V({
|
|
|
2929
2929
|
onReady: () => {
|
|
2930
2930
|
ae(), i.value = null;
|
|
2931
2931
|
},
|
|
2932
|
-
onFilter:
|
|
2932
|
+
onFilter: se,
|
|
2933
2933
|
onRefresh: () => T(),
|
|
2934
2934
|
onResize: (e) => {
|
|
2935
2935
|
a.value = e;
|
|
@@ -2940,26 +2940,26 @@ var Pr = V({
|
|
|
2940
2940
|
}
|
|
2941
2941
|
}), s.attach(t), s.postTheme(O()), ie(), oe());
|
|
2942
2942
|
}
|
|
2943
|
-
function
|
|
2943
|
+
function le() {
|
|
2944
2944
|
a.value = null, o.value += 1;
|
|
2945
2945
|
}
|
|
2946
|
-
return
|
|
2946
|
+
return Y([ne, r], ([e, t]) => {
|
|
2947
2947
|
if (!e || !t) {
|
|
2948
|
-
|
|
2948
|
+
k();
|
|
2949
2949
|
return;
|
|
2950
2950
|
}
|
|
2951
|
-
|
|
2951
|
+
ce();
|
|
2952
2952
|
}, {
|
|
2953
2953
|
immediate: !0,
|
|
2954
2954
|
flush: "post"
|
|
2955
|
-
}),
|
|
2955
|
+
}), Y([
|
|
2956
2956
|
p,
|
|
2957
2957
|
m,
|
|
2958
2958
|
h,
|
|
2959
2959
|
g
|
|
2960
|
-
], () => ie()),
|
|
2961
|
-
await
|
|
2962
|
-
}),
|
|
2960
|
+
], () => ie()), Y(S, async () => {
|
|
2961
|
+
await Se(), s?.postTheme(O());
|
|
2962
|
+
}), we(k), {
|
|
2963
2963
|
chartContainer: C,
|
|
2964
2964
|
frameRef: r,
|
|
2965
2965
|
srcdoc: ne,
|
|
@@ -2977,7 +2977,7 @@ var Pr = V({
|
|
|
2977
2977
|
handleLocalRefresh: T,
|
|
2978
2978
|
onChartMouseEnter: te,
|
|
2979
2979
|
onChartMouseLeave: D,
|
|
2980
|
-
reloadWidget:
|
|
2980
|
+
reloadWidget: le,
|
|
2981
2981
|
FREEFORM_SANDBOX: Cr
|
|
2982
2982
|
};
|
|
2983
2983
|
}
|
|
@@ -2996,14 +2996,14 @@ var Pr = V({
|
|
|
2996
2996
|
class: "loading-overlay"
|
|
2997
2997
|
};
|
|
2998
2998
|
function Br(e, t, n, r, i, a) {
|
|
2999
|
-
let o =
|
|
3000
|
-
return
|
|
2999
|
+
let o = K("ErrorMessage"), s = K("LoadingView");
|
|
3000
|
+
return U(), I("div", {
|
|
3001
3001
|
ref: "chartContainer",
|
|
3002
3002
|
class: "freeform-placeholder no-drag",
|
|
3003
3003
|
onMouseenter: t[3] ||= (...t) => e.onChartMouseEnter && e.onChartMouseEnter(...t),
|
|
3004
3004
|
onMouseleave: t[4] ||= (...t) => e.onChartMouseLeave && e.onChartMouseLeave(...t)
|
|
3005
3005
|
}, [
|
|
3006
|
-
e.error && !e.loading ? (
|
|
3006
|
+
e.error && !e.loading ? (U(), P(o, {
|
|
3007
3007
|
key: 0,
|
|
3008
3008
|
compact: !0,
|
|
3009
3009
|
details: e.error,
|
|
@@ -3013,40 +3013,40 @@ function Br(e, t, n, r, i, a) {
|
|
|
3013
3013
|
"details",
|
|
3014
3014
|
"query",
|
|
3015
3015
|
"filters"
|
|
3016
|
-
])) : e.html ? (
|
|
3016
|
+
])) : e.html ? (U(), I(M, { key: 2 }, [L("iframe", {
|
|
3017
3017
|
ref: "frameRef",
|
|
3018
|
-
class:
|
|
3018
|
+
class: H(["freeform-frame", { "freeform-frame-hidden": !!e.widgetFailure }]),
|
|
3019
3019
|
sandbox: e.FREEFORM_SANDBOX,
|
|
3020
3020
|
srcdoc: e.srcdoc,
|
|
3021
3021
|
title: e.widgetTitle,
|
|
3022
3022
|
referrerpolicy: "no-referrer",
|
|
3023
3023
|
allow: "",
|
|
3024
|
-
style:
|
|
3025
|
-
}, null, 14, Ir), e.widgetFailure ? (
|
|
3026
|
-
t[5] ||=
|
|
3027
|
-
|
|
3028
|
-
|
|
3024
|
+
style: Ce(e.frameStyle)
|
|
3025
|
+
}, null, 14, Ir), e.widgetFailure ? (U(), I("div", Lr, [
|
|
3026
|
+
t[5] ||= L("i", { class: "mdi mdi-alert-circle-outline" }, null, -1),
|
|
3027
|
+
L("div", Rr, q(e.widgetFailure), 1),
|
|
3028
|
+
L("button", {
|
|
3029
3029
|
class: "freeform-retry",
|
|
3030
3030
|
"data-testid": "freeform-retry-btn",
|
|
3031
3031
|
onClick: t[0] ||= (...t) => e.reloadWidget && e.reloadWidget(...t)
|
|
3032
3032
|
}, " Reload widget ")
|
|
3033
|
-
])) :
|
|
3034
|
-
e.loading && e.showLoading ? (
|
|
3033
|
+
])) : F("", !0)], 64)) : (U(), I("div", Fr, " No widget content yet. Use the edit button to author HTML for this cell. ")),
|
|
3034
|
+
e.loading && e.showLoading ? (U(), I("div", zr, [z(s, {
|
|
3035
3035
|
startTime: e.startTime,
|
|
3036
3036
|
text: "",
|
|
3037
3037
|
subtle: ""
|
|
3038
|
-
}, null, 8, ["startTime"])])) :
|
|
3039
|
-
|
|
3038
|
+
}, null, 8, ["startTime"])])) : F("", !0),
|
|
3039
|
+
L("div", { class: H(["controls-toggle", { "controls-visible": e.controlsVisible }]) }, [L("button", {
|
|
3040
3040
|
onClick: t[1] ||= (...t) => e.handleLocalRefresh && e.handleLocalRefresh(...t),
|
|
3041
3041
|
class: "control-btn",
|
|
3042
3042
|
"data-testid": "refresh-freeform-btn",
|
|
3043
3043
|
title: "Refresh widget data"
|
|
3044
|
-
}, [...t[6] ||= [
|
|
3044
|
+
}, [...t[6] ||= [L("i", { class: "mdi mdi-refresh icon" }, null, -1)]]), L("button", {
|
|
3045
3045
|
onClick: t[2] ||= (...t) => e.reloadWidget && e.reloadWidget(...t),
|
|
3046
3046
|
class: "control-btn",
|
|
3047
3047
|
"data-testid": "reload-freeform-btn",
|
|
3048
3048
|
title: "Reload widget"
|
|
3049
|
-
}, [...t[7] ||= [
|
|
3049
|
+
}, [...t[7] ||= [L("i", { class: "mdi mdi-reload icon" }, null, -1)]])], 2)
|
|
3050
3050
|
], 544);
|
|
3051
3051
|
}
|
|
3052
3052
|
var Vr = /*#__PURE__*/ e(Pr, [["render", Br], ["__scopeId", "data-v-da53ca6d"]]), Hr = ["data-testid"], Ur = ["data-testid"], Wr = ["data-testid"], Gr = ["data-testid"], Kr = {
|
|
@@ -3067,7 +3067,7 @@ var Vr = /*#__PURE__*/ e(Pr, [["render", Br], ["__scopeId", "data-v-da53ca6d"]])
|
|
|
3067
3067
|
}, bi = {
|
|
3068
3068
|
key: 1,
|
|
3069
3069
|
class: "mdi mdi-filter-outline icon"
|
|
3070
|
-
}, xi = ["data-testid"], Si = ["data-testid"], Ci = ["aria-label"], wi = { class: "mobile-filter-popover-header" }, Ti = { class: "mobile-filter-popover-values" }, Ei = /*#__PURE__*/ e(/* @__PURE__ */
|
|
3070
|
+
}, xi = ["data-testid"], Si = ["data-testid"], Ci = ["aria-label"], wi = { class: "mobile-filter-popover-header" }, Ti = { class: "mobile-filter-popover-values" }, Ei = /*#__PURE__*/ e(/* @__PURE__ */ B({
|
|
3071
3071
|
__name: "DashboardGridItem",
|
|
3072
3072
|
props: {
|
|
3073
3073
|
dashboardId: {},
|
|
@@ -3088,7 +3088,7 @@ var Vr = /*#__PURE__*/ e(Pr, [["render", Br], ["__scopeId", "data-v-da53ca6d"]])
|
|
|
3088
3088
|
"copy-item"
|
|
3089
3089
|
],
|
|
3090
3090
|
setup(e, { emit: t }) {
|
|
3091
|
-
let n = e, r = t,
|
|
3091
|
+
let n = e, r = t, a = W(!1), o = W(""), s = W(!1), c = W(!1), l = W(null), u = W(null), d = W(null), f = W(null), p = W({});
|
|
3092
3092
|
function m(e) {
|
|
3093
3093
|
return e.replace(/'''/g, "'").replace("local.", "");
|
|
3094
3094
|
}
|
|
@@ -3109,15 +3109,15 @@ var Vr = /*#__PURE__*/ e(Pr, [["render", Br], ["__scopeId", "data-v-da53ca6d"]])
|
|
|
3109
3109
|
function _() {
|
|
3110
3110
|
if (!n.editMode) return;
|
|
3111
3111
|
let e = n.getItemData(n.item.i, n.dashboardId);
|
|
3112
|
-
s.value = !1, c.value = !1,
|
|
3112
|
+
s.value = !1, c.value = !1, a.value = !0, o.value = e.name, setTimeout(() => {
|
|
3113
3113
|
let e = document.getElementById(`title-input-${n.item.i}`);
|
|
3114
3114
|
e && e.focus();
|
|
3115
3115
|
}, 0);
|
|
3116
3116
|
}
|
|
3117
3117
|
function v() {
|
|
3118
|
-
if (
|
|
3118
|
+
if (a.value) {
|
|
3119
3119
|
let e = n.getItemData(n.item.i, n.dashboardId), t = o.value.trim() || e.name;
|
|
3120
|
-
n.setItemData(n.item.i, n.dashboardId, { name: t }),
|
|
3120
|
+
n.setItemData(n.item.i, n.dashboardId, { name: t }), a.value = !1;
|
|
3121
3121
|
}
|
|
3122
3122
|
}
|
|
3123
3123
|
function y() {
|
|
@@ -3139,7 +3139,7 @@ var Vr = /*#__PURE__*/ e(Pr, [["render", Br], ["__scopeId", "data-v-da53ca6d"]])
|
|
|
3139
3139
|
} });
|
|
3140
3140
|
}
|
|
3141
3141
|
function S() {
|
|
3142
|
-
|
|
3142
|
+
a.value = !1;
|
|
3143
3143
|
}
|
|
3144
3144
|
function C() {
|
|
3145
3145
|
if (O.value) {
|
|
@@ -3163,50 +3163,50 @@ var Vr = /*#__PURE__*/ e(Pr, [["render", Br], ["__scopeId", "data-v-da53ca6d"]])
|
|
|
3163
3163
|
function te(e) {
|
|
3164
3164
|
r("remove-filter", n.item.i, e);
|
|
3165
3165
|
}
|
|
3166
|
-
let D =
|
|
3166
|
+
let D = N(() => n.getItemData(n.item.i, n.dashboardId)), O = N(() => D.value.type === i.SECTION_HEADER), ne = N(() => D.value.type === i.FREEFORM), re = N(() => {
|
|
3167
3167
|
switch (D.value.type) {
|
|
3168
|
-
case
|
|
3169
|
-
case
|
|
3170
|
-
case
|
|
3171
|
-
case
|
|
3172
|
-
case
|
|
3173
|
-
case
|
|
3174
|
-
case
|
|
3175
|
-
case
|
|
3176
|
-
case
|
|
3168
|
+
case i.CHART: return ln;
|
|
3169
|
+
case i.TABLE: return gn;
|
|
3170
|
+
case i.FILTER: return Nn;
|
|
3171
|
+
case i.SECTION_HEADER: return null;
|
|
3172
|
+
case i.MEMO: return Kn;
|
|
3173
|
+
case i.CLAIM: return tr;
|
|
3174
|
+
case i.APPENDIX_HEADER: return or;
|
|
3175
|
+
case i.FREEFORM: return Vr;
|
|
3176
|
+
case i.MARKDOWN:
|
|
3177
3177
|
default: return fn;
|
|
3178
3178
|
}
|
|
3179
|
-
}), ie =
|
|
3179
|
+
}), ie = N(() => {
|
|
3180
3180
|
switch (D.value.type) {
|
|
3181
|
-
case
|
|
3182
|
-
case
|
|
3183
|
-
case
|
|
3184
|
-
case
|
|
3185
|
-
case
|
|
3186
|
-
case
|
|
3187
|
-
case
|
|
3188
|
-
case
|
|
3189
|
-
case
|
|
3181
|
+
case i.CHART: return "Chart Name";
|
|
3182
|
+
case i.TABLE: return "Table Name";
|
|
3183
|
+
case i.FILTER: return "Filter Name";
|
|
3184
|
+
case i.SECTION_HEADER: return "Section Header";
|
|
3185
|
+
case i.MEMO: return "Executive Memo";
|
|
3186
|
+
case i.CLAIM: return "Claim";
|
|
3187
|
+
case i.APPENDIX_HEADER: return "Appendix";
|
|
3188
|
+
case i.FREEFORM: return "Widget Name";
|
|
3189
|
+
case i.MARKDOWN:
|
|
3190
3190
|
default: return "Note Name";
|
|
3191
3191
|
}
|
|
3192
|
-
}),
|
|
3193
|
-
|
|
3194
|
-
|
|
3195
|
-
|
|
3196
|
-
|
|
3197
|
-
],
|
|
3198
|
-
|
|
3199
|
-
|
|
3200
|
-
|
|
3201
|
-
|
|
3202
|
-
],
|
|
3192
|
+
}), ae = [
|
|
3193
|
+
i.CHART,
|
|
3194
|
+
i.TABLE,
|
|
3195
|
+
i.MARKDOWN,
|
|
3196
|
+
i.FREEFORM
|
|
3197
|
+
], se = [
|
|
3198
|
+
i.CHART,
|
|
3199
|
+
i.TABLE,
|
|
3200
|
+
i.FILTER,
|
|
3201
|
+
i.FREEFORM
|
|
3202
|
+
], ce = N(() => ae.includes(D.value.type)), le = N(() => se.includes(D.value.type)), ue = N(() => D.value.filters ? D.value.filters.length : 0), A = N(() => (D.value.filters || []).slice(0, 2)), de = N(() => Math.max(0, ue.value - A.value.length)), fe = N(() => {
|
|
3203
3203
|
let e = D.value.filters || [];
|
|
3204
3204
|
return ["global", "cross"].map((t) => ({
|
|
3205
3205
|
type: t,
|
|
3206
3206
|
filters: e.filter((e) => t === "global" ? e.source === "global" : e.source !== "global")
|
|
3207
3207
|
})).filter((e) => e.filters.length > 0);
|
|
3208
|
-
}),
|
|
3209
|
-
async function
|
|
3208
|
+
}), pe = N(() => fe.value.find((e) => e.type === f.value)?.filters || []);
|
|
3209
|
+
async function me(e, t) {
|
|
3210
3210
|
if (f.value === t) {
|
|
3211
3211
|
f.value = null;
|
|
3212
3212
|
return;
|
|
@@ -3217,7 +3217,7 @@ var Vr = /*#__PURE__*/ e(Pr, [["render", Br], ["__scopeId", "data-v-da53ca6d"]])
|
|
|
3217
3217
|
left: `${c}px`,
|
|
3218
3218
|
top: `${n.bottom + 6}px`,
|
|
3219
3219
|
width: `${s}px`
|
|
3220
|
-
}, await
|
|
3220
|
+
}, await Se();
|
|
3221
3221
|
let l = d.value;
|
|
3222
3222
|
if (!l) return;
|
|
3223
3223
|
let u = l.getBoundingClientRect(), m = a + (r?.height ?? window.innerHeight);
|
|
@@ -3226,10 +3226,10 @@ var Vr = /*#__PURE__*/ e(Pr, [["render", Br], ["__scopeId", "data-v-da53ca6d"]])
|
|
|
3226
3226
|
top: `${Math.max(a + 8, n.top - u.height - 6)}px`
|
|
3227
3227
|
});
|
|
3228
3228
|
}
|
|
3229
|
-
|
|
3229
|
+
oe(() => d.value, () => {
|
|
3230
3230
|
f.value = null;
|
|
3231
3231
|
}, { enabled: () => f.value !== null });
|
|
3232
|
-
function
|
|
3232
|
+
function he(e, t) {
|
|
3233
3233
|
let n = e?.trim();
|
|
3234
3234
|
if (!n) return {
|
|
3235
3235
|
text: t,
|
|
@@ -3249,59 +3249,59 @@ var Vr = /*#__PURE__*/ e(Pr, [["render", Br], ["__scopeId", "data-v-da53ca6d"]])
|
|
|
3249
3249
|
level: 3
|
|
3250
3250
|
};
|
|
3251
3251
|
}
|
|
3252
|
-
let
|
|
3253
|
-
function ve() {
|
|
3254
|
-
_e.value && (c.value = !0, s.value = !1);
|
|
3255
|
-
}
|
|
3252
|
+
let ge = N(() => he(D.value.name, ie.value)), j = N(() => ge.value.text), _e = N(() => `item-title-level-${ge.value.level}`), ve = N(() => s.value && !a.value && !c.value);
|
|
3256
3253
|
function ye() {
|
|
3254
|
+
ve.value && (c.value = !0, s.value = !1);
|
|
3255
|
+
}
|
|
3256
|
+
function be() {
|
|
3257
3257
|
s.value = !0, c.value = !1;
|
|
3258
3258
|
}
|
|
3259
|
-
function
|
|
3259
|
+
function R() {
|
|
3260
3260
|
s.value = !1, c.value = !1;
|
|
3261
3261
|
}
|
|
3262
|
-
return
|
|
3263
|
-
enabled: () =>
|
|
3262
|
+
return oe([l, u], ye, {
|
|
3263
|
+
enabled: () => ve.value,
|
|
3264
3264
|
eventName: "mousedown"
|
|
3265
|
-
}), (t, r) => (
|
|
3266
|
-
class:
|
|
3267
|
-
"grid-item-chart-style":
|
|
3268
|
-
"grid-item-markdown-style": D.value.type ===
|
|
3265
|
+
}), (t, r) => (U(), I(M, null, [L("div", {
|
|
3266
|
+
class: H(["grid-item-content", {
|
|
3267
|
+
"grid-item-chart-style": le.value,
|
|
3268
|
+
"grid-item-markdown-style": D.value.type === J(i).MARKDOWN,
|
|
3269
3269
|
"grid-item-section-header-style": O.value,
|
|
3270
3270
|
"grid-item-edit-style": e.editMode
|
|
3271
3271
|
}]),
|
|
3272
3272
|
"data-testid": `dashboard-component-${e.item.i}`,
|
|
3273
|
-
onMouseenter:
|
|
3274
|
-
onMouseleave:
|
|
3273
|
+
onMouseenter: be,
|
|
3274
|
+
onMouseleave: R
|
|
3275
3275
|
}, [
|
|
3276
|
-
e.editMode && O.value ? (
|
|
3276
|
+
e.editMode && O.value ? (U(), I("div", {
|
|
3277
3277
|
key: 0,
|
|
3278
|
-
class:
|
|
3279
|
-
}, [
|
|
3278
|
+
class: H(["dev-toolbar-shell", { "dev-toolbar-visible": ve.value }])
|
|
3279
|
+
}, [L("div", {
|
|
3280
3280
|
ref_key: "devToolbarRef",
|
|
3281
3281
|
ref: u,
|
|
3282
3282
|
class: "dev-toolbar",
|
|
3283
3283
|
"data-testid": "dashboard-item-header-controls"
|
|
3284
3284
|
}, [
|
|
3285
|
-
|
|
3285
|
+
L("button", {
|
|
3286
3286
|
onClick: C,
|
|
3287
3287
|
class: "control-btn",
|
|
3288
3288
|
"data-testid": `edit-dashboard-item-content-${e.item.i}`,
|
|
3289
3289
|
title: "Edit title"
|
|
3290
|
-
}, [...r[4] ||= [
|
|
3291
|
-
|
|
3290
|
+
}, [...r[4] ||= [L("i", { class: "mdi mdi-pencil-outline icon" }, null, -1)]], 8, Ur),
|
|
3291
|
+
L("button", {
|
|
3292
3292
|
onClick: ee,
|
|
3293
3293
|
class: "control-btn",
|
|
3294
3294
|
"data-testid": `copy-dashboard-item-${e.item.i}`,
|
|
3295
3295
|
title: "Copy item"
|
|
3296
|
-
}, [...r[5] ||= [
|
|
3297
|
-
|
|
3296
|
+
}, [...r[5] ||= [L("i", { class: "mdi mdi-content-copy icon" }, null, -1)]], 8, Wr),
|
|
3297
|
+
L("button", {
|
|
3298
3298
|
onClick: w,
|
|
3299
3299
|
class: "control-btn dashboard-remove-btn",
|
|
3300
3300
|
"data-testid": `remove-dashboard-item-${e.item.i}`,
|
|
3301
3301
|
title: "Remove item"
|
|
3302
|
-
}, [...r[6] ||= [
|
|
3303
|
-
], 512)], 2)) :
|
|
3304
|
-
O.value ?
|
|
3302
|
+
}, [...r[6] ||= [L("i", { class: "mdi mdi-delete-outline icon" }, null, -1)]], 8, Gr)
|
|
3303
|
+
], 512)], 2)) : F("", !0),
|
|
3304
|
+
O.value ? F("", !0) : (U(), I("div", Kr, [L("div", qr, [e.editMode ? (U(), I("div", Jr, [...r[7] ||= [L("svg", {
|
|
3305
3305
|
xmlns: "http://www.w3.org/2000/svg",
|
|
3306
3306
|
width: "16",
|
|
3307
3307
|
height: "16",
|
|
@@ -3313,25 +3313,25 @@ var Vr = /*#__PURE__*/ e(Pr, [["render", Br], ["__scopeId", "data-v-da53ca6d"]])
|
|
|
3313
3313
|
"stroke-linejoin": "round",
|
|
3314
3314
|
class: "drag-handle-svg"
|
|
3315
3315
|
}, [
|
|
3316
|
-
|
|
3316
|
+
L("line", {
|
|
3317
3317
|
x1: "3",
|
|
3318
3318
|
y1: "12",
|
|
3319
3319
|
x2: "21",
|
|
3320
3320
|
y2: "12"
|
|
3321
3321
|
}),
|
|
3322
|
-
|
|
3322
|
+
L("line", {
|
|
3323
3323
|
x1: "3",
|
|
3324
3324
|
y1: "6",
|
|
3325
3325
|
x2: "21",
|
|
3326
3326
|
y2: "6"
|
|
3327
3327
|
}),
|
|
3328
|
-
|
|
3328
|
+
L("line", {
|
|
3329
3329
|
x1: "3",
|
|
3330
3330
|
y1: "18",
|
|
3331
3331
|
x2: "21",
|
|
3332
3332
|
y2: "18"
|
|
3333
3333
|
})
|
|
3334
|
-
], -1)]])) :
|
|
3334
|
+
], -1)]])) : F("", !0), L("div", Yr, [a.value ? Z((U(), I("input", {
|
|
3335
3335
|
key: 1,
|
|
3336
3336
|
id: `title-input-${e.item.i}`,
|
|
3337
3337
|
"onUpdate:modelValue": r[0] ||= (e) => o.value = e,
|
|
@@ -3340,56 +3340,56 @@ var Vr = /*#__PURE__*/ e(Pr, [["render", Br], ["__scopeId", "data-v-da53ca6d"]])
|
|
|
3340
3340
|
class: "title-input",
|
|
3341
3341
|
type: "text",
|
|
3342
3342
|
placeholder: ie.value
|
|
3343
|
-
}, null, 40, $r)), [[
|
|
3343
|
+
}, null, 40, $r)), [[Ae, o.value]]) : (U(), I("div", {
|
|
3344
3344
|
key: 0,
|
|
3345
|
-
class:
|
|
3346
|
-
title:
|
|
3345
|
+
class: H(["item-title editable-title", [_e.value, { "item-title-static": !e.editMode }]]),
|
|
3346
|
+
title: j.value,
|
|
3347
3347
|
onClick: _
|
|
3348
|
-
}, [
|
|
3348
|
+
}, [L("span", Zr, q(j.value), 1), e.editMode ? (U(), I("i", Qr)) : F("", !0)], 10, Xr))])]), L("div", ei, [ne.value ? (U(), P(k, {
|
|
3349
3349
|
key: 0,
|
|
3350
3350
|
content: "Custom code widget — runs in a sandboxed frame with no network or app access",
|
|
3351
3351
|
position: "bottom"
|
|
3352
3352
|
}, {
|
|
3353
|
-
default:
|
|
3353
|
+
default: X(() => [...r[8] ||= [L("span", {
|
|
3354
3354
|
class: "widget-badge",
|
|
3355
3355
|
"data-testid": "freeform-widget-badge"
|
|
3356
|
-
}, [
|
|
3356
|
+
}, [L("i", { class: "mdi mdi-code-braces" })], -1)]]),
|
|
3357
3357
|
_: 1
|
|
3358
|
-
})) :
|
|
3358
|
+
})) : F("", !0), ce.value && ue.value > 0 ? (U(), I("div", ti, [L("div", ni, [(U(!0), I(M, null, G(A.value, (t, n) => (U(), P(k, {
|
|
3359
3359
|
key: `${t.source}-${t.value}-${n}`,
|
|
3360
3360
|
content: h(t.value, t.parameters),
|
|
3361
3361
|
position: "bottom"
|
|
3362
3362
|
}, {
|
|
3363
|
-
default:
|
|
3364
|
-
|
|
3365
|
-
|
|
3363
|
+
default: X(() => [L("div", ri, [
|
|
3364
|
+
L("span", ii, [L("span", ai, q(t.source === "global" ? t.source : "cross") + ":\xA0", 1), L("span", oi, q(h(t.value, t.parameters)), 1)]),
|
|
3365
|
+
L("button", {
|
|
3366
3366
|
class: "filter-copy-btn",
|
|
3367
3367
|
onClick: Ne((e) => g(t.value, t.parameters), ["stop"]),
|
|
3368
3368
|
title: "Copy filter value"
|
|
3369
3369
|
}, " ⎘ ", 8, si),
|
|
3370
|
-
e.editMode && t.source !== "global" ? (
|
|
3370
|
+
e.editMode && t.source !== "global" ? (U(), I("button", {
|
|
3371
3371
|
key: 0,
|
|
3372
3372
|
class: "filter-remove-btn",
|
|
3373
3373
|
onClick: (e) => te(t.source),
|
|
3374
3374
|
title: `Remove ${t.source} filter`
|
|
3375
|
-
}, " x ", 8, ci)) :
|
|
3375
|
+
}, " x ", 8, ci)) : F("", !0)
|
|
3376
3376
|
])]),
|
|
3377
3377
|
_: 2
|
|
3378
|
-
}, 1032, ["content"]))), 128)),
|
|
3378
|
+
}, 1032, ["content"]))), 128)), de.value > 0 ? (U(), P(k, {
|
|
3379
3379
|
key: 0,
|
|
3380
|
-
content: `${
|
|
3380
|
+
content: `${de.value} more filter(s)`,
|
|
3381
3381
|
position: "bottom"
|
|
3382
3382
|
}, {
|
|
3383
|
-
default:
|
|
3383
|
+
default: X(() => [L("div", li, "+" + q(de.value), 1)]),
|
|
3384
3384
|
_: 1
|
|
3385
|
-
}, 8, ["content"])) :
|
|
3385
|
+
}, 8, ["content"])) : F("", !0)]), L("div", ui, [(U(!0), I(M, null, G(fe.value, (e) => (U(), I("button", {
|
|
3386
3386
|
key: e.type,
|
|
3387
3387
|
type: "button",
|
|
3388
3388
|
class: "header-filter-chip mobile-filter-summary",
|
|
3389
3389
|
"aria-expanded": f.value === e.type,
|
|
3390
|
-
onClick: Ne((t) =>
|
|
3391
|
-
},
|
|
3392
|
-
|
|
3390
|
+
onClick: Ne((t) => me(t, e.type), ["stop"])
|
|
3391
|
+
}, q(e.type) + ":" + q(e.filters.length), 9, di))), 128))])])) : F("", !0)])])),
|
|
3392
|
+
L("div", { class: H(["content-area", { "section-header-content": O.value }]) }, [O.value ? (U(), I(M, { key: 0 }, [a.value ? Z((U(), I("input", {
|
|
3393
3393
|
key: 1,
|
|
3394
3394
|
id: `title-input-${e.item.i}`,
|
|
3395
3395
|
"onUpdate:modelValue": r[1] ||= (e) => o.value = e,
|
|
@@ -3398,12 +3398,12 @@ var Vr = /*#__PURE__*/ e(Pr, [["render", Br], ["__scopeId", "data-v-da53ca6d"]])
|
|
|
3398
3398
|
class: "title-input section-header-input no-drag",
|
|
3399
3399
|
type: "text",
|
|
3400
3400
|
placeholder: ie.value
|
|
3401
|
-
}, null, 40, mi)), [[
|
|
3401
|
+
}, null, 40, mi)), [[Ae, o.value]]) : (U(), I("div", {
|
|
3402
3402
|
key: 0,
|
|
3403
|
-
class:
|
|
3404
|
-
title:
|
|
3403
|
+
class: H(["section-header-display no-drag", [_e.value, { "section-header-editable": e.editMode }]]),
|
|
3404
|
+
title: j.value,
|
|
3405
3405
|
onClick: _
|
|
3406
|
-
}, [
|
|
3406
|
+
}, [L("span", pi, q(j.value), 1)], 10, fi))], 64)) : (U(), P(Oe(re.value), {
|
|
3407
3407
|
key: 1,
|
|
3408
3408
|
dashboardId: n.dashboardId,
|
|
3409
3409
|
itemId: e.item.i,
|
|
@@ -3422,69 +3422,69 @@ var Vr = /*#__PURE__*/ e(Pr, [["render", Br], ["__scopeId", "data-v-da53ca6d"]])
|
|
|
3422
3422
|
"getDashboardQueryExecutor",
|
|
3423
3423
|
"editMode",
|
|
3424
3424
|
"symbols"
|
|
3425
|
-
])), e.editMode && !O.value ? (
|
|
3425
|
+
])), e.editMode && !O.value ? (U(), I("div", {
|
|
3426
3426
|
key: 2,
|
|
3427
|
-
class:
|
|
3428
|
-
}, [
|
|
3427
|
+
class: H(["content-edit-overlay no-drag", { "content-edit-overlay-visible": ve.value }])
|
|
3428
|
+
}, [L("div", {
|
|
3429
3429
|
ref_key: "contentEditToolbarRef",
|
|
3430
3430
|
ref: l,
|
|
3431
3431
|
class: "content-edit-toolbar",
|
|
3432
3432
|
"data-testid": "dashboard-item-header-controls"
|
|
3433
3433
|
}, [
|
|
3434
|
-
|
|
3434
|
+
L("button", {
|
|
3435
3435
|
onClick: b,
|
|
3436
3436
|
class: "control-btn",
|
|
3437
3437
|
"data-testid": `increase-height-item-${e.item.i}`,
|
|
3438
3438
|
title: "Increase height"
|
|
3439
|
-
}, [...r[9] ||= [
|
|
3440
|
-
|
|
3439
|
+
}, [...r[9] ||= [L("i", { class: "mdi mdi-plus icon" }, null, -1)]], 8, hi),
|
|
3440
|
+
L("button", {
|
|
3441
3441
|
onClick: x,
|
|
3442
3442
|
class: "control-btn",
|
|
3443
3443
|
"data-testid": `decrease-height-item-${e.item.i}`,
|
|
3444
3444
|
title: "Decrease height"
|
|
3445
|
-
}, [...r[10] ||= [
|
|
3446
|
-
|
|
3445
|
+
}, [...r[10] ||= [L("i", { class: "mdi mdi-minus icon" }, null, -1)]], 8, gi),
|
|
3446
|
+
L("button", {
|
|
3447
3447
|
onClick: C,
|
|
3448
3448
|
class: "control-btn",
|
|
3449
3449
|
"data-testid": `edit-dashboard-item-content-${e.item.i}`,
|
|
3450
3450
|
title: "Edit data"
|
|
3451
|
-
}, [...r[11] ||= [
|
|
3452
|
-
|
|
3451
|
+
}, [...r[11] ||= [L("i", { class: "mdi mdi-database-edit-outline icon" }, null, -1)]], 8, _i),
|
|
3452
|
+
L("button", {
|
|
3453
3453
|
onClick: y,
|
|
3454
3454
|
class: "control-btn",
|
|
3455
3455
|
"data-testid": `toggle-crossfilter-item-content-${e.item.i}`,
|
|
3456
3456
|
title: D.value.allowCrossFilter ? "Toggle cross-filtering OFF" : "Toggle cross-filtering ON"
|
|
3457
|
-
}, [D.value.allowCrossFilter ? (
|
|
3458
|
-
|
|
3457
|
+
}, [D.value.allowCrossFilter ? (U(), I("i", yi)) : (U(), I("i", bi))], 8, vi),
|
|
3458
|
+
L("button", {
|
|
3459
3459
|
onClick: ee,
|
|
3460
3460
|
class: "control-btn",
|
|
3461
3461
|
"data-testid": `copy-dashboard-item-${e.item.i}`,
|
|
3462
3462
|
title: "Copy item"
|
|
3463
|
-
}, [...r[12] ||= [
|
|
3464
|
-
|
|
3463
|
+
}, [...r[12] ||= [L("i", { class: "mdi mdi-content-copy icon" }, null, -1)]], 8, xi),
|
|
3464
|
+
L("button", {
|
|
3465
3465
|
onClick: w,
|
|
3466
3466
|
class: "control-btn dashboard-remove-btn",
|
|
3467
3467
|
"data-testid": `remove-dashboard-item-${e.item.i}`,
|
|
3468
3468
|
title: "Remove item"
|
|
3469
|
-
}, [...r[13] ||= [
|
|
3470
|
-
], 512)], 2)) :
|
|
3471
|
-
], 42, Hr), (
|
|
3469
|
+
}, [...r[13] ||= [L("i", { class: "mdi mdi-delete-outline icon" }, null, -1)]], 8, Si)
|
|
3470
|
+
], 512)], 2)) : F("", !0)], 2)
|
|
3471
|
+
], 42, Hr), (U(), P(xe, { to: "body" }, [f.value ? (U(), I("div", {
|
|
3472
3472
|
key: 0,
|
|
3473
3473
|
ref_key: "mobileFilterPopoverRef",
|
|
3474
3474
|
ref: d,
|
|
3475
3475
|
class: "mobile-filter-popover",
|
|
3476
|
-
style:
|
|
3476
|
+
style: Ce(p.value),
|
|
3477
3477
|
role: "dialog",
|
|
3478
3478
|
"aria-label": `${f.value} filters`,
|
|
3479
3479
|
onClick: r[3] ||= Ne(() => {}, ["stop"])
|
|
3480
|
-
}, [
|
|
3480
|
+
}, [L("div", wi, [L("span", null, q(f.value) + " filters", 1), L("button", {
|
|
3481
3481
|
type: "button",
|
|
3482
3482
|
"aria-label": "Close filter details",
|
|
3483
3483
|
onClick: r[2] ||= (e) => f.value = null
|
|
3484
|
-
}, [...r[14] ||= [
|
|
3484
|
+
}, [...r[14] ||= [L("i", { class: "mdi mdi-close" }, null, -1)]])]), L("div", Ti, [(U(!0), I(M, null, G(pe.value, (e, t) => (U(), I("div", {
|
|
3485
3485
|
key: `${e.source}-${t}`,
|
|
3486
3486
|
class: "mobile-filter-popover-value"
|
|
3487
|
-
},
|
|
3487
|
+
}, q(h(e.value, e.parameters)), 1))), 128))])], 12, Ci)) : F("", !0)]))], 64));
|
|
3488
3488
|
}
|
|
3489
3489
|
}), [["__scopeId", "data-v-61a867fc"]]), Di = { class: "add-item-content" }, Oi = {
|
|
3490
3490
|
class: "item-type-grid",
|
|
@@ -3493,70 +3493,70 @@ var Vr = /*#__PURE__*/ e(Pr, [["render", Br], ["__scopeId", "data-v-da53ca6d"]])
|
|
|
3493
3493
|
}, ki = ["data-testid"], Ai = ["value", "data-testid"], ji = { class: "item-option-card" }, Mi = {
|
|
3494
3494
|
class: "item-option-icon",
|
|
3495
3495
|
"aria-hidden": "true"
|
|
3496
|
-
}, Ni = { class: "item-option-text" }, Pi = { class: "item-option-label" }, Fi = { class: "item-option-help" }, Ii = /*#__PURE__*/ e(/* @__PURE__ */
|
|
3496
|
+
}, Ni = { class: "item-option-text" }, Pi = { class: "item-option-label" }, Fi = { class: "item-option-help" }, Ii = /*#__PURE__*/ e(/* @__PURE__ */ B({
|
|
3497
3497
|
__name: "DashboardAddItemModal",
|
|
3498
3498
|
props: { show: { type: Boolean } },
|
|
3499
3499
|
emits: ["add", "close"],
|
|
3500
3500
|
setup(e, { emit: t }) {
|
|
3501
|
-
let n = t, r =
|
|
3501
|
+
let n = t, r = W(i.CHART), a = [
|
|
3502
3502
|
{
|
|
3503
|
-
value:
|
|
3503
|
+
value: i.CHART,
|
|
3504
3504
|
label: "Chart",
|
|
3505
3505
|
description: "Visualize trends, comparisons, and distributions.",
|
|
3506
3506
|
icon: "mdi-chart-bar",
|
|
3507
3507
|
testId: "dashboard-add-item-type-chart"
|
|
3508
3508
|
},
|
|
3509
3509
|
{
|
|
3510
|
-
value:
|
|
3510
|
+
value: i.TABLE,
|
|
3511
3511
|
label: "Table",
|
|
3512
3512
|
description: "Show detailed rows and values in a grid.",
|
|
3513
3513
|
icon: "mdi-table-large",
|
|
3514
3514
|
testId: "dashboard-add-item-type-table"
|
|
3515
3515
|
},
|
|
3516
3516
|
{
|
|
3517
|
-
value:
|
|
3517
|
+
value: i.MARKDOWN,
|
|
3518
3518
|
label: "Markdown",
|
|
3519
3519
|
description: "Add notes, headings, or narrative context.",
|
|
3520
3520
|
icon: "mdi-text-box-outline",
|
|
3521
3521
|
testId: "dashboard-add-item-type-markdown"
|
|
3522
3522
|
},
|
|
3523
3523
|
{
|
|
3524
|
-
value:
|
|
3524
|
+
value: i.FILTER,
|
|
3525
3525
|
label: "Filter",
|
|
3526
3526
|
description: "Let viewers narrow the dashboard interactively.",
|
|
3527
3527
|
icon: "mdi-filter-variant",
|
|
3528
3528
|
testId: "dashboard-add-item-type-filter"
|
|
3529
3529
|
},
|
|
3530
3530
|
{
|
|
3531
|
-
value:
|
|
3531
|
+
value: i.FREEFORM,
|
|
3532
3532
|
label: "Custom Widget",
|
|
3533
3533
|
description: "Hand-authored HTML rendered in a sandboxed frame, wired to a query.",
|
|
3534
3534
|
icon: "mdi-code-braces",
|
|
3535
3535
|
testId: "dashboard-add-item-type-freeform"
|
|
3536
3536
|
},
|
|
3537
3537
|
{
|
|
3538
|
-
value:
|
|
3538
|
+
value: i.SECTION_HEADER,
|
|
3539
3539
|
label: "Section Header",
|
|
3540
3540
|
description: "Break the dashboard into labeled sections.",
|
|
3541
3541
|
icon: "mdi-format-title",
|
|
3542
3542
|
testId: "dashboard-add-item-type-section-header"
|
|
3543
3543
|
},
|
|
3544
3544
|
{
|
|
3545
|
-
value:
|
|
3545
|
+
value: i.MEMO,
|
|
3546
3546
|
label: "Executive Memo",
|
|
3547
3547
|
description: "Headline, verdict, magnitude, cause, action, confidence — at the top of a report.",
|
|
3548
3548
|
icon: "mdi-file-document-edit-outline",
|
|
3549
3549
|
testId: "dashboard-add-item-type-memo"
|
|
3550
3550
|
},
|
|
3551
3551
|
{
|
|
3552
|
-
value:
|
|
3552
|
+
value: i.CLAIM,
|
|
3553
3553
|
label: "Claim Section",
|
|
3554
3554
|
description: "A single claim with caveat and drilldown — pair with a chart for evidence.",
|
|
3555
3555
|
icon: "mdi-comment-quote-outline",
|
|
3556
3556
|
testId: "dashboard-add-item-type-claim"
|
|
3557
3557
|
},
|
|
3558
3558
|
{
|
|
3559
|
-
value:
|
|
3559
|
+
value: i.APPENDIX_HEADER,
|
|
3560
3560
|
label: "Appendix Header",
|
|
3561
3561
|
description: "Divider that introduces the auditability section at the bottom of a report.",
|
|
3562
3562
|
icon: "mdi-bookshelf",
|
|
@@ -3569,33 +3569,33 @@ var Vr = /*#__PURE__*/ e(Pr, [["render", Br], ["__scopeId", "data-v-da53ca6d"]])
|
|
|
3569
3569
|
function s() {
|
|
3570
3570
|
n("close");
|
|
3571
3571
|
}
|
|
3572
|
-
return (t, n) => (
|
|
3572
|
+
return (t, n) => (U(), P(ce, {
|
|
3573
3573
|
show: e.show,
|
|
3574
3574
|
title: "Add New Item",
|
|
3575
3575
|
"max-width": "680px",
|
|
3576
3576
|
"test-id": "dashboard-add-item-modal",
|
|
3577
3577
|
onClose: s
|
|
3578
3578
|
}, {
|
|
3579
|
-
footer:
|
|
3579
|
+
footer: X(() => [L("button", {
|
|
3580
3580
|
class: "cancel-button",
|
|
3581
3581
|
onClick: s
|
|
3582
|
-
}, "Cancel"),
|
|
3582
|
+
}, "Cancel"), L("button", {
|
|
3583
3583
|
onClick: o,
|
|
3584
3584
|
class: "add-button",
|
|
3585
3585
|
"data-testid": "dashboard-add-item-confirm"
|
|
3586
3586
|
}, " Add Item ")]),
|
|
3587
|
-
default:
|
|
3587
|
+
default: X(() => [L("div", Di, [n[1] ||= L("p", { class: "add-item-description" }, "Choose the kind of block you want to add to the dashboard.", -1), L("div", Oi, [(U(), I(M, null, G(a, (e) => L("label", {
|
|
3588
3588
|
key: e.value,
|
|
3589
|
-
class:
|
|
3589
|
+
class: H(["item-option", { selected: r.value === e.value }]),
|
|
3590
3590
|
"data-testid": `${e.testId}-option`
|
|
3591
|
-
}, [
|
|
3591
|
+
}, [Z(L("input", {
|
|
3592
3592
|
"onUpdate:modelValue": n[0] ||= (e) => r.value = e,
|
|
3593
3593
|
class: "item-option-input",
|
|
3594
3594
|
type: "radio",
|
|
3595
3595
|
name: "dashboard-add-item-type",
|
|
3596
3596
|
value: e.value,
|
|
3597
3597
|
"data-testid": e.testId
|
|
3598
|
-
}, null, 8, Ai), [[
|
|
3598
|
+
}, null, 8, Ai), [[ke, r.value]]), L("span", ji, [L("span", Mi, [L("i", { class: H(["mdi", e.icon]) }, null, 2)]), L("span", Ni, [L("span", Pi, q(e.label), 1), L("span", Fi, q(e.description), 1)])])], 10, ki)), 64))])])]),
|
|
3599
3599
|
_: 1
|
|
3600
3600
|
}, 8, ["show"]));
|
|
3601
3601
|
}
|
|
@@ -3604,10 +3604,10 @@ var Vr = /*#__PURE__*/ e(Pr, [["render", Br], ["__scopeId", "data-v-da53ca6d"]])
|
|
|
3604
3604
|
//#region monaco/editorHelpers.ts
|
|
3605
3605
|
function Li(e = "dark") {
|
|
3606
3606
|
let t = e === "light";
|
|
3607
|
-
|
|
3607
|
+
he.defineTheme("trilogyStudio", {
|
|
3608
3608
|
base: t ? "vs" : "vs-dark",
|
|
3609
3609
|
inherit: !0,
|
|
3610
|
-
rules:
|
|
3610
|
+
rules: _e,
|
|
3611
3611
|
colors: {
|
|
3612
3612
|
"editor.background": t ? "#ffffff" : "#111318",
|
|
3613
3613
|
"editor.foreground": t ? "#1f2937" : "#e5e7eb",
|
|
@@ -3625,7 +3625,7 @@ function Li(e = "dark") {
|
|
|
3625
3625
|
"editorWidget.background": t ? "#ffffff" : "#111318",
|
|
3626
3626
|
"editorWidget.border": t ? "#d6dde6" : "#2a2f37"
|
|
3627
3627
|
}
|
|
3628
|
-
}),
|
|
3628
|
+
}), he.setTheme("trilogyStudio");
|
|
3629
3629
|
}
|
|
3630
3630
|
function Ri(e, t = {}) {
|
|
3631
3631
|
let n = {
|
|
@@ -3638,7 +3638,7 @@ function Ri(e, t = {}) {
|
|
|
3638
3638
|
theme: "trilogyStudio",
|
|
3639
3639
|
...t
|
|
3640
3640
|
};
|
|
3641
|
-
return
|
|
3641
|
+
return he.create(e, n);
|
|
3642
3642
|
}
|
|
3643
3643
|
function zi(e, t = "") {
|
|
3644
3644
|
if (!e) return t;
|
|
@@ -3647,7 +3647,7 @@ function zi(e, t = "") {
|
|
|
3647
3647
|
}
|
|
3648
3648
|
function Bi(e, t = {}) {
|
|
3649
3649
|
let { onValidate: n, onRun: r, onSave: i } = t;
|
|
3650
|
-
if (n && e.addCommand(
|
|
3650
|
+
if (n && e.addCommand(j.CtrlCmd | j.Shift | me.KeyV, n), r && e.addCommand(j.CtrlCmd | me.Enter, r), i && e.addCommand(j.CtrlCmd | me.KeyS, i), e.addCommand(j.CtrlCmd | me.KeyZ, () => {
|
|
3651
3651
|
e.trigger("ide", "undo", {});
|
|
3652
3652
|
}), t.onContentChange) {
|
|
3653
3653
|
let n = null;
|
|
@@ -3660,11 +3660,11 @@ function Bi(e, t = {}) {
|
|
|
3660
3660
|
}
|
|
3661
3661
|
//#endregion
|
|
3662
3662
|
//#region components/SimpleEditor.vue?vue&type=script&lang.ts
|
|
3663
|
-
var Q = null, Vi =
|
|
3663
|
+
var Q = null, Vi = B({
|
|
3664
3664
|
name: "EnhancedEditor",
|
|
3665
3665
|
components: {
|
|
3666
|
-
SymbolsPane:
|
|
3667
|
-
LoadingView:
|
|
3666
|
+
SymbolsPane: ve,
|
|
3667
|
+
LoadingView: de
|
|
3668
3668
|
},
|
|
3669
3669
|
props: {
|
|
3670
3670
|
onSave: {
|
|
@@ -3714,12 +3714,12 @@ var Q = null, Vi = V({
|
|
|
3714
3714
|
},
|
|
3715
3715
|
setup() {
|
|
3716
3716
|
return {
|
|
3717
|
-
queryExecutionService:
|
|
3718
|
-
connectionStore:
|
|
3719
|
-
isMobile:
|
|
3720
|
-
llmConnectionStore:
|
|
3721
|
-
analyticsStore:
|
|
3722
|
-
userSettingsStore:
|
|
3717
|
+
queryExecutionService: V("queryExecutionService"),
|
|
3718
|
+
connectionStore: V("connectionStore"),
|
|
3719
|
+
isMobile: V("isMobile"),
|
|
3720
|
+
llmConnectionStore: V("llmConnectionStore"),
|
|
3721
|
+
analyticsStore: V("analyticsStore"),
|
|
3722
|
+
userSettingsStore: p()
|
|
3723
3723
|
};
|
|
3724
3724
|
},
|
|
3725
3725
|
created() {
|
|
@@ -3769,11 +3769,11 @@ var Q = null, Vi = V({
|
|
|
3769
3769
|
onValidate: () => this.validateQuery(),
|
|
3770
3770
|
onRun: () => this.runQuery(),
|
|
3771
3771
|
onGenerateLLM: () => this.generateLLMQuery()
|
|
3772
|
-
}), Q.addCommand(
|
|
3772
|
+
}), Q.addCommand(j.CtrlCmd | me.Space, () => {
|
|
3773
3773
|
this.togglePanel("symbols");
|
|
3774
|
-
}), Q.addCommand(
|
|
3774
|
+
}), Q.addCommand(j.CtrlCmd | j.Shift | me.Enter, () => {
|
|
3775
3775
|
this.generateLLMQuery();
|
|
3776
|
-
}), this.editor.type !== "sql" && (Q.addCommand(
|
|
3776
|
+
}), this.editor.type !== "sql" && (Q.addCommand(j.CtrlCmd | me.KeyK, () => {
|
|
3777
3777
|
this.formatQuery();
|
|
3778
3778
|
}), Q.addAction({
|
|
3779
3779
|
id: "trilogy.simple-editor.format-query",
|
|
@@ -3796,7 +3796,7 @@ var Q = null, Vi = V({
|
|
|
3796
3796
|
if (!Q) return;
|
|
3797
3797
|
let t = Q.getPosition();
|
|
3798
3798
|
t && e.insertText && (Q.executeEdits("", [{
|
|
3799
|
-
range: new
|
|
3799
|
+
range: new ge(t.lineNumber, t.column, t.lineNumber, t.column),
|
|
3800
3800
|
text: e.insertText
|
|
3801
3801
|
}]), Q.focus(), this.isMobile && this.closePanel());
|
|
3802
3802
|
},
|
|
@@ -3815,7 +3815,7 @@ var Q = null, Vi = V({
|
|
|
3815
3815
|
}, o = await n.validateQuery(i?.id || this.editor.connection, a);
|
|
3816
3816
|
if (o && e) {
|
|
3817
3817
|
let e = Q.getModel();
|
|
3818
|
-
e &&
|
|
3818
|
+
e && he.setModelMarkers(e, "owner", o.data.items || []), o.data.completion_items && (this.editor.completionSymbols = o.data.completion_items);
|
|
3819
3819
|
}
|
|
3820
3820
|
return o ? o.data.imports : [];
|
|
3821
3821
|
} catch (e) {
|
|
@@ -3947,68 +3947,68 @@ var Q = null, Vi = V({
|
|
|
3947
3947
|
class: "operation-type"
|
|
3948
3948
|
};
|
|
3949
3949
|
function na(e, t, n, r, i, a) {
|
|
3950
|
-
let o =
|
|
3951
|
-
return
|
|
3952
|
-
|
|
3953
|
-
|
|
3950
|
+
let o = K("SymbolsPane"), s = K("loading-view");
|
|
3951
|
+
return U(), I("div", Hi, [
|
|
3952
|
+
L("div", Ui, [L("div", Wi, [
|
|
3953
|
+
L("button", {
|
|
3954
3954
|
class: "action-item",
|
|
3955
3955
|
onClick: t[0] ||= (...t) => e.generateLLMQuery && e.generateLLMQuery(...t),
|
|
3956
3956
|
title: "Generate query using AI",
|
|
3957
3957
|
"data-testid": "editor-generate-button"
|
|
3958
3958
|
}, " Generate "),
|
|
3959
|
-
e.editor.type === "sql" ?
|
|
3959
|
+
e.editor.type === "sql" ? F("", !0) : (U(), I("button", {
|
|
3960
3960
|
key: 0,
|
|
3961
3961
|
class: "action-item",
|
|
3962
3962
|
onClick: t[1] ||= () => e.validateQuery()
|
|
3963
3963
|
}, " Parse ")),
|
|
3964
|
-
e.editor.type === "sql" ?
|
|
3964
|
+
e.editor.type === "sql" ? F("", !0) : (U(), I("button", {
|
|
3965
3965
|
key: 1,
|
|
3966
3966
|
class: "action-item",
|
|
3967
3967
|
onClick: t[2] ||= (...t) => e.formatQuery && e.formatQuery(...t),
|
|
3968
3968
|
title: "Format query"
|
|
3969
3969
|
}, " Format ")),
|
|
3970
|
-
|
|
3970
|
+
L("button", {
|
|
3971
3971
|
onClick: t[3] ||= (t) => e.editor.loading ? e.cancelQuery() : e.runQuery(),
|
|
3972
|
-
class:
|
|
3972
|
+
class: H(["action-item", {
|
|
3973
3973
|
"button-cancel": e.editor.loading,
|
|
3974
3974
|
"button-run": !e.editor.loading
|
|
3975
3975
|
}]),
|
|
3976
3976
|
"data-testid": "editor-run-button"
|
|
3977
|
-
},
|
|
3977
|
+
}, q(e.editor.loading ? "Cancel" : "Test"), 3)
|
|
3978
3978
|
])]),
|
|
3979
|
-
|
|
3980
|
-
|
|
3979
|
+
L("div", Gi, [
|
|
3980
|
+
L("div", {
|
|
3981
3981
|
ref: "editorElement",
|
|
3982
|
-
class:
|
|
3982
|
+
class: H(["editor-obj", {
|
|
3983
3983
|
"monaco-width-with-panel": e.isPanelVisible,
|
|
3984
3984
|
"monaco-width-no-panel": !e.isPanelVisible
|
|
3985
3985
|
}]),
|
|
3986
3986
|
"data-testid": "simple-editor-content"
|
|
3987
3987
|
}, null, 2),
|
|
3988
|
-
|
|
3988
|
+
Z(L("div", Ki, [z(o, {
|
|
3989
3989
|
symbols: e.editor.completionSymbols || [],
|
|
3990
3990
|
onSelectSymbol: e.insertSymbol,
|
|
3991
3991
|
ref: "symbolsPane"
|
|
3992
|
-
}, null, 8, ["symbols", "onSelectSymbol"])], 512), [[
|
|
3993
|
-
|
|
3994
|
-
class:
|
|
3992
|
+
}, null, 8, ["symbols", "onSelectSymbol"])], 512), [[je, e.isPanelVisible]]),
|
|
3993
|
+
L("div", qi, [L("div", Ji, [L("button", {
|
|
3994
|
+
class: H(["sidebar-icon-button", { active: e.isPanelVisible }]),
|
|
3995
3995
|
onClick: t[4] ||= (t) => e.togglePanel("symbols"),
|
|
3996
3996
|
title: "Symbols"
|
|
3997
|
-
}, [...t[5] ||= [
|
|
3997
|
+
}, [...t[5] ||= [L("i", { class: "mdi mdi-tag-search-outline" }, null, -1)]], 2)])])
|
|
3998
3998
|
]),
|
|
3999
|
-
|
|
3999
|
+
L("div", Yi, [e.editor.loading ? (U(), P(s, {
|
|
4000
4000
|
key: 0,
|
|
4001
4001
|
class: "loading-view",
|
|
4002
4002
|
text: "Loading...",
|
|
4003
4003
|
startTime: e.editor.startTime
|
|
4004
|
-
}, null, 8, ["startTime"])) : e.editor.error ? (
|
|
4005
|
-
e.lastOperation.duration ? (
|
|
4006
|
-
e.lastOperation.rows === void 0 ?
|
|
4007
|
-
e.lastOperation.type ? (
|
|
4008
|
-
])])) :
|
|
4004
|
+
}, null, 8, ["startTime"])) : e.editor.error ? (U(), I("div", Xi, q(e.editor.error), 1)) : e.lastOperation ? (U(), I("div", Zi, [L("div", { class: H(["status-badge", e.lastOperation.success ? "success" : "error"]) }, q(e.lastOperation.success ? "SUCCESS" : "FAILED"), 3), L("div", Qi, [
|
|
4005
|
+
e.lastOperation.duration ? (U(), I("div", $i, q(e.lastOperation.duration) + "ms", 1)) : F("", !0),
|
|
4006
|
+
e.lastOperation.rows === void 0 ? F("", !0) : (U(), I("div", ea, q(e.lastOperation.rows) + " " + q(e.lastOperation.rows === 1 ? "row" : "rows"), 1)),
|
|
4007
|
+
e.lastOperation.type ? (U(), I("div", ta, q(e.lastOperation.type), 1)) : F("", !0)
|
|
4008
|
+
])])) : F("", !0)])
|
|
4009
4009
|
]);
|
|
4010
4010
|
}
|
|
4011
|
-
var ra = /*#__PURE__*/ e(Vi, [["render", na], ["__scopeId", "data-v-79e13368"]]), ia = { class: "editor-overlay" }, aa = { class: "editor-actions" }, oa = ["data-testid"], sa = /*#__PURE__*/ e(/* @__PURE__ */
|
|
4011
|
+
var ra = /*#__PURE__*/ e(Vi, [["render", na], ["__scopeId", "data-v-79e13368"]]), ia = { class: "editor-overlay" }, aa = { class: "editor-actions" }, oa = ["data-testid"], sa = /*#__PURE__*/ e(/* @__PURE__ */ B({
|
|
4012
4012
|
__name: "DashboardEditorDialog",
|
|
4013
4013
|
props: {
|
|
4014
4014
|
initialWidth: {},
|
|
@@ -4020,30 +4020,30 @@ var ra = /*#__PURE__*/ e(Vi, [["render", na], ["__scopeId", "data-v-79e13368"]])
|
|
|
4020
4020
|
},
|
|
4021
4021
|
emits: ["save", "cancel"],
|
|
4022
4022
|
setup(e, { emit: t }) {
|
|
4023
|
-
let n = e, r = t, { editorElement: i, dialogStyle: a, startResize: o } =
|
|
4023
|
+
let n = e, r = t, { editorElement: i, dialogStyle: a, startResize: o } = be(() => r("cancel"), {
|
|
4024
4024
|
initialWidth: n.initialWidth,
|
|
4025
4025
|
initialHeight: n.initialHeight,
|
|
4026
4026
|
minWidth: n.minWidth,
|
|
4027
4027
|
minHeight: n.minHeight
|
|
4028
4028
|
});
|
|
4029
|
-
return (e, t) => (
|
|
4029
|
+
return (e, t) => (U(), I("div", ia, [L("div", {
|
|
4030
4030
|
ref: (e) => i.value = e,
|
|
4031
4031
|
class: "content-editor",
|
|
4032
|
-
style:
|
|
4032
|
+
style: Ce(J(a))
|
|
4033
4033
|
}, [
|
|
4034
|
-
|
|
4035
|
-
|
|
4034
|
+
De(e.$slots, "default", {}, void 0, !0),
|
|
4035
|
+
L("div", aa, [De(e.$slots, "actions", {}, () => [L("button", {
|
|
4036
4036
|
class: "save-button",
|
|
4037
4037
|
"data-testid": n.saveTestId || void 0,
|
|
4038
4038
|
onClick: t[0] ||= (e) => r("save")
|
|
4039
|
-
},
|
|
4039
|
+
}, q(n.saveLabel), 9, oa), L("button", {
|
|
4040
4040
|
class: "cancel-button",
|
|
4041
4041
|
onClick: t[1] ||= (e) => r("cancel")
|
|
4042
4042
|
}, "Cancel")], !0)]),
|
|
4043
|
-
|
|
4043
|
+
z(ye, { onStartResize: J(o) }, null, 8, ["onStartResize"])
|
|
4044
4044
|
], 4)]));
|
|
4045
4045
|
}
|
|
4046
|
-
}), [["__scopeId", "data-v-730a6200"]]), ca = { class: "editor-body" }, la = /*#__PURE__*/ e(/* @__PURE__ */
|
|
4046
|
+
}), [["__scopeId", "data-v-730a6200"]]), ca = { class: "editor-body" }, la = /*#__PURE__*/ e(/* @__PURE__ */ B({
|
|
4047
4047
|
__name: "DashboardChartEditor",
|
|
4048
4048
|
props: {
|
|
4049
4049
|
content: {},
|
|
@@ -4055,14 +4055,14 @@ var ra = /*#__PURE__*/ e(Vi, [["render", na], ["__scopeId", "data-v-79e13368"]])
|
|
|
4055
4055
|
},
|
|
4056
4056
|
emits: ["save", "cancel"],
|
|
4057
4057
|
setup(e, { emit: t }) {
|
|
4058
|
-
let n = e, r = t, i =
|
|
4058
|
+
let n = e, r = t, i = W(n.content), a = W(n.imports), o = W(null);
|
|
4059
4059
|
function s() {
|
|
4060
4060
|
o.value && r("save", o.value.getContent());
|
|
4061
4061
|
}
|
|
4062
4062
|
function c() {
|
|
4063
4063
|
r("cancel");
|
|
4064
4064
|
}
|
|
4065
|
-
return (t, r) => (
|
|
4065
|
+
return (t, r) => (U(), P(sa, {
|
|
4066
4066
|
initialWidth: n.initialWidth,
|
|
4067
4067
|
initialHeight: n.initialHeight,
|
|
4068
4068
|
saveLabel: "Save Query",
|
|
@@ -4070,7 +4070,7 @@ var ra = /*#__PURE__*/ e(Vi, [["render", na], ["__scopeId", "data-v-79e13368"]])
|
|
|
4070
4070
|
onSave: s,
|
|
4071
4071
|
onCancel: c
|
|
4072
4072
|
}, {
|
|
4073
|
-
default:
|
|
4073
|
+
default: X(() => [L("div", ca, [z(ra, {
|
|
4074
4074
|
class: "editor-content",
|
|
4075
4075
|
initContent: i.value,
|
|
4076
4076
|
connectionName: e.connectionName,
|
|
@@ -4093,7 +4093,7 @@ var ra = /*#__PURE__*/ e(Vi, [["render", na], ["__scopeId", "data-v-79e13368"]])
|
|
|
4093
4093
|
}, pa = {
|
|
4094
4094
|
key: 1,
|
|
4095
4095
|
class: "tab-content"
|
|
4096
|
-
}, ma = /*#__PURE__*/ e(/* @__PURE__ */
|
|
4096
|
+
}, ma = /*#__PURE__*/ e(/* @__PURE__ */ B({
|
|
4097
4097
|
__name: "DashboardMarkdownEditor",
|
|
4098
4098
|
props: {
|
|
4099
4099
|
content: {},
|
|
@@ -4105,14 +4105,14 @@ var ra = /*#__PURE__*/ e(Vi, [["render", na], ["__scopeId", "data-v-79e13368"]])
|
|
|
4105
4105
|
},
|
|
4106
4106
|
emits: ["save", "cancel"],
|
|
4107
4107
|
setup(e, { emit: t }) {
|
|
4108
|
-
let n = e, r = t, i =
|
|
4108
|
+
let n = e, r = t, i = N(() => typeof n.content == "string" ? {
|
|
4109
4109
|
markdown: n.content,
|
|
4110
4110
|
query: ""
|
|
4111
4111
|
} : {
|
|
4112
4112
|
markdown: n.content.markdown || "",
|
|
4113
4113
|
query: n.content.query || ""
|
|
4114
|
-
}), a =
|
|
4115
|
-
|
|
4114
|
+
}), a = W(i.value.markdown), o = W(i.value.query), s = W(n.imports), c = W(null), l = W("markdown");
|
|
4115
|
+
Y(() => n.content, (e) => {
|
|
4116
4116
|
let t = typeof e == "string" ? {
|
|
4117
4117
|
markdown: e,
|
|
4118
4118
|
query: ""
|
|
@@ -4121,7 +4121,7 @@ var ra = /*#__PURE__*/ e(Vi, [["render", na], ["__scopeId", "data-v-79e13368"]])
|
|
|
4121
4121
|
query: e.query || ""
|
|
4122
4122
|
};
|
|
4123
4123
|
a.value = t.markdown, o.value = t.query;
|
|
4124
|
-
}),
|
|
4124
|
+
}), Y(l, (e, t) => {
|
|
4125
4125
|
t === "query" && c.value && (o.value = c.value.getContent());
|
|
4126
4126
|
});
|
|
4127
4127
|
function u() {
|
|
@@ -4165,7 +4165,7 @@ var ra = /*#__PURE__*/ e(Vi, [["render", na], ["__scopeId", "data-v-79e13368"]])
|
|
|
4165
4165
|
function b() {
|
|
4166
4166
|
p("{{#each data}}\n- {field_name}\n{{/each}}");
|
|
4167
4167
|
}
|
|
4168
|
-
return (t, r) => (
|
|
4168
|
+
return (t, r) => (U(), P(sa, {
|
|
4169
4169
|
initialWidth: n.initialWidth,
|
|
4170
4170
|
initialHeight: n.initialHeight,
|
|
4171
4171
|
saveLabel: "Save Content",
|
|
@@ -4173,49 +4173,49 @@ var ra = /*#__PURE__*/ e(Vi, [["render", na], ["__scopeId", "data-v-79e13368"]])
|
|
|
4173
4173
|
onSave: u,
|
|
4174
4174
|
onCancel: d
|
|
4175
4175
|
}, {
|
|
4176
|
-
default:
|
|
4176
|
+
default: X(() => [L("div", ua, [L("button", {
|
|
4177
4177
|
onClick: r[0] ||= (e) => f("markdown"),
|
|
4178
|
-
class:
|
|
4179
|
-
}, [...r[3] ||= [
|
|
4178
|
+
class: H([{ active: l.value === "markdown" }, "tab-button"])
|
|
4179
|
+
}, [...r[3] ||= [L("i", { class: "mdi mdi-note-text-outline" }, null, -1), L("span", null, "Markdown Template", -1)]], 2), L("button", {
|
|
4180
4180
|
onClick: r[1] ||= (e) => f("query"),
|
|
4181
|
-
class:
|
|
4182
|
-
}, [...r[4] ||= [
|
|
4183
|
-
|
|
4181
|
+
class: H([{ active: l.value === "query" }, "tab-button"])
|
|
4182
|
+
}, [...r[4] ||= [L("i", { class: "mdi mdi-magnify" }, null, -1), L("span", null, "Data Query", -1)]], 2)]), L("div", da, [l.value === "markdown" ? (U(), I("div", fa, [L("div", { class: "markdown-toolbar" }, [
|
|
4183
|
+
L("button", {
|
|
4184
4184
|
onClick: m,
|
|
4185
4185
|
title: "Bold"
|
|
4186
|
-
}, [...r[5] ||= [
|
|
4187
|
-
|
|
4186
|
+
}, [...r[5] ||= [L("strong", null, "B", -1)]]),
|
|
4187
|
+
L("button", {
|
|
4188
4188
|
onClick: h,
|
|
4189
4189
|
title: "Italic"
|
|
4190
|
-
}, [...r[6] ||= [
|
|
4191
|
-
|
|
4190
|
+
}, [...r[6] ||= [L("em", null, "I", -1)]]),
|
|
4191
|
+
L("button", {
|
|
4192
4192
|
onClick: g,
|
|
4193
4193
|
title: "Heading"
|
|
4194
4194
|
}, "H"),
|
|
4195
|
-
|
|
4195
|
+
L("button", {
|
|
4196
4196
|
onClick: _,
|
|
4197
4197
|
title: "List"
|
|
4198
|
-
}, [...r[7] ||= [
|
|
4199
|
-
|
|
4198
|
+
}, [...r[7] ||= [L("i", { class: "mdi mdi-format-list-bulleted" }, null, -1)]]),
|
|
4199
|
+
L("button", {
|
|
4200
4200
|
onClick: v,
|
|
4201
4201
|
title: "Link"
|
|
4202
|
-
}, [...r[8] ||= [
|
|
4203
|
-
r[10] ||=
|
|
4204
|
-
|
|
4202
|
+
}, [...r[8] ||= [L("i", { class: "mdi mdi-link-variant" }, null, -1)]]),
|
|
4203
|
+
r[10] ||= L("div", { class: "toolbar-separator" }, null, -1),
|
|
4204
|
+
L("button", {
|
|
4205
4205
|
onClick: y,
|
|
4206
4206
|
title: "Insert data reference",
|
|
4207
4207
|
class: "data-button"
|
|
4208
4208
|
}, " {} "),
|
|
4209
|
-
|
|
4209
|
+
L("button", {
|
|
4210
4210
|
onClick: b,
|
|
4211
4211
|
title: "Insert loop",
|
|
4212
4212
|
class: "data-button"
|
|
4213
|
-
}, [...r[9] ||= [
|
|
4214
|
-
]),
|
|
4213
|
+
}, [...r[9] ||= [L("i", { class: "mdi mdi-refresh" }, null, -1)]])
|
|
4214
|
+
]), Z(L("textarea", {
|
|
4215
4215
|
"onUpdate:modelValue": r[2] ||= (e) => a.value = e,
|
|
4216
4216
|
placeholder: "Enter markdown content here...\n\nTemplate examples:\n- {field_name} - First row value\n- {data[0].field_name} - Specific row\n- {data.length} - Total rows\n- {{#each data}} {field_name} {{/each}} - Loop all\n- {{#each data limit=5}} {field_name} {{/each}} - Loop first 5",
|
|
4217
4217
|
class: "markdown-editor"
|
|
4218
|
-
}, null, 512), [[
|
|
4218
|
+
}, null, 512), [[Ae, a.value]])])) : F("", !0), l.value === "query" ? (U(), I("div", pa, [r[11] ||= L("div", { class: "query-help" }, [L("p", null, " Write a query to fetch data for your markdown template. Leave empty if no data is needed. ")], -1), z(ra, {
|
|
4219
4219
|
class: "editor-content",
|
|
4220
4220
|
initContent: o.value,
|
|
4221
4221
|
connectionName: e.connectionName,
|
|
@@ -4228,7 +4228,7 @@ var ra = /*#__PURE__*/ e(Vi, [["render", na], ["__scopeId", "data-v-79e13368"]])
|
|
|
4228
4228
|
"connectionName",
|
|
4229
4229
|
"imports",
|
|
4230
4230
|
"rootContent"
|
|
4231
|
-
])])) :
|
|
4231
|
+
])])) : F("", !0)])]),
|
|
4232
4232
|
_: 1
|
|
4233
4233
|
}, 8, ["initialWidth", "initialHeight"]));
|
|
4234
4234
|
}
|
|
@@ -4245,7 +4245,7 @@ var ra = /*#__PURE__*/ e(Vi, [["render", na], ["__scopeId", "data-v-79e13368"]])
|
|
|
4245
4245
|
}, ba = {
|
|
4246
4246
|
key: 2,
|
|
4247
4247
|
class: "tab-content api-tab"
|
|
4248
|
-
}, xa = { class: "theme-list" }, Sa = /*#__PURE__*/ e(/* @__PURE__ */
|
|
4248
|
+
}, xa = { class: "theme-list" }, Sa = /*#__PURE__*/ e(/* @__PURE__ */ B({
|
|
4249
4249
|
__name: "DashboardFreeformEditor",
|
|
4250
4250
|
props: {
|
|
4251
4251
|
content: {},
|
|
@@ -4257,10 +4257,10 @@ var ra = /*#__PURE__*/ e(Vi, [["render", na], ["__scopeId", "data-v-79e13368"]])
|
|
|
4257
4257
|
},
|
|
4258
4258
|
emits: ["save", "cancel"],
|
|
4259
4259
|
setup(e, { emit: t }) {
|
|
4260
|
-
let n = e, r = t, i =
|
|
4260
|
+
let n = e, r = t, i = N(() => ({
|
|
4261
4261
|
html: n.content?.html || "",
|
|
4262
4262
|
query: n.content?.query || ""
|
|
4263
|
-
})), a =
|
|
4263
|
+
})), a = W(i.value.html), o = W(i.value.query), s = W(n.imports), c = W(null), l = W("html"), u = N(() => a.value.length > x), d = [
|
|
4264
4264
|
{
|
|
4265
4265
|
name: "--widget-text",
|
|
4266
4266
|
description: "primary text"
|
|
@@ -4302,9 +4302,9 @@ var ra = /*#__PURE__*/ e(Vi, [["render", na], ["__scopeId", "data-v-79e13368"]])
|
|
|
4302
4302
|
description: "already applied to body"
|
|
4303
4303
|
}
|
|
4304
4304
|
];
|
|
4305
|
-
|
|
4305
|
+
Y(() => n.content, (e) => {
|
|
4306
4306
|
a.value = e?.html || "", o.value = e?.query || "";
|
|
4307
|
-
}),
|
|
4307
|
+
}), Y(l, (e, t) => {
|
|
4308
4308
|
t === "query" && c.value && (o.value = c.value.getContent());
|
|
4309
4309
|
});
|
|
4310
4310
|
function f() {
|
|
@@ -4319,7 +4319,7 @@ var ra = /*#__PURE__*/ e(Vi, [["render", na], ["__scopeId", "data-v-79e13368"]])
|
|
|
4319
4319
|
function m(e) {
|
|
4320
4320
|
l.value === "query" && c.value && (o.value = c.value.getContent()), l.value = e;
|
|
4321
4321
|
}
|
|
4322
|
-
return (t, r) => (
|
|
4322
|
+
return (t, r) => (U(), P(sa, {
|
|
4323
4323
|
initialWidth: n.initialWidth,
|
|
4324
4324
|
initialHeight: n.initialHeight,
|
|
4325
4325
|
saveLabel: "Save Widget",
|
|
@@ -4327,35 +4327,35 @@ var ra = /*#__PURE__*/ e(Vi, [["render", na], ["__scopeId", "data-v-79e13368"]])
|
|
|
4327
4327
|
onSave: f,
|
|
4328
4328
|
onCancel: p
|
|
4329
4329
|
}, {
|
|
4330
|
-
default:
|
|
4331
|
-
|
|
4330
|
+
default: X(() => [L("div", ha, [
|
|
4331
|
+
L("button", {
|
|
4332
4332
|
onClick: r[0] ||= (e) => m("html"),
|
|
4333
|
-
class:
|
|
4334
|
-
}, [...r[4] ||= [
|
|
4335
|
-
|
|
4333
|
+
class: H([{ active: l.value === "html" }, "tab-button"])
|
|
4334
|
+
}, [...r[4] ||= [L("i", { class: "mdi mdi-code-tags" }, null, -1), L("span", null, "Widget HTML", -1)]], 2),
|
|
4335
|
+
L("button", {
|
|
4336
4336
|
onClick: r[1] ||= (e) => m("query"),
|
|
4337
|
-
class:
|
|
4338
|
-
}, [...r[5] ||= [
|
|
4339
|
-
|
|
4337
|
+
class: H([{ active: l.value === "query" }, "tab-button"])
|
|
4338
|
+
}, [...r[5] ||= [L("i", { class: "mdi mdi-magnify" }, null, -1), L("span", null, "Data Query", -1)]], 2),
|
|
4339
|
+
L("button", {
|
|
4340
4340
|
onClick: r[2] ||= (e) => m("api"),
|
|
4341
|
-
class:
|
|
4342
|
-
}, [...r[6] ||= [
|
|
4343
|
-
]),
|
|
4344
|
-
l.value === "html" ? (
|
|
4345
|
-
r[7] ||=
|
|
4346
|
-
|
|
4347
|
-
|
|
4348
|
-
|
|
4341
|
+
class: H([{ active: l.value === "api" }, "tab-button"])
|
|
4342
|
+
}, [...r[6] ||= [L("i", { class: "mdi mdi-book-open-variant" }, null, -1), L("span", null, "API", -1)]], 2)
|
|
4343
|
+
]), L("div", ga, [
|
|
4344
|
+
l.value === "html" ? (U(), I("div", _a, [
|
|
4345
|
+
r[7] ||= L("div", { class: "editor-help" }, [L("p", null, [
|
|
4346
|
+
R(" Runs in a sandboxed frame with no network access and no access to the rest of the app. Use "),
|
|
4347
|
+
L("code", null, "window.trilogy"),
|
|
4348
|
+
R(" to read data and drive dashboard interaction — see the API tab. ")
|
|
4349
4349
|
])], -1),
|
|
4350
|
-
|
|
4350
|
+
Z(L("textarea", {
|
|
4351
4351
|
"onUpdate:modelValue": r[3] ||= (e) => a.value = e,
|
|
4352
4352
|
"data-testid": "freeform-html-editor",
|
|
4353
4353
|
placeholder: "Author a self-contained HTML fragment. Subscribe to trilogy state, render, then call trilogy.ready().",
|
|
4354
4354
|
class: "html-editor"
|
|
4355
|
-
}, null, 512), [[
|
|
4356
|
-
u.value ? (
|
|
4357
|
-
])) :
|
|
4358
|
-
l.value === "query" ? (
|
|
4355
|
+
}, null, 512), [[Ae, a.value]]),
|
|
4356
|
+
u.value ? (U(), I("div", va, " Widget HTML is " + q(a.value.length.toLocaleString()) + " characters — the limit is " + q(J(x).toLocaleString()) + ". Trim it before saving. ", 1)) : F("", !0)
|
|
4357
|
+
])) : F("", !0),
|
|
4358
|
+
l.value === "query" ? (U(), I("div", ya, [r[8] ||= L("div", { class: "editor-help" }, [L("p", null, " The query runs through the normal dashboard pipeline — global filters and cross-filters apply automatically. Its rows are pushed to the widget; the widget never issues queries of its own. ")], -1), z(ra, {
|
|
4359
4359
|
class: "editor-content",
|
|
4360
4360
|
initContent: o.value,
|
|
4361
4361
|
connectionName: e.connectionName,
|
|
@@ -4368,72 +4368,72 @@ var ra = /*#__PURE__*/ e(Vi, [["render", na], ["__scopeId", "data-v-79e13368"]])
|
|
|
4368
4368
|
"connectionName",
|
|
4369
4369
|
"imports",
|
|
4370
4370
|
"rootContent"
|
|
4371
|
-
])])) :
|
|
4372
|
-
l.value === "api" ? (
|
|
4373
|
-
r[14] ||=
|
|
4374
|
-
r[15] ||=
|
|
4375
|
-
|
|
4376
|
-
|
|
4377
|
-
|
|
4378
|
-
|
|
4379
|
-
|
|
4371
|
+
])])) : F("", !0),
|
|
4372
|
+
l.value === "api" ? (U(), I("div", ba, [
|
|
4373
|
+
r[14] ||= L("h4", null, "window.trilogy", -1),
|
|
4374
|
+
r[15] ||= L("dl", null, [
|
|
4375
|
+
L("dt", null, [L("code", null, "subscribe(fn)")]),
|
|
4376
|
+
L("dd", null, [
|
|
4377
|
+
R(" Called with the current state and on every change. Returns an unsubscribe function. State is "),
|
|
4378
|
+
L("code", null, "{ status, columns, rows, rowCount, truncated, filters, error }"),
|
|
4379
|
+
R(". ")
|
|
4380
4380
|
]),
|
|
4381
|
-
|
|
4382
|
-
|
|
4383
|
-
|
|
4384
|
-
|
|
4385
|
-
|
|
4386
|
-
|
|
4387
|
-
|
|
4381
|
+
L("dt", null, [L("code", null, "ready()")]),
|
|
4382
|
+
L("dd", null, " Call once the widget has rendered. Required — without it the cell reports a failure. "),
|
|
4383
|
+
L("dt", null, [L("code", null, "filters.eq(field, value)")]),
|
|
4384
|
+
L("dd", null, [
|
|
4385
|
+
R(" Cross-filter the dashboard on a single value, like clicking a chart mark. Pass the column name as it appears in "),
|
|
4386
|
+
L("code", null, "rows"),
|
|
4387
|
+
R("; the host resolves it to the underlying concept address. ")
|
|
4388
4388
|
]),
|
|
4389
|
-
|
|
4390
|
-
|
|
4391
|
-
|
|
4392
|
-
|
|
4389
|
+
L("dt", null, [
|
|
4390
|
+
L("code", null, "filters.set(map)"),
|
|
4391
|
+
R(" / "),
|
|
4392
|
+
L("code", null, "filters.append(map)")
|
|
4393
4393
|
]),
|
|
4394
|
-
|
|
4395
|
-
|
|
4396
|
-
|
|
4397
|
-
|
|
4394
|
+
L("dd", null, [
|
|
4395
|
+
R(" Map of field → "),
|
|
4396
|
+
L("code", null, "{ op: 'eq' | 'in' | 'range' | 'is_null', value }"),
|
|
4397
|
+
R(". Fields must be concepts the dashboard exposes; anything else is ignored. ")
|
|
4398
4398
|
]),
|
|
4399
|
-
|
|
4400
|
-
|
|
4401
|
-
|
|
4402
|
-
|
|
4403
|
-
|
|
4404
|
-
|
|
4405
|
-
|
|
4406
|
-
|
|
4407
|
-
|
|
4408
|
-
|
|
4399
|
+
L("dt", null, [L("code", null, "filters.clear()")]),
|
|
4400
|
+
L("dd", null, "Drop this widget's cross-filter selection."),
|
|
4401
|
+
L("dt", null, [L("code", null, "refresh()")]),
|
|
4402
|
+
L("dd", null, "Re-run the backing query."),
|
|
4403
|
+
L("dt", null, [L("code", null, "resize(px)")]),
|
|
4404
|
+
L("dd", null, "Request a frame height in pixels."),
|
|
4405
|
+
L("dt", null, [L("code", null, "theme")]),
|
|
4406
|
+
L("dd", null, [L("code", null, "{ mode, vars }"), R(" — see the theme contract below.")]),
|
|
4407
|
+
L("dt", null, [L("code", null, "log(...)")]),
|
|
4408
|
+
L("dd", null, "Forwarded to the host console, prefixed with the item id.")
|
|
4409
4409
|
], -1),
|
|
4410
|
-
r[16] ||=
|
|
4411
|
-
r[17] ||=
|
|
4412
|
-
|
|
4413
|
-
|
|
4414
|
-
|
|
4410
|
+
r[16] ||= L("h4", null, "Theme contract", -1),
|
|
4411
|
+
r[17] ||= L("p", { class: "api-note" }, [
|
|
4412
|
+
R(" These custom properties are set on "),
|
|
4413
|
+
L("code", null, ":root"),
|
|
4414
|
+
R(" inside the frame and re-pushed when the user switches light/dark. Use them for every color — a widget with hardcoded colors breaks in the other mode. ")
|
|
4415
4415
|
], -1),
|
|
4416
|
-
|
|
4417
|
-
r[18] ||=
|
|
4418
|
-
|
|
4419
|
-
r[11] ||=
|
|
4420
|
-
|
|
4421
|
-
|
|
4422
|
-
|
|
4416
|
+
L("ul", xa, [(U(), I(M, null, G(d, (e) => L("li", { key: e.name }, [L("code", null, q(e.name), 1), R(" — " + q(e.description), 1)])), 64))]),
|
|
4417
|
+
r[18] ||= L("h4", null, "Sandbox limits", -1),
|
|
4418
|
+
L("ul", null, [
|
|
4419
|
+
r[11] ||= L("li", null, [
|
|
4420
|
+
R("No network: "),
|
|
4421
|
+
L("code", null, "fetch"),
|
|
4422
|
+
R(", XHR, and remote images are blocked.")
|
|
4423
4423
|
], -1),
|
|
4424
|
-
r[12] ||=
|
|
4425
|
-
|
|
4426
|
-
|
|
4427
|
-
|
|
4424
|
+
r[12] ||= L("li", null, [
|
|
4425
|
+
R("No storage: "),
|
|
4426
|
+
L("code", null, "localStorage"),
|
|
4427
|
+
R(" and cookies are unavailable.")
|
|
4428
4428
|
], -1),
|
|
4429
|
-
r[13] ||=
|
|
4430
|
-
|
|
4431
|
-
r[9] ||=
|
|
4432
|
-
(
|
|
4433
|
-
r[10] ||=
|
|
4429
|
+
r[13] ||= L("li", null, "No access to the parent page, and no popups, forms, or top-level navigation.", -1),
|
|
4430
|
+
L("li", null, [
|
|
4431
|
+
r[9] ||= R(" Libraries may be loaded from ", -1),
|
|
4432
|
+
(U(!0), I(M, null, G(J(ne), (e) => (U(), I("code", { key: e }, q(e), 1))), 128)),
|
|
4433
|
+
r[10] ||= R(". ", -1)
|
|
4434
4434
|
])
|
|
4435
4435
|
])
|
|
4436
|
-
])) :
|
|
4436
|
+
])) : F("", !0)
|
|
4437
4437
|
])]),
|
|
4438
4438
|
_: 1
|
|
4439
4439
|
}, 8, ["initialWidth", "initialHeight"]));
|
|
@@ -4441,7 +4441,7 @@ var ra = /*#__PURE__*/ e(Vi, [["render", na], ["__scopeId", "data-v-79e13368"]])
|
|
|
4441
4441
|
}), [["__scopeId", "data-v-5ab9a0c4"]]), Ca = { class: "dashboard-setup" }, wa = { class: "setup-section" }, Ta = {
|
|
4442
4442
|
key: 0,
|
|
4443
4443
|
class: "setup-section"
|
|
4444
|
-
}, Ea = ["onKeydown"], Da = { class: "action-row" }, Oa = ["disabled"], ka = { class: "setup-section" }, Aa = { class: "templates-grid" }, ja = ["onClick", "data-testid"], Ma = { class: "template-icon" }, Na = { class: "template-info" }, Pa = { class: "template-title" }, Fa = { class: "template-desc" }, $ = 20, Ia = /* @__PURE__ */
|
|
4444
|
+
}, Ea = ["onKeydown"], Da = { class: "action-row" }, Oa = ["disabled"], ka = { class: "setup-section" }, Aa = { class: "templates-grid" }, ja = ["onClick", "data-testid"], Ma = { class: "template-icon" }, Na = { class: "template-info" }, Pa = { class: "template-title" }, Fa = { class: "template-desc" }, $ = 20, Ia = /* @__PURE__ */ B({
|
|
4445
4445
|
__name: "DashboardCTA",
|
|
4446
4446
|
props: { dashboardId: {} },
|
|
4447
4447
|
emits: [
|
|
@@ -4450,9 +4450,9 @@ var ra = /*#__PURE__*/ e(Vi, [["render", na], ["__scopeId", "data-v-79e13368"]])
|
|
|
4450
4450
|
"start-chat-with-prompt"
|
|
4451
4451
|
],
|
|
4452
4452
|
setup(e, { emit: t }) {
|
|
4453
|
-
let n =
|
|
4454
|
-
if (!n || !r || !
|
|
4455
|
-
let o = e, s =
|
|
4453
|
+
let n = V("dashboardStore"), r = V("llmConnectionStore"), a = V("saveDashboards");
|
|
4454
|
+
if (!n || !r || !a) throw Error("DashboardStore or LLMConnectionStore not provided");
|
|
4455
|
+
let o = e, s = N(() => r.activeConnection), c = t, l = W(""), u = W(""), d = W(null), f = $ / 4, p = [
|
|
4456
4456
|
{
|
|
4457
4457
|
id: "summary",
|
|
4458
4458
|
name: "Summary Dashboard",
|
|
@@ -4465,7 +4465,7 @@ var ra = /*#__PURE__*/ e(Vi, [["render", na], ["__scopeId", "data-v-79e13368"]])
|
|
|
4465
4465
|
y: 0,
|
|
4466
4466
|
w: $,
|
|
4467
4467
|
h: 3,
|
|
4468
|
-
type:
|
|
4468
|
+
type: i.MARKDOWN
|
|
4469
4469
|
},
|
|
4470
4470
|
{
|
|
4471
4471
|
i: "kpi1",
|
|
@@ -4473,7 +4473,7 @@ var ra = /*#__PURE__*/ e(Vi, [["render", na], ["__scopeId", "data-v-79e13368"]])
|
|
|
4473
4473
|
y: 3,
|
|
4474
4474
|
w: $ / 4,
|
|
4475
4475
|
h: 4,
|
|
4476
|
-
type:
|
|
4476
|
+
type: i.CHART
|
|
4477
4477
|
},
|
|
4478
4478
|
{
|
|
4479
4479
|
i: "kpi2",
|
|
@@ -4481,7 +4481,7 @@ var ra = /*#__PURE__*/ e(Vi, [["render", na], ["__scopeId", "data-v-79e13368"]])
|
|
|
4481
4481
|
y: 3,
|
|
4482
4482
|
w: $ / 4,
|
|
4483
4483
|
h: 4,
|
|
4484
|
-
type:
|
|
4484
|
+
type: i.CHART
|
|
4485
4485
|
},
|
|
4486
4486
|
{
|
|
4487
4487
|
i: "kpi3",
|
|
@@ -4489,7 +4489,7 @@ var ra = /*#__PURE__*/ e(Vi, [["render", na], ["__scopeId", "data-v-79e13368"]])
|
|
|
4489
4489
|
y: 3,
|
|
4490
4490
|
w: $ / 4,
|
|
4491
4491
|
h: 4,
|
|
4492
|
-
type:
|
|
4492
|
+
type: i.CHART
|
|
4493
4493
|
},
|
|
4494
4494
|
{
|
|
4495
4495
|
i: "kpi4",
|
|
@@ -4497,7 +4497,7 @@ var ra = /*#__PURE__*/ e(Vi, [["render", na], ["__scopeId", "data-v-79e13368"]])
|
|
|
4497
4497
|
y: 3,
|
|
4498
4498
|
w: $ / 4,
|
|
4499
4499
|
h: 4,
|
|
4500
|
-
type:
|
|
4500
|
+
type: i.CHART
|
|
4501
4501
|
},
|
|
4502
4502
|
{
|
|
4503
4503
|
i: "trend",
|
|
@@ -4505,7 +4505,7 @@ var ra = /*#__PURE__*/ e(Vi, [["render", na], ["__scopeId", "data-v-79e13368"]])
|
|
|
4505
4505
|
y: 7,
|
|
4506
4506
|
w: $ / 2,
|
|
4507
4507
|
h: 8,
|
|
4508
|
-
type:
|
|
4508
|
+
type: i.CHART
|
|
4509
4509
|
},
|
|
4510
4510
|
{
|
|
4511
4511
|
i: "breakdown",
|
|
@@ -4513,7 +4513,7 @@ var ra = /*#__PURE__*/ e(Vi, [["render", na], ["__scopeId", "data-v-79e13368"]])
|
|
|
4513
4513
|
y: 7,
|
|
4514
4514
|
w: $ / 2,
|
|
4515
4515
|
h: 8,
|
|
4516
|
-
type:
|
|
4516
|
+
type: i.CHART
|
|
4517
4517
|
}
|
|
4518
4518
|
]
|
|
4519
4519
|
},
|
|
@@ -4529,7 +4529,7 @@ var ra = /*#__PURE__*/ e(Vi, [["render", na], ["__scopeId", "data-v-79e13368"]])
|
|
|
4529
4529
|
y: 0,
|
|
4530
4530
|
w: $,
|
|
4531
4531
|
h: 3,
|
|
4532
|
-
type:
|
|
4532
|
+
type: i.MARKDOWN
|
|
4533
4533
|
},
|
|
4534
4534
|
{
|
|
4535
4535
|
i: "overview",
|
|
@@ -4537,7 +4537,7 @@ var ra = /*#__PURE__*/ e(Vi, [["render", na], ["__scopeId", "data-v-79e13368"]])
|
|
|
4537
4537
|
y: 3,
|
|
4538
4538
|
w: $,
|
|
4539
4539
|
h: 5,
|
|
4540
|
-
type:
|
|
4540
|
+
type: i.CHART
|
|
4541
4541
|
},
|
|
4542
4542
|
{
|
|
4543
4543
|
i: "detail1",
|
|
@@ -4545,7 +4545,7 @@ var ra = /*#__PURE__*/ e(Vi, [["render", na], ["__scopeId", "data-v-79e13368"]])
|
|
|
4545
4545
|
y: 8,
|
|
4546
4546
|
w: $ / 2,
|
|
4547
4547
|
h: 8,
|
|
4548
|
-
type:
|
|
4548
|
+
type: i.CHART
|
|
4549
4549
|
},
|
|
4550
4550
|
{
|
|
4551
4551
|
i: "detail2",
|
|
@@ -4553,7 +4553,7 @@ var ra = /*#__PURE__*/ e(Vi, [["render", na], ["__scopeId", "data-v-79e13368"]])
|
|
|
4553
4553
|
y: 10,
|
|
4554
4554
|
w: $ / 2,
|
|
4555
4555
|
h: 8,
|
|
4556
|
-
type:
|
|
4556
|
+
type: i.CHART
|
|
4557
4557
|
},
|
|
4558
4558
|
{
|
|
4559
4559
|
i: "datatable",
|
|
@@ -4561,7 +4561,7 @@ var ra = /*#__PURE__*/ e(Vi, [["render", na], ["__scopeId", "data-v-79e13368"]])
|
|
|
4561
4561
|
y: 20,
|
|
4562
4562
|
w: $,
|
|
4563
4563
|
h: 8,
|
|
4564
|
-
type:
|
|
4564
|
+
type: i.TABLE
|
|
4565
4565
|
}
|
|
4566
4566
|
]
|
|
4567
4567
|
},
|
|
@@ -4577,7 +4577,7 @@ var ra = /*#__PURE__*/ e(Vi, [["render", na], ["__scopeId", "data-v-79e13368"]])
|
|
|
4577
4577
|
y: 0,
|
|
4578
4578
|
w: $,
|
|
4579
4579
|
h: 3,
|
|
4580
|
-
type:
|
|
4580
|
+
type: i.MARKDOWN
|
|
4581
4581
|
},
|
|
4582
4582
|
{
|
|
4583
4583
|
i: "compare1",
|
|
@@ -4585,7 +4585,7 @@ var ra = /*#__PURE__*/ e(Vi, [["render", na], ["__scopeId", "data-v-79e13368"]])
|
|
|
4585
4585
|
y: 3,
|
|
4586
4586
|
w: $ / 2,
|
|
4587
4587
|
h: 6,
|
|
4588
|
-
type:
|
|
4588
|
+
type: i.CHART
|
|
4589
4589
|
},
|
|
4590
4590
|
{
|
|
4591
4591
|
i: "compare2",
|
|
@@ -4593,7 +4593,7 @@ var ra = /*#__PURE__*/ e(Vi, [["render", na], ["__scopeId", "data-v-79e13368"]])
|
|
|
4593
4593
|
y: 3,
|
|
4594
4594
|
w: $ / 2,
|
|
4595
4595
|
h: 6,
|
|
4596
|
-
type:
|
|
4596
|
+
type: i.CHART
|
|
4597
4597
|
},
|
|
4598
4598
|
{
|
|
4599
4599
|
i: "compare3",
|
|
@@ -4601,7 +4601,7 @@ var ra = /*#__PURE__*/ e(Vi, [["render", na], ["__scopeId", "data-v-79e13368"]])
|
|
|
4601
4601
|
y: 9,
|
|
4602
4602
|
w: $ / 2,
|
|
4603
4603
|
h: 6,
|
|
4604
|
-
type:
|
|
4604
|
+
type: i.CHART
|
|
4605
4605
|
},
|
|
4606
4606
|
{
|
|
4607
4607
|
i: "compare4",
|
|
@@ -4609,7 +4609,7 @@ var ra = /*#__PURE__*/ e(Vi, [["render", na], ["__scopeId", "data-v-79e13368"]])
|
|
|
4609
4609
|
y: 9,
|
|
4610
4610
|
w: $ / 2,
|
|
4611
4611
|
h: 6,
|
|
4612
|
-
type:
|
|
4612
|
+
type: i.CHART
|
|
4613
4613
|
},
|
|
4614
4614
|
{
|
|
4615
4615
|
i: "summary",
|
|
@@ -4617,7 +4617,7 @@ var ra = /*#__PURE__*/ e(Vi, [["render", na], ["__scopeId", "data-v-79e13368"]])
|
|
|
4617
4617
|
y: 15,
|
|
4618
4618
|
w: $,
|
|
4619
4619
|
h: 5,
|
|
4620
|
-
type:
|
|
4620
|
+
type: i.MARKDOWN
|
|
4621
4621
|
}
|
|
4622
4622
|
]
|
|
4623
4623
|
},
|
|
@@ -4633,7 +4633,7 @@ var ra = /*#__PURE__*/ e(Vi, [["render", na], ["__scopeId", "data-v-79e13368"]])
|
|
|
4633
4633
|
y: 0,
|
|
4634
4634
|
w: $,
|
|
4635
4635
|
h: 3,
|
|
4636
|
-
type:
|
|
4636
|
+
type: i.MARKDOWN
|
|
4637
4637
|
},
|
|
4638
4638
|
{
|
|
4639
4639
|
i: "maintrend",
|
|
@@ -4641,7 +4641,7 @@ var ra = /*#__PURE__*/ e(Vi, [["render", na], ["__scopeId", "data-v-79e13368"]])
|
|
|
4641
4641
|
y: 3,
|
|
4642
4642
|
w: $,
|
|
4643
4643
|
h: 8,
|
|
4644
|
-
type:
|
|
4644
|
+
type: i.CHART
|
|
4645
4645
|
},
|
|
4646
4646
|
{
|
|
4647
4647
|
i: "breakdown1",
|
|
@@ -4649,7 +4649,7 @@ var ra = /*#__PURE__*/ e(Vi, [["render", na], ["__scopeId", "data-v-79e13368"]])
|
|
|
4649
4649
|
y: 11,
|
|
4650
4650
|
w: $ / 3,
|
|
4651
4651
|
h: 6,
|
|
4652
|
-
type:
|
|
4652
|
+
type: i.CHART
|
|
4653
4653
|
},
|
|
4654
4654
|
{
|
|
4655
4655
|
i: "breakdown2",
|
|
@@ -4657,7 +4657,7 @@ var ra = /*#__PURE__*/ e(Vi, [["render", na], ["__scopeId", "data-v-79e13368"]])
|
|
|
4657
4657
|
y: 11,
|
|
4658
4658
|
w: $ / 3,
|
|
4659
4659
|
h: 6,
|
|
4660
|
-
type:
|
|
4660
|
+
type: i.CHART
|
|
4661
4661
|
},
|
|
4662
4662
|
{
|
|
4663
4663
|
i: "breakdown3",
|
|
@@ -4665,7 +4665,7 @@ var ra = /*#__PURE__*/ e(Vi, [["render", na], ["__scopeId", "data-v-79e13368"]])
|
|
|
4665
4665
|
y: 11,
|
|
4666
4666
|
w: $ / 3,
|
|
4667
4667
|
h: 6,
|
|
4668
|
-
type:
|
|
4668
|
+
type: i.CHART
|
|
4669
4669
|
},
|
|
4670
4670
|
{
|
|
4671
4671
|
i: "forecast",
|
|
@@ -4673,7 +4673,7 @@ var ra = /*#__PURE__*/ e(Vi, [["render", na], ["__scopeId", "data-v-79e13368"]])
|
|
|
4673
4673
|
y: 17,
|
|
4674
4674
|
w: $,
|
|
4675
4675
|
h: 6,
|
|
4676
|
-
type:
|
|
4676
|
+
type: i.CHART
|
|
4677
4677
|
}
|
|
4678
4678
|
]
|
|
4679
4679
|
}
|
|
@@ -4693,242 +4693,242 @@ var ra = /*#__PURE__*/ e(Vi, [["render", na], ["__scopeId", "data-v-79e13368"]])
|
|
|
4693
4693
|
let e = u.value.trim();
|
|
4694
4694
|
e && (c("start-chat-with-prompt", e), u.value = "");
|
|
4695
4695
|
}
|
|
4696
|
-
return (e, t) => (
|
|
4697
|
-
t[8] ||=
|
|
4698
|
-
|
|
4699
|
-
t[3] ||=
|
|
4700
|
-
|
|
4696
|
+
return (e, t) => (U(), I("div", Ca, [
|
|
4697
|
+
t[8] ||= L("div", { class: "setup-header" }, [L("h2", { class: "setup-title" }, "An Empty Dashboard"), L("p", { class: "setup-subtitle" }, " Choose a template or start from scratch by using the 'add item' button to add charts, tables, and more. ")], -1),
|
|
4698
|
+
L("div", wa, [
|
|
4699
|
+
t[3] ||= L("h3", { class: "section-title" }, "Description", -1),
|
|
4700
|
+
Z(L("textarea", {
|
|
4701
4701
|
"onUpdate:modelValue": t[0] ||= (e) => l.value = e,
|
|
4702
4702
|
placeholder: "What is this dashboard for? Add context to help viewers understand the data...",
|
|
4703
4703
|
rows: "3",
|
|
4704
4704
|
class: "description-input"
|
|
4705
|
-
}, null, 512), [[
|
|
4706
|
-
|
|
4705
|
+
}, null, 512), [[Ae, l.value]]),
|
|
4706
|
+
L("button", {
|
|
4707
4707
|
onClick: h,
|
|
4708
4708
|
class: "action-button save-button",
|
|
4709
4709
|
"data-testid": "dashboard-description-save"
|
|
4710
|
-
}, [...t[2] ||= [
|
|
4710
|
+
}, [...t[2] ||= [L("i", { class: "mdi mdi-content-save" }, null, -1), R(" Save ", -1)]])
|
|
4711
4711
|
]),
|
|
4712
|
-
s.value ? (
|
|
4713
|
-
t[5] ||=
|
|
4714
|
-
t[6] ||=
|
|
4715
|
-
|
|
4712
|
+
s.value ? (U(), I("div", Ta, [
|
|
4713
|
+
t[5] ||= L("h3", { class: "section-title" }, "AI Copilot", -1),
|
|
4714
|
+
t[6] ||= L("p", { class: "section-desc" }, " Describe what you want and the assistant will build it for you in the chat panel ", -1),
|
|
4715
|
+
Z(L("textarea", {
|
|
4716
4716
|
"onUpdate:modelValue": t[1] ||= (e) => u.value = e,
|
|
4717
4717
|
placeholder: "Describe the dashboard you want to create. For example: 'Create a sales performance dashboard with monthly trends, regional breakdown, and top product metrics.'",
|
|
4718
4718
|
rows: "4",
|
|
4719
4719
|
class: "description-input",
|
|
4720
4720
|
"data-testid": "dashboard-prompt-input",
|
|
4721
4721
|
onKeydown: Me(Ne(g, ["exact", "prevent"]), ["enter"])
|
|
4722
|
-
}, null, 40, Ea), [[
|
|
4723
|
-
|
|
4722
|
+
}, null, 40, Ea), [[Ae, u.value]]),
|
|
4723
|
+
L("div", Da, [L("button", {
|
|
4724
4724
|
onClick: g,
|
|
4725
4725
|
class: "action-button llm-button",
|
|
4726
4726
|
disabled: !u.value.trim(),
|
|
4727
4727
|
"data-testid": "generate-with-llm-button"
|
|
4728
|
-
}, [...t[4] ||= [
|
|
4729
|
-
])) :
|
|
4730
|
-
|
|
4728
|
+
}, [...t[4] ||= [L("i", { class: "mdi mdi-creation" }, null, -1), R(" Build with AI ", -1)]], 8, Oa)])
|
|
4729
|
+
])) : F("", !0),
|
|
4730
|
+
L("div", ka, [t[7] ||= L("h3", { class: "section-title" }, "Templates", -1), L("div", Aa, [(U(), I(M, null, G(p, (e) => L("div", {
|
|
4731
4731
|
key: e.id,
|
|
4732
|
-
class:
|
|
4732
|
+
class: H(["template-card", { selected: d.value === e.id }]),
|
|
4733
4733
|
onClick: (t) => m(e.id),
|
|
4734
4734
|
"data-testid": `template-card-${e.id}`
|
|
4735
|
-
}, [
|
|
4735
|
+
}, [L("div", Ma, [L("i", { class: H(["mdi", e.icon]) }, null, 2)]), L("div", Na, [L("h4", Pa, q(e.name), 1), L("p", Fa, q(e.description), 1)])], 10, ja)), 64))])])
|
|
4736
4736
|
]));
|
|
4737
4737
|
}
|
|
4738
4738
|
});
|
|
4739
4739
|
//#endregion
|
|
4740
4740
|
//#region components/dashboard/useDashboard.ts
|
|
4741
4741
|
function La(e, t, n, r) {
|
|
4742
|
-
let
|
|
4743
|
-
if (!
|
|
4744
|
-
let
|
|
4745
|
-
function
|
|
4742
|
+
let o = y(), s = re(), c = b(), l = r || V("queryExecutionService"), { setActiveDashboard: u } = g();
|
|
4743
|
+
if (!l) throw Error("QueryExecutionService not provided");
|
|
4744
|
+
let d = W(""), f = W(""), p = W(""), h = W(null), v = W(null), x = W(!1), w = W(!1), T = W(!1), E = W(!1), te = W([]), O = N(() => t.maxWidth || "100vw"), ne = N(() => e.value ? e.value.layout : []), ae = N(() => e.value ? [...e.value.layout].sort((e, t) => (e.y + e.y + e.h) / 2 - (t.y + t.y + t.h) / 2) : []), oe = N(() => e.value ? e.value.connectionId ? e.value.connectionId : c.connectionByName(e.value.connection)?.id || e.value.connection : ""), se = N(() => t.viewMode ? !1 : e.value ? e.value.state === "editing" : !1), k = N(() => e.value ? C(e.value, s) : []);
|
|
4745
|
+
function ce(e) {
|
|
4746
4746
|
if (!e?.id) return;
|
|
4747
|
-
e.state === "fullscreen" && n.fullScreen(!0),
|
|
4748
|
-
let t =
|
|
4749
|
-
t?.runBatch(r),
|
|
4747
|
+
e.state === "fullscreen" && n.fullScreen(!0), o.setActiveDashboard(e.id), p.value = "", d.value = "", f.value = "", te.value = [], e.filter && (d.value = e.filter, f.value = e.filter);
|
|
4748
|
+
let t = R(e.id), r = Object.keys(e.gridItems).filter((t) => e.gridItems[t].type !== i.SECTION_HEADER && !e.gridItems[t].results);
|
|
4749
|
+
t?.runBatch(r), de();
|
|
4750
4750
|
}
|
|
4751
|
-
|
|
4752
|
-
t && t !== n && e.value &&
|
|
4753
|
-
}),
|
|
4754
|
-
e.value &&
|
|
4751
|
+
Y(() => e.value?.id, (t, n) => {
|
|
4752
|
+
t && t !== n && e.value && ce(e.value);
|
|
4753
|
+
}), Te(() => {
|
|
4754
|
+
e.value && ce(e.value);
|
|
4755
4755
|
let r = new ResizeObserver(() => {
|
|
4756
4756
|
n.triggerResize();
|
|
4757
4757
|
}), i = t.isMobile ? ".mobile-container" : ".grid-container", a = document.querySelector(i);
|
|
4758
4758
|
a && r.observe(a);
|
|
4759
|
-
}),
|
|
4759
|
+
}), we(() => {
|
|
4760
4760
|
h.value !== null && clearTimeout(h.value);
|
|
4761
4761
|
});
|
|
4762
|
-
async function
|
|
4762
|
+
async function le() {
|
|
4763
4763
|
if (e.value && e.value.id) {
|
|
4764
|
-
|
|
4765
|
-
let t =
|
|
4766
|
-
await
|
|
4764
|
+
d.value = "", f.value = "", p.value = "";
|
|
4765
|
+
let t = o.removeAllFilters(e.value.id);
|
|
4766
|
+
await o.getQueryExecutor(e.value.id)?.runBatch(t);
|
|
4767
4767
|
}
|
|
4768
4768
|
}
|
|
4769
|
-
async function
|
|
4769
|
+
async function ue(t) {
|
|
4770
4770
|
if (!t || _(t) === "") {
|
|
4771
|
-
if (
|
|
4772
|
-
let n =
|
|
4773
|
-
await
|
|
4771
|
+
if (p.value = "", e.value && e.value.id) {
|
|
4772
|
+
let n = o.updateDashboardFilter(e.value.id, _(t));
|
|
4773
|
+
await o.getQueryExecutor(e.value.id)?.runBatch(n);
|
|
4774
4774
|
}
|
|
4775
4775
|
return;
|
|
4776
4776
|
}
|
|
4777
|
-
e.value && e.value.id && (
|
|
4777
|
+
e.value && e.value.id && (d.value = t, await l?.generateQuery(e.value.connectionId || e.value.connection, {
|
|
4778
4778
|
text: "select 1 as test;",
|
|
4779
4779
|
editorType: "trilogy",
|
|
4780
4780
|
extraFilters: [t],
|
|
4781
4781
|
imports: e.value.imports,
|
|
4782
|
-
extraContent:
|
|
4782
|
+
extraContent: k.value
|
|
4783
4783
|
}).then(() => {
|
|
4784
|
-
if (
|
|
4785
|
-
let n =
|
|
4786
|
-
|
|
4784
|
+
if (p.value = "", e.value && e.value.id) {
|
|
4785
|
+
let n = o.updateDashboardFilter(e.value.id, t);
|
|
4786
|
+
o.getQueryExecutor(e.value.id)?.runBatch(n);
|
|
4787
4787
|
}
|
|
4788
|
-
}).catch((e) => (
|
|
4788
|
+
}).catch((e) => (p.value = e.message, !1)));
|
|
4789
4789
|
}
|
|
4790
|
-
let
|
|
4790
|
+
let A = async (t) => {
|
|
4791
4791
|
let n = t.replace(/^\s*where\s+/i, "");
|
|
4792
4792
|
if (e.value && e.value.id) {
|
|
4793
|
-
let t = await
|
|
4793
|
+
let t = await l?.executeQuery(e.value.connectionId || e.value.connection, {
|
|
4794
4794
|
text: "select 1 as test;",
|
|
4795
4795
|
editorType: "trilogy",
|
|
4796
4796
|
imports: e.value.imports,
|
|
4797
4797
|
extraFilters: [n],
|
|
4798
|
-
extraContent:
|
|
4798
|
+
extraContent: k.value
|
|
4799
4799
|
}, () => {}, () => {}, () => {}, () => {}, !0);
|
|
4800
4800
|
if (!t) throw Error("No promises returned from query execution service");
|
|
4801
4801
|
let r = await t.resultPromise;
|
|
4802
4802
|
if (!r.success) throw Error(`Validation of "select 1 as test ${n}" resulted in ${r.error}`);
|
|
4803
4803
|
} else throw Error("Dashboard not found");
|
|
4804
4804
|
};
|
|
4805
|
-
async function
|
|
4806
|
-
if (e.value && e.value.id &&
|
|
4807
|
-
let t = await
|
|
4808
|
-
t && (te.value = t),
|
|
4805
|
+
async function de() {
|
|
4806
|
+
if (e.value && e.value.id && l) {
|
|
4807
|
+
let t = await o.populateCompletion(e.value.id, l, s);
|
|
4808
|
+
t && (te.value = t), p.value = "";
|
|
4809
4809
|
}
|
|
4810
4810
|
}
|
|
4811
|
-
async function
|
|
4812
|
-
e.value && e.value.id && (
|
|
4811
|
+
async function fe(t) {
|
|
4812
|
+
e.value && e.value.id && (o.updateDashboardImports(e.value.id, t), await de());
|
|
4813
4813
|
}
|
|
4814
|
-
let
|
|
4815
|
-
e.value && (
|
|
4814
|
+
let pe = (t) => {
|
|
4815
|
+
e.value && (o.setState(e.value.id, t), Se(() => {
|
|
4816
4816
|
n.triggerResize();
|
|
4817
4817
|
}));
|
|
4818
|
-
},
|
|
4819
|
-
e.value && e.value.id &&
|
|
4818
|
+
}, me = (t) => {
|
|
4819
|
+
e.value && e.value.id && o.updateDashboardLayout(e.value.id, t);
|
|
4820
4820
|
};
|
|
4821
|
-
function
|
|
4821
|
+
function he() {
|
|
4822
4822
|
E.value = !0;
|
|
4823
4823
|
}
|
|
4824
|
-
function
|
|
4824
|
+
function ge(t = i.CHART) {
|
|
4825
4825
|
if (!e.value || !e.value.id) return;
|
|
4826
|
-
let r = t ===
|
|
4827
|
-
E.value = !1,
|
|
4826
|
+
let r = t === i.SECTION_HEADER ? o.addItemToDashboard(e.value.id, t, 0, 0, 20, 1) : o.addItemToDashboard(e.value.id, t);
|
|
4827
|
+
E.value = !1, Se(() => {
|
|
4828
4828
|
n.dimensionsUpdate(r);
|
|
4829
4829
|
});
|
|
4830
4830
|
}
|
|
4831
|
-
function
|
|
4832
|
-
e.value && e.value.id &&
|
|
4833
|
-
}
|
|
4834
|
-
function ge(t) {
|
|
4835
|
-
e.value && e.value.id && i.setDashboardTheme(e.value.id, t);
|
|
4831
|
+
function j(t) {
|
|
4832
|
+
e.value && e.value.id && o.updateDashboardTitle(e.value.id, t);
|
|
4836
4833
|
}
|
|
4837
|
-
function _e() {
|
|
4838
|
-
e.value && e.value.id &&
|
|
4834
|
+
function _e(t) {
|
|
4835
|
+
e.value && e.value.id && o.setDashboardTheme(e.value.id, t);
|
|
4839
4836
|
}
|
|
4840
|
-
function ve(
|
|
4841
|
-
e.value && e.value.id &&
|
|
4837
|
+
function ve() {
|
|
4838
|
+
e.value && e.value.id && o.clearDashboardItems(e.value.id);
|
|
4842
4839
|
}
|
|
4843
4840
|
function ye(t) {
|
|
4844
|
-
e.value && e.value.id &&
|
|
4841
|
+
e.value && e.value.id && o.removeItemFromDashboard(e.value.id, t);
|
|
4845
4842
|
}
|
|
4846
|
-
function
|
|
4843
|
+
function be(t) {
|
|
4844
|
+
e.value && e.value.id && o.copyItemInDashboard(e.value.id, t);
|
|
4845
|
+
}
|
|
4846
|
+
function M() {
|
|
4847
4847
|
E.value = !1;
|
|
4848
4848
|
}
|
|
4849
|
-
function
|
|
4849
|
+
function xe(t) {
|
|
4850
4850
|
if (v.value = t, !e.value || !e.value.id) return;
|
|
4851
4851
|
let n = e.value.gridItems[t.i];
|
|
4852
|
-
n && (n.type ===
|
|
4852
|
+
n && (n.type === i.CHART ? x.value = !0 : n.type === i.MARKDOWN ? w.value = !0 : n.type === i.TABLE || n.type === i.FILTER ? x.value = !0 : n.type === i.FREEFORM ? T.value = !0 : n.type === i.SECTION_HEADER && (v.value = null));
|
|
4853
4853
|
}
|
|
4854
|
-
function
|
|
4854
|
+
function P(t) {
|
|
4855
4855
|
if (!e.value || !e.value.id || !v.value) return;
|
|
4856
4856
|
let n = v.value.i;
|
|
4857
|
-
|
|
4857
|
+
L(n, e.value.id, { content: t }), F();
|
|
4858
4858
|
}
|
|
4859
|
-
function
|
|
4859
|
+
function F() {
|
|
4860
4860
|
x.value = !1, w.value = !1, T.value = !1, v.value = null;
|
|
4861
4861
|
}
|
|
4862
|
-
function
|
|
4862
|
+
function I(t, n) {
|
|
4863
4863
|
return n && e.value && e.value.id !== n || !e.value ? ee(t) : ie(e.value, t, {
|
|
4864
|
-
rootContent:
|
|
4865
|
-
onRefresh:
|
|
4864
|
+
rootContent: k.value,
|
|
4865
|
+
onRefresh: B
|
|
4866
4866
|
});
|
|
4867
4867
|
}
|
|
4868
|
-
function
|
|
4868
|
+
function L(t, n, r) {
|
|
4869
4869
|
if (e.value && e.value.id) {
|
|
4870
4870
|
if (!n || e.value.id !== n) {
|
|
4871
4871
|
console.warn("Dashboard ID mismatch. Cannot set item data. Given:", n, "Expected:", e.value.id);
|
|
4872
4872
|
return;
|
|
4873
4873
|
}
|
|
4874
|
-
D(
|
|
4874
|
+
D(o, e.value.id, t, r), r.content && R(e.value.id)?.runSingle(t);
|
|
4875
4875
|
}
|
|
4876
4876
|
}
|
|
4877
|
-
function
|
|
4877
|
+
function R(t) {
|
|
4878
4878
|
if (!e.value || !e.value.id) throw Error("Dashboard not found or not initialized");
|
|
4879
|
-
if (!
|
|
4880
|
-
let n =
|
|
4881
|
-
queryExecutionService:
|
|
4879
|
+
if (!l) throw Error("Query execution service not found");
|
|
4880
|
+
let n = o.dashboards[t], r = S(n, c), i = o.getOrCreateQueryExecutor(t, {
|
|
4881
|
+
queryExecutionService: l,
|
|
4882
4882
|
connectionName: r,
|
|
4883
4883
|
dashboardId: t,
|
|
4884
|
-
getDashboardData: (e) =>
|
|
4885
|
-
getItemData:
|
|
4886
|
-
setItemData:
|
|
4884
|
+
getDashboardData: (e) => o.dashboards[e],
|
|
4885
|
+
getItemData: I,
|
|
4886
|
+
setItemData: L
|
|
4887
4887
|
});
|
|
4888
|
-
return
|
|
4888
|
+
return i || console.warn("No query executor found for dashboard:", e.value.id), i;
|
|
4889
4889
|
}
|
|
4890
|
-
function
|
|
4890
|
+
function z(t) {
|
|
4891
4891
|
let n = t.target.value;
|
|
4892
|
-
e.value && e.value.id && (
|
|
4892
|
+
e.value && e.value.id && (o.updateDashboardConnection(e.value.id, n), o.getQueryExecutor(e.value.id)?.setConnection(n));
|
|
4893
4893
|
}
|
|
4894
|
-
function
|
|
4894
|
+
function B(t) {
|
|
4895
4895
|
if (e.value) {
|
|
4896
4896
|
if (t) {
|
|
4897
|
-
let r =
|
|
4897
|
+
let r = o.getQueryExecutor(e.value.id)?.runSingle(t);
|
|
4898
4898
|
return n.dimensionsUpdate(t), r ?? void 0;
|
|
4899
4899
|
}
|
|
4900
|
-
|
|
4900
|
+
o.getQueryExecutor(e.value.id)?.runBatch(Object.keys(e.value.gridItems));
|
|
4901
4901
|
}
|
|
4902
4902
|
}
|
|
4903
|
-
function
|
|
4903
|
+
function H(t) {
|
|
4904
4904
|
if (!e.value || !e.value.id) return;
|
|
4905
|
-
let n =
|
|
4905
|
+
let n = a(te.value), r = m(t.filters, n);
|
|
4906
4906
|
if (!r || Object.keys(r).length === 0) {
|
|
4907
4907
|
console.log("No valid filters to apply from cross-filter event, given ", t.filters, n);
|
|
4908
4908
|
return;
|
|
4909
4909
|
}
|
|
4910
|
-
let
|
|
4911
|
-
|
|
4910
|
+
let i = o.updateItemCrossFilters(e.value.id, t.source, r, t.chart, t.append ? "append" : "add");
|
|
4911
|
+
o.getQueryExecutor(e.value.id)?.runBatch(i);
|
|
4912
4912
|
}
|
|
4913
|
-
function
|
|
4914
|
-
e.value && e.value.id && (
|
|
4913
|
+
function Ce(t, n) {
|
|
4914
|
+
e.value && e.value.id && (o.removeItemCrossFilter(e.value.id, t, n), o.getQueryExecutor(e.value.id)?.runSingle(t));
|
|
4915
4915
|
}
|
|
4916
|
-
function
|
|
4916
|
+
function Ee(t) {
|
|
4917
4917
|
if (!e.value || !e.value.id) return;
|
|
4918
|
-
let n =
|
|
4919
|
-
|
|
4918
|
+
let n = o.removeItemCrossFilterSource(e.value.id, t);
|
|
4919
|
+
o.getQueryExecutor(e.value.id)?.runBatch(n);
|
|
4920
4920
|
}
|
|
4921
|
-
function
|
|
4922
|
-
|
|
4921
|
+
function U(e) {
|
|
4922
|
+
u(e);
|
|
4923
4923
|
}
|
|
4924
4924
|
return {
|
|
4925
4925
|
dashboard: e,
|
|
4926
4926
|
layout: ne,
|
|
4927
4927
|
sortedLayout: ae,
|
|
4928
|
-
editMode:
|
|
4928
|
+
editMode: se,
|
|
4929
4929
|
selectedConnection: oe,
|
|
4930
|
-
filter:
|
|
4931
|
-
filterError:
|
|
4930
|
+
filter: d,
|
|
4931
|
+
filterError: p,
|
|
4932
4932
|
globalCompletion: te,
|
|
4933
4933
|
showAddItemModal: E,
|
|
4934
4934
|
showQueryEditor: x,
|
|
@@ -4936,33 +4936,33 @@ function La(e, t, n, r) {
|
|
|
4936
4936
|
showFreeformEditor: T,
|
|
4937
4937
|
editingItem: v,
|
|
4938
4938
|
dashboardMaxWidth: O,
|
|
4939
|
-
rootContent:
|
|
4940
|
-
handleFilterChange:
|
|
4941
|
-
handleFilterClear:
|
|
4942
|
-
handleImportChange:
|
|
4943
|
-
validateFilter:
|
|
4944
|
-
onConnectionChange:
|
|
4945
|
-
toggleMode:
|
|
4946
|
-
onLayoutUpdated:
|
|
4947
|
-
openAddItemModal:
|
|
4948
|
-
addItem:
|
|
4949
|
-
clearItems:
|
|
4950
|
-
removeItem:
|
|
4951
|
-
copyItem:
|
|
4952
|
-
closeAddModal:
|
|
4953
|
-
openEditor:
|
|
4954
|
-
saveContent:
|
|
4955
|
-
closeEditors:
|
|
4956
|
-
getDashboardQueryExecutor:
|
|
4957
|
-
getItemData:
|
|
4958
|
-
setItemData:
|
|
4959
|
-
handleRefresh:
|
|
4960
|
-
setCrossFilter:
|
|
4961
|
-
removeFilter:
|
|
4962
|
-
unSelect:
|
|
4963
|
-
dashboardCreated:
|
|
4964
|
-
updateTitle:
|
|
4965
|
-
updateTheme:
|
|
4939
|
+
rootContent: k,
|
|
4940
|
+
handleFilterChange: ue,
|
|
4941
|
+
handleFilterClear: le,
|
|
4942
|
+
handleImportChange: fe,
|
|
4943
|
+
validateFilter: A,
|
|
4944
|
+
onConnectionChange: z,
|
|
4945
|
+
toggleMode: pe,
|
|
4946
|
+
onLayoutUpdated: me,
|
|
4947
|
+
openAddItemModal: he,
|
|
4948
|
+
addItem: ge,
|
|
4949
|
+
clearItems: ve,
|
|
4950
|
+
removeItem: ye,
|
|
4951
|
+
copyItem: be,
|
|
4952
|
+
closeAddModal: M,
|
|
4953
|
+
openEditor: xe,
|
|
4954
|
+
saveContent: P,
|
|
4955
|
+
closeEditors: F,
|
|
4956
|
+
getDashboardQueryExecutor: R,
|
|
4957
|
+
getItemData: I,
|
|
4958
|
+
setItemData: L,
|
|
4959
|
+
handleRefresh: B,
|
|
4960
|
+
setCrossFilter: H,
|
|
4961
|
+
removeFilter: Ce,
|
|
4962
|
+
unSelect: Ee,
|
|
4963
|
+
dashboardCreated: U,
|
|
4964
|
+
updateTitle: j,
|
|
4965
|
+
updateTheme: _e
|
|
4966
4966
|
};
|
|
4967
4967
|
}
|
|
4968
4968
|
//#endregion
|