@actionexec/dashboards 0.9.0 → 0.11.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{ColorPaletteSelector-Ddcuobr5.js → ColorPaletteSelector-DJge9VhO.js} +110 -106
- package/dist/ColorPaletteSelector-DJge9VhO.js.map +1 -0
- package/dist/index.js +324 -320
- package/dist/index.js.map +1 -1
- package/dist/internals.d.ts +2 -2
- package/dist/internals.js +42 -41
- package/dist/styles.css +1 -1
- package/dist/types/index.d.ts +40 -7
- package/package.json +1 -1
- package/dist/ColorPaletteSelector-Ddcuobr5.js.map +0 -1
package/dist/index.js
CHANGED
|
@@ -1,67 +1,67 @@
|
|
|
1
|
-
import { jsxs as v, jsx as a, Fragment as
|
|
2
|
-
import { useState as
|
|
3
|
-
import { f as
|
|
4
|
-
import { A as Et } from "./ColorPaletteSelector-
|
|
5
|
-
import { LineChart as
|
|
6
|
-
const
|
|
7
|
-
function
|
|
8
|
-
const [t, n] =
|
|
1
|
+
import { jsxs as v, jsx as a, Fragment as ge } from "react/jsx-runtime";
|
|
2
|
+
import { useState as E, useRef as N, useEffect as P, useCallback as x, useMemo as ae } from "react";
|
|
3
|
+
import { f as me, a as fe, M as G, c as q, b as U, d as pe, e as le, i as Q, g as _e, p as be, h as V, j as ie, k as se, l as H, m as ve, D as J, S as we, n as ye, o as ke, C as Se, q as Ne, r as Ce, s as Re, t as $e, u as xe, G as Me, v as Z, w as Ae, x as Te } from "./ColorPaletteSelector-DJge9VhO.js";
|
|
4
|
+
import { A as Et } from "./ColorPaletteSelector-DJge9VhO.js";
|
|
5
|
+
import { LineChart as Ee, Line as Fe, AreaChart as Ie, Area as We, BarChart as ce, Bar as z, CartesianGrid as oe, XAxis as de, YAxis as ue, Tooltip as K, Legend as Le, Cell as B, PieChart as Oe, Pie as Pe } from "recharts";
|
|
6
|
+
const De = 300;
|
|
7
|
+
function He(e) {
|
|
8
|
+
const [t, n] = E(null), [r, l] = E(null), [i, c] = E({}), [s, h] = E({}), [o, f] = E(null), [u, d] = E(!0), [g, b] = E(null), k = N(), C = N(!1);
|
|
9
9
|
P(() => {
|
|
10
10
|
let y = !1;
|
|
11
|
-
return
|
|
11
|
+
return me(e).then((w) => {
|
|
12
12
|
y || n(w);
|
|
13
13
|
}).catch((w) => {
|
|
14
|
-
y ||
|
|
14
|
+
y || b(w.message);
|
|
15
15
|
}), () => {
|
|
16
16
|
y = !0;
|
|
17
17
|
};
|
|
18
18
|
}, [e]), P(() => {
|
|
19
19
|
if (t)
|
|
20
|
-
return
|
|
21
|
-
const y =
|
|
22
|
-
d(!0),
|
|
23
|
-
l(w), !
|
|
24
|
-
}).catch((w) =>
|
|
25
|
-
},
|
|
26
|
-
|
|
20
|
+
return k.current && clearTimeout(k.current), k.current = setTimeout(() => {
|
|
21
|
+
const y = Ye(i, s);
|
|
22
|
+
d(!0), fe(e, y).then((w) => {
|
|
23
|
+
l(w), !C.current && w.applied && (C.current = !0, c((m) => ({ ...Ge(w.applied), ...m }))), b(null);
|
|
24
|
+
}).catch((w) => b(w.message)).finally(() => d(!1));
|
|
25
|
+
}, De), () => {
|
|
26
|
+
k.current && clearTimeout(k.current);
|
|
27
27
|
};
|
|
28
28
|
}, [e, t, i, s]);
|
|
29
|
-
const
|
|
30
|
-
|
|
31
|
-
}, []),
|
|
29
|
+
const M = x((y, w) => {
|
|
30
|
+
c((m) => ({ ...m, [y]: w }));
|
|
31
|
+
}, []), S = x((y, w) => {
|
|
32
32
|
h((m) => ({ ...m, [y]: w }));
|
|
33
|
-
}, []),
|
|
34
|
-
|
|
35
|
-
}, []), $ =
|
|
36
|
-
() =>
|
|
37
|
-
[
|
|
33
|
+
}, []), T = x((y) => {
|
|
34
|
+
f(y);
|
|
35
|
+
}, []), $ = ae(
|
|
36
|
+
() => o ?? (t == null ? void 0 : t.palette) ?? [],
|
|
37
|
+
[o, t]
|
|
38
38
|
);
|
|
39
39
|
return {
|
|
40
40
|
layout: t,
|
|
41
41
|
renderData: r,
|
|
42
42
|
loading: u,
|
|
43
|
-
error:
|
|
43
|
+
error: g,
|
|
44
44
|
filters: i,
|
|
45
45
|
variables: s,
|
|
46
46
|
palette: $,
|
|
47
|
-
setFilter:
|
|
48
|
-
setVariable:
|
|
49
|
-
setPalette:
|
|
47
|
+
setFilter: M,
|
|
48
|
+
setVariable: S,
|
|
49
|
+
setPalette: T
|
|
50
50
|
};
|
|
51
51
|
}
|
|
52
|
-
function
|
|
52
|
+
function Ye(e, t) {
|
|
53
53
|
const n = {};
|
|
54
54
|
for (const [r, l] of Object.entries(e))
|
|
55
55
|
if (l.includes("|")) {
|
|
56
|
-
const [i,
|
|
57
|
-
i && (n.f_date_start = i),
|
|
56
|
+
const [i, c] = l.split("|");
|
|
57
|
+
i && (n.f_date_start = i), c && (n.f_date_end = c);
|
|
58
58
|
} else
|
|
59
59
|
n[`f_${r}`] = l;
|
|
60
60
|
for (const [r, l] of Object.entries(t))
|
|
61
61
|
n[`v_${r}`] = String(l);
|
|
62
62
|
return n;
|
|
63
63
|
}
|
|
64
|
-
function
|
|
64
|
+
function Ge(e) {
|
|
65
65
|
const t = {};
|
|
66
66
|
for (const [n, r] of Object.entries(e))
|
|
67
67
|
if (r && typeof r == "object" && "start" in r) {
|
|
@@ -70,17 +70,17 @@ function Ke(e) {
|
|
|
70
70
|
} else Array.isArray(r) ? t[n] = r.join(G) : typeof r == "string" && (t[n] = r);
|
|
71
71
|
return t;
|
|
72
72
|
}
|
|
73
|
-
const
|
|
73
|
+
const ze = (e) => {
|
|
74
74
|
var t, n;
|
|
75
75
|
return ((n = (t = e.borderBoxSize) == null ? void 0 : t[0]) == null ? void 0 : n.inlineSize) ?? e.target.offsetWidth;
|
|
76
|
-
},
|
|
76
|
+
}, Ke = (e) => {
|
|
77
77
|
var t, n;
|
|
78
78
|
return ((n = (t = e.borderBoxSize) == null ? void 0 : t[0]) == null ? void 0 : n.blockSize) ?? e.target.offsetHeight;
|
|
79
79
|
};
|
|
80
|
-
function
|
|
81
|
-
return e === void 0 ? 0 : e === "auto" ?
|
|
80
|
+
function Ve(e, t, n) {
|
|
81
|
+
return e === void 0 ? 0 : e === "auto" ? pe(t, n) : Math.max(0, e);
|
|
82
82
|
}
|
|
83
|
-
function
|
|
83
|
+
function je(e) {
|
|
84
84
|
let t = e.parentElement;
|
|
85
85
|
for (; t && t !== document.body && t !== document.documentElement; ) {
|
|
86
86
|
const { overflowY: n } = getComputedStyle(t);
|
|
@@ -90,92 +90,92 @@ function qe(e) {
|
|
|
90
90
|
}
|
|
91
91
|
return null;
|
|
92
92
|
}
|
|
93
|
-
function
|
|
93
|
+
function Xe(e) {
|
|
94
94
|
const t = N(e);
|
|
95
95
|
t.current = e;
|
|
96
|
-
const n = N(null), r = N(null), l = N(null), i = N(null),
|
|
97
|
-
const
|
|
98
|
-
if (
|
|
99
|
-
const
|
|
100
|
-
!
|
|
101
|
-
`[@actionexec/dashboards] O dashboard esta sendo cortado: o container precisa de ${Math.ceil(m.gridHeight)}px de altura, mas o ancestral com overflow oculto tem ${
|
|
96
|
+
const n = N(null), r = N(null), l = N(null), i = N(null), c = N(null), s = N(0), h = N(0), o = N(!1), f = N(!1), u = N(-1), [d, g] = E(!1), b = x((m) => {
|
|
97
|
+
const _ = r.current;
|
|
98
|
+
if (f.current || t.current.silenceWarnings || !_) return;
|
|
99
|
+
const R = je(_);
|
|
100
|
+
!R || R.clientHeight >= m.gridHeight || (f.current = !0, console.warn(
|
|
101
|
+
`[@actionexec/dashboards] O dashboard esta sendo cortado: o container precisa de ${Math.ceil(m.gridHeight)}px de altura, mas o ancestral com overflow oculto tem ${R.clientHeight}px. A altura do dashboard varia com a largura — use a prop onGeometryChange para dimensionar o container, ou troque o overflow para auto. Passe silenceWarnings para desligar este aviso.`
|
|
102
102
|
));
|
|
103
|
-
}, []),
|
|
104
|
-
var O,
|
|
103
|
+
}, []), k = x(() => {
|
|
104
|
+
var O, I;
|
|
105
105
|
if (!n.current) return;
|
|
106
|
-
const { columns: m, cellAspect:
|
|
107
|
-
containerWidth:
|
|
108
|
-
cellWidth:
|
|
109
|
-
cellHeight:
|
|
106
|
+
const { columns: m, cellAspect: _ } = t.current, R = s.current, L = U(R, m), p = {
|
|
107
|
+
containerWidth: R,
|
|
108
|
+
cellWidth: L,
|
|
109
|
+
cellHeight: q(L, _),
|
|
110
110
|
gridHeight: h.current,
|
|
111
|
-
stacked:
|
|
112
|
-
},
|
|
113
|
-
|
|
114
|
-
}, [
|
|
115
|
-
const
|
|
116
|
-
if (!
|
|
117
|
-
const
|
|
118
|
-
if (!m &&
|
|
119
|
-
u.current =
|
|
120
|
-
const { columns:
|
|
121
|
-
|
|
122
|
-
const O =
|
|
123
|
-
|
|
124
|
-
}, []),
|
|
111
|
+
stacked: o.current
|
|
112
|
+
}, A = c.current;
|
|
113
|
+
A && A.containerWidth === p.containerWidth && A.cellWidth === p.cellWidth && A.cellHeight === p.cellHeight && A.gridHeight === p.gridHeight && A.stacked === p.stacked || (c.current = p, (I = (O = t.current).onGeometryChange) == null || I.call(O, p), b(p));
|
|
114
|
+
}, [b]), C = x((m = !1) => {
|
|
115
|
+
const _ = n.current;
|
|
116
|
+
if (!_) return;
|
|
117
|
+
const R = s.current;
|
|
118
|
+
if (!m && R === u.current) return;
|
|
119
|
+
u.current = R;
|
|
120
|
+
const { columns: L, cellAspect: p, stackBelow: A } = t.current, F = U(R, L);
|
|
121
|
+
_.style.setProperty("--dash-cell-h", `${q(F, p)}px`);
|
|
122
|
+
const O = Ve(A, L, p), I = O > 0 && R > 0 && R < O;
|
|
123
|
+
I !== o.current && (o.current = I, g(I));
|
|
124
|
+
}, []), M = x(() => {
|
|
125
125
|
i.current !== null && (cancelAnimationFrame(i.current), i.current = null);
|
|
126
|
-
}, []),
|
|
126
|
+
}, []), S = x(() => {
|
|
127
127
|
i.current === null && (i.current = requestAnimationFrame(() => {
|
|
128
|
-
i.current = null,
|
|
128
|
+
i.current = null, C(), k();
|
|
129
129
|
}));
|
|
130
|
-
}, [
|
|
131
|
-
for (const
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
}, [
|
|
135
|
-
const
|
|
136
|
-
n.current && (
|
|
137
|
-
}, [
|
|
138
|
-
const
|
|
139
|
-
if (r.current && (
|
|
130
|
+
}, [C, k]), T = x((m) => {
|
|
131
|
+
for (const _ of m)
|
|
132
|
+
_.target === n.current ? s.current = Math.round(ze(_)) : _.target === r.current && (h.current = Ke(_));
|
|
133
|
+
S();
|
|
134
|
+
}, [S]), $ = x(() => l.current ? l.current : typeof ResizeObserver > "u" ? null : (l.current = new ResizeObserver(T), l.current), [T]), y = x((m) => {
|
|
135
|
+
const _ = $();
|
|
136
|
+
n.current && (_ == null || _.unobserve(n.current)), n.current = m, m && (_ == null || _.observe(m), s.current = Math.round(m.getBoundingClientRect().width), C(!0), S());
|
|
137
|
+
}, [C, $, S]), w = x((m) => {
|
|
138
|
+
const _ = $();
|
|
139
|
+
if (r.current && (_ == null || _.unobserve(r.current)), r.current = m, !m) {
|
|
140
140
|
h.current = 0;
|
|
141
141
|
return;
|
|
142
142
|
}
|
|
143
|
-
|
|
144
|
-
}, [$,
|
|
143
|
+
_ == null || _.observe(m), h.current = m.getBoundingClientRect().height, S();
|
|
144
|
+
}, [$, S]);
|
|
145
145
|
return P(() => {
|
|
146
146
|
const m = $();
|
|
147
147
|
return n.current && (m == null || m.observe(n.current)), r.current && (m == null || m.observe(r.current)), () => {
|
|
148
|
-
var
|
|
149
|
-
(
|
|
148
|
+
var _;
|
|
149
|
+
(_ = l.current) == null || _.disconnect(), l.current = null, M();
|
|
150
150
|
};
|
|
151
|
-
}, [$,
|
|
152
|
-
n.current && (
|
|
153
|
-
}, [e.columns, e.cellAspect, e.stackBelow,
|
|
151
|
+
}, [$, M]), P(() => {
|
|
152
|
+
n.current && (C(!0), S());
|
|
153
|
+
}, [e.columns, e.cellAspect, e.stackBelow, C, S]), { rootRef: y, gridRef: w, stacked: d };
|
|
154
154
|
}
|
|
155
|
-
const
|
|
155
|
+
const qe = {
|
|
156
156
|
empty: "Sem dados",
|
|
157
157
|
error: "Não foi possível carregar",
|
|
158
158
|
loading: "Carregando...",
|
|
159
159
|
unconfigured: "Widget não configurado"
|
|
160
160
|
};
|
|
161
161
|
function j({ kind: e, message: t }) {
|
|
162
|
-
return /* @__PURE__ */ a("div", { className: `widget__state widget__state--${e}`, role: e === "error" ? "alert" : void 0, children: t ||
|
|
162
|
+
return /* @__PURE__ */ a("div", { className: `widget__state widget__state--${e}`, role: e === "error" ? "alert" : void 0, children: t || qe[e] });
|
|
163
163
|
}
|
|
164
|
-
function
|
|
164
|
+
function W({ name: e, title: t, state: n, stateMessage: r, toolbar: l, children: i }) {
|
|
165
165
|
return /* @__PURE__ */ v("div", { className: `widget widget-${e}`, children: [
|
|
166
166
|
t && /* @__PURE__ */ a("span", { className: "widget__title", children: t }),
|
|
167
167
|
l,
|
|
168
168
|
n ? /* @__PURE__ */ a(j, { kind: n, message: r }) : i
|
|
169
169
|
] });
|
|
170
170
|
}
|
|
171
|
-
const
|
|
172
|
-
function
|
|
171
|
+
const Ue = { up: "↑", down: "↓" };
|
|
172
|
+
function he(e) {
|
|
173
173
|
return Array.isArray(e) ? e.filter(
|
|
174
174
|
(t) => t && t.status === "ok" && t.formatted && t.formatted !== "-"
|
|
175
175
|
) : [];
|
|
176
176
|
}
|
|
177
|
-
function
|
|
178
|
-
const n = e.sentiment ?? "neutral", r =
|
|
177
|
+
function Qe({ comparison: e, primary: t }) {
|
|
178
|
+
const n = e.sentiment ?? "neutral", r = Ue[e.trend ?? ""] ?? "";
|
|
179
179
|
return /* @__PURE__ */ v("div", { className: `widget-kpi__trend widget-kpi__trend--${n}${t ? "" : " widget-kpi__trend--muted"}`, children: [
|
|
180
180
|
/* @__PURE__ */ v("span", { className: "widget-kpi__variance", children: [
|
|
181
181
|
r,
|
|
@@ -185,44 +185,44 @@ function Ze({ comparison: e, primary: t }) {
|
|
|
185
185
|
e.label && /* @__PURE__ */ a("span", { className: "widget-kpi__trend-label", children: e.label })
|
|
186
186
|
] });
|
|
187
187
|
}
|
|
188
|
-
function
|
|
189
|
-
const n = t || String(e.label || ""), r = String(e.formatted || "-"), l =
|
|
190
|
-
return /* @__PURE__ */ v(
|
|
188
|
+
function Je({ data: e, label: t }) {
|
|
189
|
+
const n = t || String(e.label || ""), r = String(e.formatted || "-"), l = he(e.comparisons);
|
|
190
|
+
return /* @__PURE__ */ v(W, { name: "kpi", title: n, children: [
|
|
191
191
|
/* @__PURE__ */ a("span", { className: "widget-kpi__value", children: r }),
|
|
192
|
-
l.map((i,
|
|
192
|
+
l.map((i, c) => /* @__PURE__ */ a(Qe, { comparison: i, primary: c === 0 }, i.id || c))
|
|
193
193
|
] });
|
|
194
194
|
}
|
|
195
|
-
const
|
|
195
|
+
const Ze = "var(--bg-elevated)", Be = [
|
|
196
196
|
[1, "var(--color-success)"],
|
|
197
197
|
[0.7, ""],
|
|
198
198
|
// vazio = cor da serie 1 (destaque do dashboard)
|
|
199
199
|
[0.4, "var(--color-warning)"],
|
|
200
200
|
[0, "var(--color-error)"]
|
|
201
201
|
];
|
|
202
|
-
function
|
|
202
|
+
function ee(e, t, n, r) {
|
|
203
203
|
if (r <= 0) return "";
|
|
204
204
|
if (r >= 1)
|
|
205
205
|
return `M ${e - n} ${t} A ${n} ${n} 0 0 1 ${e} ${t - n} A ${n} ${n} 0 0 1 ${e + n} ${t}`;
|
|
206
206
|
const l = r * Math.PI;
|
|
207
207
|
return `M ${e - n} ${t} A ${n} ${n} 0 0 1 ${e - n * Math.cos(l)} ${t - n * Math.sin(l)}`;
|
|
208
208
|
}
|
|
209
|
-
function
|
|
210
|
-
const r = n || String(e.label || ""), l = typeof e.ratio == "number" ? e.ratio : 0, i = typeof e.format == "string" ? e.format : void 0,
|
|
211
|
-
return /* @__PURE__ */ a(
|
|
209
|
+
function et({ data: e, palette: t, label: n }) {
|
|
210
|
+
const r = n || String(e.label || ""), l = typeof e.ratio == "number" ? e.ratio : 0, i = typeof e.format == "string" ? e.format : void 0, c = String(e.value_formatted || le(e.value, i)), s = String(e.formatted || "-"), h = he(e.comparisons), [o, ...f] = h, u = String((o == null ? void 0 : o.baseline_formatted) || "-"), d = (o == null ? void 0 : o.label) ?? null, g = l >= 1, b = Math.min(Math.max(l, 0), 1), k = Be.find(([y]) => l >= y), C = (k == null ? void 0 : k[1]) || t[0] || "var(--color-info)", M = 50, S = 50, T = 44, $ = 10;
|
|
211
|
+
return /* @__PURE__ */ a(W, { name: "gauge", title: r, children: /* @__PURE__ */ v("div", { className: "widget-gauge__chart", children: [
|
|
212
212
|
/* @__PURE__ */ v("svg", { viewBox: "0 0 100 56", preserveAspectRatio: "xMidYMax meet", role: "img", "aria-label": `${s} da meta`, children: [
|
|
213
|
-
/* @__PURE__ */ a("path", { d:
|
|
214
|
-
|
|
213
|
+
/* @__PURE__ */ a("path", { d: ee(M, S, T, 1), fill: "none", stroke: Ze, strokeWidth: $, strokeLinecap: "butt" }),
|
|
214
|
+
b > 0 && /* @__PURE__ */ a("path", { d: ee(M, S, T, b), fill: "none", stroke: C, strokeWidth: $, strokeLinecap: "butt" })
|
|
215
215
|
] }),
|
|
216
216
|
/* @__PURE__ */ v("div", { className: "widget-gauge__center", children: [
|
|
217
217
|
/* @__PURE__ */ a("span", { className: "widget-gauge__percent", children: s }),
|
|
218
218
|
/* @__PURE__ */ v("span", { className: "widget-gauge__comparison", children: [
|
|
219
|
-
|
|
219
|
+
c,
|
|
220
220
|
" / ",
|
|
221
221
|
u
|
|
222
222
|
] }),
|
|
223
|
-
|
|
224
|
-
!
|
|
225
|
-
|
|
223
|
+
g && /* @__PURE__ */ a("span", { className: "widget-gauge__badge", children: d || "Meta batida" }),
|
|
224
|
+
!g && d && /* @__PURE__ */ a("span", { className: "widget-gauge__comparison", children: d }),
|
|
225
|
+
f.map((y, w) => /* @__PURE__ */ v("span", { className: "widget-gauge__comparison", children: [
|
|
226
226
|
y.formatted,
|
|
227
227
|
" ",
|
|
228
228
|
y.label
|
|
@@ -230,126 +230,114 @@ function rt({ data: e, palette: t, label: n }) {
|
|
|
230
230
|
] })
|
|
231
231
|
] }) });
|
|
232
232
|
}
|
|
233
|
-
function
|
|
234
|
-
const [t, n] =
|
|
233
|
+
function X(e) {
|
|
234
|
+
const [t, n] = E({ width: 0, height: 0 });
|
|
235
235
|
return P(() => {
|
|
236
236
|
const r = e.current;
|
|
237
237
|
if (!r) return;
|
|
238
238
|
const l = new ResizeObserver(([i]) => {
|
|
239
|
-
const { width:
|
|
239
|
+
const { width: c, height: s } = i.contentRect;
|
|
240
240
|
n(
|
|
241
|
-
(h) => h.width !== Math.floor(
|
|
241
|
+
(h) => h.width !== Math.floor(c) || h.height !== Math.floor(s) ? { width: Math.floor(c), height: Math.floor(s) } : h
|
|
242
242
|
);
|
|
243
243
|
});
|
|
244
244
|
return l.observe(r), () => l.disconnect();
|
|
245
245
|
}, [e]), t;
|
|
246
246
|
}
|
|
247
|
-
const
|
|
247
|
+
const te = { fontSize: 10, fill: "var(--text-muted)" }, tt = "var(--bg-elevated)", rt = {
|
|
248
248
|
backgroundColor: "var(--bg-elevated)",
|
|
249
249
|
border: "1px solid var(--bg-paper)",
|
|
250
250
|
borderRadius: "6px",
|
|
251
251
|
color: "var(--text-primary)"
|
|
252
|
-
},
|
|
252
|
+
}, nt = {
|
|
253
253
|
color: "var(--text-primary)",
|
|
254
254
|
fontWeight: 600
|
|
255
255
|
};
|
|
256
|
-
function
|
|
256
|
+
function at(e, t) {
|
|
257
257
|
var l;
|
|
258
258
|
const n = Array.isArray(t) ? t[0] : void 0, r = (l = n == null ? void 0 : n.payload) == null ? void 0 : l.tooltipLabel;
|
|
259
259
|
return typeof r == "string" && r ? r : String(e ?? "");
|
|
260
260
|
}
|
|
261
|
-
function Y({ Chart: e, chartData: t, xKey: n, series: r, palette: l, renderSeries: i, width:
|
|
262
|
-
return /* @__PURE__ */ v(e, { data: t, width:
|
|
263
|
-
/* @__PURE__ */ a(
|
|
264
|
-
/* @__PURE__ */ a(
|
|
265
|
-
/* @__PURE__ */ a(
|
|
261
|
+
function Y({ Chart: e, chartData: t, xKey: n, series: r, palette: l, renderSeries: i, width: c, height: s }) {
|
|
262
|
+
return /* @__PURE__ */ v(e, { data: t, width: c, height: s, children: [
|
|
263
|
+
/* @__PURE__ */ a(oe, { strokeDasharray: "3 3", stroke: tt }),
|
|
264
|
+
/* @__PURE__ */ a(de, { dataKey: n, tick: te }),
|
|
265
|
+
/* @__PURE__ */ a(ue, { tick: te }),
|
|
266
266
|
/* @__PURE__ */ a(
|
|
267
267
|
K,
|
|
268
268
|
{
|
|
269
|
-
contentStyle:
|
|
270
|
-
labelStyle:
|
|
271
|
-
labelFormatter:
|
|
269
|
+
contentStyle: rt,
|
|
270
|
+
labelStyle: nt,
|
|
271
|
+
labelFormatter: at,
|
|
272
272
|
cursor: { fill: "var(--bg-paper)", opacity: 0.3 }
|
|
273
273
|
}
|
|
274
274
|
),
|
|
275
|
-
r.length > 1 && /* @__PURE__ */ a(
|
|
276
|
-
r.map((h,
|
|
275
|
+
r.length > 1 && /* @__PURE__ */ a(Le, {}),
|
|
276
|
+
r.map((h, o) => i(h, l[o % l.length], o))
|
|
277
277
|
] });
|
|
278
278
|
}
|
|
279
|
-
function
|
|
280
|
-
const r = String(e.chartType || "bar"), l = n || String(e.label || ""), i = String(e.xKey || "label"),
|
|
281
|
-
if (
|
|
282
|
-
const d = { chartData: s, xKey: i, series:
|
|
283
|
-
return r === "line" ? /* @__PURE__ */ a(Y, { ...d, Chart:
|
|
284
|
-
|
|
279
|
+
function lt({ data: e, palette: t, label: n }) {
|
|
280
|
+
const r = String(e.chartType || "bar"), l = n || String(e.label || ""), i = String(e.xKey || "label"), c = e.series || [], s = e.data || [], h = N(null), { width: o, height: f } = X(h), u = () => {
|
|
281
|
+
if (o <= 0 || f <= 0) return null;
|
|
282
|
+
const d = { chartData: s, xKey: i, series: c, palette: t, width: o, height: f };
|
|
283
|
+
return r === "line" ? /* @__PURE__ */ a(Y, { ...d, Chart: Ee, renderSeries: (g, b) => /* @__PURE__ */ a(
|
|
284
|
+
Fe,
|
|
285
285
|
{
|
|
286
286
|
type: "monotone",
|
|
287
|
-
dataKey:
|
|
288
|
-
name:
|
|
289
|
-
stroke:
|
|
287
|
+
dataKey: g.key,
|
|
288
|
+
name: g.label,
|
|
289
|
+
stroke: b,
|
|
290
290
|
strokeWidth: 2,
|
|
291
291
|
dot: s.length <= 31
|
|
292
292
|
},
|
|
293
|
-
|
|
294
|
-
) }) : r === "area" ? /* @__PURE__ */ a(Y, { ...d, Chart:
|
|
295
|
-
|
|
293
|
+
g.key
|
|
294
|
+
) }) : r === "area" ? /* @__PURE__ */ a(Y, { ...d, Chart: Ie, renderSeries: (g, b) => /* @__PURE__ */ a(
|
|
295
|
+
We,
|
|
296
296
|
{
|
|
297
297
|
type: "monotone",
|
|
298
|
-
dataKey:
|
|
299
|
-
name:
|
|
300
|
-
fill:
|
|
301
|
-
stroke:
|
|
298
|
+
dataKey: g.key,
|
|
299
|
+
name: g.label,
|
|
300
|
+
fill: b,
|
|
301
|
+
stroke: b,
|
|
302
302
|
fillOpacity: 0.3
|
|
303
303
|
},
|
|
304
|
-
|
|
305
|
-
) }) : /* @__PURE__ */ a(Y, { ...d, Chart: ce, renderSeries: (
|
|
304
|
+
g.key
|
|
305
|
+
) }) : /* @__PURE__ */ a(Y, { ...d, Chart: ce, renderSeries: (g, b) => /* @__PURE__ */ a(
|
|
306
306
|
z,
|
|
307
307
|
{
|
|
308
|
-
dataKey:
|
|
309
|
-
name:
|
|
310
|
-
fill:
|
|
308
|
+
dataKey: g.key,
|
|
309
|
+
name: g.label,
|
|
310
|
+
fill: b,
|
|
311
311
|
radius: [3, 3, 0, 0]
|
|
312
312
|
},
|
|
313
|
-
|
|
313
|
+
g.key
|
|
314
314
|
) });
|
|
315
315
|
};
|
|
316
|
-
return /* @__PURE__ */ a(
|
|
316
|
+
return /* @__PURE__ */ a(W, { name: "chart", title: l, children: /* @__PURE__ */ a("div", { ref: h, className: "widget-chart__container", children: s.length === 0 ? /* @__PURE__ */ a(j, { kind: "empty" }) : u() }) });
|
|
317
317
|
}
|
|
318
|
-
const
|
|
319
|
-
backgroundColor: "var(--bg-elevated)",
|
|
320
|
-
border: "1px solid var(--bg-paper)",
|
|
321
|
-
borderRadius: "6px",
|
|
322
|
-
color: "var(--text-primary)"
|
|
323
|
-
}, ae = {
|
|
324
|
-
color: "var(--text-primary)",
|
|
325
|
-
fontWeight: 600
|
|
326
|
-
};
|
|
318
|
+
const re = { fontSize: 10, fill: "var(--text-muted)" }, it = "var(--bg-elevated)", st = { fill: "var(--bg-paper)", opacity: 0.3 };
|
|
327
319
|
function ct(e) {
|
|
328
320
|
return e.kind === "anchor" ? "var(--color-accent)" : e.kind === "residual" ? "var(--color-warning)" : e.value < 0 ? "var(--color-error)" : "var(--color-success)";
|
|
329
321
|
}
|
|
330
|
-
function ne(e, t
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
formatter: ne,
|
|
345
|
-
cursor: { fill: "var(--bg-paper)", opacity: 0.3 }
|
|
346
|
-
}
|
|
347
|
-
),
|
|
322
|
+
function ne({ active: e, payload: t }) {
|
|
323
|
+
var r;
|
|
324
|
+
const n = e ? (r = t == null ? void 0 : t[0]) == null ? void 0 : r.payload : void 0;
|
|
325
|
+
return n ? /* @__PURE__ */ v("div", { className: "widget-composition__tooltip", children: [
|
|
326
|
+
/* @__PURE__ */ a("span", { className: "widget-composition__tooltip-label", children: n.label }),
|
|
327
|
+
/* @__PURE__ */ a("span", { className: "widget-composition__tooltip-value", children: n.formatted })
|
|
328
|
+
] }) : null;
|
|
329
|
+
}
|
|
330
|
+
function ot({ data: e, palette: t, label: n }) {
|
|
331
|
+
const r = n || String(e.label || ""), l = String(e.display || "pie"), i = e.data || [], c = typeof e.format == "string" ? e.format : void 0, s = N(null), { width: h, height: o } = X(s), f = () => /* @__PURE__ */ v(ce, { data: i, width: h, height: o, children: [
|
|
332
|
+
/* @__PURE__ */ a(oe, { strokeDasharray: "3 3", stroke: it }),
|
|
333
|
+
/* @__PURE__ */ a(de, { dataKey: "label", tick: re, interval: 0 }),
|
|
334
|
+
/* @__PURE__ */ a(ue, { tick: re, tickFormatter: (d) => le(d, c) }),
|
|
335
|
+
/* @__PURE__ */ a(K, { content: /* @__PURE__ */ a(ne, {}), cursor: st }),
|
|
348
336
|
/* @__PURE__ */ a(z, { dataKey: "base", stackId: "bridge", fill: "none", fillOpacity: 0, isAnimationActive: !1 }),
|
|
349
|
-
/* @__PURE__ */ a(z, { dataKey: "span", stackId: "bridge", radius: [3, 3, 0, 0], children: i.map((d,
|
|
350
|
-
] }), u = () => /* @__PURE__ */ v(
|
|
337
|
+
/* @__PURE__ */ a(z, { dataKey: "span", stackId: "bridge", radius: [3, 3, 0, 0], children: i.map((d, g) => /* @__PURE__ */ a(B, { fill: ct(d) }, g)) })
|
|
338
|
+
] }), u = () => /* @__PURE__ */ v(Oe, { width: h, height: o, children: [
|
|
351
339
|
/* @__PURE__ */ a(
|
|
352
|
-
|
|
340
|
+
Pe,
|
|
353
341
|
{
|
|
354
342
|
data: i,
|
|
355
343
|
dataKey: "value",
|
|
@@ -357,73 +345,89 @@ function dt({ data: e, palette: t, label: n }) {
|
|
|
357
345
|
cx: "50%",
|
|
358
346
|
cy: "50%",
|
|
359
347
|
outerRadius: "75%",
|
|
360
|
-
label: ({ name: d, percent:
|
|
348
|
+
label: ({ name: d, percent: g }) => `${d}: ${(g * 100).toFixed(0)}%`,
|
|
361
349
|
labelLine: !1,
|
|
362
|
-
children: i.map((d,
|
|
350
|
+
children: i.map((d, g) => /* @__PURE__ */ a(B, { fill: t[g % t.length] }, g))
|
|
363
351
|
}
|
|
364
352
|
),
|
|
365
|
-
/* @__PURE__ */ a(
|
|
366
|
-
K,
|
|
367
|
-
{
|
|
368
|
-
contentStyle: re,
|
|
369
|
-
labelStyle: ae,
|
|
370
|
-
formatter: ne
|
|
371
|
-
}
|
|
372
|
-
)
|
|
353
|
+
/* @__PURE__ */ a(K, { content: /* @__PURE__ */ a(ne, {}) })
|
|
373
354
|
] });
|
|
374
|
-
return /* @__PURE__ */ a(
|
|
355
|
+
return /* @__PURE__ */ a(W, { name: "composition", title: r, children: /* @__PURE__ */ a("div", { ref: s, className: "widget-composition__container", children: i.length === 0 || h <= 0 || o <= 0 ? /* @__PURE__ */ a(j, { kind: "empty" }) : l === "bridge" ? f() : u() }) });
|
|
375
356
|
}
|
|
376
|
-
function
|
|
357
|
+
function dt(e, t) {
|
|
377
358
|
if (t !== "percentage") return "";
|
|
378
359
|
const n = Number(e);
|
|
379
360
|
return Number.isNaN(n) || n === 0 ? "" : n > 0 ? " widget-table__td--up" : " widget-table__td--down";
|
|
380
361
|
}
|
|
362
|
+
function ut(e, t, n, r) {
|
|
363
|
+
const l = (r == null ? void 0 : r.offsetHeight) ?? 0;
|
|
364
|
+
if (e === 0 || t <= 0 || l <= 0) return e;
|
|
365
|
+
const i = Math.floor((t - ((n == null ? void 0 : n.offsetHeight) ?? 0)) / l);
|
|
366
|
+
return Math.max(0, Math.min(e, i));
|
|
367
|
+
}
|
|
381
368
|
function ht({ data: e, label: t }) {
|
|
382
|
-
var
|
|
383
|
-
const
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
stateMessage: "Configure as colunas da tabela."
|
|
392
|
-
}
|
|
393
|
-
);
|
|
394
|
-
const c = o ? /* @__PURE__ */ a("div", { className: "widget-table__tabs", role: "tablist", children: i.map((u, d) => /* @__PURE__ */ a(
|
|
395
|
-
"button",
|
|
369
|
+
var d;
|
|
370
|
+
const n = e.columns || [], r = e.rows || [], l = e.overflow === "clip", i = e.indexColumn === !0, c = t || String(e.label || ""), s = N(null), h = N(null), o = N(null), { height: f } = X(s), u = l ? r.slice(0, ut(
|
|
371
|
+
r.length,
|
|
372
|
+
f,
|
|
373
|
+
h.current,
|
|
374
|
+
((d = o.current) == null ? void 0 : d.firstElementChild) ?? null
|
|
375
|
+
)) : r;
|
|
376
|
+
return n.length === 0 ? /* @__PURE__ */ a(
|
|
377
|
+
W,
|
|
396
378
|
{
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
"
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
379
|
+
name: "table",
|
|
380
|
+
title: c,
|
|
381
|
+
state: "unconfigured",
|
|
382
|
+
stateMessage: "Configure as colunas da tabela."
|
|
383
|
+
}
|
|
384
|
+
) : /* @__PURE__ */ a(W, { name: "table", title: c, children: /* @__PURE__ */ a(
|
|
385
|
+
"div",
|
|
386
|
+
{
|
|
387
|
+
ref: s,
|
|
388
|
+
className: `widget-table__scroll${l ? " widget-table__scroll--clip" : ""}`,
|
|
389
|
+
children: /* @__PURE__ */ v(
|
|
390
|
+
"table",
|
|
391
|
+
{
|
|
392
|
+
className: `widget-table__table${l && u.length < r.length ? "" : " widget-table__table--fill"}`,
|
|
393
|
+
children: [
|
|
394
|
+
/* @__PURE__ */ a("thead", { ref: h, children: /* @__PURE__ */ v("tr", { children: [
|
|
395
|
+
i && /* @__PURE__ */ a("th", { className: "widget-table__th widget-table__th--index", children: "#" }),
|
|
396
|
+
n.map((g) => /* @__PURE__ */ a(
|
|
397
|
+
"th",
|
|
398
|
+
{
|
|
399
|
+
className: `widget-table__th${Q(g.format) ? " widget-table__th--num" : ""}`,
|
|
400
|
+
children: g.label || g.key
|
|
401
|
+
},
|
|
402
|
+
g.key
|
|
403
|
+
))
|
|
404
|
+
] }) }),
|
|
405
|
+
/* @__PURE__ */ a("tbody", { ref: o, children: u.length === 0 ? /* @__PURE__ */ a("tr", { children: /* @__PURE__ */ a(
|
|
406
|
+
"td",
|
|
407
|
+
{
|
|
408
|
+
className: "widget-table__td widget-table__td--placeholder",
|
|
409
|
+
colSpan: n.length + (i ? 1 : 0),
|
|
410
|
+
children: "Sem dados"
|
|
411
|
+
}
|
|
412
|
+
) }) : u.map((g, b) => /* @__PURE__ */ v("tr", { children: [
|
|
413
|
+
i && /* @__PURE__ */ a("td", { className: "widget-table__td widget-table__td--index", children: b + 1 }),
|
|
414
|
+
n.map((k) => {
|
|
415
|
+
const C = g[k.key], M = Q(k.format) ? " widget-table__td--num" : "";
|
|
416
|
+
return /* @__PURE__ */ a("td", { className: `widget-table__td${M}${dt(C, k.format)}`, children: _e(C, k.format) }, k.key);
|
|
417
|
+
})
|
|
418
|
+
] }, b)) })
|
|
419
|
+
]
|
|
420
|
+
}
|
|
421
|
+
)
|
|
422
|
+
}
|
|
423
|
+
) });
|
|
420
424
|
}
|
|
421
425
|
function gt({ config: e, value: t, options: n = [], dateBounds: r, onChange: l }) {
|
|
422
|
-
const i = e.filterType || "select",
|
|
426
|
+
const i = e.filterType || "select", c = e.label || "Filtro", s = e.dateFilterMode || "range";
|
|
423
427
|
return /* @__PURE__ */ v("div", { className: "widget-filter", children: [
|
|
424
|
-
/* @__PURE__ */ a("label", { className: "widget-filter__label", children:
|
|
425
|
-
i === "date_range" ? s === "yearly" ? /* @__PURE__ */ a(ft, { value: t, dateBounds: r, onChange: l }) : s === "monthly" ? /* @__PURE__ */ a(pt, { value: t, dateBounds: r, onChange: l }) : s === "weekly" ? /* @__PURE__ */ a(
|
|
426
|
-
|
|
428
|
+
/* @__PURE__ */ a("label", { className: "widget-filter__label", children: c }),
|
|
429
|
+
i === "date_range" ? s === "yearly" ? /* @__PURE__ */ a(ft, { value: t, dateBounds: r, onChange: l }) : s === "monthly" ? /* @__PURE__ */ a(pt, { value: t, dateBounds: r, onChange: l }) : s === "weekly" ? /* @__PURE__ */ a(_t, { value: t, dateBounds: r, onChange: l }) : /* @__PURE__ */ a(mt, { value: t, dateBounds: r, onChange: l }) : /* @__PURE__ */ a(
|
|
430
|
+
bt,
|
|
427
431
|
{
|
|
428
432
|
value: t,
|
|
429
433
|
options: n,
|
|
@@ -438,7 +442,7 @@ function mt({ value: e, dateBounds: t, onChange: n }) {
|
|
|
438
442
|
const [r, l] = e ? e.split("|") : ["", ""];
|
|
439
443
|
return /* @__PURE__ */ v("div", { className: "widget-filter__date-range widget-filter__date-range--stacked", children: [
|
|
440
444
|
/* @__PURE__ */ a(
|
|
441
|
-
|
|
445
|
+
J,
|
|
442
446
|
{
|
|
443
447
|
value: r,
|
|
444
448
|
minIso: t == null ? void 0 : t.min,
|
|
@@ -451,7 +455,7 @@ function mt({ value: e, dateBounds: t, onChange: n }) {
|
|
|
451
455
|
}
|
|
452
456
|
),
|
|
453
457
|
/* @__PURE__ */ a(
|
|
454
|
-
|
|
458
|
+
J,
|
|
455
459
|
{
|
|
456
460
|
value: l,
|
|
457
461
|
minIso: r || (t == null ? void 0 : t.min),
|
|
@@ -466,23 +470,23 @@ function mt({ value: e, dateBounds: t, onChange: n }) {
|
|
|
466
470
|
] });
|
|
467
471
|
}
|
|
468
472
|
function ft({ value: e, dateBounds: t, onChange: n }) {
|
|
469
|
-
const [r] = e ? e.split("|") : [""], l =
|
|
470
|
-
const
|
|
471
|
-
n(`${
|
|
473
|
+
const [r] = e ? e.split("|") : [""], l = be(r), i = /* @__PURE__ */ new Date(), c = (l == null ? void 0 : l.year) ?? i.getFullYear(), s = V(t), h = (o) => {
|
|
474
|
+
const f = ke(o);
|
|
475
|
+
n(`${f.start}|${f.end}`);
|
|
472
476
|
};
|
|
473
477
|
return /* @__PURE__ */ a("div", { className: "widget-filter__date-range widget-filter__date-range--year", children: /* @__PURE__ */ a(
|
|
474
478
|
"select",
|
|
475
479
|
{
|
|
476
480
|
className: "widget-filter__select",
|
|
477
|
-
value:
|
|
478
|
-
onChange: (
|
|
479
|
-
children: s.map((
|
|
481
|
+
value: c,
|
|
482
|
+
onChange: (o) => h(parseInt(o.target.value)),
|
|
483
|
+
children: s.map((o) => /* @__PURE__ */ a("option", { value: o, children: o }, o))
|
|
480
484
|
}
|
|
481
485
|
) });
|
|
482
486
|
}
|
|
483
487
|
function pt({ value: e, dateBounds: t, onChange: n }) {
|
|
484
|
-
const [r] = e ? e.split("|") : [""], l =
|
|
485
|
-
const d =
|
|
488
|
+
const [r] = e ? e.split("|") : [""], l = ie(r), i = /* @__PURE__ */ new Date(), c = (l == null ? void 0 : l.year) ?? i.getFullYear(), s = (l == null ? void 0 : l.month) ?? i.getMonth() + 1, h = V(t), o = (f, u) => {
|
|
489
|
+
const d = ye(f, u);
|
|
486
490
|
n(`${d.start}|${d.end}`);
|
|
487
491
|
};
|
|
488
492
|
return /* @__PURE__ */ v("div", { className: "widget-filter__date-range widget-filter__date-range--month", children: [
|
|
@@ -491,32 +495,32 @@ function pt({ value: e, dateBounds: t, onChange: n }) {
|
|
|
491
495
|
{
|
|
492
496
|
className: "widget-filter__select",
|
|
493
497
|
value: s,
|
|
494
|
-
onChange: (
|
|
495
|
-
children:
|
|
498
|
+
onChange: (f) => o(c, parseInt(f.target.value)),
|
|
499
|
+
children: se.map((f, u) => /* @__PURE__ */ a("option", { value: u + 1, children: f }, u + 1))
|
|
496
500
|
}
|
|
497
501
|
),
|
|
498
502
|
/* @__PURE__ */ a(
|
|
499
503
|
"select",
|
|
500
504
|
{
|
|
501
505
|
className: "widget-filter__select",
|
|
502
|
-
value:
|
|
503
|
-
onChange: (
|
|
504
|
-
children: h.map((
|
|
506
|
+
value: c,
|
|
507
|
+
onChange: (f) => o(parseInt(f.target.value), s),
|
|
508
|
+
children: h.map((f) => /* @__PURE__ */ a("option", { value: f, children: f }, f))
|
|
505
509
|
}
|
|
506
510
|
)
|
|
507
511
|
] });
|
|
508
512
|
}
|
|
509
|
-
function
|
|
510
|
-
const [r] = e ? e.split("|") : [""], l =
|
|
513
|
+
function _t({ value: e, dateBounds: t, onChange: n }) {
|
|
514
|
+
const [r] = e ? e.split("|") : [""], l = ie(r), i = /* @__PURE__ */ new Date(), c = (l == null ? void 0 : l.year) ?? i.getFullYear(), s = (l == null ? void 0 : l.month) ?? i.getMonth() + 1, h = V(t), o = H(c, s), f = ve(r, c, s) || 1;
|
|
511
515
|
return /* @__PURE__ */ v("div", { className: "widget-filter__date-range widget-filter__date-range--week", children: [
|
|
512
516
|
/* @__PURE__ */ a(
|
|
513
517
|
"select",
|
|
514
518
|
{
|
|
515
519
|
className: "widget-filter__select",
|
|
516
|
-
value:
|
|
520
|
+
value: c,
|
|
517
521
|
onChange: (u) => {
|
|
518
|
-
const d = parseInt(u.target.value),
|
|
519
|
-
|
|
522
|
+
const d = parseInt(u.target.value), b = H(d, s)[0];
|
|
523
|
+
b && n(`${b.start}|${b.end}`);
|
|
520
524
|
},
|
|
521
525
|
children: h.map((u) => /* @__PURE__ */ a("option", { value: u, children: u }, u))
|
|
522
526
|
}
|
|
@@ -527,30 +531,30 @@ function bt({ value: e, dateBounds: t, onChange: n }) {
|
|
|
527
531
|
className: "widget-filter__select",
|
|
528
532
|
value: s,
|
|
529
533
|
onChange: (u) => {
|
|
530
|
-
const d = parseInt(u.target.value),
|
|
531
|
-
|
|
534
|
+
const d = parseInt(u.target.value), b = H(c, d)[0];
|
|
535
|
+
b && n(`${b.start}|${b.end}`);
|
|
532
536
|
},
|
|
533
|
-
children:
|
|
537
|
+
children: se.map((u, d) => /* @__PURE__ */ a("option", { value: d + 1, children: u }, d + 1))
|
|
534
538
|
}
|
|
535
539
|
),
|
|
536
540
|
/* @__PURE__ */ a(
|
|
537
541
|
"select",
|
|
538
542
|
{
|
|
539
543
|
className: "widget-filter__select",
|
|
540
|
-
value:
|
|
544
|
+
value: f,
|
|
541
545
|
onChange: (u) => {
|
|
542
|
-
const d =
|
|
546
|
+
const d = o[parseInt(u.target.value) - 1];
|
|
543
547
|
d && n(`${d.start}|${d.end}`);
|
|
544
548
|
},
|
|
545
|
-
children:
|
|
549
|
+
children: o.map((u) => /* @__PURE__ */ a("option", { value: u.index, children: u.label }, u.index))
|
|
546
550
|
}
|
|
547
551
|
)
|
|
548
552
|
] });
|
|
549
553
|
}
|
|
550
|
-
function
|
|
554
|
+
function bt({ value: e, options: t, multi: n, searchable: r, onChange: l }) {
|
|
551
555
|
if (r)
|
|
552
556
|
return /* @__PURE__ */ a(
|
|
553
|
-
|
|
557
|
+
we,
|
|
554
558
|
{
|
|
555
559
|
value: e,
|
|
556
560
|
options: t,
|
|
@@ -559,8 +563,8 @@ function _t({ value: e, options: t, multi: n, searchable: r, onChange: l }) {
|
|
|
559
563
|
}
|
|
560
564
|
);
|
|
561
565
|
if (n) {
|
|
562
|
-
const i = e ? e.split(G) : [],
|
|
563
|
-
const h = i.includes(s) ? i.filter((
|
|
566
|
+
const i = e ? e.split(G) : [], c = (s) => {
|
|
567
|
+
const h = i.includes(s) ? i.filter((o) => o !== s) : [...i, s];
|
|
564
568
|
l(h.join(G));
|
|
565
569
|
};
|
|
566
570
|
return /* @__PURE__ */ v("div", { className: "widget-filter__multi", children: [
|
|
@@ -579,7 +583,7 @@ function _t({ value: e, options: t, multi: n, searchable: r, onChange: l }) {
|
|
|
579
583
|
{
|
|
580
584
|
type: "checkbox",
|
|
581
585
|
checked: i.includes(s),
|
|
582
|
-
onChange: () =>
|
|
586
|
+
onChange: () => c(s)
|
|
583
587
|
}
|
|
584
588
|
),
|
|
585
589
|
s
|
|
@@ -604,7 +608,7 @@ const vt = {
|
|
|
604
608
|
percentage: "%"
|
|
605
609
|
};
|
|
606
610
|
function wt({ config: e, value: t, onChange: n }) {
|
|
607
|
-
const r = e.label || "Variavel", l = e.locked || !1, i = e.variableFormat || "number",
|
|
611
|
+
const r = e.label || "Variavel", l = e.locked || !1, i = e.variableFormat || "number", c = vt[i] || "";
|
|
608
612
|
return /* @__PURE__ */ v("div", { className: `widget-variable ${l ? "widget-variable--locked" : ""}`, children: [
|
|
609
613
|
/* @__PURE__ */ a("label", { className: "widget-variable__label", children: r }),
|
|
610
614
|
/* @__PURE__ */ v("div", { className: "widget-variable__input-wrapper", children: [
|
|
@@ -619,7 +623,7 @@ function wt({ config: e, value: t, onChange: n }) {
|
|
|
619
623
|
step: i === "integer" ? 1 : 0.01
|
|
620
624
|
}
|
|
621
625
|
),
|
|
622
|
-
|
|
626
|
+
c && /* @__PURE__ */ a("span", { className: "widget-variable__suffix", children: c })
|
|
623
627
|
] }),
|
|
624
628
|
l && /* @__PURE__ */ a("span", { className: "widget-variable__lock-icon", title: "Bloqueado", children: "🔒" })
|
|
625
629
|
] });
|
|
@@ -628,7 +632,7 @@ function yt({ config: e, palette: t, onChange: n }) {
|
|
|
628
632
|
const r = e.label || "Cores", l = e.locked || !1;
|
|
629
633
|
return /* @__PURE__ */ v("div", { className: `widget-palette ${l ? "widget-palette--locked" : ""}`, children: [
|
|
630
634
|
/* @__PURE__ */ a("label", { className: "widget-palette__label", children: r }),
|
|
631
|
-
/* @__PURE__ */ a(
|
|
635
|
+
/* @__PURE__ */ a(Se, { selected: t, onSelect: n, customMode: !0, disabled: l }),
|
|
632
636
|
l && /* @__PURE__ */ a("span", { className: "widget-palette__lock-icon", title: "Bloqueado", children: "🔒" })
|
|
633
637
|
] });
|
|
634
638
|
}
|
|
@@ -642,15 +646,15 @@ function St({
|
|
|
642
646
|
config: r,
|
|
643
647
|
filterValue: l,
|
|
644
648
|
filterOptions: i,
|
|
645
|
-
dateBounds:
|
|
649
|
+
dateBounds: c,
|
|
646
650
|
onFilterChange: s,
|
|
647
651
|
variableValue: h,
|
|
648
|
-
onVariableChange:
|
|
649
|
-
onPaletteChange:
|
|
652
|
+
onVariableChange: o,
|
|
653
|
+
onPaletteChange: f
|
|
650
654
|
}) {
|
|
651
655
|
if (t.error)
|
|
652
656
|
return /* @__PURE__ */ a(
|
|
653
|
-
|
|
657
|
+
W,
|
|
654
658
|
{
|
|
655
659
|
name: e.replace("_", "-"),
|
|
656
660
|
title: r == null ? void 0 : r.label,
|
|
@@ -658,16 +662,16 @@ function St({
|
|
|
658
662
|
stateMessage: kt[String(t.error)]
|
|
659
663
|
}
|
|
660
664
|
);
|
|
661
|
-
const u =
|
|
665
|
+
const u = Ne(n);
|
|
662
666
|
switch (e) {
|
|
663
667
|
case "kpi_card":
|
|
664
|
-
return /* @__PURE__ */ a(
|
|
668
|
+
return /* @__PURE__ */ a(Je, { data: t, label: r == null ? void 0 : r.label });
|
|
665
669
|
case "gauge":
|
|
666
|
-
return /* @__PURE__ */ a(
|
|
670
|
+
return /* @__PURE__ */ a(et, { data: t, palette: u, label: r == null ? void 0 : r.label });
|
|
667
671
|
case "chart":
|
|
668
|
-
return /* @__PURE__ */ a(
|
|
672
|
+
return /* @__PURE__ */ a(lt, { data: t, palette: u, label: r == null ? void 0 : r.label });
|
|
669
673
|
case "composition":
|
|
670
|
-
return /* @__PURE__ */ a(
|
|
674
|
+
return /* @__PURE__ */ a(ot, { data: t, palette: u, label: r == null ? void 0 : r.label });
|
|
671
675
|
case "table":
|
|
672
676
|
return /* @__PURE__ */ a(ht, { data: t, label: r == null ? void 0 : r.label });
|
|
673
677
|
case "filter":
|
|
@@ -677,114 +681,114 @@ function St({
|
|
|
677
681
|
config: r,
|
|
678
682
|
value: l || "",
|
|
679
683
|
options: i,
|
|
680
|
-
dateBounds:
|
|
684
|
+
dateBounds: c,
|
|
681
685
|
onChange: s
|
|
682
686
|
}
|
|
683
687
|
) : null;
|
|
684
688
|
case "variable": {
|
|
685
689
|
const d = r;
|
|
686
|
-
return d &&
|
|
690
|
+
return d && o ? /* @__PURE__ */ a(
|
|
687
691
|
wt,
|
|
688
692
|
{
|
|
689
693
|
config: d,
|
|
690
694
|
value: h ?? d.variableValue ?? 0,
|
|
691
|
-
onChange:
|
|
695
|
+
onChange: o
|
|
692
696
|
}
|
|
693
697
|
) : null;
|
|
694
698
|
}
|
|
695
699
|
case "color_palette":
|
|
696
|
-
return r &&
|
|
700
|
+
return r && f ? /* @__PURE__ */ a(
|
|
697
701
|
yt,
|
|
698
702
|
{
|
|
699
703
|
config: r,
|
|
700
704
|
palette: n,
|
|
701
|
-
onChange:
|
|
705
|
+
onChange: f
|
|
702
706
|
}
|
|
703
707
|
) : null;
|
|
704
708
|
default:
|
|
705
|
-
return /* @__PURE__ */ a(
|
|
709
|
+
return /* @__PURE__ */ a(W, { name: "unknown", state: "unconfigured" });
|
|
706
710
|
}
|
|
707
711
|
}
|
|
708
712
|
const Nt = (e, t) => e.grid.y - t.grid.y || e.grid.x - t.grid.x;
|
|
709
|
-
function
|
|
713
|
+
function Mt({
|
|
710
714
|
token: e,
|
|
711
|
-
cellAspect: t =
|
|
715
|
+
cellAspect: t = Ae,
|
|
712
716
|
stackBelow: n,
|
|
713
717
|
onGeometryChange: r,
|
|
714
718
|
silenceWarnings: l,
|
|
715
719
|
className: i
|
|
716
720
|
}) {
|
|
717
721
|
const {
|
|
718
|
-
layout:
|
|
722
|
+
layout: c,
|
|
719
723
|
renderData: s,
|
|
720
724
|
loading: h,
|
|
721
|
-
error:
|
|
722
|
-
filters:
|
|
725
|
+
error: o,
|
|
726
|
+
filters: f,
|
|
723
727
|
variables: u,
|
|
724
728
|
palette: d,
|
|
725
|
-
setFilter:
|
|
726
|
-
setVariable:
|
|
727
|
-
setPalette:
|
|
728
|
-
} =
|
|
729
|
-
columns: (
|
|
729
|
+
setFilter: g,
|
|
730
|
+
setVariable: b,
|
|
731
|
+
setPalette: k
|
|
732
|
+
} = He(e), { rootRef: C, gridRef: M, stacked: S } = Xe({
|
|
733
|
+
columns: (c == null ? void 0 : c.gridColumns) ?? 0,
|
|
730
734
|
cellAspect: t,
|
|
731
735
|
stackBelow: n,
|
|
732
736
|
onGeometryChange: r,
|
|
733
737
|
silenceWarnings: l
|
|
734
|
-
}),
|
|
735
|
-
const m = (
|
|
736
|
-
return
|
|
737
|
-
}, [
|
|
738
|
-
"--dash-gap": `${
|
|
739
|
-
"--dash-pad": `${
|
|
738
|
+
}), T = ae(() => {
|
|
739
|
+
const m = (c == null ? void 0 : c.widgets) ?? [];
|
|
740
|
+
return S ? [...m].sort(Nt) : m;
|
|
741
|
+
}, [c == null ? void 0 : c.widgets, S]), $ = {
|
|
742
|
+
"--dash-gap": `${Z}px`,
|
|
743
|
+
"--dash-pad": `${Me}px`
|
|
740
744
|
}, y = ["preview-tab", i].filter(Boolean).join(" ");
|
|
741
745
|
let w;
|
|
742
|
-
if (
|
|
743
|
-
w = /* @__PURE__ */ a("div", { className: "preview-tab__error", children:
|
|
744
|
-
else if (!
|
|
746
|
+
if (o && !c)
|
|
747
|
+
w = /* @__PURE__ */ a("div", { className: "preview-tab__error", children: o });
|
|
748
|
+
else if (!c)
|
|
745
749
|
w = /* @__PURE__ */ a("div", { className: "preview-tab__loading", children: "Carregando dashboard..." });
|
|
746
|
-
else if (
|
|
750
|
+
else if (c.widgets.length === 0)
|
|
747
751
|
w = /* @__PURE__ */ a("div", { className: "preview-tab__empty", children: "Este dashboard nao possui widgets." });
|
|
748
752
|
else {
|
|
749
|
-
const m = (s == null ? void 0 : s.widgets) ?? {},
|
|
750
|
-
"--dash-cols":
|
|
751
|
-
"--dash-rows":
|
|
752
|
-
|
|
753
|
-
},
|
|
754
|
-
w = /* @__PURE__ */ v(
|
|
755
|
-
|
|
756
|
-
s && /* @__PURE__ */ a("div", { className:
|
|
757
|
-
const
|
|
753
|
+
const m = (s == null ? void 0 : s.widgets) ?? {}, _ = (s == null ? void 0 : s.date_bounds) ?? null, R = {
|
|
754
|
+
"--dash-cols": c.gridColumns,
|
|
755
|
+
"--dash-rows": c.gridRows,
|
|
756
|
+
...Ce(d)
|
|
757
|
+
}, L = ["preview-tab__grid", S && "preview-tab__grid--stacked"].filter(Boolean).join(" ");
|
|
758
|
+
w = /* @__PURE__ */ v(ge, { children: [
|
|
759
|
+
o && !s && /* @__PURE__ */ a("div", { className: "preview-tab__error", children: o }),
|
|
760
|
+
s && /* @__PURE__ */ a("div", { className: L, style: R, ref: M, children: T.map((p) => {
|
|
761
|
+
const A = Re.has(p.type), F = m[p.id], O = S ? {
|
|
758
762
|
gridColumn: 1,
|
|
759
|
-
aspectRatio: `${
|
|
760
|
-
minHeight: `${
|
|
763
|
+
aspectRatio: `${xe(p.grid.w, p.grid.h, t)}`,
|
|
764
|
+
minHeight: `${$e(p.grid.h, Te, Z, 0)}px`
|
|
761
765
|
} : {
|
|
762
766
|
gridColumn: `${p.grid.x + 1} / span ${p.grid.w}`,
|
|
763
767
|
gridRow: `${p.grid.y + 1} / span ${p.grid.h}`
|
|
764
|
-
},
|
|
768
|
+
}, I = p.type === "variable" ? u[p.id] ?? (F == null ? void 0 : F.value) ?? p.config.variableValue ?? 0 : void 0;
|
|
765
769
|
return /* @__PURE__ */ a(
|
|
766
770
|
"div",
|
|
767
771
|
{
|
|
768
|
-
className: `preview-tab__widget ${
|
|
772
|
+
className: `preview-tab__widget ${A ? "preview-tab__widget--control" : ""}`,
|
|
769
773
|
style: O,
|
|
770
|
-
children:
|
|
774
|
+
children: A || F ? /* @__PURE__ */ a(
|
|
771
775
|
St,
|
|
772
776
|
{
|
|
773
777
|
type: p.type,
|
|
774
778
|
computed: F || {},
|
|
775
779
|
palette: d,
|
|
776
780
|
config: p.config,
|
|
777
|
-
filterValue:
|
|
781
|
+
filterValue: f[p.id] || "",
|
|
778
782
|
filterOptions: (
|
|
779
783
|
// Estruturais: vem do /layout (cacheavel), nao do /render —
|
|
780
784
|
// recalcula-los a cada render custaria um DISTINCT por filtro.
|
|
781
785
|
p.type === "filter" ? p.config.availableValues ?? [] : []
|
|
782
786
|
),
|
|
783
|
-
dateBounds:
|
|
784
|
-
onFilterChange: (D) =>
|
|
785
|
-
variableValue:
|
|
786
|
-
onVariableChange: (D) =>
|
|
787
|
-
onPaletteChange:
|
|
787
|
+
dateBounds: _,
|
|
788
|
+
onFilterChange: (D) => g(p.id, D),
|
|
789
|
+
variableValue: I,
|
|
790
|
+
onVariableChange: (D) => b(p.id, D),
|
|
791
|
+
onPaletteChange: k
|
|
788
792
|
}
|
|
789
793
|
) : /* @__PURE__ */ a("div", { className: "preview-tab__widget-loading", children: h ? "Carregando..." : "Sem dados" })
|
|
790
794
|
},
|
|
@@ -794,10 +798,10 @@ function Tt({
|
|
|
794
798
|
h && s && /* @__PURE__ */ a("div", { className: "preview-tab__recalculating", children: "Atualizando..." })
|
|
795
799
|
] });
|
|
796
800
|
}
|
|
797
|
-
return /* @__PURE__ */ a("div", { className: y, style: $, ref:
|
|
801
|
+
return /* @__PURE__ */ a("div", { className: y, style: $, ref: C, children: w });
|
|
798
802
|
}
|
|
799
803
|
export {
|
|
800
804
|
Et as ApiError,
|
|
801
|
-
|
|
805
|
+
Mt as Dashboard
|
|
802
806
|
};
|
|
803
807
|
//# sourceMappingURL=index.js.map
|