@divami-artefacts/ai-design-system 1.0.27 → 1.0.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/index.cjs +1 -1
- package/dist/index.js +342 -338
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -498,7 +498,7 @@ function ae({ expanded: e, onToggle: t, labelExpanded: n = "View Less", labelCol
|
|
|
498
498
|
}
|
|
499
499
|
//#endregion
|
|
500
500
|
//#region src/components/progressRaceChart/ProgressRaceChart.tsx
|
|
501
|
-
var L =
|
|
501
|
+
var L = 660, R = 42, oe = 10, se = 24, ce = 24, le = 8, ue = [
|
|
502
502
|
u.green,
|
|
503
503
|
u.blue,
|
|
504
504
|
u.amber,
|
|
@@ -700,28 +700,28 @@ function ge(e, t, r, i, o = !0, s = {}) {
|
|
|
700
700
|
}
|
|
701
701
|
//#endregion
|
|
702
702
|
//#region src/components/multiMetricConstellationChart/MultiMetricConstellationChart.tsx
|
|
703
|
-
var z = 780,
|
|
703
|
+
var z = 780, B = 234, _e = 130, ve = 52, ye = [
|
|
704
704
|
u.blue,
|
|
705
705
|
u.amber,
|
|
706
706
|
u.purple,
|
|
707
707
|
u.green
|
|
708
|
-
],
|
|
708
|
+
], be = [
|
|
709
709
|
"Base Value",
|
|
710
710
|
"Variations",
|
|
711
711
|
"Commitment"
|
|
712
|
-
],
|
|
712
|
+
], xe = [
|
|
713
713
|
"Base",
|
|
714
714
|
"Var",
|
|
715
715
|
"Commit"
|
|
716
716
|
];
|
|
717
|
-
function
|
|
717
|
+
function Se({ items: e = [], "data-testid": t }) {
|
|
718
718
|
let n = a(null), r = a(/* @__PURE__ */ new Map()), { hoveredRef: o, tooltip: l, hitZonesRef: d } = w(n, {
|
|
719
719
|
width: z,
|
|
720
|
-
height:
|
|
720
|
+
height: B
|
|
721
721
|
}), p = i(() => e.filter((e) => typeof e == "object" && !!e), [e]), g = i(() => {
|
|
722
722
|
let e = Math.max(...p.map((e) => e.base ?? 0)), t = Math.max(...p.map((e) => e.variation ?? 0));
|
|
723
723
|
return p.map((n, r) => {
|
|
724
|
-
let i = z * (.12 + r * .19), a =
|
|
724
|
+
let i = z * (.12 + r * .19), a = _e, o = Math.min(z * .075, ve), s = ye[r % ye.length], c = [
|
|
725
725
|
(n.base ?? 0) / (e || 1) * 100,
|
|
726
726
|
(n.variation ?? 0) / (t || 1) * 100,
|
|
727
727
|
n.percentage ?? 0
|
|
@@ -730,10 +730,10 @@ function Ce({ items: e = [], "data-testid": t }) {
|
|
|
730
730
|
n.variationLabel ?? String(n.variation ?? 0),
|
|
731
731
|
`${n.percentage ?? 0}%`
|
|
732
732
|
], u = c.map((e, t) => {
|
|
733
|
-
let n = -Math.PI / 2 + t /
|
|
733
|
+
let n = -Math.PI / 2 + t / be.length * Math.PI * 2, r = e / 100, s = o * Math.max(.08, r);
|
|
734
734
|
return {
|
|
735
|
-
name:
|
|
736
|
-
short:
|
|
735
|
+
name: be[t],
|
|
736
|
+
short: xe[t],
|
|
737
737
|
label: l[t],
|
|
738
738
|
val: Math.round(e),
|
|
739
739
|
x: i + Math.cos(n) * s,
|
|
@@ -753,8 +753,8 @@ function Ce({ items: e = [], "data-testid": t }) {
|
|
|
753
753
|
};
|
|
754
754
|
});
|
|
755
755
|
}, [p]);
|
|
756
|
-
return ge(n, z,
|
|
757
|
-
N(r.current, o.current), d.current = [], b(e, z,
|
|
756
|
+
return ge(n, z, B, (e, t, n) => {
|
|
757
|
+
N(r.current, o.current), d.current = [], b(e, z, B, n, 30), g.forEach((t, i) => {
|
|
758
758
|
let a = t.color, o = `constellation-${i}`, s = r.current.get(o) ?? 0;
|
|
759
759
|
e.beginPath(), e.arc(t.cx, t.cy, t.baseR + 5, 0, Math.PI * 2), e.strokeStyle = h(u.bd, .08 + .08 * s), e.lineWidth = .5, e.stroke(), e.beginPath(), t.stars.forEach((t, n) => {
|
|
760
760
|
n === 0 ? e.moveTo(t.x, t.y) : e.lineTo(t.x, t.y);
|
|
@@ -774,17 +774,17 @@ function Ce({ items: e = [], "data-testid": t }) {
|
|
|
774
774
|
sublabel: `${t.percentage ?? 0}% committed · scatter ${t.scatter.toFixed(1)}`,
|
|
775
775
|
color: a
|
|
776
776
|
});
|
|
777
|
-
}), e.font = m.font, e.textAlign = "center", e.textBaseline = "middle", e.fillStyle = m.color, e.fillText("▲ top = Base value · ▼▸ lower-right = Variations · ◂▼ lower-left = Commitment % · hover stars for details", z / 2,
|
|
777
|
+
}), e.font = m.font, e.textAlign = "center", e.textBaseline = "middle", e.fillStyle = m.color, e.fillText("▲ top = Base value · ▼▸ lower-right = Variations · ◂▼ lower-left = Commitment % · hover stars for details", z / 2, B - 14), x(e, z, B, n, .012);
|
|
778
778
|
}, !0), g.length === 0 ? /* @__PURE__ */ s(I, {
|
|
779
779
|
width: z,
|
|
780
|
-
height:
|
|
780
|
+
height: B,
|
|
781
781
|
"data-testid": t
|
|
782
782
|
}) : /* @__PURE__ */ c("div", {
|
|
783
783
|
"data-testid": t,
|
|
784
784
|
style: {
|
|
785
785
|
position: "relative",
|
|
786
786
|
width: z,
|
|
787
|
-
height:
|
|
787
|
+
height: B
|
|
788
788
|
},
|
|
789
789
|
children: [/* @__PURE__ */ s("canvas", {
|
|
790
790
|
ref: n,
|
|
@@ -792,70 +792,70 @@ function Ce({ items: e = [], "data-testid": t }) {
|
|
|
792
792
|
"aria-label": "Contract value breakdown per contractor — multi-KPI constellation chart",
|
|
793
793
|
style: {
|
|
794
794
|
width: z,
|
|
795
|
-
height:
|
|
795
|
+
height: B,
|
|
796
796
|
display: "block"
|
|
797
797
|
}
|
|
798
798
|
}), /* @__PURE__ */ s(C, {
|
|
799
799
|
...l,
|
|
800
800
|
parentW: z,
|
|
801
|
-
parentH:
|
|
801
|
+
parentH: B
|
|
802
802
|
})]
|
|
803
803
|
});
|
|
804
804
|
}
|
|
805
805
|
//#endregion
|
|
806
806
|
//#region src/components/stackedHorizontalBarChart/StackedHorizontalBarChart.tsx
|
|
807
|
-
var
|
|
807
|
+
var Ce = 680, we = 220, Te = 8, Ee = [
|
|
808
808
|
u.blue,
|
|
809
809
|
u.amber,
|
|
810
810
|
u.purple,
|
|
811
811
|
u.green
|
|
812
|
-
],
|
|
812
|
+
], V = {
|
|
813
813
|
left: 8,
|
|
814
814
|
right: 80,
|
|
815
815
|
top: 16,
|
|
816
816
|
bottom: 38
|
|
817
|
-
},
|
|
818
|
-
function
|
|
817
|
+
}, De = 150, H = 18;
|
|
818
|
+
function Oe(e, t, n) {
|
|
819
819
|
if (e.measureText(t).width <= n) return t;
|
|
820
820
|
let r = t;
|
|
821
821
|
for (; r.length > 0 && e.measureText(r + "…").width > n;) r = r.slice(0, -1);
|
|
822
822
|
return r + "…";
|
|
823
823
|
}
|
|
824
|
-
function
|
|
824
|
+
function ke(e) {
|
|
825
825
|
let t = Math.abs(e), n = e < 0 ? "-" : "";
|
|
826
826
|
return t >= 1e6 ? `${n}£${(t / 1e6).toFixed(1)}M` : t >= 1e3 ? `${n}£${(t / 1e3).toFixed(1)}K` : `${n}£${t.toFixed(0)}`;
|
|
827
827
|
}
|
|
828
|
-
function
|
|
829
|
-
let n = a(null), r = a(/* @__PURE__ */ new Map()), [i, l] = o(!1), { items: d = [], totals: g } = e, _ = d.filter((e) => typeof e == "object" && !!e), v = [..._].sort((e, t) => (t.total ?? 0) - (e.total ?? 0)), b = i ? v : v.slice(0,
|
|
830
|
-
width:
|
|
828
|
+
function Ae({ data: e, "data-testid": t }) {
|
|
829
|
+
let n = a(null), r = a(/* @__PURE__ */ new Map()), [i, l] = o(!1), { items: d = [], totals: g } = e, _ = d.filter((e) => typeof e == "object" && !!e), v = [..._].sort((e, t) => (t.total ?? 0) - (e.total ?? 0)), b = i ? v : v.slice(0, Te), x = b.length, S = Math.max(...v.map((e) => Math.abs(e.total ?? 0)), 1), T = x * H + Math.max(0, x - 1) * 8, D = V.top + V.bottom + T, k = Ce - V.left - De - V.right, A = _.length === 0, { hoveredRef: j, tooltip: P, hitZonesRef: F } = w(n, {
|
|
830
|
+
width: Ce,
|
|
831
831
|
height: D
|
|
832
832
|
});
|
|
833
|
-
return ge(n,
|
|
833
|
+
return ge(n, Ce, D, (e, t) => {
|
|
834
834
|
N(r.current, j.current), F.current = [], b.forEach((n, i) => {
|
|
835
|
-
let a =
|
|
836
|
-
e.font = f.font, e.fillStyle = l > 0 ? a : f.color, e.textAlign = "right", e.textBaseline = "middle", e.fillText(
|
|
835
|
+
let a = Ee[i % Ee.length], o = M(t, i, x, O), s = V.top + i * (H + 8), c = V.left + De, l = r.current.get(n.id) ?? 0, d = Math.max(n.base ?? 0, 0), m = Math.max(n.total ?? 0, 0), g = d / S * k * o, _ = m / S * k * o, v = _ - g;
|
|
836
|
+
e.font = f.font, e.fillStyle = l > 0 ? a : f.color, e.textAlign = "right", e.textBaseline = "middle", e.fillText(Oe(e, n.name ?? "", De - 16), c - 8, s + H / 2), e.fillStyle = h(u.bd, .25), e.beginPath(), e.roundRect(c, s, k, H, 4), e.fill(), g > 0 && (l > 0 && y(e, c + g / 2, s + H / 2, g * .3, a, .1 * l), e.fillStyle = h(a, .5 + l * .15), e.beginPath(), e.roundRect(c, s, g, H, 4), e.fill()), v > 2 && (e.fillStyle = h(a, .22 + l * .08), e.beginPath(), e.roundRect(c + g, s, v, H, [
|
|
837
837
|
0,
|
|
838
838
|
4,
|
|
839
839
|
4,
|
|
840
840
|
0
|
|
841
|
-
]), e.fill(), e.setLineDash([2, 3]), e.strokeStyle = h(a, .55), e.lineWidth = 1, e.beginPath(), e.moveTo(c + g, s + 3), e.lineTo(c + g, s +
|
|
841
|
+
]), e.fill(), e.setLineDash([2, 3]), e.strokeStyle = h(a, .55), e.lineWidth = 1, e.beginPath(), e.moveTo(c + g, s + 3), e.lineTo(c + g, s + H - 3), e.stroke(), e.setLineDash([])), l > 0 && _ > 0 && (e.strokeStyle = h(a, .5 * l), e.lineWidth = 1, e.setLineDash([]), e.beginPath(), e.roundRect(c, s, _, H, 4), e.stroke()), o > .35 && (e.globalAlpha = Math.min(1, (o - .35) / .4), e.font = p.font, e.fillStyle = l > 0 ? a : p.color, e.textAlign = "left", e.textBaseline = "middle", e.fillText(n.totalLabel ?? ke(n.total ?? 0), c + _ + 6, s + H / 2), e.globalAlpha = 1), E(F.current, n.id, c, s, Math.max(_, 1), H, {
|
|
842
842
|
label: n.name,
|
|
843
|
-
value: `${n.totalLabel ??
|
|
844
|
-
sublabel: `Base ${n.baseLabel ??
|
|
843
|
+
value: `${n.totalLabel ?? ke(n.total ?? 0)} total`,
|
|
844
|
+
sublabel: `Base ${n.baseLabel ?? ke(n.base ?? 0)} + Var ${n.variationLabel ?? ke(n.variation ?? 0)} · ${n.percentage ?? 0}% committed`,
|
|
845
845
|
color: a
|
|
846
846
|
});
|
|
847
847
|
});
|
|
848
848
|
let n = D - 14;
|
|
849
|
-
e.textBaseline = "middle", e.font = m.font, e.textAlign = "left", e.fillStyle = h(u.blue, .5), e.beginPath(), e.roundRect(
|
|
849
|
+
e.textBaseline = "middle", e.font = m.font, e.textAlign = "left", e.fillStyle = h(u.blue, .5), e.beginPath(), e.roundRect(V.left + De, n - 3, 14, 6, 2), e.fill(), e.fillStyle = m.color, e.fillText("base value", V.left + De + 18, n), e.fillStyle = h(u.blue, .22), e.beginPath(), e.roundRect(V.left + De + 94, n - 3, 14, 6, 2), e.fill(), e.setLineDash([2, 3]), e.strokeStyle = h(u.blue, .5), e.lineWidth = .5, e.beginPath(), e.moveTo(V.left + De + 101, n - 3), e.lineTo(V.left + De + 101, n + 3), e.stroke(), e.setLineDash([]), e.fillStyle = m.color, e.fillText("approved variations", V.left + De + 112, n), e.font = m.font, e.textAlign = "right", e.fillStyle = m.color, e.fillText(`Portfolio: ${ke(g?.total ?? 0)}`, Ce - 8, n);
|
|
850
850
|
}, !0, { easing: O }), A ? /* @__PURE__ */ s(I, {
|
|
851
|
-
width:
|
|
852
|
-
height:
|
|
851
|
+
width: Ce,
|
|
852
|
+
height: we,
|
|
853
853
|
message: "No contract data available",
|
|
854
854
|
"data-testid": t
|
|
855
855
|
}) : /* @__PURE__ */ c("div", {
|
|
856
856
|
"data-testid": t,
|
|
857
857
|
style: {
|
|
858
|
-
width:
|
|
858
|
+
width: Ce,
|
|
859
859
|
transition: "all 0.25s ease"
|
|
860
860
|
},
|
|
861
861
|
children: [/* @__PURE__ */ c("div", {
|
|
@@ -865,17 +865,17 @@ function je({ data: e, "data-testid": t }) {
|
|
|
865
865
|
role: "img",
|
|
866
866
|
"aria-label": "Total contract value per contractor — horizontal bar chart",
|
|
867
867
|
style: {
|
|
868
|
-
width:
|
|
868
|
+
width: Ce,
|
|
869
869
|
height: D,
|
|
870
870
|
display: "block",
|
|
871
871
|
borderRadius: 8
|
|
872
872
|
}
|
|
873
873
|
}), /* @__PURE__ */ s(C, {
|
|
874
874
|
...P,
|
|
875
|
-
parentW:
|
|
875
|
+
parentW: Ce,
|
|
876
876
|
parentH: D
|
|
877
877
|
})]
|
|
878
|
-
}), _.length >
|
|
878
|
+
}), _.length > Te && /* @__PURE__ */ s("div", {
|
|
879
879
|
style: { marginTop: 8 },
|
|
880
880
|
children: /* @__PURE__ */ s(ae, {
|
|
881
881
|
expanded: i,
|
|
@@ -886,94 +886,98 @@ function je({ data: e, "data-testid": t }) {
|
|
|
886
886
|
}
|
|
887
887
|
//#endregion
|
|
888
888
|
//#region src/components/rankedCardLeaderboard/RankedCardLeaderboard.tsx
|
|
889
|
-
var
|
|
889
|
+
var je = 780, U = 240, Me = 12, Ne = 10, Pe = 5, Fe = (je - 2 * Me - (Pe - 1) * Ne) / Pe, Ie = [
|
|
890
890
|
"Highest exposure",
|
|
891
891
|
"Elevated risk",
|
|
892
892
|
"Moderate exposure",
|
|
893
893
|
"Moderate exposure",
|
|
894
894
|
"Low exposure"
|
|
895
895
|
];
|
|
896
|
-
function
|
|
897
|
-
let r = a(null), o = a(0), l = a(/* @__PURE__ */ new Map()), { hoveredRef:
|
|
898
|
-
width:
|
|
899
|
-
height:
|
|
900
|
-
})
|
|
896
|
+
function Le({ items: e = [], "data-testid": t }) {
|
|
897
|
+
let r = a(null), o = a(0), l = a(/* @__PURE__ */ new Map()), m = [...i(() => e.filter((e) => typeof e == "object" && !!e), [e])].sort((e, t) => (t.count ?? 0) - (e.count ?? 0)).slice(0, 5), g = m.reduce((e, t) => e + (t.count ?? 0), 0), _ = Math.min(Pe, m.length), b = _ > 0 ? 2 * Me + _ * Fe + (_ - 1) * Ne : je, { hoveredRef: S, tooltip: T, hitZonesRef: D } = w(r, {
|
|
898
|
+
width: b,
|
|
899
|
+
height: U
|
|
900
|
+
});
|
|
901
901
|
return n(() => {
|
|
902
902
|
let e = r.current;
|
|
903
903
|
if (!e) return;
|
|
904
|
-
let t = v(e,
|
|
904
|
+
let t = v(e, b, U);
|
|
905
905
|
o.current = 0;
|
|
906
|
-
let n =
|
|
906
|
+
let n = Fe, i = U * .84, a = U * .08, s = Me, c, _ = () => {
|
|
907
907
|
o.current++;
|
|
908
908
|
let e = o.current;
|
|
909
|
-
t.clearRect(0, 0,
|
|
910
|
-
let n = t ===
|
|
909
|
+
t.clearRect(0, 0, b, U), t.letterSpacing = f.letterSpacing, D.current = [], l.current.forEach((e, t) => {
|
|
910
|
+
let n = t === S.current ? 1 : 0, r = e + (n - e) * .12;
|
|
911
911
|
Math.abs(r - n) < .005 ? n === 0 ? l.current.delete(t) : l.current.set(t, 1) : l.current.set(t, r);
|
|
912
|
-
}),
|
|
913
|
-
let c = o === 0, m = o === 0 ? u.red : o === 1 ? u.amber : d[o % d.length],
|
|
914
|
-
t.fillStyle = h(m, .08 + v * .07), t.beginPath(), t.roundRect(x, a,
|
|
915
|
-
let
|
|
916
|
-
k.addColorStop(0, h(m, .5 + v * .2)), k.addColorStop(1, h(m, .2 + v * .1)), t.beginPath(), t.arc(
|
|
912
|
+
}), S.current && !l.current.has(S.current) && l.current.set(S.current, 0), m.forEach((r, o) => {
|
|
913
|
+
let c = o === 0, m = o === 0 ? u.red : o === 1 ? u.amber : d[o % d.length], _ = s + o * (n + Ne), v = l.current.get(r.id) ?? 0, b = v * 8, x = _ - b / 2, S = n + b, C = c ? j(e, .04, 3e-4) * .06 + .06 : 0;
|
|
914
|
+
t.fillStyle = h(m, .08 + v * .07), t.beginPath(), t.roundRect(x, a, S, i, 6), t.fill(), t.strokeStyle = h(m, .2 + v * .4 + C), t.lineWidth = c ? 1.5 : 1, t.stroke(), (v > .01 || c) && y(t, x + S / 2, a + i / 2, S * .55, m, C + v * .14), t.font = p.font, t.textAlign = "left", t.textBaseline = "top", t.fillStyle = h(m, .5 + v * .35), t.fillText(`#${o + 1}`, x + 7, a + 6);
|
|
915
|
+
let w = Math.min(n * .28, i * .32, 72), T = x + S / 2, O = a + i * .38, k = t.createRadialGradient(T, O - w * .2, 0, T, O, w);
|
|
916
|
+
k.addColorStop(0, h(m, .5 + v * .2)), k.addColorStop(1, h(m, .2 + v * .1)), t.beginPath(), t.arc(T, O, w, 0, Math.PI * 2), t.fillStyle = k, t.fill(), t.strokeStyle = h(m, .4 + v * .3), t.lineWidth = 1, t.stroke(), t.font = p.font, t.textAlign = "center", t.textBaseline = "middle", t.fillStyle = h(u.t1, .9), t.fillText(r.abbreviation ?? r.name?.slice(0, 6) ?? "", T, O);
|
|
917
917
|
let A = r.label ?? String(r.count ?? 0);
|
|
918
|
-
t.font = p.font, t.textBaseline = "alphabetic", t.fillStyle = h(m, .9 + v * .1), t.fillText(A,
|
|
919
|
-
let M = Math.round((r.count ?? 0) / (
|
|
920
|
-
E(
|
|
918
|
+
t.font = p.font, t.textBaseline = "alphabetic", t.fillStyle = h(m, .9 + v * .1), t.fillText(A, T, a + i * .76), r.label || (t.font = f.font, t.fillStyle = f.color, t.fillText("open EWs", T, a + i * .88));
|
|
919
|
+
let M = Math.round((r.count ?? 0) / (g || 1) * 100), N = Ie[o] ?? "Low exposure";
|
|
920
|
+
E(D.current, r.id, _, a, n, i, {
|
|
921
921
|
label: r.name,
|
|
922
922
|
value: `${A ?? 0} open · ${M}% of total`,
|
|
923
923
|
sublabel: `Rank #${o + 1} · ${N}`,
|
|
924
924
|
color: m
|
|
925
925
|
});
|
|
926
|
-
}), x(t,
|
|
926
|
+
}), x(t, b, U, e, .015), c = requestAnimationFrame(_);
|
|
927
927
|
};
|
|
928
|
-
return
|
|
929
|
-
}, [
|
|
930
|
-
|
|
931
|
-
|
|
928
|
+
return _(), () => cancelAnimationFrame(c);
|
|
929
|
+
}, [
|
|
930
|
+
m,
|
|
931
|
+
g,
|
|
932
|
+
b
|
|
933
|
+
]), m.length === 0 ? /* @__PURE__ */ s(I, {
|
|
934
|
+
width: b,
|
|
935
|
+
height: U,
|
|
932
936
|
"data-testid": t
|
|
933
937
|
}) : /* @__PURE__ */ c("div", {
|
|
934
938
|
"data-testid": t,
|
|
935
939
|
style: {
|
|
936
940
|
position: "relative",
|
|
937
|
-
width:
|
|
938
|
-
height:
|
|
941
|
+
width: b,
|
|
942
|
+
height: U
|
|
939
943
|
},
|
|
940
944
|
children: [/* @__PURE__ */ s("canvas", {
|
|
941
945
|
ref: r,
|
|
942
946
|
role: "img",
|
|
943
947
|
"aria-label": "Contractor rank — open EW count per contractor",
|
|
944
948
|
style: {
|
|
945
|
-
width:
|
|
946
|
-
height:
|
|
949
|
+
width: b,
|
|
950
|
+
height: U,
|
|
947
951
|
display: "block",
|
|
948
952
|
borderRadius: 8
|
|
949
953
|
}
|
|
950
954
|
}), /* @__PURE__ */ s(C, {
|
|
951
|
-
...
|
|
952
|
-
parentW:
|
|
953
|
-
parentH:
|
|
955
|
+
...T,
|
|
956
|
+
parentW: b,
|
|
957
|
+
parentH: U
|
|
954
958
|
})]
|
|
955
959
|
});
|
|
956
960
|
}
|
|
957
961
|
//#endregion
|
|
958
962
|
//#region src/components/dotMatrixChart/DotMatrixChart.tsx
|
|
959
|
-
var
|
|
960
|
-
function
|
|
963
|
+
var W = 680, G = 260;
|
|
964
|
+
function Re({ items: e = [], "data-testid": t }) {
|
|
961
965
|
let r = a(null), o = a(0), l = a(/* @__PURE__ */ new Map()), { hoveredRef: d, tooltip: p, hitZonesRef: m } = w(r, {
|
|
962
|
-
width:
|
|
963
|
-
height:
|
|
966
|
+
width: W,
|
|
967
|
+
height: G
|
|
964
968
|
}), g = i(() => e.filter((e) => typeof e == "object" && !!e), [e]);
|
|
965
969
|
return n(() => {
|
|
966
970
|
let e = r.current;
|
|
967
971
|
if (!e) return;
|
|
968
|
-
let t = v(e,
|
|
972
|
+
let t = v(e, W, G);
|
|
969
973
|
o.current = 0;
|
|
970
|
-
let n = g.length, i = Math.max(...g.map((e) => e.count), 1), a = i, s =
|
|
974
|
+
let n = g.length, i = Math.max(...g.map((e) => e.count), 1), a = i, s = W * .05, c = G * .1, p = W * .9 / n, _ = G * .7 / a, S = g.reduce((e, t) => e + t.count, 0), C, w = () => {
|
|
971
975
|
o.current++;
|
|
972
976
|
let e = o.current;
|
|
973
|
-
t.clearRect(0, 0,
|
|
977
|
+
t.clearRect(0, 0, W, G), m.current = [], l.current.forEach((e, t) => {
|
|
974
978
|
let n = t === d.current ? 1 : 0, r = e + (n - e) * .12;
|
|
975
979
|
Math.abs(r - n) < .005 ? n === 0 ? l.current.delete(t) : l.current.set(t, 1) : l.current.set(t, r);
|
|
976
|
-
}), d.current && !l.current.has(d.current) && l.current.set(d.current, 0), b(t,
|
|
980
|
+
}), d.current && !l.current.has(d.current) && l.current.set(d.current, 0), b(t, W, G, e, 40, h(u.blue, .04)), g.forEach((n, r) => {
|
|
977
981
|
let o = n.count === i, d = u.blue, g = l.current.get(`${n.category}-col`) ?? 0;
|
|
978
982
|
for (let u = 0; u < a; u++) {
|
|
979
983
|
let a = s + r * p + p / 2, f = c + u * _ + _ / 2, v = Math.min(p, _) * .38;
|
|
@@ -991,40 +995,40 @@ function Le({ items: e = [], "data-testid": t }) {
|
|
|
991
995
|
}
|
|
992
996
|
let v = c + a * _ + 16;
|
|
993
997
|
t.font = f.font, t.textAlign = "center", t.textBaseline = "alphabetic", t.fillStyle = o ? u.blue : h(u.t2, .65), t.fillText(n.category, s + r * p + p / 2, v);
|
|
994
|
-
}), x(t,
|
|
998
|
+
}), x(t, W, G, e, .015), C = requestAnimationFrame(w);
|
|
995
999
|
};
|
|
996
1000
|
return w(), () => cancelAnimationFrame(C);
|
|
997
1001
|
}, [g]), g.length === 0 ? /* @__PURE__ */ s(I, {
|
|
998
|
-
width:
|
|
999
|
-
height:
|
|
1002
|
+
width: W,
|
|
1003
|
+
height: G,
|
|
1000
1004
|
"data-testid": t
|
|
1001
1005
|
}) : /* @__PURE__ */ c("div", {
|
|
1002
1006
|
"data-testid": t,
|
|
1003
1007
|
style: {
|
|
1004
1008
|
position: "relative",
|
|
1005
|
-
width:
|
|
1006
|
-
height:
|
|
1009
|
+
width: W,
|
|
1010
|
+
height: G
|
|
1007
1011
|
},
|
|
1008
1012
|
children: [/* @__PURE__ */ s("canvas", {
|
|
1009
1013
|
ref: r,
|
|
1010
1014
|
role: "img",
|
|
1011
1015
|
"aria-label": "Early Warning count by category — breathing dot grid",
|
|
1012
1016
|
style: {
|
|
1013
|
-
width:
|
|
1014
|
-
height:
|
|
1017
|
+
width: W,
|
|
1018
|
+
height: G,
|
|
1015
1019
|
display: "block",
|
|
1016
1020
|
borderRadius: 8
|
|
1017
1021
|
}
|
|
1018
1022
|
}), /* @__PURE__ */ s(C, {
|
|
1019
1023
|
...p,
|
|
1020
|
-
parentW:
|
|
1021
|
-
parentH:
|
|
1024
|
+
parentW: W,
|
|
1025
|
+
parentH: G
|
|
1022
1026
|
})]
|
|
1023
1027
|
});
|
|
1024
1028
|
}
|
|
1025
1029
|
//#endregion
|
|
1026
1030
|
//#region src/components/lineChart/LineChart.tsx
|
|
1027
|
-
function
|
|
1031
|
+
function ze({ rows: e = [], className: t, colors: n }) {
|
|
1028
1032
|
return /* @__PURE__ */ s(ee, {
|
|
1029
1033
|
rows: e,
|
|
1030
1034
|
variant: "line",
|
|
@@ -1034,7 +1038,7 @@ function Re({ rows: e = [], className: t, colors: n }) {
|
|
|
1034
1038
|
}
|
|
1035
1039
|
//#endregion
|
|
1036
1040
|
//#region src/components/constants.ts
|
|
1037
|
-
var
|
|
1041
|
+
var Be = [
|
|
1038
1042
|
"#4C93D9",
|
|
1039
1043
|
"#5DA537",
|
|
1040
1044
|
"#F3862C",
|
|
@@ -1042,7 +1046,7 @@ var ze = [
|
|
|
1042
1046
|
"#A0B724",
|
|
1043
1047
|
"#EEBF3B",
|
|
1044
1048
|
"#3C45D1"
|
|
1045
|
-
],
|
|
1049
|
+
], Ve = {
|
|
1046
1050
|
nodes: [
|
|
1047
1051
|
{
|
|
1048
1052
|
id: "supplier-x",
|
|
@@ -1085,8 +1089,8 @@ var ze = [
|
|
|
1085
1089
|
};
|
|
1086
1090
|
//#endregion
|
|
1087
1091
|
//#region src/components/miniBars/MiniBars.tsx
|
|
1088
|
-
function
|
|
1089
|
-
let r = n?.slices ??
|
|
1092
|
+
function He({ rows: e = [], className: t, colors: n }) {
|
|
1093
|
+
let r = n?.slices ?? Be;
|
|
1090
1094
|
return /* @__PURE__ */ s("div", {
|
|
1091
1095
|
className: ["d3-mini-bars", t].filter(Boolean).join(" "),
|
|
1092
1096
|
children: e.map(([e, t, n], i) => /* @__PURE__ */ c("div", {
|
|
@@ -1112,7 +1116,7 @@ function Ve({ rows: e = [], className: t, colors: n }) {
|
|
|
1112
1116
|
width: Math.max(0, Math.min(100, t)),
|
|
1113
1117
|
height: "12",
|
|
1114
1118
|
rx: "6",
|
|
1115
|
-
className: `d3-mini-fill tone-${i %
|
|
1119
|
+
className: `d3-mini-fill tone-${i % Be.length}`,
|
|
1116
1120
|
fill: r[i % r.length]
|
|
1117
1121
|
})]
|
|
1118
1122
|
})
|
|
@@ -1124,7 +1128,7 @@ function Ve({ rows: e = [], className: t, colors: n }) {
|
|
|
1124
1128
|
}
|
|
1125
1129
|
//#endregion
|
|
1126
1130
|
//#region src/utils/numberFormat.ts
|
|
1127
|
-
var
|
|
1131
|
+
var Ue = [
|
|
1128
1132
|
{
|
|
1129
1133
|
value: 0xe8d4a51000,
|
|
1130
1134
|
suffix: "T",
|
|
@@ -1146,16 +1150,16 @@ var He = [
|
|
|
1146
1150
|
divisor: 1e3
|
|
1147
1151
|
}
|
|
1148
1152
|
];
|
|
1149
|
-
function
|
|
1153
|
+
function We(e, t = 1) {
|
|
1150
1154
|
let n = Math.abs(e), r = e < 0 ? "-" : "";
|
|
1151
|
-
for (let e of
|
|
1155
|
+
for (let e of Ue) if (n >= e.value) return `${r}${(n / e.divisor).toFixed(t)}${e.suffix}`;
|
|
1152
1156
|
return `${r}${n.toFixed(0)}`;
|
|
1153
1157
|
}
|
|
1154
1158
|
//#endregion
|
|
1155
1159
|
//#region src/components/radialFanTreeChart/RadialFanTreeChart.tsx
|
|
1156
|
-
var
|
|
1157
|
-
function
|
|
1158
|
-
let m = a(null), g = a(/* @__PURE__ */ new Map()), _ = a(0), b = i(() => r.filter((e) => typeof e == "object" && !!e), [r]), x = i(() => Math.max(
|
|
1160
|
+
var Ge = 800, Ke = 320, qe = 60, Je = 28;
|
|
1161
|
+
function Ye({ total: e = 0, totalLabel: t, items: r = [], width: o = Ge, "data-testid": l }) {
|
|
1162
|
+
let m = a(null), g = a(/* @__PURE__ */ new Map()), _ = a(0), b = i(() => r.filter((e) => typeof e == "object" && !!e), [r]), x = i(() => Math.max(Ke, qe + Math.max(0, b.length - 1) * Je), [b.length]), { hoveredRef: S, tooltip: E, hitZonesRef: O } = w(m, {
|
|
1159
1163
|
width: o,
|
|
1160
1164
|
height: x
|
|
1161
1165
|
});
|
|
@@ -1184,21 +1188,21 @@ function Je({ total: e = 0, totalLabel: t, items: r = [], width: o = We, "data-t
|
|
|
1184
1188
|
if (r.strokeStyle = h(o, v > 0 ? .8 : .45), r.lineWidth = x * (v > 0 ? 1.3 : 1), r.stroke(), m > .85) {
|
|
1185
1189
|
let n = Math.min(1, (m - .85) / .15), i = 4 + (t.count ?? 0) / s * 12;
|
|
1186
1190
|
y(r, _.x, _.y, i * 2.5, o, (.25 + v * .2) * n), r.beginPath(), r.arc(_.x, _.y, i * n, 0, Math.PI * 2), r.fillStyle = h(o, (.7 + v * .2) * n), r.fill();
|
|
1187
|
-
let a =
|
|
1191
|
+
let a = We(t.count ?? 0);
|
|
1188
1192
|
T(O.current, t.id, _.x, _.y, i + 8, {
|
|
1189
1193
|
label: t.name,
|
|
1190
1194
|
value: `${a} NCEs raised`,
|
|
1191
1195
|
sublabel: `${Math.round((t.count ?? 0) / (e || 1) * 100)}% of all NCEs`,
|
|
1192
1196
|
color: o
|
|
1193
1197
|
}), r.globalAlpha = n, r.font = f.font, r.textAlign = "left";
|
|
1194
|
-
let c = t.abbreviation ?? t.name?.slice(0, 6) ?? "", l = ` ${
|
|
1198
|
+
let c = t.abbreviation ?? t.name?.slice(0, 6) ?? "", l = ` ${We(t.count ?? 0)}`, d = _.x + i + 6, g = _.y + 4;
|
|
1195
1199
|
r.fillStyle = v > 0 ? o : h(u.t2, .85), r.fillText(c, d, g);
|
|
1196
1200
|
let b = r.measureText(c).width;
|
|
1197
1201
|
r.font = p.font, r.fillStyle = v > 0 ? o : u.t1, r.fillText(l, d + b, g), r.globalAlpha = 1;
|
|
1198
1202
|
}
|
|
1199
1203
|
}), r.beginPath(), r.arc(88, i, 32 * c, 0, Math.PI * 2), r.fillStyle = u.bgL, r.fill(), r.strokeStyle = h(u.blue, .6 * c), r.lineWidth = 2, r.stroke(), c > .4) {
|
|
1200
1204
|
r.globalAlpha = Math.min(1, (c - .4) / .4), r.font = "500 24px 'Satoshi Variable', 'DM Sans', sans-serif", r.fillStyle = u.t1, r.textAlign = "center";
|
|
1201
|
-
let n = t ??
|
|
1205
|
+
let n = t ?? We(e, 0);
|
|
1202
1206
|
r.fillText(n, 88, i + 2), r.font = f.font, r.fillStyle = f.color, r.fillText("NCEs", 88, i + 22), r.globalAlpha = 1;
|
|
1203
1207
|
}
|
|
1204
1208
|
C = requestAnimationFrame(w);
|
|
@@ -1212,7 +1216,7 @@ function Je({ total: e = 0, totalLabel: t, items: r = [], width: o = We, "data-t
|
|
|
1212
1216
|
o
|
|
1213
1217
|
]), b.length === 0 ? /* @__PURE__ */ s(I, {
|
|
1214
1218
|
width: o,
|
|
1215
|
-
height:
|
|
1219
|
+
height: Ke,
|
|
1216
1220
|
"data-testid": l
|
|
1217
1221
|
}) : /* @__PURE__ */ c("div", {
|
|
1218
1222
|
"data-testid": l,
|
|
@@ -1239,21 +1243,21 @@ function Je({ total: e = 0, totalLabel: t, items: r = [], width: o = We, "data-t
|
|
|
1239
1243
|
}
|
|
1240
1244
|
//#endregion
|
|
1241
1245
|
//#region src/components/pieChart/PieChart.tsx
|
|
1242
|
-
var
|
|
1243
|
-
function
|
|
1246
|
+
var Xe = 192, Ze = Xe, Qe = Xe + 80;
|
|
1247
|
+
function $e({ rows: e = [], variant: t, className: r, colors: i }) {
|
|
1244
1248
|
let o = a(null), f = a(/* @__PURE__ */ new Map()), p = a(0), m = i?.slices ?? d, { hoveredRef: g, tooltip: b, hitZonesRef: x } = w(o, {
|
|
1245
|
-
width:
|
|
1246
|
-
height:
|
|
1249
|
+
width: Ze,
|
|
1250
|
+
height: Qe
|
|
1247
1251
|
});
|
|
1248
1252
|
return n(() => {
|
|
1249
1253
|
let n = o.current;
|
|
1250
1254
|
if (!n) return;
|
|
1251
|
-
let r = v(n,
|
|
1255
|
+
let r = v(n, Ze, Qe);
|
|
1252
1256
|
p.current = 0;
|
|
1253
|
-
let i =
|
|
1257
|
+
let i = Ze / 2, a = Xe / 2, s = Xe * .4, c = t === "donut" ? Xe * .21 : 0, l = e.reduce((e, t) => e + (t.pricing ?? 0), 0) || 1, d, b = () => {
|
|
1254
1258
|
p.current++;
|
|
1255
1259
|
let n = p.current;
|
|
1256
|
-
r.clearRect(0, 0,
|
|
1260
|
+
r.clearRect(0, 0, Ze, Qe);
|
|
1257
1261
|
let o = 1 - (1 - Math.min(n / 48, 1)) ** 3;
|
|
1258
1262
|
N(f.current, g.current), x.current = [];
|
|
1259
1263
|
let v = -Math.PI / 2;
|
|
@@ -1267,10 +1271,10 @@ function Qe({ rows: e = [], variant: t, className: r, colors: i }) {
|
|
|
1267
1271
|
let O = j(n, .03, 3e-4), k = s + b * 6 + (b > 0 ? O * 2 : 0);
|
|
1268
1272
|
r.beginPath(), r.moveTo(i + Math.cos(v) * c, a + Math.sin(v) * c), r.arc(i, a, k, v, g), c > 0 ? r.arc(i, a, c, g, v, !0) : r.lineTo(i, a), r.closePath(), r.fillStyle = h(_, .7 + b * .2), r.fill(), r.strokeStyle = h(u.bg, .8), r.lineWidth = 1.5, r.stroke(), v = g;
|
|
1269
1273
|
}), t === "donut" && e.length > 0 && y(r, i, a, c * .8, u.blue, .06);
|
|
1270
|
-
let S =
|
|
1274
|
+
let S = Xe + 12;
|
|
1271
1275
|
e.forEach((e, t) => {
|
|
1272
1276
|
let n = m[t % m.length], i = (e.pricing ?? 0) / l, a = f.current.get(e.id ?? `sl-${t}`) ?? 0, o = S + t * 18;
|
|
1273
|
-
r.beginPath(), r.arc(8, o, 4, 0, Math.PI * 2), r.fillStyle = h(n, .8 + a * .2), r.fill(), r.font = "9px 'JetBrains Mono', monospace", r.fillStyle = h(u.t2, .7 + a * .2), r.textAlign = "left", r.fillText(e.vendor, 18, o + 3.5), r.font = "bold 9px 'JetBrains Mono', monospace", r.fillStyle = _(u.t3, n, a), r.textAlign = "right", r.fillText(`${e.pricing ?? 0} (${Math.round(i * 100)}%)`,
|
|
1277
|
+
r.beginPath(), r.arc(8, o, 4, 0, Math.PI * 2), r.fillStyle = h(n, .8 + a * .2), r.fill(), r.font = "9px 'JetBrains Mono', monospace", r.fillStyle = h(u.t2, .7 + a * .2), r.textAlign = "left", r.fillText(e.vendor, 18, o + 3.5), r.font = "bold 9px 'JetBrains Mono', monospace", r.fillStyle = _(u.t3, n, a), r.textAlign = "right", r.fillText(`${e.pricing ?? 0} (${Math.round(i * 100)}%)`, Ze - 4, o + 3.5);
|
|
1274
1278
|
}), d = requestAnimationFrame(b);
|
|
1275
1279
|
};
|
|
1276
1280
|
return b(), () => cancelAnimationFrame(d);
|
|
@@ -1284,30 +1288,30 @@ function Qe({ rows: e = [], variant: t, className: r, colors: i }) {
|
|
|
1284
1288
|
children: /* @__PURE__ */ c("div", {
|
|
1285
1289
|
style: {
|
|
1286
1290
|
position: "relative",
|
|
1287
|
-
width:
|
|
1288
|
-
height:
|
|
1291
|
+
width: Ze,
|
|
1292
|
+
height: Qe
|
|
1289
1293
|
},
|
|
1290
1294
|
children: [/* @__PURE__ */ s("canvas", {
|
|
1291
1295
|
ref: o,
|
|
1292
1296
|
role: "img",
|
|
1293
1297
|
"aria-label": `${t} chart`,
|
|
1294
1298
|
style: {
|
|
1295
|
-
width:
|
|
1296
|
-
height:
|
|
1299
|
+
width: Ze,
|
|
1300
|
+
height: Qe,
|
|
1297
1301
|
display: "block",
|
|
1298
1302
|
borderRadius: 8
|
|
1299
1303
|
}
|
|
1300
1304
|
}), /* @__PURE__ */ s(C, {
|
|
1301
1305
|
...b,
|
|
1302
|
-
parentW:
|
|
1303
|
-
parentH:
|
|
1306
|
+
parentW: Ze,
|
|
1307
|
+
parentH: Qe
|
|
1304
1308
|
})]
|
|
1305
1309
|
})
|
|
1306
1310
|
});
|
|
1307
1311
|
}
|
|
1308
1312
|
//#endregion
|
|
1309
1313
|
//#region src/components/sankey/SankeySvg.tsx
|
|
1310
|
-
function
|
|
1314
|
+
function et(e, t, n, r) {
|
|
1311
1315
|
let i = new Set(t.map((e) => e.source)), a = new Set(t.map((e) => e.target)), o = /* @__PURE__ */ new Map(), s = [];
|
|
1312
1316
|
for (e.forEach((e) => {
|
|
1313
1317
|
i.has(e.id) && !a.has(e.id) && s.push({
|
|
@@ -1352,8 +1356,8 @@ function $e(e, t, n, r) {
|
|
|
1352
1356
|
});
|
|
1353
1357
|
}), f;
|
|
1354
1358
|
}
|
|
1355
|
-
function
|
|
1356
|
-
let _ = a(null), b = a(/* @__PURE__ */ new Map()), S = a(0), D = a([]), O = g?.nodes ?? d, k = g?.links ?? u.bd, A = g?.activeLinks ?? u.blue, M = g?.activeNodes ?? u.blue, P = i(() =>
|
|
1359
|
+
function tt({ nodes: e, links: t, width: r = 960, height: o = 280, ariaLabel: f, selectedEntity: p, className: m, colors: g }) {
|
|
1360
|
+
let _ = a(null), b = a(/* @__PURE__ */ new Map()), S = a(0), D = a([]), O = g?.nodes ?? d, k = g?.links ?? u.bd, A = g?.activeLinks ?? u.blue, M = g?.activeNodes ?? u.blue, P = i(() => et(e, t, r, o), [
|
|
1357
1361
|
e,
|
|
1358
1362
|
t,
|
|
1359
1363
|
r,
|
|
@@ -1453,7 +1457,7 @@ function et({ nodes: e, links: t, width: r = 960, height: o = 280, ariaLabel: f,
|
|
|
1453
1457
|
}
|
|
1454
1458
|
//#endregion
|
|
1455
1459
|
//#region src/canvas/CausalFlowCanvas.tsx
|
|
1456
|
-
var
|
|
1460
|
+
var nt = [
|
|
1457
1461
|
{
|
|
1458
1462
|
x: .13,
|
|
1459
1463
|
y: .48
|
|
@@ -1486,7 +1490,7 @@ var tt = [
|
|
|
1486
1490
|
x: .92,
|
|
1487
1491
|
y: .22
|
|
1488
1492
|
}
|
|
1489
|
-
],
|
|
1493
|
+
], rt = [
|
|
1490
1494
|
u.blue,
|
|
1491
1495
|
u.orange,
|
|
1492
1496
|
u.red,
|
|
@@ -1494,7 +1498,7 @@ var tt = [
|
|
|
1494
1498
|
u.green,
|
|
1495
1499
|
u.amber,
|
|
1496
1500
|
u.t2
|
|
1497
|
-
],
|
|
1501
|
+
], it = [
|
|
1498
1502
|
26,
|
|
1499
1503
|
24,
|
|
1500
1504
|
24,
|
|
@@ -1504,21 +1508,21 @@ var tt = [
|
|
|
1504
1508
|
22,
|
|
1505
1509
|
22
|
|
1506
1510
|
];
|
|
1507
|
-
function
|
|
1511
|
+
function at(e, t) {
|
|
1508
1512
|
let n = 1 - t;
|
|
1509
1513
|
return {
|
|
1510
1514
|
x: n * n * n * e.p0.x + 3 * n * n * t * e.p1.x + 3 * n * t * t * e.p2.x + t * t * t * e.p3.x,
|
|
1511
1515
|
y: n * n * n * e.p0.y + 3 * n * n * t * e.p1.y + 3 * n * t * t * e.p2.y + t * t * t * e.p3.y
|
|
1512
1516
|
};
|
|
1513
1517
|
}
|
|
1514
|
-
function
|
|
1518
|
+
function ot(e, t) {
|
|
1515
1519
|
let n = 1 - t, r = 3 * n * n * (e.p1.x - e.p0.x) + 6 * n * t * (e.p2.x - e.p1.x) + 3 * t * t * (e.p3.x - e.p2.x), i = 3 * n * n * (e.p1.y - e.p0.y) + 6 * n * t * (e.p2.y - e.p1.y) + 3 * t * t * (e.p3.y - e.p2.y), a = Math.sqrt(r * r + i * i) || 1;
|
|
1516
1520
|
return {
|
|
1517
1521
|
x: -i / a,
|
|
1518
1522
|
y: r / a
|
|
1519
1523
|
};
|
|
1520
1524
|
}
|
|
1521
|
-
function
|
|
1525
|
+
function st(e, t) {
|
|
1522
1526
|
let n = t.x - e.x, r = t.y - e.y;
|
|
1523
1527
|
return {
|
|
1524
1528
|
p0: {
|
|
@@ -1539,7 +1543,7 @@ function ot(e, t) {
|
|
|
1539
1543
|
}
|
|
1540
1544
|
};
|
|
1541
1545
|
}
|
|
1542
|
-
function
|
|
1546
|
+
function ct({ nodes: e, links: t, width: r = 960, height: o = 280, selectedEntity: l }) {
|
|
1543
1547
|
let d = a(null), f = a(0), p = a([]), { hoveredRef: m, tooltip: g, hitZonesRef: S } = w(d, {
|
|
1544
1548
|
width: r,
|
|
1545
1549
|
height: o
|
|
@@ -1547,15 +1551,15 @@ function st({ nodes: e, links: t, width: r = 960, height: o = 280, selectedEntit
|
|
|
1547
1551
|
let t = /* @__PURE__ */ new Map();
|
|
1548
1552
|
return e.forEach((e, n) => t.set(e.id, n)), t;
|
|
1549
1553
|
}, [e]), O = i(() => t.length > 0 ? Math.max(...t.map((e) => e.value)) : 100, [t]), k = (e) => O > 1 ? e / 100 : e, A = i(() => e.map((e, t) => {
|
|
1550
|
-
let n =
|
|
1554
|
+
let n = nt[t % nt.length];
|
|
1551
1555
|
return {
|
|
1552
1556
|
id: e.id,
|
|
1553
1557
|
label: e.name,
|
|
1554
1558
|
sub: e.valueLabel ?? "",
|
|
1555
1559
|
x: n.x * r,
|
|
1556
1560
|
y: n.y * o,
|
|
1557
|
-
r:
|
|
1558
|
-
color:
|
|
1561
|
+
r: it[t % it.length],
|
|
1562
|
+
color: rt[t % rt.length]
|
|
1559
1563
|
};
|
|
1560
1564
|
}), [
|
|
1561
1565
|
e,
|
|
@@ -1577,7 +1581,7 @@ function st({ nodes: e, links: t, width: r = 960, height: o = 280, selectedEntit
|
|
|
1577
1581
|
if (t.clearRect(0, 0, r, o), S.current = [], b(t, r, o, e, 50, h(u.blue, .05)), M.forEach((e, n) => {
|
|
1578
1582
|
let r = A[e.fromIdx], i = A[e.toIdx];
|
|
1579
1583
|
if (!r || !i) return;
|
|
1580
|
-
let a = !!l && (r.id === l || i.id === l), o = _(r.color, i.color, .5), s = a ? .18 : .05, c = a ? .25 : .1, d =
|
|
1584
|
+
let a = !!l && (r.id === l || i.id === l), o = _(r.color, i.color, .5), s = a ? .18 : .05, c = a ? .25 : .1, d = st(r, i);
|
|
1581
1585
|
t.beginPath(), t.moveTo(d.p0.x, d.p0.y), t.bezierCurveTo(d.p1.x, d.p1.y, d.p2.x, d.p2.y, d.p3.x, d.p3.y), t.strokeStyle = h(o, s), t.lineWidth = 16, t.lineCap = "round", t.stroke(), t.strokeStyle = h(o, c), t.lineWidth = 1.5, t.stroke();
|
|
1582
1586
|
for (let t = 0; t < e.conf * 2.5; t++) Math.random() < .45 && p.current.push({
|
|
1583
1587
|
edgeIdx: n,
|
|
@@ -1586,7 +1590,7 @@ function st({ nodes: e, links: t, width: r = 960, height: o = 280, selectedEntit
|
|
|
1586
1590
|
off: (Math.random() - .5) * 13,
|
|
1587
1591
|
sz: .7 + Math.random() * 2
|
|
1588
1592
|
});
|
|
1589
|
-
let f =
|
|
1593
|
+
let f = at(d, .5), m = `${Math.round(e.conf * 100)}%`;
|
|
1590
1594
|
t.font = "bold 12px 'JetBrains Mono', monospace", t.textBaseline = "middle";
|
|
1591
1595
|
let g = t.measureText(m).width + 14;
|
|
1592
1596
|
t.fillStyle = "rgba(10,16,24,0.88)", t.beginPath(), t.roundRect(f.x - g / 2, f.y - 11, g, 22, 6), t.fill(), t.strokeStyle = h(u.blue, .25), t.lineWidth = 1, t.stroke(), t.fillStyle = h(u.blue, .9), t.textAlign = "center", t.fillText(m, f.x, f.y);
|
|
@@ -1596,7 +1600,7 @@ function st({ nodes: e, links: t, width: r = 960, height: o = 280, selectedEntit
|
|
|
1596
1600
|
if (!n) return !1;
|
|
1597
1601
|
let r = A[n.fromIdx], i = A[n.toIdx];
|
|
1598
1602
|
if (!r || !i) return !1;
|
|
1599
|
-
let a =
|
|
1603
|
+
let a = st(r, i), o = at(a, e.t), s = ot(a, e.t), c = o.x + s.x * e.off, l = o.y + s.y * e.off, u = Math.sin(e.t * Math.PI) * .7, d = _(r.color, i.color, e.t);
|
|
1600
1604
|
return y(t, c, l, e.sz * 3, d, u * .1), t.beginPath(), t.arc(c, l, e.sz, 0, Math.PI * 2), t.fillStyle = h(d, u), t.fill(), !0;
|
|
1601
1605
|
}), p.current.length > 350 && (p.current = p.current.slice(-350)), A.forEach((n, r) => {
|
|
1602
1606
|
let i = l === n.id, a = m.current === `node-${r}`, o = j(e, .03, 3e-4) * .1 + 1, s = n.r * o * (i ? 1.15 : 1);
|
|
@@ -1653,10 +1657,10 @@ function st({ nodes: e, links: t, width: r = 960, height: o = 280, selectedEntit
|
|
|
1653
1657
|
}
|
|
1654
1658
|
//#endregion
|
|
1655
1659
|
//#region src/components/sankey/ProcessSankey.tsx
|
|
1656
|
-
function
|
|
1657
|
-
return /* @__PURE__ */ s(
|
|
1658
|
-
nodes:
|
|
1659
|
-
links:
|
|
1660
|
+
function lt({ selectedEntity: e, colors: t }) {
|
|
1661
|
+
return /* @__PURE__ */ s(ct, {
|
|
1662
|
+
nodes: Ve.nodes,
|
|
1663
|
+
links: Ve.links,
|
|
1660
1664
|
width: 960,
|
|
1661
1665
|
height: 280,
|
|
1662
1666
|
selectedEntity: e
|
|
@@ -1664,7 +1668,7 @@ function ct({ selectedEntity: e, colors: t }) {
|
|
|
1664
1668
|
}
|
|
1665
1669
|
//#endregion
|
|
1666
1670
|
//#region src/components/sankey/RankingSankey.tsx
|
|
1667
|
-
function
|
|
1671
|
+
function ut({ rows: e = [], className: t, colors: n }) {
|
|
1668
1672
|
let { nodes: r, links: a } = i(() => {
|
|
1669
1673
|
let t = e.slice(0, 5);
|
|
1670
1674
|
return {
|
|
@@ -1682,7 +1686,7 @@ function lt({ rows: e = [], className: t, colors: n }) {
|
|
|
1682
1686
|
}))
|
|
1683
1687
|
};
|
|
1684
1688
|
}, [e]);
|
|
1685
|
-
return /* @__PURE__ */ s(
|
|
1689
|
+
return /* @__PURE__ */ s(tt, {
|
|
1686
1690
|
nodes: r,
|
|
1687
1691
|
links: a,
|
|
1688
1692
|
width: 760,
|
|
@@ -1694,20 +1698,20 @@ function lt({ rows: e = [], className: t, colors: n }) {
|
|
|
1694
1698
|
}
|
|
1695
1699
|
//#endregion
|
|
1696
1700
|
//#region src/components/balanceScaleChart/BalanceScaleChart.tsx
|
|
1697
|
-
var
|
|
1698
|
-
function
|
|
1701
|
+
var dt = 500, ft = 320;
|
|
1702
|
+
function pt({ left: e, right: t, "data-testid": r }) {
|
|
1699
1703
|
let i = a(null), o = a(0);
|
|
1700
1704
|
return n(() => {
|
|
1701
1705
|
let n = i.current;
|
|
1702
1706
|
if (!n) return;
|
|
1703
|
-
let r = v(n,
|
|
1707
|
+
let r = v(n, dt, ft);
|
|
1704
1708
|
o.current = 0;
|
|
1705
|
-
let a =
|
|
1709
|
+
let a = dt / 2, s = Math.max(e.value, t.value), c = (e.value - t.value) / s * 14, l, d = () => {
|
|
1706
1710
|
o.current++;
|
|
1707
1711
|
let n = o.current;
|
|
1708
|
-
r.clearRect(0, 0,
|
|
1712
|
+
r.clearRect(0, 0, dt, ft), r.letterSpacing = f.letterSpacing;
|
|
1709
1713
|
let i = D(Math.min(n / 80, 1)), m = c * A(Math.min(n / 80, 1)) * Math.PI / 180;
|
|
1710
|
-
r.strokeStyle = h(u.bd, .5 * i), r.lineWidth = 2, r.beginPath(), r.moveTo(a, 100), r.lineTo(a,
|
|
1714
|
+
r.strokeStyle = h(u.bd, .5 * i), r.lineWidth = 2, r.beginPath(), r.moveTo(a, 100), r.lineTo(a, ft - 80), r.stroke(), r.beginPath(), r.arc(a, 100, 5 * i, 0, Math.PI * 2), r.fillStyle = u.t2, r.fill();
|
|
1711
1715
|
let g = {
|
|
1712
1716
|
x: a - Math.cos(m) * 160,
|
|
1713
1717
|
y: 100 + Math.sin(-m) * 160
|
|
@@ -1740,16 +1744,16 @@ function ft({ left: e, right: t, "data-testid": r }) {
|
|
|
1740
1744
|
"data-testid": r,
|
|
1741
1745
|
style: {
|
|
1742
1746
|
position: "relative",
|
|
1743
|
-
width:
|
|
1744
|
-
height:
|
|
1747
|
+
width: dt,
|
|
1748
|
+
height: ft
|
|
1745
1749
|
},
|
|
1746
1750
|
children: /* @__PURE__ */ s("canvas", {
|
|
1747
1751
|
ref: i,
|
|
1748
1752
|
role: "img",
|
|
1749
1753
|
"aria-label": "Quotation balance — accepted vs submitted quotation value",
|
|
1750
1754
|
style: {
|
|
1751
|
-
width:
|
|
1752
|
-
height:
|
|
1755
|
+
width: dt,
|
|
1756
|
+
height: ft,
|
|
1753
1757
|
display: "block"
|
|
1754
1758
|
}
|
|
1755
1759
|
})
|
|
@@ -1757,25 +1761,25 @@ function ft({ left: e, right: t, "data-testid": r }) {
|
|
|
1757
1761
|
}
|
|
1758
1762
|
//#endregion
|
|
1759
1763
|
//#region src/components/areaLineChart/AreaLineChart.tsx
|
|
1760
|
-
var
|
|
1761
|
-
function
|
|
1764
|
+
var mt = 680, K = 280;
|
|
1765
|
+
function ht({ points: e = [], "data-testid": t }) {
|
|
1762
1766
|
let r = a(null), o = a(/* @__PURE__ */ new Map()), l = a(0), { hoveredRef: d, tooltip: p, hitZonesRef: m } = w(r, {
|
|
1763
|
-
width:
|
|
1764
|
-
height:
|
|
1767
|
+
width: mt,
|
|
1768
|
+
height: K
|
|
1765
1769
|
}), g = i(() => e.filter((e) => typeof e == "object" && !!e), [e]);
|
|
1766
1770
|
return n(() => {
|
|
1767
1771
|
let e = r.current;
|
|
1768
1772
|
if (!e) return;
|
|
1769
|
-
let t = v(e,
|
|
1773
|
+
let t = v(e, mt, K);
|
|
1770
1774
|
l.current = 0;
|
|
1771
|
-
let n =
|
|
1775
|
+
let n = mt - 54 - 28, i = K - 30 - 54, a = Math.max(...g.map((e) => e.count), 1), s = g.length, c = s > 1 ? n / (s - 1) : n, p = g.map((e, t) => ({
|
|
1772
1776
|
x: 54 + t * c,
|
|
1773
1777
|
y: 30 + i - e.count / a * i,
|
|
1774
1778
|
point: e
|
|
1775
1779
|
})), _, b = () => {
|
|
1776
1780
|
l.current++;
|
|
1777
1781
|
let e = l.current;
|
|
1778
|
-
t.clearRect(0, 0,
|
|
1782
|
+
t.clearRect(0, 0, mt, K), t.letterSpacing = f.letterSpacing;
|
|
1779
1783
|
let r = D(Math.min(e / 72, 1));
|
|
1780
1784
|
N(o.current, d.current), m.current = [], [
|
|
1781
1785
|
.25,
|
|
@@ -1785,7 +1789,7 @@ function mt({ points: e = [], "data-testid": t }) {
|
|
|
1785
1789
|
].forEach((e) => {
|
|
1786
1790
|
let r = 30 + i - e * i;
|
|
1787
1791
|
t.strokeStyle = h(u.bd, .18), t.lineWidth = 1, t.setLineDash([3, 5]), t.beginPath(), t.moveTo(54, r), t.lineTo(54 + n, r), t.stroke(), t.setLineDash([]), t.font = f.font, t.fillStyle = f.color, t.textAlign = "right", t.fillText(String(Math.round(a * e)), 48, r + 3);
|
|
1788
|
-
}), t.save(), t.translate(12, 30 + i / 2), t.rotate(-Math.PI / 2), t.font = f.font, t.fillStyle = f.color, t.textAlign = "center", t.fillText("Submissions", 0, 0), t.restore(), t.font = f.font, t.fillStyle = f.color, t.textAlign = "center", t.fillText("Week", 54 + n / 2,
|
|
1792
|
+
}), t.save(), t.translate(12, 30 + i / 2), t.rotate(-Math.PI / 2), t.font = f.font, t.fillStyle = f.color, t.textAlign = "center", t.fillText("Submissions", 0, 0), t.restore(), t.font = f.font, t.fillStyle = f.color, t.textAlign = "center", t.fillText("Week", 54 + n / 2, K - 6), t.strokeStyle = h(u.bd, .3), t.lineWidth = 1, t.setLineDash([]), t.beginPath(), t.moveTo(54, 30 + i), t.lineTo(54 + n, 30 + i), t.stroke();
|
|
1789
1793
|
let c = r * (s - 1), g = Math.floor(c) + 1;
|
|
1790
1794
|
if (g >= 2) {
|
|
1791
1795
|
t.beginPath(), t.moveTo(p[0].x, 30 + i), t.lineTo(p[0].x, p[0].y);
|
|
@@ -1813,13 +1817,13 @@ function mt({ points: e = [], "data-testid": t }) {
|
|
|
1813
1817
|
color: u.blue
|
|
1814
1818
|
}), s > 0 && S(t, e.x, 30, 30 + i, h(u.blue, .15 * s));
|
|
1815
1819
|
let c = e.point.count === a;
|
|
1816
|
-
(s > 0 || c) && y(t, e.x, e.y, 14, u.blue, (c ? .3 : 0) + s * .25), t.beginPath(), t.arc(e.x, e.y, s > 0 ? 5 : 3.5, 0, Math.PI * 2), t.fillStyle = h(u.blue, s > 0 ? 1 : .8), t.fill(), (s > 0 || c) && (t.font = f.font, t.fillStyle = u.blue, t.textAlign = "center", t.fillText(String(e.point.count), e.x, e.y - 10)), t.font = f.font, t.fillStyle = s > 0 ? u.blue : f.color, t.textAlign = "center", t.fillText(e.point.week, e.x,
|
|
1820
|
+
(s > 0 || c) && y(t, e.x, e.y, 14, u.blue, (c ? .3 : 0) + s * .25), t.beginPath(), t.arc(e.x, e.y, s > 0 ? 5 : 3.5, 0, Math.PI * 2), t.fillStyle = h(u.blue, s > 0 ? 1 : .8), t.fill(), (s > 0 || c) && (t.font = f.font, t.fillStyle = u.blue, t.textAlign = "center", t.fillText(String(e.point.count), e.x, e.y - 10)), t.font = f.font, t.fillStyle = s > 0 ? u.blue : f.color, t.textAlign = "center", t.fillText(e.point.week, e.x, K - 54 + 14);
|
|
1817
1821
|
}), _ = requestAnimationFrame(b);
|
|
1818
1822
|
};
|
|
1819
1823
|
return b(), () => cancelAnimationFrame(_);
|
|
1820
1824
|
}, [g]), g.length < 2 ? /* @__PURE__ */ s(I, {
|
|
1821
|
-
width:
|
|
1822
|
-
height:
|
|
1825
|
+
width: mt,
|
|
1826
|
+
height: K,
|
|
1823
1827
|
"data-testid": t
|
|
1824
1828
|
}) : /* @__PURE__ */ s("div", {
|
|
1825
1829
|
"data-testid": t,
|
|
@@ -1831,53 +1835,53 @@ function mt({ points: e = [], "data-testid": t }) {
|
|
|
1831
1835
|
children: /* @__PURE__ */ c("div", {
|
|
1832
1836
|
style: {
|
|
1833
1837
|
position: "relative",
|
|
1834
|
-
width:
|
|
1835
|
-
height:
|
|
1838
|
+
width: mt,
|
|
1839
|
+
height: K
|
|
1836
1840
|
},
|
|
1837
1841
|
children: [/* @__PURE__ */ s("canvas", {
|
|
1838
1842
|
ref: r,
|
|
1839
1843
|
role: "img",
|
|
1840
1844
|
"aria-label": "Trend chart — count over time",
|
|
1841
1845
|
style: {
|
|
1842
|
-
width:
|
|
1843
|
-
height:
|
|
1846
|
+
width: mt,
|
|
1847
|
+
height: K,
|
|
1844
1848
|
display: "block"
|
|
1845
1849
|
}
|
|
1846
1850
|
}), /* @__PURE__ */ s(C, {
|
|
1847
1851
|
...p,
|
|
1848
|
-
parentW:
|
|
1849
|
-
parentH:
|
|
1852
|
+
parentW: mt,
|
|
1853
|
+
parentH: K
|
|
1850
1854
|
})]
|
|
1851
1855
|
})
|
|
1852
1856
|
});
|
|
1853
1857
|
}
|
|
1854
1858
|
//#endregion
|
|
1855
1859
|
//#region src/components/trend/Trend.tsx
|
|
1856
|
-
var
|
|
1857
|
-
function
|
|
1860
|
+
var gt = 680, q = 280, _t = 54, vt = 48, yt = 64, bt = f.font, xt = 12, St = Math.PI * 2, Ct = 72, wt = 20, Tt = 5e3;
|
|
1861
|
+
function Et({ points: e = [], "data-testid": t }) {
|
|
1858
1862
|
let r = a(null), o = a(null), l = a(0), d = i(() => e.filter((e) => typeof e == "object" && !!e), [e]), p = i(() => {
|
|
1859
|
-
if (d.length <= 1) return
|
|
1863
|
+
if (d.length <= 1) return yt;
|
|
1860
1864
|
let e = document.createElement("canvas").getContext("2d");
|
|
1861
|
-
if (!e) return
|
|
1862
|
-
e.font =
|
|
1863
|
-
let t = Math.max(1, Math.ceil(d.length /
|
|
1864
|
-
return Math.max(
|
|
1865
|
-
}, [d]), m = Math.round(p / 2), g =
|
|
1865
|
+
if (!e) return yt;
|
|
1866
|
+
e.font = bt;
|
|
1867
|
+
let t = Math.max(1, Math.ceil(d.length / wt)), n = Math.max(...d.filter((e, n) => n % t === 0).map((t) => e.measureText(t.week).width));
|
|
1868
|
+
return Math.max(yt, n + xt);
|
|
1869
|
+
}, [d]), m = Math.round(p / 2), g = vt + m + Math.max(0, d.length - 1) * p, _ = Math.max(gt - _t, Math.min(g, Tt)), { tooltip: y, hitZonesRef: b } = w(r, {
|
|
1866
1870
|
width: _,
|
|
1867
|
-
height:
|
|
1871
|
+
height: q
|
|
1868
1872
|
});
|
|
1869
1873
|
return n(() => {
|
|
1870
1874
|
let e = r.current;
|
|
1871
1875
|
if (!e) return;
|
|
1872
|
-
let t = v(e, _,
|
|
1876
|
+
let t = v(e, _, q), n = o.current ? v(o.current, _t, q) : null;
|
|
1873
1877
|
l.current = 0;
|
|
1874
|
-
let i = d.length <=
|
|
1878
|
+
let i = d.length <= Ct ? Ct : Math.max(24, Math.round(Ct * (Ct / d.length))), a = _ - vt, s = q - 42 - 54, c = d.map((e) => e.count), g = Math.min(...c), y = Math.max(...c), x = y - g || 1, S = d.length, C = S > 1 ? (a - m) / (S - 1) : a - m, w = Math.max(1, Math.ceil(p / C)), E = g < 0, O = E ? 42 + s - -g / x * s : 42 + s, k = d.map((e, t) => ({
|
|
1875
1879
|
x: m + t * C,
|
|
1876
1880
|
y: 42 + s - (e.count - g) / x * s,
|
|
1877
1881
|
point: e
|
|
1878
1882
|
}));
|
|
1879
1883
|
if (n) {
|
|
1880
|
-
n.clearRect(0, 0,
|
|
1884
|
+
n.clearRect(0, 0, _t, q), n.letterSpacing = f.letterSpacing;
|
|
1881
1885
|
let e = E ? [
|
|
1882
1886
|
g,
|
|
1883
1887
|
g + x * .25,
|
|
@@ -1893,18 +1897,18 @@ function Tt({ points: e = [], "data-testid": t }) {
|
|
|
1893
1897
|
];
|
|
1894
1898
|
e.forEach((t, r) => {
|
|
1895
1899
|
let i = r / (e.length - 1), a = 42 + s - i * s;
|
|
1896
|
-
n.font = f.font, n.fillStyle = f.color, n.textAlign = "right", n.fillText(
|
|
1900
|
+
n.font = f.font, n.fillStyle = f.color, n.textAlign = "right", n.fillText(We(t), _t - 6, a + 3);
|
|
1897
1901
|
}), n.save(), n.translate(12, 42 + s / 2), n.rotate(-Math.PI / 2), n.font = f.font, n.fillStyle = f.color, n.textAlign = "center", n.fillText("Count", 0, 0), n.restore();
|
|
1898
1902
|
}
|
|
1899
1903
|
let A = t.createLinearGradient(0, 42, 0, 42 + s);
|
|
1900
1904
|
A.addColorStop(0, h(u.blue, .22)), A.addColorStop(1, h(u.blue, .02));
|
|
1901
1905
|
let j = 0, M, N = (e) => {
|
|
1902
|
-
t.font =
|
|
1903
|
-
for (let n = 0; n < e; n++) n % w === 0 && t.fillText(k[n].point.week, k[n].x,
|
|
1906
|
+
t.font = bt, t.fillStyle = f.color, t.textAlign = "center";
|
|
1907
|
+
for (let n = 0; n < e; n++) n % w === 0 && t.fillText(k[n].point.week, k[n].x, q - 54 + 14);
|
|
1904
1908
|
}, P = () => {
|
|
1905
1909
|
l.current++;
|
|
1906
1910
|
let e = Math.min(l.current / i, 1), n = D(e), r = e >= 1;
|
|
1907
|
-
t.clearRect(0, 0, _,
|
|
1911
|
+
t.clearRect(0, 0, _, q), t.letterSpacing = f.letterSpacing, (E ? [
|
|
1908
1912
|
0,
|
|
1909
1913
|
.25,
|
|
1910
1914
|
.5,
|
|
@@ -1918,7 +1922,7 @@ function Tt({ points: e = [], "data-testid": t }) {
|
|
|
1918
1922
|
]).forEach((e) => {
|
|
1919
1923
|
let n = 42 + s - e * s;
|
|
1920
1924
|
t.strokeStyle = h(u.bd, .18), t.lineWidth = 1, t.setLineDash([3, 5]), t.beginPath(), t.moveTo(0, n), t.lineTo(a, n), t.stroke(), t.setLineDash([]);
|
|
1921
|
-
}), t.font = f.font, t.fillStyle = f.color, t.textAlign = "center", t.fillText("Period", m + (a - m) / 2,
|
|
1925
|
+
}), t.font = f.font, t.fillStyle = f.color, t.textAlign = "center", t.fillText("Period", m + (a - m) / 2, q - 6), t.strokeStyle = h(u.bd, E ? .5 : .3), t.lineWidth = E ? 2 : 1, t.beginPath(), t.moveTo(m, E ? O : 42 + s), t.lineTo(a, E ? O : 42 + s), t.stroke();
|
|
1922
1926
|
let o = n * (S - 1), c = Math.floor(o) + 1;
|
|
1923
1927
|
if (c >= 2) {
|
|
1924
1928
|
let e = E ? O : 42 + s;
|
|
@@ -1935,7 +1939,7 @@ function Tt({ points: e = [], "data-testid": t }) {
|
|
|
1935
1939
|
e === 0 ? t.moveTo(i, a) : t.lineTo(i, a);
|
|
1936
1940
|
}
|
|
1937
1941
|
t.strokeStyle = h(u.blue, .85), t.lineWidth = 2, t.stroke(), t.fillStyle = h(u.blue, .8), t.beginPath();
|
|
1938
|
-
for (let e = 0; e < c; e++) t.moveTo(k[e].x + 3.5, k[e].y), t.arc(k[e].x, k[e].y, 3.5, 0,
|
|
1942
|
+
for (let e = 0; e < c; e++) t.moveTo(k[e].x + 3.5, k[e].y), t.arc(k[e].x, k[e].y, 3.5, 0, St);
|
|
1939
1943
|
if (t.fill(), c > j) {
|
|
1940
1944
|
b.current = [];
|
|
1941
1945
|
for (let e = 0; e < c; e++) T(b.current, `pt-${e}`, k[e].x, k[e].y, 10, {
|
|
@@ -1955,8 +1959,8 @@ function Tt({ points: e = [], "data-testid": t }) {
|
|
|
1955
1959
|
p,
|
|
1956
1960
|
b
|
|
1957
1961
|
]), d.length < 2 ? /* @__PURE__ */ s(I, {
|
|
1958
|
-
width:
|
|
1959
|
-
height:
|
|
1962
|
+
width: gt,
|
|
1963
|
+
height: q,
|
|
1960
1964
|
"data-testid": t
|
|
1961
1965
|
}) : /* @__PURE__ */ c("div", {
|
|
1962
1966
|
"data-testid": t,
|
|
@@ -1969,8 +1973,8 @@ function Tt({ points: e = [], "data-testid": t }) {
|
|
|
1969
1973
|
ref: o,
|
|
1970
1974
|
"aria-hidden": "true",
|
|
1971
1975
|
style: {
|
|
1972
|
-
width:
|
|
1973
|
-
height:
|
|
1976
|
+
width: _t,
|
|
1977
|
+
height: q,
|
|
1974
1978
|
display: "block",
|
|
1975
1979
|
flexShrink: 0
|
|
1976
1980
|
}
|
|
@@ -1984,7 +1988,7 @@ function Tt({ points: e = [], "data-testid": t }) {
|
|
|
1984
1988
|
style: {
|
|
1985
1989
|
position: "relative",
|
|
1986
1990
|
width: _,
|
|
1987
|
-
height:
|
|
1991
|
+
height: q
|
|
1988
1992
|
},
|
|
1989
1993
|
children: [/* @__PURE__ */ s("canvas", {
|
|
1990
1994
|
ref: r,
|
|
@@ -1992,13 +1996,13 @@ function Tt({ points: e = [], "data-testid": t }) {
|
|
|
1992
1996
|
"aria-label": "Trend chart — count over time",
|
|
1993
1997
|
style: {
|
|
1994
1998
|
width: _,
|
|
1995
|
-
height:
|
|
1999
|
+
height: q,
|
|
1996
2000
|
display: "block"
|
|
1997
2001
|
}
|
|
1998
2002
|
}), /* @__PURE__ */ s(C, {
|
|
1999
2003
|
...y,
|
|
2000
2004
|
parentW: _,
|
|
2001
|
-
parentH:
|
|
2005
|
+
parentH: q
|
|
2002
2006
|
})]
|
|
2003
2007
|
})
|
|
2004
2008
|
})]
|
|
@@ -2006,88 +2010,88 @@ function Tt({ points: e = [], "data-testid": t }) {
|
|
|
2006
2010
|
}
|
|
2007
2011
|
//#endregion
|
|
2008
2012
|
//#region src/components/proportionalBandChart/ProportionalBandChart.tsx
|
|
2009
|
-
var
|
|
2010
|
-
function
|
|
2013
|
+
var Dt = 680, Ot = 240, kt = 28, At = 156;
|
|
2014
|
+
function jt(e, t, n) {
|
|
2011
2015
|
if (e.measureText(t).width <= n) return t;
|
|
2012
2016
|
let r = t;
|
|
2013
2017
|
for (; r.length > 0 && e.measureText(`${r}…`).width > n;) r = r.slice(0, -1);
|
|
2014
2018
|
return `${r}…`;
|
|
2015
2019
|
}
|
|
2016
|
-
var
|
|
2020
|
+
var Mt = {
|
|
2017
2021
|
Critical: u.red,
|
|
2018
2022
|
High: u.orange,
|
|
2019
2023
|
Medium: u.amber,
|
|
2020
2024
|
Low: u.green
|
|
2021
2025
|
};
|
|
2022
|
-
function
|
|
2023
|
-
let r = a(null), o = a(/* @__PURE__ */ new Map()), l = a(0), { hoveredRef:
|
|
2024
|
-
width:
|
|
2025
|
-
height:
|
|
2026
|
-
})
|
|
2026
|
+
function Nt({ severities: e = [], "data-testid": t }) {
|
|
2027
|
+
let r = a(null), o = a(/* @__PURE__ */ new Map()), l = a(0), d = i(() => e.filter((e) => typeof e == "object" && !!e), [e]), m = d.length > 0 ? Math.min(Dt, 2 * kt + d.length * At) : Dt, { hoveredRef: g, tooltip: _, hitZonesRef: b } = w(r, {
|
|
2028
|
+
width: m,
|
|
2029
|
+
height: Ot
|
|
2030
|
+
});
|
|
2027
2031
|
return n(() => {
|
|
2028
2032
|
let e = r.current;
|
|
2029
2033
|
if (!e) return;
|
|
2030
|
-
let t = v(e,
|
|
2034
|
+
let t = v(e, m, Ot);
|
|
2031
2035
|
l.current = 0;
|
|
2032
|
-
let n =
|
|
2036
|
+
let n = d.reduce((e, t) => e + (t.count ?? 0), 0), i = kt, a = kt, s = m - i - a, c = Ot - 50 - 52, _ = d.map((e) => (e.count ?? 0) / (n || 1) * s), x, S = () => {
|
|
2033
2037
|
l.current++;
|
|
2034
2038
|
let e = l.current;
|
|
2035
|
-
t.clearRect(0, 0,
|
|
2039
|
+
t.clearRect(0, 0, m, Ot), t.letterSpacing = f.letterSpacing;
|
|
2036
2040
|
let r = O(Math.min(e / 60, 1));
|
|
2037
|
-
N(o.current,
|
|
2038
|
-
let
|
|
2039
|
-
|
|
2040
|
-
let
|
|
2041
|
-
if (
|
|
2041
|
+
N(o.current, g.current), b.current = [], t.strokeStyle = h(u.bd, .2), t.lineWidth = 1, t.beginPath(), t.rect(i, 50, s, c), t.stroke(), t.strokeStyle = h(u.t2, .15), t.lineWidth = 1, t.setLineDash([4, 4]), t.beginPath(), t.moveTo(m / 2, 50), t.lineTo(m / 2, 50 + c), t.stroke(), t.setLineDash([]);
|
|
2042
|
+
let a = i;
|
|
2043
|
+
d.forEach((e, i) => {
|
|
2044
|
+
let s = Mt[e.severity] ?? u.blue, l = _[i], d = o.current.get(e.severity) ?? 0, m = a + l / 2, g = l * .85, v = l * r, x = g * r, S = m - x / 2;
|
|
2045
|
+
if (v > 0 && (d > 0 && y(t, a + v / 2, 50 + c / 2, v * .4, s, .15 * d), t.beginPath(), t.moveTo(S, 50), t.lineTo(S + x, 50), t.lineTo(a + v, 50 + c), t.lineTo(a, 50 + c), t.closePath(), t.fillStyle = h(s, .45 + d * .25), t.fill(), t.strokeStyle = h(s, (.5 + d * .3) * r), t.lineWidth = d > 0 ? 2 : 1, t.beginPath(), t.moveTo(S, 50), t.lineTo(S + x, 50), t.stroke(), t.strokeStyle = h(s, (.3 + d * .3) * r), t.lineWidth = d > 0 ? 2 : 1, t.beginPath(), t.moveTo(a, 50 + c), t.lineTo(a + v, 50 + c), t.stroke()), E(b.current, e.severity, a, 50, l, c, {
|
|
2042
2046
|
label: e.severity,
|
|
2043
2047
|
value: `${e.count} Early Warnings`,
|
|
2044
2048
|
sublabel: `${Math.round((e.count ?? 0) / (n || 1) * 100)}% of all EWs`,
|
|
2045
|
-
color:
|
|
2049
|
+
color: s
|
|
2046
2050
|
}), r > .5) {
|
|
2047
|
-
let i = Math.min(1, (r - .5) / .5), o =
|
|
2048
|
-
t.globalAlpha = i, t.font = f.font, t.fillStyle = d > 0 ?
|
|
2051
|
+
let i = Math.min(1, (r - .5) / .5), o = a + l / 2;
|
|
2052
|
+
t.globalAlpha = i, t.font = f.font, t.fillStyle = d > 0 ? s : h(s, .9), t.textAlign = "center", t.fillText(jt(t, e.severity, l - 12), o, 38), t.font = p.font, t.fillStyle = d > 0 ? u.t1 : h(u.t1, .85), t.fillText(String(e.count), o, 50 + c / 2 + 6), t.font = f.font, t.fillStyle = d > 0 ? s : f.color, t.fillText(`${Math.round((e.count ?? 0) / (n || 1) * 100)}%`, o, 50 + c + 18), t.globalAlpha = 1;
|
|
2049
2053
|
}
|
|
2050
|
-
|
|
2054
|
+
a += l;
|
|
2051
2055
|
});
|
|
2052
|
-
let
|
|
2053
|
-
|
|
2056
|
+
let v = t.createLinearGradient(i, 0, i + s, 0);
|
|
2057
|
+
v.addColorStop(0, h(u.red, .03)), v.addColorStop(.33, h(u.orange, .03)), v.addColorStop(.66, h(u.amber, .03)), v.addColorStop(1, h(u.green, .03)), t.fillStyle = v, t.fillRect(i, 50, s * r, c), x = requestAnimationFrame(S);
|
|
2054
2058
|
};
|
|
2055
|
-
return
|
|
2056
|
-
}, [
|
|
2057
|
-
width:
|
|
2058
|
-
height:
|
|
2059
|
+
return S(), () => cancelAnimationFrame(x);
|
|
2060
|
+
}, [d, m]), d.length === 0 ? /* @__PURE__ */ s(I, {
|
|
2061
|
+
width: m,
|
|
2062
|
+
height: Ot,
|
|
2059
2063
|
"data-testid": t
|
|
2060
2064
|
}) : /* @__PURE__ */ c("div", {
|
|
2061
2065
|
"data-testid": t,
|
|
2062
2066
|
style: {
|
|
2063
2067
|
position: "relative",
|
|
2064
|
-
width:
|
|
2065
|
-
height:
|
|
2068
|
+
width: m,
|
|
2069
|
+
height: Ot
|
|
2066
2070
|
},
|
|
2067
2071
|
children: [/* @__PURE__ */ s("canvas", {
|
|
2068
2072
|
ref: r,
|
|
2069
2073
|
role: "img",
|
|
2070
2074
|
"aria-label": "Early Warning severity distribution — prism spectrum bands",
|
|
2071
2075
|
style: {
|
|
2072
|
-
width:
|
|
2073
|
-
height:
|
|
2076
|
+
width: m,
|
|
2077
|
+
height: Ot,
|
|
2074
2078
|
display: "block"
|
|
2075
2079
|
}
|
|
2076
2080
|
}), /* @__PURE__ */ s(C, {
|
|
2077
|
-
...
|
|
2078
|
-
parentW:
|
|
2079
|
-
parentH:
|
|
2081
|
+
..._,
|
|
2082
|
+
parentW: m,
|
|
2083
|
+
parentH: Ot
|
|
2080
2084
|
})]
|
|
2081
2085
|
});
|
|
2082
2086
|
}
|
|
2083
2087
|
//#endregion
|
|
2084
2088
|
//#region src/components/hubAndSpokeRadialChart/HubAndSpokeRadialChart.tsx
|
|
2085
|
-
var J =
|
|
2089
|
+
var J = 300, Y = 280, Pt = 100, Ft = {
|
|
2086
2090
|
Open: u.red,
|
|
2087
2091
|
Submitted: u.amber,
|
|
2088
2092
|
Closed: u.green
|
|
2089
2093
|
};
|
|
2090
|
-
function
|
|
2094
|
+
function It({ segments: e = [], title: t, "data-testid": r }) {
|
|
2091
2095
|
let o = a(null), l = a(0), d = a(/* @__PURE__ */ new Map()), { hoveredRef: m, tooltip: g, hitZonesRef: _ } = w(o, {
|
|
2092
2096
|
width: J,
|
|
2093
2097
|
height: Y
|
|
@@ -2097,21 +2101,21 @@ function jt({ segments: e = [], title: t, "data-testid": r }) {
|
|
|
2097
2101
|
if (!e) return;
|
|
2098
2102
|
let t = v(e, J, Y);
|
|
2099
2103
|
l.current = 0;
|
|
2100
|
-
let n = J * .5, r = Y * .
|
|
2104
|
+
let n = J * .5, r = Y * .56, i = Pt, a = S.reduce((e, t) => e + (t.count ?? 0), 0), s = Math.max(...S.map((e) => e.count ?? 0), 1), c, g = () => {
|
|
2101
2105
|
l.current++;
|
|
2102
2106
|
let e = l.current;
|
|
2103
2107
|
t.clearRect(0, 0, J, Y), t.letterSpacing = f.letterSpacing, _.current = [], d.current.forEach((e, t) => {
|
|
2104
2108
|
let n = t === m.current ? 1 : 0, r = e + (n - e) * .12;
|
|
2105
2109
|
Math.abs(r - n) < .005 ? n === 0 ? d.current.delete(t) : d.current.set(t, 1) : d.current.set(t, r);
|
|
2106
2110
|
}), m.current && !d.current.has(m.current) && d.current.set(m.current, 0), b(t, J, Y, e, 40, h(u.blue, .04)), S.forEach((a, o) => {
|
|
2107
|
-
let c = o / 3 * Math.PI * 2 - Math.PI / 2, l = n + Math.cos(c) * i, d = r + Math.sin(c) * i, f =
|
|
2111
|
+
let c = o / 3 * Math.PI * 2 - Math.PI / 2, l = n + Math.cos(c) * i, d = r + Math.sin(c) * i, f = Ft[a.status] ?? u.blue, m = 2 + a.count / s * 8;
|
|
2108
2112
|
t.beginPath(), t.moveTo(n, r), t.lineTo(l, d), t.strokeStyle = h(f, .08), t.lineWidth = m * 2, t.stroke(), t.beginPath(), t.moveTo(n, r), t.lineTo(l, d), t.strokeStyle = h(f, .25), t.lineWidth = 1, t.stroke();
|
|
2109
2113
|
let g = (e * .005 + o * .33) % 1, _ = n + (l - n) * g, v = r + (d - r) * g;
|
|
2110
2114
|
y(t, _, v, 6, f, .4), t.beginPath(), t.arc(_, v, 2, 0, Math.PI * 2), t.fillStyle = h(f, .8), t.fill();
|
|
2111
2115
|
let b = (n + l) / 2, x = (r + d) / 2;
|
|
2112
2116
|
t.font = p.font, t.textAlign = "center", t.textBaseline = "middle", t.fillStyle = h(f, .85), t.fillText(String(a.count), b, x);
|
|
2113
2117
|
}), S.forEach((e, o) => {
|
|
2114
|
-
let c = o / 3 * Math.PI * 2 - Math.PI / 2, l = n + Math.cos(c) * i, p = r + Math.sin(c) * i, m =
|
|
2118
|
+
let c = o / 3 * Math.PI * 2 - Math.PI / 2, l = n + Math.cos(c) * i, p = r + Math.sin(c) * i, m = Ft[e.status] ?? u.blue, g = 10 + e.count / s * 18, v = d.current.get(e.status) ?? 0;
|
|
2115
2119
|
y(t, l, p, g * 2.5, m, .2 + v * .15);
|
|
2116
2120
|
let b = t.createRadialGradient(l, p - g * .2, 0, l, p, g);
|
|
2117
2121
|
b.addColorStop(0, h(m, .8 + v * .2)), b.addColorStop(1, h(m, .4 + v * .1)), t.beginPath(), t.arc(l, p, g, 0, Math.PI * 2), t.fillStyle = b, t.fill(), t.font = "bold " + f.font, t.textAlign = "center", t.textBaseline = "middle", t.fillStyle = h(u.t1, .9), t.fillText(e.status, l, p), T(_.current, e.status, l, p, g + 6, {
|
|
@@ -2161,8 +2165,8 @@ function jt({ segments: e = [], title: t, "data-testid": r }) {
|
|
|
2161
2165
|
}
|
|
2162
2166
|
//#endregion
|
|
2163
2167
|
//#region src/components/trendChart/TrendChart.tsx
|
|
2164
|
-
var
|
|
2165
|
-
function
|
|
2168
|
+
var Lt = 280, X = 96;
|
|
2169
|
+
function Rt({ points: e = [], className: t, colors: r }) {
|
|
2166
2170
|
let o = a(null), d = a(/* @__PURE__ */ new Map()), f = a(0), p = i(() => e.filter(Array.isArray).map(([e, t]) => {
|
|
2167
2171
|
let n = String(t).match(/-?\d+(\.\d+)?/);
|
|
2168
2172
|
return {
|
|
@@ -2170,18 +2174,18 @@ function Nt({ points: e = [], className: t, colors: r }) {
|
|
|
2170
2174
|
value: n ? Number(n[0]) : 0
|
|
2171
2175
|
};
|
|
2172
2176
|
}), [e]), { mouseRef: m, hoveredRef: g, tooltip: _, hitZonesRef: b } = w(o, {
|
|
2173
|
-
width:
|
|
2177
|
+
width: Lt,
|
|
2174
2178
|
height: X
|
|
2175
2179
|
});
|
|
2176
2180
|
return n(() => {
|
|
2177
2181
|
let e = o.current;
|
|
2178
2182
|
if (!e) return;
|
|
2179
|
-
let t = v(e,
|
|
2183
|
+
let t = v(e, Lt, X);
|
|
2180
2184
|
f.current = 0;
|
|
2181
2185
|
let n = r?.line ?? u.blue, i = r?.point ?? u.blue, a = r?.axisLine ?? u.bd, s, c = () => {
|
|
2182
2186
|
f.current++;
|
|
2183
2187
|
let e = f.current;
|
|
2184
|
-
if (t.clearRect(0, 0,
|
|
2188
|
+
if (t.clearRect(0, 0, Lt, X), p.length < 2) {
|
|
2185
2189
|
s = requestAnimationFrame(c);
|
|
2186
2190
|
return;
|
|
2187
2191
|
}
|
|
@@ -2190,8 +2194,8 @@ function Nt({ points: e = [], className: t, colors: r }) {
|
|
|
2190
2194
|
right: 12,
|
|
2191
2195
|
top: 16,
|
|
2192
2196
|
bottom: 20
|
|
2193
|
-
}, o =
|
|
2194
|
-
if (N(d.current, g.current), b.current = [], t.strokeStyle = h(a, .3), t.lineWidth = .5, t.setLineDash([]), t.beginPath(), t.moveTo(r.left, X - r.bottom), t.lineTo(
|
|
2197
|
+
}, o = Lt - r.left - r.right, l = X - r.top - r.bottom, _ = p.map((e) => e.value), v = Math.min(..._), x = Math.max(..._) - v || 1, C = (e) => r.left + e / (p.length - 1) * o, w = (e) => r.top + (1 - (e - v) / x) * l, E = 1 - (1 - Math.min(e / 48, 1)) ** 3, D = Math.max(2, Math.floor(E * p.length));
|
|
2198
|
+
if (N(d.current, g.current), b.current = [], t.strokeStyle = h(a, .3), t.lineWidth = .5, t.setLineDash([]), t.beginPath(), t.moveTo(r.left, X - r.bottom), t.lineTo(Lt - r.right, X - r.bottom), t.stroke(), t.font = "9px 'JetBrains Mono', monospace", t.fillStyle = h(u.t4, .9), t.textAlign = "center", p.forEach((e, n) => {
|
|
2195
2199
|
t.fillText(e.label.replace("Day ", "D"), C(n), X - 4);
|
|
2196
2200
|
}), m.current.over && g.current) {
|
|
2197
2201
|
let e = parseInt(g.current.split("-")[1]);
|
|
@@ -2228,7 +2232,7 @@ function Nt({ points: e = [], className: t, colors: r }) {
|
|
|
2228
2232
|
children: /* @__PURE__ */ c("div", {
|
|
2229
2233
|
style: {
|
|
2230
2234
|
position: "relative",
|
|
2231
|
-
width:
|
|
2235
|
+
width: Lt,
|
|
2232
2236
|
height: X
|
|
2233
2237
|
},
|
|
2234
2238
|
children: [/* @__PURE__ */ s("canvas", {
|
|
@@ -2236,14 +2240,14 @@ function Nt({ points: e = [], className: t, colors: r }) {
|
|
|
2236
2240
|
role: "img",
|
|
2237
2241
|
"aria-label": "trend chart",
|
|
2238
2242
|
style: {
|
|
2239
|
-
width:
|
|
2243
|
+
width: Lt,
|
|
2240
2244
|
height: X,
|
|
2241
2245
|
display: "block",
|
|
2242
2246
|
borderRadius: 8
|
|
2243
2247
|
}
|
|
2244
2248
|
}), /* @__PURE__ */ s(C, {
|
|
2245
2249
|
..._,
|
|
2246
|
-
parentW:
|
|
2250
|
+
parentW: Lt,
|
|
2247
2251
|
parentH: X
|
|
2248
2252
|
})]
|
|
2249
2253
|
})
|
|
@@ -2251,27 +2255,27 @@ function Nt({ points: e = [], className: t, colors: r }) {
|
|
|
2251
2255
|
}
|
|
2252
2256
|
//#endregion
|
|
2253
2257
|
//#region src/components/segmentedSplitBarChart/SegmentedSplitBarChart.tsx
|
|
2254
|
-
function
|
|
2258
|
+
function zt(e, t, n) {
|
|
2255
2259
|
if (e.measureText(t).width <= n) return t;
|
|
2256
2260
|
let r = t;
|
|
2257
2261
|
for (; r.length > 0 && e.measureText(r + "…").width > n;) r = r.slice(0, -1);
|
|
2258
2262
|
return r + "…";
|
|
2259
2263
|
}
|
|
2260
|
-
var
|
|
2261
|
-
function
|
|
2262
|
-
let r = a(null), l = a(/* @__PURE__ */ new Map()), d = a(0), [g, _] = o(!1), b = i(() => e.filter((e) => typeof e == "object" && !!e), [e]), x = i(() => g ? b : b.slice(0,
|
|
2263
|
-
width:
|
|
2264
|
+
var Bt = 680, Vt = 8, Ht = 26, Ut = 14, Wt = 16, Gt = 32;
|
|
2265
|
+
function Kt({ items: e = [], "data-testid": t }) {
|
|
2266
|
+
let r = a(null), l = a(/* @__PURE__ */ new Map()), d = a(0), [g, _] = o(!1), b = i(() => e.filter((e) => typeof e == "object" && !!e), [e]), x = i(() => g ? b : b.slice(0, Vt), [b, g]), S = Wt + Gt + x.length * (Ht + Ut) - Ut, { hoveredRef: T, tooltip: D, hitZonesRef: k } = w(r, {
|
|
2267
|
+
width: Bt,
|
|
2264
2268
|
height: S
|
|
2265
2269
|
});
|
|
2266
2270
|
return n(() => {
|
|
2267
2271
|
let e = r.current;
|
|
2268
2272
|
if (!e) return;
|
|
2269
|
-
let t = v(e,
|
|
2273
|
+
let t = v(e, Bt, S);
|
|
2270
2274
|
d.current = 0;
|
|
2271
|
-
let n =
|
|
2275
|
+
let n = Wt, i = Gt, a = Ht, o = Ut, s = Bt - 60 - 28, c = Math.max(...x.map((e) => (e.implemented ?? 0) + (e.unimplemented ?? 0)), 1), g = x.length * (a + o) - o, _ = n + (S - n - i - g) / 2, b, C = () => {
|
|
2272
2276
|
d.current++;
|
|
2273
2277
|
let e = d.current;
|
|
2274
|
-
t.clearRect(0, 0,
|
|
2278
|
+
t.clearRect(0, 0, Bt, S);
|
|
2275
2279
|
let n = O(Math.min(e / 60, 1));
|
|
2276
2280
|
N(l.current, T.current), k.current = [], x.forEach((e, r) => {
|
|
2277
2281
|
let i = M(n, r, x.length, O), d = _ + r * (a + o), m = (e.implemented ?? 0) + (e.unimplemented ?? 0), g = (e.implemented ?? 0) / c * s * i, v = (e.unimplemented ?? 0) / c * s * i, b = `${e.id}-impl`, S = `${e.id}-un`, C = l.current.get(b) ?? 0, w = l.current.get(S) ?? 0;
|
|
@@ -2285,7 +2289,7 @@ function Vt({ items: e = [], "data-testid": t }) {
|
|
|
2285
2289
|
value: `${e.unimplemented ?? 0} variations`,
|
|
2286
2290
|
sublabel: `${Math.round((e.unimplemented ?? 0) / (m || 1) * 100)}% pending`,
|
|
2287
2291
|
color: u.amber
|
|
2288
|
-
}), t.font = f.font, t.fillStyle = u.t2, t.textAlign = "right", t.fillText(
|
|
2292
|
+
}), t.font = f.font, t.fillStyle = u.t2, t.textAlign = "right", t.fillText(zt(t, e.abbreviation ?? e.name ?? "", 44), 52, d + a / 2 + 4), t.fillStyle = h(u.bd, .15), t.beginPath(), t.roundRect(60, d, m / c * s, a, 4), t.fill(), g > 0 && (C > 0 && y(t, 60 + g / 2, d + a / 2, g * .3, u.green, .12 * C), t.fillStyle = h(u.green, .6 + C * .2), t.beginPath(), t.roundRect(60, d, g, a, [
|
|
2289
2293
|
4,
|
|
2290
2294
|
0,
|
|
2291
2295
|
0,
|
|
@@ -2302,16 +2306,16 @@ function Vt({ items: e = [], "data-testid": t }) {
|
|
|
2302
2306
|
};
|
|
2303
2307
|
return C(), () => cancelAnimationFrame(b);
|
|
2304
2308
|
}, [x, S]), b.length === 0 ? /* @__PURE__ */ s(I, {
|
|
2305
|
-
width:
|
|
2309
|
+
width: Bt,
|
|
2306
2310
|
height: 160,
|
|
2307
2311
|
"data-testid": t
|
|
2308
2312
|
}) : /* @__PURE__ */ c("div", {
|
|
2309
2313
|
"data-testid": t,
|
|
2310
|
-
style: { width:
|
|
2314
|
+
style: { width: Bt },
|
|
2311
2315
|
children: [/* @__PURE__ */ c("div", {
|
|
2312
2316
|
style: {
|
|
2313
2317
|
position: "relative",
|
|
2314
|
-
width:
|
|
2318
|
+
width: Bt,
|
|
2315
2319
|
height: S
|
|
2316
2320
|
},
|
|
2317
2321
|
children: [/* @__PURE__ */ s("canvas", {
|
|
@@ -2319,16 +2323,16 @@ function Vt({ items: e = [], "data-testid": t }) {
|
|
|
2319
2323
|
role: "img",
|
|
2320
2324
|
"aria-label": "Implemented vs unimplemented variations per contractor — split bar",
|
|
2321
2325
|
style: {
|
|
2322
|
-
width:
|
|
2326
|
+
width: Bt,
|
|
2323
2327
|
height: S,
|
|
2324
2328
|
display: "block"
|
|
2325
2329
|
}
|
|
2326
2330
|
}), /* @__PURE__ */ s(C, {
|
|
2327
2331
|
...D,
|
|
2328
|
-
parentW:
|
|
2332
|
+
parentW: Bt,
|
|
2329
2333
|
parentH: S
|
|
2330
2334
|
})]
|
|
2331
|
-
}), b.length >
|
|
2335
|
+
}), b.length > Vt && /* @__PURE__ */ s("div", {
|
|
2332
2336
|
style: { marginTop: 8 },
|
|
2333
2337
|
children: /* @__PURE__ */ s(ae, {
|
|
2334
2338
|
expanded: g,
|
|
@@ -2339,18 +2343,18 @@ function Vt({ items: e = [], "data-testid": t }) {
|
|
|
2339
2343
|
}
|
|
2340
2344
|
//#endregion
|
|
2341
2345
|
//#region src/components/weeklyFlow/WeeklyFlow.tsx
|
|
2342
|
-
var
|
|
2343
|
-
function
|
|
2346
|
+
var qt = 800, Jt = 360;
|
|
2347
|
+
function Yt({ items: e = [], "data-testid": t }) {
|
|
2344
2348
|
let r = a(null), i = a(/* @__PURE__ */ new Map()), o = a(0), { hoveredRef: l, tooltip: m, hitZonesRef: g } = w(r, {
|
|
2345
|
-
width:
|
|
2346
|
-
height:
|
|
2349
|
+
width: qt,
|
|
2350
|
+
height: Jt
|
|
2347
2351
|
});
|
|
2348
2352
|
return n(() => {
|
|
2349
2353
|
let t = r.current;
|
|
2350
2354
|
if (!t) return;
|
|
2351
|
-
let n = v(t,
|
|
2355
|
+
let n = v(t, qt, Jt);
|
|
2352
2356
|
o.current = 0;
|
|
2353
|
-
let a = e.reduce((e, t) => e + (t.base ?? 0), 0), s = e.reduce((e, t) => e + (t.variation ?? 0), 0), c = e.reduce((e, t) => e + (t.total ?? 0), 0), m =
|
|
2357
|
+
let a = e.reduce((e, t) => e + (t.base ?? 0), 0), s = e.reduce((e, t) => e + (t.variation ?? 0), 0), c = e.reduce((e, t) => e + (t.total ?? 0), 0), m = Jt - 20 - 26, _ = m - 6 * (e.length - 1), b = 20, x = e.map((e, t) => {
|
|
2354
2358
|
let n = Math.max(24, (e.total ?? 0) / (c || 1) * _), r = {
|
|
2355
2359
|
x: 100 - 110 / 2,
|
|
2356
2360
|
y: b,
|
|
@@ -2378,16 +2382,16 @@ function Wt({ items: e = [], "data-testid": t }) {
|
|
|
2378
2382
|
}, j, P = () => {
|
|
2379
2383
|
o.current++;
|
|
2380
2384
|
let t = o.current;
|
|
2381
|
-
n.clearRect(0, 0,
|
|
2385
|
+
n.clearRect(0, 0, qt, Jt), n.letterSpacing = f.letterSpacing;
|
|
2382
2386
|
let r = D(Math.min(t / 80, 1));
|
|
2383
2387
|
if (N(i.current, l.current), g.current = [], e.forEach((t, o) => {
|
|
2384
2388
|
let c = x[o], l = M(r, o, e.length, D), u = i.current.get(t.id) ?? 0;
|
|
2385
2389
|
if (l < .01) return;
|
|
2386
2390
|
let d = (t.base ?? 0) / (t.total || 1), f = (t.variation ?? 0) / (t.total || 1), p = c.h * d, m = c.h * f, h = c.y + p / 2, g = c.y + p + m / 2, _ = Math.max(2, (t.base ?? 0) / a * C), v = Math.max(2, (t.variation ?? 0) / s * w), y = O.y + e.slice(0, o).reduce((e, t) => e + (t.base ?? 0) / a * C, 0) + _ / 2, b = k.y + e.slice(0, o).reduce((e, t) => e + (t.variation ?? 0) / s * w, 0) + v / 2, S = u * .2 + .18;
|
|
2387
|
-
|
|
2391
|
+
Xt(n, c.x + 110, h, 420 - 110 / 2, y, _ * l, c.color, S), Xt(n, c.x + 110, g, 420 - 110 / 2, b, v * l, c.color, S * .75);
|
|
2388
2392
|
}), r > .3) {
|
|
2389
2393
|
let e = Math.min(1, (r - .3) / .7), t = A.y + a / c * m / 2, i = A.y + m - s / c * m / 2;
|
|
2390
|
-
|
|
2394
|
+
Xt(n, 475, O.cy, 720 - 110 / 2, t, C * e, u.blue, .25 * e), Xt(n, 475, k.cy, 720 - 110 / 2, i, w * e, u.amber, .22 * e);
|
|
2391
2395
|
}
|
|
2392
2396
|
if ([
|
|
2393
2397
|
"Contractors",
|
|
@@ -2399,7 +2403,7 @@ function Wt({ items: e = [], "data-testid": t }) {
|
|
|
2399
2403
|
420,
|
|
2400
2404
|
720
|
|
2401
2405
|
][t];
|
|
2402
|
-
n.font = f.font, n.fillStyle = f.color, n.textAlign = "center", n.fillText(e, r,
|
|
2406
|
+
n.font = f.font, n.fillStyle = f.color, n.textAlign = "center", n.fillText(e, r, Jt - 8);
|
|
2403
2407
|
}), e.forEach((t, a) => {
|
|
2404
2408
|
let o = x[a], s = M(r, a, e.length, D), c = i.current.get(t.id) ?? 0;
|
|
2405
2409
|
E(g.current, t.id, o.x, o.y, 110, o.h, {
|
|
@@ -2423,33 +2427,33 @@ function Wt({ items: e = [], "data-testid": t }) {
|
|
|
2423
2427
|
"data-testid": t,
|
|
2424
2428
|
style: {
|
|
2425
2429
|
position: "relative",
|
|
2426
|
-
width:
|
|
2427
|
-
height:
|
|
2430
|
+
width: qt,
|
|
2431
|
+
height: Jt
|
|
2428
2432
|
},
|
|
2429
2433
|
children: [/* @__PURE__ */ s("canvas", {
|
|
2430
2434
|
ref: r,
|
|
2431
2435
|
role: "img",
|
|
2432
2436
|
"aria-label": "Weekly report flow — base value and variations per contractor flowing to total commitment",
|
|
2433
2437
|
style: {
|
|
2434
|
-
width:
|
|
2435
|
-
height:
|
|
2438
|
+
width: qt,
|
|
2439
|
+
height: Jt,
|
|
2436
2440
|
display: "block"
|
|
2437
2441
|
}
|
|
2438
2442
|
}), /* @__PURE__ */ s(C, {
|
|
2439
2443
|
...m,
|
|
2440
|
-
parentW:
|
|
2441
|
-
parentH:
|
|
2444
|
+
parentW: qt,
|
|
2445
|
+
parentH: Jt
|
|
2442
2446
|
})]
|
|
2443
2447
|
});
|
|
2444
2448
|
}
|
|
2445
|
-
function
|
|
2449
|
+
function Xt(e, t, n, r, i, a, o, s) {
|
|
2446
2450
|
let c = (t + r) / 2;
|
|
2447
2451
|
e.beginPath(), e.moveTo(t, n - a / 2), e.bezierCurveTo(c, n - a / 2, c, i - a / 2, r, i - a / 2), e.lineTo(r, i + a / 2), e.bezierCurveTo(c, i + a / 2, c, n + a / 2, t, n + a / 2), e.closePath(), e.fillStyle = h(o, s), e.fill();
|
|
2448
2452
|
}
|
|
2449
2453
|
//#endregion
|
|
2450
2454
|
//#region src/components/visualizationRenderer/VisualizationRenderer.tsx
|
|
2451
|
-
function
|
|
2452
|
-
return e.type === "line" ? /* @__PURE__ */ s(
|
|
2455
|
+
function Zt({ config: e, className: t }) {
|
|
2456
|
+
return e.type === "line" ? /* @__PURE__ */ s(ze, {
|
|
2453
2457
|
rows: e.rows,
|
|
2454
2458
|
className: t
|
|
2455
2459
|
}) : e.type === "area" ? /* @__PURE__ */ s(te, {
|
|
@@ -2458,30 +2462,30 @@ function Kt({ config: e, className: t }) {
|
|
|
2458
2462
|
}) : e.type === "bar" ? /* @__PURE__ */ s(ie, {
|
|
2459
2463
|
rows: e.rows,
|
|
2460
2464
|
className: t
|
|
2461
|
-
}) : e.type === "pie" ? /* @__PURE__ */ s(
|
|
2465
|
+
}) : e.type === "pie" ? /* @__PURE__ */ s($e, {
|
|
2462
2466
|
rows: e.rows,
|
|
2463
2467
|
variant: "pie",
|
|
2464
2468
|
className: t
|
|
2465
|
-
}) : e.type === "donut" ? /* @__PURE__ */ s(
|
|
2469
|
+
}) : e.type === "donut" ? /* @__PURE__ */ s($e, {
|
|
2466
2470
|
rows: e.rows,
|
|
2467
2471
|
variant: "donut",
|
|
2468
2472
|
className: t
|
|
2469
|
-
}) : e.type === "sankey" ? /* @__PURE__ */ s(
|
|
2473
|
+
}) : e.type === "sankey" ? /* @__PURE__ */ s(ut, {
|
|
2470
2474
|
rows: e.rows,
|
|
2471
2475
|
className: t
|
|
2472
|
-
}) : e.type === "flow" ? /* @__PURE__ */ s(
|
|
2476
|
+
}) : e.type === "flow" ? /* @__PURE__ */ s(lt, {
|
|
2473
2477
|
selectedEntity: e.selectedEntity,
|
|
2474
2478
|
className: t
|
|
2475
|
-
}) : e.type === "trend" ? /* @__PURE__ */ s(
|
|
2479
|
+
}) : e.type === "trend" ? /* @__PURE__ */ s(Rt, {
|
|
2476
2480
|
points: e.points,
|
|
2477
2481
|
className: t
|
|
2478
|
-
}) : e.type === "mini-bars" ? /* @__PURE__ */ s(
|
|
2482
|
+
}) : e.type === "mini-bars" ? /* @__PURE__ */ s(He, {
|
|
2479
2483
|
rows: e.rows,
|
|
2480
2484
|
className: t
|
|
2481
|
-
}) : e.type === "stacked-horizontal-bar-chart" ? /* @__PURE__ */ s(
|
|
2485
|
+
}) : e.type === "stacked-horizontal-bar-chart" ? /* @__PURE__ */ s(Ae, { data: e.data }) : e.type === "multi-metric-constellation-chart" ? /* @__PURE__ */ s(Se, { items: e.items }) : e.type === "progress-race-chart" ? /* @__PURE__ */ s(fe, { items: e.items }) : e.type === "hub-and-spoke-radial-chart" ? /* @__PURE__ */ s(It, {
|
|
2482
2486
|
segments: e.segments,
|
|
2483
2487
|
title: e.title
|
|
2484
|
-
}) : e.type === "dot-matrix-chart" ? /* @__PURE__ */ s(
|
|
2488
|
+
}) : e.type === "dot-matrix-chart" ? /* @__PURE__ */ s(Re, { items: e.items }) : e.type === "ranked-card-leaderboard" ? /* @__PURE__ */ s(Le, { items: e.items }) : e.type === "proportional-band-chart" ? /* @__PURE__ */ s(Nt, { severities: e.severities }) : e.type === "radial-fan-tree-chart" ? /* @__PURE__ */ s(Ye, {
|
|
2485
2489
|
total: e.total,
|
|
2486
2490
|
totalLabel: e.totalLabel,
|
|
2487
2491
|
items: e.items
|
|
@@ -2489,47 +2493,47 @@ function Kt({ config: e, className: t }) {
|
|
|
2489
2493
|
value: e.value,
|
|
2490
2494
|
confirmed: e.confirmed,
|
|
2491
2495
|
total: e.total
|
|
2492
|
-
}) : e.type === "segmented-split-bar-chart" ? /* @__PURE__ */ s(
|
|
2496
|
+
}) : e.type === "segmented-split-bar-chart" ? /* @__PURE__ */ s(Kt, { items: e.items }) : e.type === "balance-scale-chart" ? /* @__PURE__ */ s(pt, {
|
|
2493
2497
|
left: e.left,
|
|
2494
2498
|
right: e.right
|
|
2495
|
-
}) : e.type === "area-line-chart" ? /* @__PURE__ */ s(
|
|
2499
|
+
}) : e.type === "area-line-chart" ? /* @__PURE__ */ s(ht, { points: e.points }) : e.type === "trend-view" ? /* @__PURE__ */ s(Et, { points: e.points }) : e.type === "weekly-flow" ? /* @__PURE__ */ s(Yt, { items: e.items }) : /* @__PURE__ */ s("div", {
|
|
2496
2500
|
className: "viz-empty",
|
|
2497
2501
|
children: "Visualization unavailable"
|
|
2498
2502
|
});
|
|
2499
2503
|
}
|
|
2500
2504
|
//#endregion
|
|
2501
2505
|
//#region src/utils/mounts.tsx
|
|
2502
|
-
var
|
|
2503
|
-
function
|
|
2506
|
+
var Qt = [];
|
|
2507
|
+
function $t(e) {
|
|
2504
2508
|
try {
|
|
2505
2509
|
return JSON.parse(decodeURIComponent(e));
|
|
2506
2510
|
} catch {
|
|
2507
2511
|
return null;
|
|
2508
2512
|
}
|
|
2509
2513
|
}
|
|
2510
|
-
function
|
|
2511
|
-
for (;
|
|
2512
|
-
let e =
|
|
2514
|
+
function en() {
|
|
2515
|
+
for (; Qt.length;) {
|
|
2516
|
+
let e = Qt.pop();
|
|
2513
2517
|
e && e.unmount();
|
|
2514
2518
|
}
|
|
2515
2519
|
}
|
|
2516
|
-
function
|
|
2517
|
-
|
|
2520
|
+
function tn() {
|
|
2521
|
+
en(), document.querySelectorAll("[data-d3-viz]").forEach((t) => {
|
|
2518
2522
|
let n = t.dataset.d3Viz;
|
|
2519
2523
|
if (!n) return;
|
|
2520
|
-
let r =
|
|
2524
|
+
let r = $t(n);
|
|
2521
2525
|
if (!r) return;
|
|
2522
2526
|
let i = e(t);
|
|
2523
|
-
|
|
2527
|
+
Qt.push(i), i.render(/* @__PURE__ */ s(Zt, { config: r }));
|
|
2524
2528
|
});
|
|
2525
2529
|
}
|
|
2526
|
-
function
|
|
2530
|
+
function nn(e) {
|
|
2527
2531
|
return encodeURIComponent(JSON.stringify(e));
|
|
2528
2532
|
}
|
|
2529
2533
|
//#endregion
|
|
2530
2534
|
//#region src/components/donutChart/DonutChart.tsx
|
|
2531
|
-
function
|
|
2532
|
-
return /* @__PURE__ */ s(
|
|
2535
|
+
function rn({ rows: e = [], className: t, colors: n }) {
|
|
2536
|
+
return /* @__PURE__ */ s($e, {
|
|
2533
2537
|
rows: e,
|
|
2534
2538
|
variant: "donut",
|
|
2535
2539
|
className: t,
|
|
@@ -2548,7 +2552,7 @@ var Z = {
|
|
|
2548
2552
|
red: u.red,
|
|
2549
2553
|
amber: u.amber,
|
|
2550
2554
|
green: u.green
|
|
2551
|
-
}, Q = "'Satoshi Variable', 'DM Sans', sans-serif",
|
|
2555
|
+
}, Q = "'Satoshi Variable', 'DM Sans', sans-serif", an = {
|
|
2552
2556
|
color: "#F7F7F7",
|
|
2553
2557
|
fontFamily: Q,
|
|
2554
2558
|
fontSize: 24,
|
|
@@ -2561,7 +2565,7 @@ var Z = {
|
|
|
2561
2565
|
fontWeight: 400,
|
|
2562
2566
|
lineHeight: "20px"
|
|
2563
2567
|
};
|
|
2564
|
-
function
|
|
2568
|
+
function on({ chips: e = [] }) {
|
|
2565
2569
|
return /* @__PURE__ */ s("div", {
|
|
2566
2570
|
style: {
|
|
2567
2571
|
display: "flex",
|
|
@@ -2583,7 +2587,7 @@ function en({ chips: e = [] }) {
|
|
|
2583
2587
|
},
|
|
2584
2588
|
children: [/* @__PURE__ */ s("span", {
|
|
2585
2589
|
style: {
|
|
2586
|
-
|
|
2590
|
+
...an,
|
|
2587
2591
|
color: e.color ?? Z.t1
|
|
2588
2592
|
},
|
|
2589
2593
|
children: e.value
|
|
@@ -2597,7 +2601,7 @@ function en({ chips: e = [] }) {
|
|
|
2597
2601
|
}, t))
|
|
2598
2602
|
});
|
|
2599
2603
|
}
|
|
2600
|
-
function
|
|
2604
|
+
function sn({ items: e = [] }) {
|
|
2601
2605
|
return /* @__PURE__ */ s("div", {
|
|
2602
2606
|
style: {
|
|
2603
2607
|
display: "flex",
|
|
@@ -2620,7 +2624,7 @@ function tn({ items: e = [] }) {
|
|
|
2620
2624
|
},
|
|
2621
2625
|
children: [/* @__PURE__ */ s("div", {
|
|
2622
2626
|
style: {
|
|
2623
|
-
|
|
2627
|
+
...an,
|
|
2624
2628
|
color: e.color ?? Z.t1
|
|
2625
2629
|
},
|
|
2626
2630
|
children: e.value
|
|
@@ -2631,7 +2635,7 @@ function tn({ items: e = [] }) {
|
|
|
2631
2635
|
}, t))
|
|
2632
2636
|
});
|
|
2633
2637
|
}
|
|
2634
|
-
function
|
|
2638
|
+
function cn({ items: e = [] }) {
|
|
2635
2639
|
return /* @__PURE__ */ s("div", {
|
|
2636
2640
|
style: {
|
|
2637
2641
|
display: "flex",
|
|
@@ -2663,7 +2667,7 @@ function nn({ items: e = [] }) {
|
|
|
2663
2667
|
}),
|
|
2664
2668
|
/* @__PURE__ */ s("span", {
|
|
2665
2669
|
style: {
|
|
2666
|
-
|
|
2670
|
+
...an,
|
|
2667
2671
|
fontSize: 18,
|
|
2668
2672
|
color: e.color ?? Z.t1,
|
|
2669
2673
|
minWidth: 70,
|
|
@@ -2682,7 +2686,7 @@ function nn({ items: e = [] }) {
|
|
|
2682
2686
|
}, t))
|
|
2683
2687
|
});
|
|
2684
2688
|
}
|
|
2685
|
-
function
|
|
2689
|
+
function ln({ items: e = [] }) {
|
|
2686
2690
|
return /* @__PURE__ */ s("div", {
|
|
2687
2691
|
style: {
|
|
2688
2692
|
display: "flex",
|
|
@@ -2704,7 +2708,7 @@ function rn({ items: e = [] }) {
|
|
|
2704
2708
|
},
|
|
2705
2709
|
children: [/* @__PURE__ */ s("div", {
|
|
2706
2710
|
style: {
|
|
2707
|
-
|
|
2711
|
+
...an,
|
|
2708
2712
|
color: e.color ?? Z.t1
|
|
2709
2713
|
},
|
|
2710
2714
|
children: e.value
|
|
@@ -2715,12 +2719,12 @@ function rn({ items: e = [] }) {
|
|
|
2715
2719
|
}, t))
|
|
2716
2720
|
});
|
|
2717
2721
|
}
|
|
2718
|
-
var
|
|
2722
|
+
var un = {
|
|
2719
2723
|
red: Z.red,
|
|
2720
2724
|
amber: Z.amber,
|
|
2721
2725
|
green: Z.green
|
|
2722
2726
|
};
|
|
2723
|
-
function
|
|
2727
|
+
function dn({ items: e = [] }) {
|
|
2724
2728
|
return /* @__PURE__ */ s("div", {
|
|
2725
2729
|
style: {
|
|
2726
2730
|
display: "flex",
|
|
@@ -2728,7 +2732,7 @@ function on({ items: e = [] }) {
|
|
|
2728
2732
|
gap: 5
|
|
2729
2733
|
},
|
|
2730
2734
|
children: e.map((e, t) => {
|
|
2731
|
-
let n =
|
|
2735
|
+
let n = un[e.severity];
|
|
2732
2736
|
return /* @__PURE__ */ c("div", {
|
|
2733
2737
|
style: {
|
|
2734
2738
|
display: "flex",
|
|
@@ -2753,7 +2757,7 @@ function on({ items: e = [] }) {
|
|
|
2753
2757
|
})
|
|
2754
2758
|
});
|
|
2755
2759
|
}
|
|
2756
|
-
function
|
|
2760
|
+
function fn({ min: e, max: t, unit: n, dots: r = [], chips: i = [] }) {
|
|
2757
2761
|
let a = t - e;
|
|
2758
2762
|
return /* @__PURE__ */ c("div", { children: [/* @__PURE__ */ c("div", {
|
|
2759
2763
|
style: {
|
|
@@ -2863,9 +2867,9 @@ function sn({ min: e, max: t, unit: n, dots: r = [], chips: i = [] }) {
|
|
|
2863
2867
|
}, r);
|
|
2864
2868
|
})
|
|
2865
2869
|
]
|
|
2866
|
-
}), i && i.length > 0 && /* @__PURE__ */ s(
|
|
2870
|
+
}), i && i.length > 0 && /* @__PURE__ */ s(on, { chips: i })] });
|
|
2867
2871
|
}
|
|
2868
|
-
function
|
|
2872
|
+
function pn({ leftPct: e, leftLabel: t, leftValue: n, leftColor: r, rightPct: i, rightLabel: a, rightValue: o, rightColor: l, chips: d }) {
|
|
2869
2873
|
let f = r ?? u.blue, p = l ?? u.blue;
|
|
2870
2874
|
return /* @__PURE__ */ c("div", { children: [
|
|
2871
2875
|
/* @__PURE__ */ c("div", {
|
|
@@ -2959,10 +2963,10 @@ function cn({ leftPct: e, leftLabel: t, leftValue: n, leftColor: r, rightPct: i,
|
|
|
2959
2963
|
})
|
|
2960
2964
|
})]
|
|
2961
2965
|
}),
|
|
2962
|
-
d && d.length > 0 && /* @__PURE__ */ s(
|
|
2966
|
+
d && d.length > 0 && /* @__PURE__ */ s(on, { chips: d })
|
|
2963
2967
|
] });
|
|
2964
2968
|
}
|
|
2965
|
-
function
|
|
2969
|
+
function mn({ pct: e, label: t, color: n, chips: r }) {
|
|
2966
2970
|
let i = n ?? u.blue, a = 2 * Math.PI * 30, o = a * (1 - e / 100);
|
|
2967
2971
|
return /* @__PURE__ */ c("div", {
|
|
2968
2972
|
style: {
|
|
@@ -3043,7 +3047,7 @@ function ln({ pct: e, label: t, color: n, chips: r }) {
|
|
|
3043
3047
|
},
|
|
3044
3048
|
children: [/* @__PURE__ */ s("span", {
|
|
3045
3049
|
style: {
|
|
3046
|
-
|
|
3050
|
+
...an,
|
|
3047
3051
|
color: e.color ?? Z.t1
|
|
3048
3052
|
},
|
|
3049
3053
|
children: e.value
|
|
@@ -3056,16 +3060,16 @@ function ln({ pct: e, label: t, color: n, chips: r }) {
|
|
|
3056
3060
|
})]
|
|
3057
3061
|
});
|
|
3058
3062
|
}
|
|
3059
|
-
var
|
|
3063
|
+
var hn = {
|
|
3060
3064
|
green: "#34D39918",
|
|
3061
3065
|
amber: "#FBBF2418",
|
|
3062
3066
|
red: "#F0606018"
|
|
3063
|
-
},
|
|
3067
|
+
}, gn = {
|
|
3064
3068
|
green: "#34D399",
|
|
3065
3069
|
amber: "#FBBF24",
|
|
3066
3070
|
red: "#F06060"
|
|
3067
3071
|
};
|
|
3068
|
-
function
|
|
3072
|
+
function _n({ items: e = [] }) {
|
|
3069
3073
|
return /* @__PURE__ */ s("div", {
|
|
3070
3074
|
style: {
|
|
3071
3075
|
display: "flex",
|
|
@@ -3129,8 +3133,8 @@ function fn({ items: e = [] }) {
|
|
|
3129
3133
|
style: {
|
|
3130
3134
|
fontSize: 18,
|
|
3131
3135
|
fontWeight: 500,
|
|
3132
|
-
color:
|
|
3133
|
-
background:
|
|
3136
|
+
color: gn[e.badgeSeverity],
|
|
3137
|
+
background: hn[e.badgeSeverity],
|
|
3134
3138
|
padding: "2px 7px",
|
|
3135
3139
|
borderRadius: 4,
|
|
3136
3140
|
fontFamily: Q,
|
|
@@ -3153,12 +3157,12 @@ function fn({ items: e = [] }) {
|
|
|
3153
3157
|
}, t))
|
|
3154
3158
|
});
|
|
3155
3159
|
}
|
|
3156
|
-
var
|
|
3160
|
+
var vn = {
|
|
3157
3161
|
red: Z.red,
|
|
3158
3162
|
amber: Z.amber,
|
|
3159
3163
|
green: Z.green
|
|
3160
3164
|
};
|
|
3161
|
-
function
|
|
3165
|
+
function yn({ items: e = [] }) {
|
|
3162
3166
|
return /* @__PURE__ */ s("div", {
|
|
3163
3167
|
style: {
|
|
3164
3168
|
display: "flex",
|
|
@@ -3166,7 +3170,7 @@ function mn({ items: e = [] }) {
|
|
|
3166
3170
|
gap: 5
|
|
3167
3171
|
},
|
|
3168
3172
|
children: e.map((e, t) => {
|
|
3169
|
-
let n =
|
|
3173
|
+
let n = vn[e.severity];
|
|
3170
3174
|
return /* @__PURE__ */ c("div", {
|
|
3171
3175
|
style: {
|
|
3172
3176
|
display: "flex",
|
|
@@ -3218,7 +3222,7 @@ function mn({ items: e = [] }) {
|
|
|
3218
3222
|
})
|
|
3219
3223
|
});
|
|
3220
3224
|
}
|
|
3221
|
-
function
|
|
3225
|
+
function bn({ columns: e = [], rows: t = [] }) {
|
|
3222
3226
|
return /* @__PURE__ */ c("div", {
|
|
3223
3227
|
style: {
|
|
3224
3228
|
display: "flex",
|
|
@@ -3281,21 +3285,21 @@ function hn({ columns: e = [], rows: t = [] }) {
|
|
|
3281
3285
|
}, t))]
|
|
3282
3286
|
});
|
|
3283
3287
|
}
|
|
3284
|
-
function
|
|
3288
|
+
function xn({ block: e }) {
|
|
3285
3289
|
if (!e) return null;
|
|
3286
3290
|
switch (e.type) {
|
|
3287
|
-
case "stats": return /* @__PURE__ */ s(
|
|
3288
|
-
case "ranked": return /* @__PURE__ */ s(
|
|
3289
|
-
case "chips": return /* @__PURE__ */ s(
|
|
3290
|
-
case "badges": return /* @__PURE__ */ s(
|
|
3291
|
-
case "dot-strip": return /* @__PURE__ */ s(
|
|
3291
|
+
case "stats": return /* @__PURE__ */ s(sn, { items: e.items });
|
|
3292
|
+
case "ranked": return /* @__PURE__ */ s(cn, { items: e.items });
|
|
3293
|
+
case "chips": return /* @__PURE__ */ s(ln, { items: e.items });
|
|
3294
|
+
case "badges": return /* @__PURE__ */ s(dn, { items: e.items });
|
|
3295
|
+
case "dot-strip": return /* @__PURE__ */ s(fn, {
|
|
3292
3296
|
min: e.min,
|
|
3293
3297
|
max: e.max,
|
|
3294
3298
|
unit: e.unit,
|
|
3295
3299
|
dots: e.dots,
|
|
3296
3300
|
chips: e.chips
|
|
3297
3301
|
});
|
|
3298
|
-
case "proportion": return /* @__PURE__ */ s(
|
|
3302
|
+
case "proportion": return /* @__PURE__ */ s(pn, {
|
|
3299
3303
|
leftPct: e.leftPct,
|
|
3300
3304
|
leftLabel: e.leftLabel,
|
|
3301
3305
|
leftValue: e.leftValue,
|
|
@@ -3306,15 +3310,15 @@ function gn({ block: e }) {
|
|
|
3306
3310
|
rightColor: e.rightColor,
|
|
3307
3311
|
chips: e.chips
|
|
3308
3312
|
});
|
|
3309
|
-
case "ring": return /* @__PURE__ */ s(
|
|
3313
|
+
case "ring": return /* @__PURE__ */ s(mn, {
|
|
3310
3314
|
pct: e.pct,
|
|
3311
3315
|
label: e.label,
|
|
3312
3316
|
color: e.color,
|
|
3313
3317
|
chips: e.chips
|
|
3314
3318
|
});
|
|
3315
|
-
case "scorecard-rows": return /* @__PURE__ */ s(
|
|
3316
|
-
case "flags-list": return /* @__PURE__ */ s(
|
|
3317
|
-
case "comparison-rows": return /* @__PURE__ */ s(
|
|
3319
|
+
case "scorecard-rows": return /* @__PURE__ */ s(_n, { items: e.items });
|
|
3320
|
+
case "flags-list": return /* @__PURE__ */ s(yn, { items: e.items });
|
|
3321
|
+
case "comparison-rows": return /* @__PURE__ */ s(bn, {
|
|
3318
3322
|
columns: e.columns,
|
|
3319
3323
|
rows: e.rows
|
|
3320
3324
|
});
|
|
@@ -3323,14 +3327,14 @@ function gn({ block: e }) {
|
|
|
3323
3327
|
}
|
|
3324
3328
|
//#endregion
|
|
3325
3329
|
//#region src/components/keyHighlights/Takeaway.tsx
|
|
3326
|
-
var
|
|
3330
|
+
var Sn = "'Satoshi Variable', 'DM Sans', sans-serif", Cn = {
|
|
3327
3331
|
color: "#C2C2C2",
|
|
3328
|
-
fontFamily:
|
|
3332
|
+
fontFamily: Sn,
|
|
3329
3333
|
fontSize: 18,
|
|
3330
3334
|
fontWeight: 400,
|
|
3331
3335
|
lineHeight: 1.65
|
|
3332
3336
|
};
|
|
3333
|
-
function
|
|
3337
|
+
function wn({ text: e }) {
|
|
3334
3338
|
return /* @__PURE__ */ c("div", {
|
|
3335
3339
|
style: {
|
|
3336
3340
|
padding: "8px 0px",
|
|
@@ -3343,16 +3347,16 @@ function yn({ text: e }) {
|
|
|
3343
3347
|
fontSize: 18,
|
|
3344
3348
|
fontWeight: 500,
|
|
3345
3349
|
color: u.t1,
|
|
3346
|
-
fontFamily:
|
|
3350
|
+
fontFamily: Sn,
|
|
3347
3351
|
lineHeight: 1.65,
|
|
3348
3352
|
marginRight: 8
|
|
3349
3353
|
},
|
|
3350
3354
|
children: "Takeaway"
|
|
3351
3355
|
}), /* @__PURE__ */ s("span", {
|
|
3352
|
-
style: { ...
|
|
3356
|
+
style: { ...Cn },
|
|
3353
3357
|
children: e
|
|
3354
3358
|
})]
|
|
3355
3359
|
});
|
|
3356
3360
|
}
|
|
3357
3361
|
//#endregion
|
|
3358
|
-
export { te as AreaChart, ie as BarChart, l as ChartFrame,
|
|
3362
|
+
export { te as AreaChart, ie as BarChart, l as ChartFrame, rn as DonutChart, xn as KeyHighlights, ze as LineChart, He as MiniBars, $e as PieChart, lt as ProcessSankey, ut as RankingSankey, tt as SankeySvg, ee as SeriesChart, wn as Takeaway, Et as Trend, Rt as TrendChart, Zt as VisualizationRenderer, en as cleanupVisualizationMounts, tn as hydrateVisualizationMounts, nn as serializeVisualizationConfig };
|