@shtabapp/ui-kit 1.74.0 → 1.75.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/CHANGELOG.md +6 -0
- package/dist/SChartBar-BvytQ-2z.js +293 -0
- package/dist/SChartBar-BzCeNCsi.cjs +1 -0
- package/dist/SChartBurnup-BeQWgnGT.js +261 -0
- package/dist/SChartBurnup-joKIDLFb.cjs +1 -0
- package/dist/SChartHorizontalBar-C40Yroue.js +176 -0
- package/dist/SChartHorizontalBar-Dwln3uuE.cjs +1 -0
- package/dist/SChartLegend-D1gPKGm0.cjs +1 -0
- package/dist/SChartLegend-dDqLhvIj.js +88 -0
- package/dist/{SChartLine-v0tkmnN6.js → SChartLine-BV8Ytso5.js} +36 -36
- package/dist/{SChartLine-3l507dBg.cjs → SChartLine-DeJjaBmo.cjs} +1 -1
- package/dist/SChartMultiLine-7_HcvVEQ.js +279 -0
- package/dist/SChartMultiLine-Cl9Pf3Wp.cjs +1 -0
- package/dist/SChartPie-BiLoxutQ.js +267 -0
- package/dist/SChartPie-DccW5J0b.cjs +1 -0
- package/dist/{SChartProgress-9Zzy7E8K.cjs → SChartProgress-Cpdkad6Q.cjs} +1 -1
- package/dist/{SChartProgress-DUgSOdv7.js → SChartProgress-DSxJqRA0.js} +27 -27
- package/dist/{SChartStackedArea-Blpqa23h.js → SChartStackedArea-B28offwE.js} +44 -44
- package/dist/{SChartStackedArea-C3MezV9k.cjs → SChartStackedArea-Ce7xyhp1.cjs} +1 -1
- package/dist/{SChartStackedBar-CCxEXw1H.js → SChartStackedBar-C77FlKGS.js} +55 -55
- package/dist/{SChartStackedBar-CJ-UdOfv.cjs → SChartStackedBar-CqUDrFJ3.cjs} +1 -1
- package/dist/{STable-Ci_3UqBz.cjs → STable-BXVhLjSQ.cjs} +1 -1
- package/dist/{STable-CToIFCiU.js → STable-G2k-tI4g.js} +37 -36
- package/dist/applyChartHighlightedYTick-BHVwiljn.cjs +1 -0
- package/dist/applyChartHighlightedYTick-DmsstRVM.js +17 -0
- package/dist/buildMultiLineChartScales-Di-yTvEB.js +41 -0
- package/dist/buildMultiLineChartScales-lVP6h9H4.cjs +1 -0
- package/dist/components/SChartBar/SChartBar.types.d.ts +33 -4
- package/dist/components/SChartBar/SChartBar.types.d.ts.map +1 -1
- package/dist/components/SChartBar/SChartBar.vue.d.ts.map +1 -1
- package/dist/components/SChartBar/index.d.ts +1 -1
- package/dist/components/SChartBar/index.d.ts.map +1 -1
- package/dist/components/SChartBar/utils/buildBarChartConfig.d.ts +8 -2
- package/dist/components/SChartBar/utils/buildBarChartConfig.d.ts.map +1 -1
- package/dist/components/SChartBar/utils/createBarTargetLinePlugin.d.ts.map +1 -1
- package/dist/components/SChartBar/utils/createBarValueLabelPlugin.d.ts +7 -0
- package/dist/components/SChartBar/utils/createBarValueLabelPlugin.d.ts.map +1 -0
- package/dist/components/SChartBar/utils/demoBarSeries.d.ts +7 -1
- package/dist/components/SChartBar/utils/demoBarSeries.d.ts.map +1 -1
- package/dist/components/SChartBurnup/SChartBurnup.types.d.ts +8 -1
- package/dist/components/SChartBurnup/SChartBurnup.types.d.ts.map +1 -1
- package/dist/components/SChartBurnup/utils/buildBurnupChartConfig.d.ts.map +1 -1
- package/dist/components/SChartBurnup/utils/demoBurnupPoints.d.ts +1 -0
- package/dist/components/SChartBurnup/utils/demoBurnupPoints.d.ts.map +1 -1
- package/dist/components/SChartLegend/SChartLegend.types.d.ts +17 -0
- package/dist/components/SChartLegend/SChartLegend.types.d.ts.map +1 -1
- package/dist/components/SChartLegend/SChartLegend.vue.d.ts +3 -1
- package/dist/components/SChartLegend/SChartLegend.vue.d.ts.map +1 -1
- package/dist/components/SChartLegend/index.d.ts +1 -0
- package/dist/components/SChartLegend/index.d.ts.map +1 -1
- package/dist/components/SChartMultiLine/SChartMultiLine.types.d.ts +14 -2
- package/dist/components/SChartMultiLine/SChartMultiLine.types.d.ts.map +1 -1
- package/dist/components/SChartMultiLine/SChartMultiLine.vue.d.ts +3 -1
- package/dist/components/SChartMultiLine/SChartMultiLine.vue.d.ts.map +1 -1
- package/dist/components/SChartMultiLine/index.d.ts +1 -1
- package/dist/components/SChartMultiLine/index.d.ts.map +1 -1
- package/dist/components/SChartMultiLine/utils/buildMultiLineChartConfig.d.ts +9 -2
- package/dist/components/SChartMultiLine/utils/buildMultiLineChartConfig.d.ts.map +1 -1
- package/dist/components/SChartMultiLine/utils/demoMultiLineSeries.d.ts +4 -1
- package/dist/components/SChartMultiLine/utils/demoMultiLineSeries.d.ts.map +1 -1
- package/dist/components/SChartPie/SChartPie.types.d.ts +27 -1
- package/dist/components/SChartPie/SChartPie.types.d.ts.map +1 -1
- package/dist/components/SChartPie/SChartPie.vue.d.ts +16 -2
- package/dist/components/SChartPie/SChartPie.vue.d.ts.map +1 -1
- package/dist/components/SChartPie/index.d.ts +2 -1
- package/dist/components/SChartPie/index.d.ts.map +1 -1
- package/dist/components/SChartPie/utils/buildPieChartConfig.d.ts +3 -1
- package/dist/components/SChartPie/utils/buildPieChartConfig.d.ts.map +1 -1
- package/dist/components/SChartPie/utils/demoPieSlices.d.ts +1 -0
- package/dist/components/SChartPie/utils/demoPieSlices.d.ts.map +1 -1
- package/dist/components/SChartSegmentedBar/SChartSegmentedBar.types.d.ts +9 -0
- package/dist/components/SChartSegmentedBar/SChartSegmentedBar.types.d.ts.map +1 -1
- package/dist/components/SChartSegmentedBar/SChartSegmentedBar.vue.d.ts +14 -2
- package/dist/components/SChartSegmentedBar/SChartSegmentedBar.vue.d.ts.map +1 -1
- package/dist/components/SChartSegmentedBar/utils/buildSegmentedBarChartConfig.d.ts +4 -1
- package/dist/components/SChartSegmentedBar/utils/buildSegmentedBarChartConfig.d.ts.map +1 -1
- package/dist/components/SChartSegmentedBar/utils/createSegmentedBarBadgePlugin.d.ts.map +1 -1
- package/dist/components/SList/utils/resolveListItemFields.d.ts +1 -1
- package/dist/components/SList/utils/resolveListItemFields.d.ts.map +1 -1
- package/dist/components/SRoadmap/SRoadmap.types.d.ts +47 -0
- package/dist/components/SRoadmap/SRoadmap.types.d.ts.map +1 -0
- package/dist/components/SRoadmap/SRoadmap.vue.d.ts +21 -0
- package/dist/components/SRoadmap/SRoadmap.vue.d.ts.map +1 -0
- package/dist/components/SRoadmap/index.d.ts +4 -0
- package/dist/components/SRoadmap/index.d.ts.map +1 -0
- package/dist/components/SRoadmap/utils/buildRoadmapRows.d.ts +19 -0
- package/dist/components/SRoadmap/utils/buildRoadmapRows.d.ts.map +1 -0
- package/dist/components/SRoadmap/utils/demoRoadmapItems.d.ts +5 -0
- package/dist/components/SRoadmap/utils/demoRoadmapItems.d.ts.map +1 -0
- package/dist/components/SRoadmap/utils/roadmapDate.d.ts +16 -0
- package/dist/components/SRoadmap/utils/roadmapDate.d.ts.map +1 -0
- package/dist/components/STable/STable.vue.d.ts.map +1 -1
- package/dist/components/STable/utils/useTableRowHydration.d.ts +3 -1
- package/dist/components/STable/utils/useTableRowHydration.d.ts.map +1 -1
- package/dist/composables/useChartInteractivity.d.ts +2 -1
- package/dist/composables/useChartInteractivity.d.ts.map +1 -1
- package/dist/{createChartCrosshairPlugin-B4e8d8OF.cjs → createChartCrosshairPlugin-BTPv09h4.cjs} +1 -1
- package/dist/{createChartCrosshairPlugin-C2NUAO5s.js → createChartCrosshairPlugin-EqMlaexu.js} +2 -2
- package/dist/createChartMarkersPlugin-BKxLg4pL.cjs +1 -0
- package/dist/{createChartMarkersPlugin-DkXituwE.js → createChartMarkersPlugin-DPvfZp_e.js} +11 -11
- package/dist/entries/chart-bar.cjs +1 -1
- package/dist/entries/chart-bar.js +1 -1
- package/dist/entries/chart-burnup.cjs +1 -1
- package/dist/entries/chart-burnup.js +1 -1
- package/dist/entries/chart-horizontal-bar.cjs +1 -1
- package/dist/entries/chart-horizontal-bar.js +1 -1
- package/dist/entries/chart-line.cjs +1 -1
- package/dist/entries/chart-line.js +1 -1
- package/dist/entries/chart-multi-line.cjs +1 -1
- package/dist/entries/chart-multi-line.js +1 -1
- package/dist/entries/chart-pie.cjs +1 -1
- package/dist/entries/chart-pie.d.ts +2 -2
- package/dist/entries/chart-pie.d.ts.map +1 -1
- package/dist/entries/chart-pie.js +2 -2
- package/dist/entries/chart-progress.cjs +1 -1
- package/dist/entries/chart-progress.js +1 -1
- package/dist/entries/chart-stacked-area.cjs +1 -1
- package/dist/entries/chart-stacked-area.js +1 -1
- package/dist/entries/chart-stacked-bar.cjs +1 -1
- package/dist/entries/chart-stacked-bar.js +1 -1
- package/dist/entries/table.cjs +1 -1
- package/dist/entries/table.js +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.d.ts +7 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +569 -303
- package/dist/resolveBarStackedSeriesColor-CjwUxrUx.js +11 -0
- package/dist/resolveBarStackedSeriesColor-Czkj5bJY.cjs +1 -0
- package/dist/resolveCssColorValue-BFMo08-w.cjs +1 -0
- package/dist/resolveCssColorValue-DH_SEZj4.js +8 -0
- package/dist/resolveSeriesPaletteColor-BepW1gdW.cjs +1 -0
- package/dist/{resolveSeriesPaletteColor-B7wHDj1L.js → resolveSeriesPaletteColor-DoPeNP_F.js} +3 -2
- package/dist/{resolveStackedChartContext-DxJNWqwE.js → resolveStackedChartContext-BbCzct6O.js} +5 -5
- package/dist/{resolveStackedChartContext-Br3N7ISo.cjs → resolveStackedChartContext-D4tuSA6Z.cjs} +1 -1
- package/dist/splitChartAxisLabel-D-IFyucJ.js +4 -0
- package/dist/splitChartAxisLabel-DAmQOJn6.cjs +2 -0
- package/dist/uikit-components.css +1 -1
- package/dist/useChartInteractivity-CaZ37kX-.cjs +1 -0
- package/dist/{useChartInteractivity-Cl06JL4l.js → useChartInteractivity-DygkiRA1.js} +178 -144
- package/dist/utils/chart/burnup/createBurnupTooltipCallbacks.d.ts +3 -1
- package/dist/utils/chart/burnup/createBurnupTooltipCallbacks.d.ts.map +1 -1
- package/dist/utils/chart/chart.types.d.ts +10 -0
- package/dist/utils/chart/chart.types.d.ts.map +1 -1
- package/dist/utils/chart/core/applyChartHighlightedYTick.d.ts +19 -0
- package/dist/utils/chart/core/applyChartHighlightedYTick.d.ts.map +1 -0
- package/dist/utils/chart/core/chartCssVariables.d.ts +3 -0
- package/dist/utils/chart/core/chartCssVariables.d.ts.map +1 -1
- package/dist/utils/chart/core/chartInteractivity.d.ts +9 -2
- package/dist/utils/chart/core/chartInteractivity.d.ts.map +1 -1
- package/dist/utils/chart/core/createChartMarkersPlugin.d.ts.map +1 -1
- package/dist/utils/chart/core/resolveSeriesPaletteColor.d.ts.map +1 -1
- package/dist/utils/chart/core/splitChartAxisLabel.d.ts +2 -0
- package/dist/utils/chart/core/splitChartAxisLabel.d.ts.map +1 -0
- package/dist/utils/chart/css/resolveCssColorValue.d.ts +2 -0
- package/dist/utils/chart/css/resolveCssColorValue.d.ts.map +1 -0
- package/dist/utils/chart/horizontalBar/resolveHorizontalBarColor.d.ts.map +1 -1
- package/dist/utils/chart/index.d.ts +4 -1
- package/dist/utils/chart/index.d.ts.map +1 -1
- package/dist/utils/chart/multiLine/buildMultiLineChartScales.d.ts +119 -14
- package/dist/utils/chart/multiLine/buildMultiLineChartScales.d.ts.map +1 -1
- package/dist/utils/chart/multiLine/createMultiLineTooltipCallbacks.d.ts +7 -2
- package/dist/utils/chart/multiLine/createMultiLineTooltipCallbacks.d.ts.map +1 -1
- package/package.json +3 -3
- package/dist/SChartBar-CUAibXox.js +0 -215
- package/dist/SChartBar-xzw8oxXl.cjs +0 -1
- package/dist/SChartBurnup-C5Z7UDi-.js +0 -250
- package/dist/SChartBurnup-CWSJUoA_.cjs +0 -1
- package/dist/SChartHorizontalBar-0RpJa5EJ.cjs +0 -1
- package/dist/SChartHorizontalBar-B9SWFvdN.js +0 -175
- package/dist/SChartLegend-DGtjd6zV.cjs +0 -1
- package/dist/SChartLegend-oZoF8XK7.js +0 -42
- package/dist/SChartMultiLine-CG6dKmWm.js +0 -244
- package/dist/SChartMultiLine-vz7JdyA3.cjs +0 -1
- package/dist/SChartPie-0ugeo2fO.js +0 -182
- package/dist/SChartPie-QpnxLQYv.cjs +0 -1
- package/dist/buildMultiLineChartScales-7mcIfRVG.cjs +0 -1
- package/dist/buildMultiLineChartScales-CFZ8YVeJ.js +0 -19
- package/dist/createChartMarkersPlugin-Cg1yGzxW.cjs +0 -1
- package/dist/resolveBarStackedSeriesColor-DM7Ax0-s.js +0 -11
- package/dist/resolveBarStackedSeriesColor-z3NP5vAS.cjs +0 -1
- package/dist/resolveSeriesPaletteColor-D0XlU5vT.cjs +0 -1
- package/dist/useChartInteractivity-LbJiqlvI.cjs +0 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,9 @@
|
|
|
1
|
+
## [@shtabapp/ui-kit-v1.75.0](https://gitlab.com/mstikharev/shtab-ui-kit/compare/@shtabapp/ui-kit@1.74.0...@shtabapp/ui-kit@1.75.0) (2026-10-16)
|
|
2
|
+
|
|
3
|
+
### Features
|
|
4
|
+
|
|
5
|
+
- **charts:** виджеты отчёта по проекту — pie, segmented bar, bar и SRoadmap ([c9f5fe3](https://gitlab.com/mstikharev/shtab-ui-kit/commit/c9f5fe3ec36b2f8ec277aeed22227171c7e5c64c))
|
|
6
|
+
|
|
1
7
|
## [@shtabapp/ui-kit-v1.74.0](https://gitlab.com/mstikharev/shtab-ui-kit/compare/@shtabapp/ui-kit@1.73.0...@shtabapp/ui-kit@1.74.0) (2026-09-13)
|
|
2
8
|
|
|
3
9
|
### Features
|
|
@@ -0,0 +1,293 @@
|
|
|
1
|
+
import { T as e, b as t, d as n, f as r, i, n as a, r as o, t as s, u as c, x as l } from "./useChartInteractivity-DygkiRA1.js";
|
|
2
|
+
import { t as u } from "./SChartLegend-dDqLhvIj.js";
|
|
3
|
+
import { t as d } from "./resolveCssColorValue-DH_SEZj4.js";
|
|
4
|
+
import { t as f } from "./buildCartesianChartScales-EofFq3ry.js";
|
|
5
|
+
import { t as p } from "./resolveChartValueRange-DZybnmaX.js";
|
|
6
|
+
import { t as m } from "./resolveBarStackedSeriesColor-CjwUxrUx.js";
|
|
7
|
+
import { t as h } from "./applyChartHighlightedYTick-DmsstRVM.js";
|
|
8
|
+
import { t as g } from "./splitChartAxisLabel-D-IFyucJ.js";
|
|
9
|
+
import { n as _, t as v } from "./buildChartSeriesPoints-BTyOpkin.js";
|
|
10
|
+
import { t as y } from "./useHasListener-RSjlUyqH.js";
|
|
11
|
+
import { computed as b, createBlock as x, createCommentVNode as S, createElementBlock as C, createElementVNode as w, createVNode as T, defineComponent as E, normalizeClass as D, openBlock as O, unref as k, useTemplateRef as A, withCtx as j } from "vue";
|
|
12
|
+
//#region src/components/SChartBar/utils/createBarTargetLinePlugin.ts
|
|
13
|
+
var M = 1, N = [4, 4], P = "500 10px var(--s-ui-font-family-label)", F = 4, I = (e) => e.length > 0 && new Set(e).size === 1, L = ({ target: n, colorHostElement: r, rightAxisId: i }) => ({
|
|
14
|
+
id: "barTargetLine",
|
|
15
|
+
afterDatasetsDraw(a) {
|
|
16
|
+
if (!n || n.values.length === 0) return;
|
|
17
|
+
let o = n.axis === "right" ? i : "y", s = a.scales[o], c = a.scales.x;
|
|
18
|
+
if (!s || !c) return;
|
|
19
|
+
let { ctx: l, chartArea: u } = a, f = n.color ? d(n.color, r) : t(e.grid, r);
|
|
20
|
+
l.save(), l.strokeStyle = f, l.lineWidth = M, l.setLineDash(n.solid ? [] : N);
|
|
21
|
+
let [p] = n.values;
|
|
22
|
+
if (p !== void 0 && I(n.values)) {
|
|
23
|
+
let e = s.getPixelForValue(p);
|
|
24
|
+
l.beginPath(), l.moveTo(u.left, e), l.lineTo(u.right, e), l.stroke(), n.label && (l.setLineDash([]), l.fillStyle = f, l.font = P, l.textAlign = "left", l.fillText(n.label, u.left, e - F));
|
|
25
|
+
} else {
|
|
26
|
+
let e = (u.right - u.left) / n.values.length;
|
|
27
|
+
n.values.forEach((t, n) => {
|
|
28
|
+
if (t <= 0) return;
|
|
29
|
+
let r = s.getPixelForValue(t);
|
|
30
|
+
l.beginPath(), l.moveTo(u.left + e * n, r), l.lineTo(u.left + e * (n + 1), r), l.stroke();
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
l.restore();
|
|
34
|
+
}
|
|
35
|
+
}), R = 4, z = 10, B = 500, V = "sans-serif", H = (e) => typeof window > "u" ? `${B} ${z}px ${V}` : `${B} ${z}px ${getComputedStyle(e ?? document.documentElement).getPropertyValue("--s-ui-font-family-label").trim() || V}`, U = ({ colorHostElement: n, formatValue: r }) => ({
|
|
36
|
+
id: "barValueLabel",
|
|
37
|
+
afterDatasetsDraw(a) {
|
|
38
|
+
let o = t(e.barValueLabel, n), s = t(e.barValueLabelMuted, n), { ctx: c } = a;
|
|
39
|
+
c.save(), c.font = H(n), c.textAlign = "center", a.data.datasets.forEach((e, t) => {
|
|
40
|
+
a.isDatasetVisible(t) && a.getDatasetMeta(t).data.forEach((n, l) => {
|
|
41
|
+
let u = e.data[l];
|
|
42
|
+
if (typeof u != "number") return;
|
|
43
|
+
let d = u < 0;
|
|
44
|
+
c.fillStyle = i(a, t, l) ? s : o, c.textBaseline = d ? "top" : "bottom", c.fillText(r ? r(u) : String(u), n.x, d ? n.y + R : n.y - R);
|
|
45
|
+
});
|
|
46
|
+
}), c.restore();
|
|
47
|
+
}
|
|
48
|
+
}), W = 5, G = 4, K = 12, q = "yRight", J = "yMirror", Y = 1.05, ee = 16, te = .92, ne = 1, re = (e, t) => e.data.datasets.every((n, r) => !e.isDatasetVisible(r) || i(e, r, t)), X = (e, t, n, r) => p(e.flatMap((e) => e.points.map((e) => e.value * Y)), {
|
|
49
|
+
yMin: t,
|
|
50
|
+
yMax: n,
|
|
51
|
+
yStep: r
|
|
52
|
+
}), Z = ({ seriesList: i, colorHostElement: a, yMax: s, yMin: l, yStep: u = W, rightYMax: p, rightYStep: _ = W, mirrorYAxis: v = !1, target: y, skeleton: b = !1, showValues: x = !1, formatValue: S, formatYTick: C, mode: w = "grouped", categories: T = [], highlightedYTick: E, onPointClick: D }) => {
|
|
53
|
+
if (i.length === 0) return null;
|
|
54
|
+
let O = i.filter((e) => e.axis !== "right"), k = i.filter((e) => e.axis === "right"), A = t(e.axisLabel, a), j = t(e.grid, a), M = t(e.tooltipBackground, a), N = t(e.tooltipText, a), P = t(e.barAxisLabelMuted, a), F = X(O, l, s, u), I = X(k, void 0, p, _), R = w === "histogram", z = T.map((e) => d(e.color, a)), B = f({
|
|
55
|
+
axisLabelColor: A,
|
|
56
|
+
gridColor: j,
|
|
57
|
+
yMin: F.min,
|
|
58
|
+
yMax: F.max,
|
|
59
|
+
yStep: u,
|
|
60
|
+
xTickFontSize: K,
|
|
61
|
+
...C ? { formatYAxisTick: (e) => typeof e == "number" ? C(e) : e } : {}
|
|
62
|
+
}), V = E && !b ? h(B.y.ticks, {
|
|
63
|
+
highlightedTick: E,
|
|
64
|
+
yStep: u,
|
|
65
|
+
axisLabelColor: A,
|
|
66
|
+
colorHostElement: a
|
|
67
|
+
}) : { ticks: B.y.ticks }, H = R ? {
|
|
68
|
+
...B.y,
|
|
69
|
+
display: !1
|
|
70
|
+
} : {
|
|
71
|
+
...B.y,
|
|
72
|
+
...V
|
|
73
|
+
}, Y = (e, t) => ({
|
|
74
|
+
type: "linear",
|
|
75
|
+
position: "right",
|
|
76
|
+
min: e,
|
|
77
|
+
max: t,
|
|
78
|
+
border: { display: !1 },
|
|
79
|
+
grid: { drawOnChartArea: !1 },
|
|
80
|
+
...V
|
|
81
|
+
}), Z = k.length > 0 ? { [q]: Y(I.min, I.max) } : v && !R ? { [J]: Y(F.min, F.max) } : {}, Q = {
|
|
82
|
+
x: {
|
|
83
|
+
...B.x,
|
|
84
|
+
...R ? { border: {
|
|
85
|
+
display: !0,
|
|
86
|
+
color: j
|
|
87
|
+
} } : {},
|
|
88
|
+
ticks: {
|
|
89
|
+
...B.x.ticks,
|
|
90
|
+
color: ({ chart: e, index: t }) => re(e, t) ? P : A
|
|
91
|
+
}
|
|
92
|
+
},
|
|
93
|
+
y: H,
|
|
94
|
+
...Z
|
|
95
|
+
}, $ = o({
|
|
96
|
+
kind: "segment",
|
|
97
|
+
skeleton: b,
|
|
98
|
+
colorHostElement: a,
|
|
99
|
+
onElementIndexClick: D
|
|
100
|
+
});
|
|
101
|
+
return {
|
|
102
|
+
type: "bar",
|
|
103
|
+
data: {
|
|
104
|
+
labels: i[0]?.points.map((e) => g(e.label)) ?? [],
|
|
105
|
+
datasets: i.map((e, t) => {
|
|
106
|
+
let n = m(t, a, e.fillColor, b), r = e.points.map((e) => e.fillColor ? d(e.fillColor, a) : (e.category === void 0 ? void 0 : z[e.category]) ?? n);
|
|
107
|
+
return {
|
|
108
|
+
label: e.label,
|
|
109
|
+
data: e.points.map((e) => e.value),
|
|
110
|
+
backgroundColor: r,
|
|
111
|
+
hoverBackgroundColor: r,
|
|
112
|
+
borderWidth: 0,
|
|
113
|
+
hoverBorderWidth: 0,
|
|
114
|
+
borderRadius: G,
|
|
115
|
+
yAxisID: e.axis === "right" ? q : "y",
|
|
116
|
+
captions: e.points.map((e) => e.caption),
|
|
117
|
+
categories: e.points.map((e) => e.category),
|
|
118
|
+
...R ? {
|
|
119
|
+
barPercentage: te,
|
|
120
|
+
categoryPercentage: ne
|
|
121
|
+
} : {}
|
|
122
|
+
};
|
|
123
|
+
})
|
|
124
|
+
},
|
|
125
|
+
options: {
|
|
126
|
+
responsive: !0,
|
|
127
|
+
maintainAspectRatio: !1,
|
|
128
|
+
layout: x ? { padding: { top: ee } } : void 0,
|
|
129
|
+
onHover: $.onHover,
|
|
130
|
+
onClick: $.onClick,
|
|
131
|
+
hover: b ? void 0 : {
|
|
132
|
+
mode: "nearest",
|
|
133
|
+
intersect: !0
|
|
134
|
+
},
|
|
135
|
+
interaction: c(b, {
|
|
136
|
+
mode: "nearest",
|
|
137
|
+
intersect: !0
|
|
138
|
+
}),
|
|
139
|
+
plugins: {
|
|
140
|
+
legend: { display: !1 },
|
|
141
|
+
tooltip: {
|
|
142
|
+
enabled: n(b),
|
|
143
|
+
backgroundColor: M,
|
|
144
|
+
titleColor: N,
|
|
145
|
+
bodyColor: N,
|
|
146
|
+
displayColors: !1
|
|
147
|
+
}
|
|
148
|
+
},
|
|
149
|
+
scales: Q
|
|
150
|
+
},
|
|
151
|
+
plugins: r(b, [
|
|
152
|
+
L({
|
|
153
|
+
target: y,
|
|
154
|
+
colorHostElement: a,
|
|
155
|
+
rightAxisId: q
|
|
156
|
+
}),
|
|
157
|
+
...x ? [U({
|
|
158
|
+
colorHostElement: a,
|
|
159
|
+
formatValue: S
|
|
160
|
+
})] : [],
|
|
161
|
+
...$.plugins
|
|
162
|
+
])
|
|
163
|
+
};
|
|
164
|
+
}, Q = [
|
|
165
|
+
"5 неделя",
|
|
166
|
+
"6 неделя",
|
|
167
|
+
"7 неделя",
|
|
168
|
+
"8 неделя",
|
|
169
|
+
"9 неделя",
|
|
170
|
+
"10 неделя"
|
|
171
|
+
], $ = [{
|
|
172
|
+
label: "Series 1",
|
|
173
|
+
points: v(Q, [
|
|
174
|
+
28,
|
|
175
|
+
34,
|
|
176
|
+
24,
|
|
177
|
+
42,
|
|
178
|
+
30,
|
|
179
|
+
36
|
|
180
|
+
])
|
|
181
|
+
}, {
|
|
182
|
+
label: "Series 2",
|
|
183
|
+
points: v(Q, [
|
|
184
|
+
18,
|
|
185
|
+
22,
|
|
186
|
+
16,
|
|
187
|
+
28,
|
|
188
|
+
20,
|
|
189
|
+
24
|
|
190
|
+
])
|
|
191
|
+
}], ie = { class: "s-ui-chart-bar__canvas-wrap" }, ae = /* @__PURE__ */ E({
|
|
192
|
+
__name: "SChartBar",
|
|
193
|
+
props: {
|
|
194
|
+
series: { default: () => [] },
|
|
195
|
+
mode: { default: "grouped" },
|
|
196
|
+
loading: {
|
|
197
|
+
type: Boolean,
|
|
198
|
+
default: !1
|
|
199
|
+
},
|
|
200
|
+
yMax: {},
|
|
201
|
+
yMin: {},
|
|
202
|
+
yStep: {},
|
|
203
|
+
rightYMax: {},
|
|
204
|
+
rightYStep: {},
|
|
205
|
+
mirrorYAxis: {
|
|
206
|
+
type: Boolean,
|
|
207
|
+
default: !1
|
|
208
|
+
},
|
|
209
|
+
target: {},
|
|
210
|
+
showLegend: {
|
|
211
|
+
type: Boolean,
|
|
212
|
+
default: !0
|
|
213
|
+
},
|
|
214
|
+
showValues: {
|
|
215
|
+
type: Boolean,
|
|
216
|
+
default: !1
|
|
217
|
+
},
|
|
218
|
+
formatValue: { type: Function },
|
|
219
|
+
formatYTick: { type: Function },
|
|
220
|
+
categories: { default: () => [] },
|
|
221
|
+
highlightedYTick: {},
|
|
222
|
+
legendSize: {}
|
|
223
|
+
},
|
|
224
|
+
emits: ["pointClick"],
|
|
225
|
+
setup(n, { expose: r, emit: i }) {
|
|
226
|
+
let o = i, c = A("chartRootRef"), f = A("chartCanvasRef"), p = b(() => n.loading ? $ : n.mode === "grouped" ? n.series : n.series.slice(0, 1)), h = (e, t) => {
|
|
227
|
+
let n = p.value[t], r = n?.points[e];
|
|
228
|
+
n && r && o("pointClick", e, t, r, n);
|
|
229
|
+
}, g = y("onPointClick"), v = b(() => !n.loading && n.series.length === 0 ? null : Z({
|
|
230
|
+
seriesList: p.value,
|
|
231
|
+
colorHostElement: c.value,
|
|
232
|
+
yMax: n.loading ? 50 : n.yMax,
|
|
233
|
+
yMin: n.loading ? void 0 : n.yMin,
|
|
234
|
+
yStep: n.loading ? 10 : n.yStep,
|
|
235
|
+
rightYMax: n.rightYMax,
|
|
236
|
+
rightYStep: n.rightYStep,
|
|
237
|
+
mirrorYAxis: n.mirrorYAxis,
|
|
238
|
+
target: n.loading ? void 0 : n.target,
|
|
239
|
+
skeleton: n.loading,
|
|
240
|
+
showValues: n.showValues,
|
|
241
|
+
formatValue: n.formatValue,
|
|
242
|
+
formatYTick: n.formatYTick,
|
|
243
|
+
mode: n.mode,
|
|
244
|
+
categories: n.categories,
|
|
245
|
+
highlightedYTick: n.highlightedYTick,
|
|
246
|
+
onPointClick: g() ? h : void 0
|
|
247
|
+
})), E = b(() => !n.loading && n.categories.length > 0), M = b(() => E.value ? n.categories.map((e) => ({
|
|
248
|
+
label: e.label,
|
|
249
|
+
color: d(e.color, c.value)
|
|
250
|
+
})) : _(p.value, (e, t) => m(e, c.value, t, n.loading))), N = b(() => n.loading || !n.target?.legendLabel ? [] : [{
|
|
251
|
+
label: n.target.legendLabel,
|
|
252
|
+
color: n.target.color ? d(n.target.color, c.value) : t(e.grid, c.value),
|
|
253
|
+
marker: "line"
|
|
254
|
+
}]), P = b(() => [...M.value, ...N.value]), { chartInstance: F } = a({
|
|
255
|
+
canvasRef: f,
|
|
256
|
+
config: v,
|
|
257
|
+
enabled: b(() => n.loading || n.series.length > 0)
|
|
258
|
+
}), { exportImage: I, handleLegendItemHover: L } = s({
|
|
259
|
+
chartInstance: F,
|
|
260
|
+
canvasRef: f,
|
|
261
|
+
colorHostElement: c,
|
|
262
|
+
legendDimKind: () => E.value ? "category" : "series"
|
|
263
|
+
}), R = (e) => {
|
|
264
|
+
L(e !== null && e < M.value.length ? e : null);
|
|
265
|
+
};
|
|
266
|
+
return r({ exportImage: I }), (e, t) => (O(), C("div", {
|
|
267
|
+
ref_key: "chartRootRef",
|
|
268
|
+
ref: c,
|
|
269
|
+
class: D(["s-ui-chart-bar", { "s-ui-chart-bar--skeleton": n.loading }])
|
|
270
|
+
}, [w("div", ie, [T(k(l), { loading: n.loading }, {
|
|
271
|
+
default: j(() => [w("canvas", {
|
|
272
|
+
ref_key: "chartCanvasRef",
|
|
273
|
+
ref: f,
|
|
274
|
+
class: "s-ui-chart-bar__canvas"
|
|
275
|
+
}, null, 512)]),
|
|
276
|
+
_: 1
|
|
277
|
+
}, 8, ["loading"])]), n.showLegend && P.value.length ? (O(), x(k(u), {
|
|
278
|
+
key: 0,
|
|
279
|
+
items: P.value,
|
|
280
|
+
size: n.legendSize,
|
|
281
|
+
disabled: n.loading,
|
|
282
|
+
interactive: !n.loading,
|
|
283
|
+
onItemHover: R
|
|
284
|
+
}, null, 8, [
|
|
285
|
+
"items",
|
|
286
|
+
"size",
|
|
287
|
+
"disabled",
|
|
288
|
+
"interactive"
|
|
289
|
+
])) : S("", !0)], 2));
|
|
290
|
+
}
|
|
291
|
+
});
|
|
292
|
+
//#endregion
|
|
293
|
+
export { ae as t };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const e=require("./useChartInteractivity-CaZ37kX-.cjs"),t=require("./SChartLegend-D1gPKGm0.cjs"),n=require("./resolveCssColorValue-BFMo08-w.cjs"),r=require("./buildCartesianChartScales-Dck5yBMo.cjs"),i=require("./resolveChartValueRange-DBCYLCXs.cjs"),a=require("./resolveBarStackedSeriesColor-Czkj5bJY.cjs"),o=require("./applyChartHighlightedYTick-BHVwiljn.cjs"),s=require("./splitChartAxisLabel-DAmQOJn6.cjs"),c=require("./buildChartSeriesPoints-Cqo2ed-n.cjs"),l=require("./useHasListener-BPgtbbo6.cjs");let u=require("vue");var d=1,f=[4,4],p=`500 10px var(--s-ui-font-family-label)`,m=4,h=e=>e.length>0&&new Set(e).size===1,g=({target:t,colorHostElement:r,rightAxisId:i})=>({id:`barTargetLine`,afterDatasetsDraw(a){if(!t||t.values.length===0)return;let o=t.axis===`right`?i:`y`,s=a.scales[o],c=a.scales.x;if(!s||!c)return;let{ctx:l,chartArea:u}=a,g=t.color?n.t(t.color,r):e.b(e.T.grid,r);l.save(),l.strokeStyle=g,l.lineWidth=d,l.setLineDash(t.solid?[]:f);let[_]=t.values;if(_!==void 0&&h(t.values)){let e=s.getPixelForValue(_);l.beginPath(),l.moveTo(u.left,e),l.lineTo(u.right,e),l.stroke(),t.label&&(l.setLineDash([]),l.fillStyle=g,l.font=p,l.textAlign=`left`,l.fillText(t.label,u.left,e-m))}else{let e=(u.right-u.left)/t.values.length;t.values.forEach((t,n)=>{if(t<=0)return;let r=s.getPixelForValue(t);l.beginPath(),l.moveTo(u.left+e*n,r),l.lineTo(u.left+e*(n+1),r),l.stroke()})}l.restore()}}),_=4,v=10,y=500,b=`sans-serif`,x=e=>typeof window>`u`?`${y} ${v}px ${b}`:`${y} ${v}px ${getComputedStyle(e??document.documentElement).getPropertyValue(`--s-ui-font-family-label`).trim()||b}`,S=({colorHostElement:t,formatValue:n})=>({id:`barValueLabel`,afterDatasetsDraw(r){let i=e.b(e.T.barValueLabel,t),a=e.b(e.T.barValueLabelMuted,t),{ctx:o}=r;o.save(),o.font=x(t),o.textAlign=`center`,r.data.datasets.forEach((t,s)=>{r.isDatasetVisible(s)&&r.getDatasetMeta(s).data.forEach((c,l)=>{let u=t.data[l];if(typeof u!=`number`)return;let d=u<0;o.fillStyle=e.i(r,s,l)?a:i,o.textBaseline=d?`top`:`bottom`,o.fillText(n?n(u):String(u),c.x,d?c.y+_:c.y-_)})}),o.restore()}}),C=5,w=4,T=12,E=`yRight`,D=`yMirror`,O=1.05,k=16,A=.92,j=1,M=(t,n)=>t.data.datasets.every((r,i)=>!t.isDatasetVisible(i)||e.i(t,i,n)),N=(e,t,n,r)=>i.t(e.flatMap(e=>e.points.map(e=>e.value*O)),{yMin:t,yMax:n,yStep:r}),P=({seriesList:t,colorHostElement:i,yMax:c,yMin:l,yStep:u=C,rightYMax:d,rightYStep:f=C,mirrorYAxis:p=!1,target:m,skeleton:h=!1,showValues:_=!1,formatValue:v,formatYTick:y,mode:b=`grouped`,categories:x=[],highlightedYTick:O,onPointClick:P})=>{if(t.length===0)return null;let F=t.filter(e=>e.axis!==`right`),I=t.filter(e=>e.axis===`right`),L=e.b(e.T.axisLabel,i),R=e.b(e.T.grid,i),z=e.b(e.T.tooltipBackground,i),B=e.b(e.T.tooltipText,i),V=e.b(e.T.barAxisLabelMuted,i),H=N(F,l,c,u),U=N(I,void 0,d,f),W=b===`histogram`,G=x.map(e=>n.t(e.color,i)),K=r.t({axisLabelColor:L,gridColor:R,yMin:H.min,yMax:H.max,yStep:u,xTickFontSize:T,...y?{formatYAxisTick:e=>typeof e==`number`?y(e):e}:{}}),q=O&&!h?o.t(K.y.ticks,{highlightedTick:O,yStep:u,axisLabelColor:L,colorHostElement:i}):{ticks:K.y.ticks},J=W?{...K.y,display:!1}:{...K.y,...q},Y=(e,t)=>({type:`linear`,position:`right`,min:e,max:t,border:{display:!1},grid:{drawOnChartArea:!1},...q}),X=I.length>0?{[E]:Y(U.min,U.max)}:p&&!W?{[D]:Y(H.min,H.max)}:{},Z={x:{...K.x,...W?{border:{display:!0,color:R}}:{},ticks:{...K.x.ticks,color:({chart:e,index:t})=>M(e,t)?V:L}},y:J,...X},Q=e.r({kind:`segment`,skeleton:h,colorHostElement:i,onElementIndexClick:P});return{type:`bar`,data:{labels:t[0]?.points.map(e=>s.t(e.label))??[],datasets:t.map((e,t)=>{let r=a.t(t,i,e.fillColor,h),o=e.points.map(e=>e.fillColor?n.t(e.fillColor,i):(e.category===void 0?void 0:G[e.category])??r);return{label:e.label,data:e.points.map(e=>e.value),backgroundColor:o,hoverBackgroundColor:o,borderWidth:0,hoverBorderWidth:0,borderRadius:w,yAxisID:e.axis===`right`?E:`y`,captions:e.points.map(e=>e.caption),categories:e.points.map(e=>e.category),...W?{barPercentage:A,categoryPercentage:j}:{}}})},options:{responsive:!0,maintainAspectRatio:!1,layout:_?{padding:{top:k}}:void 0,onHover:Q.onHover,onClick:Q.onClick,hover:h?void 0:{mode:`nearest`,intersect:!0},interaction:e.u(h,{mode:`nearest`,intersect:!0}),plugins:{legend:{display:!1},tooltip:{enabled:e.d(h),backgroundColor:z,titleColor:B,bodyColor:B,displayColors:!1}},scales:Z},plugins:e.f(h,[g({target:m,colorHostElement:i,rightAxisId:E}),..._?[S({colorHostElement:i,formatValue:v})]:[],...Q.plugins])}},F=[`5 неделя`,`6 неделя`,`7 неделя`,`8 неделя`,`9 неделя`,`10 неделя`],I=[{label:`Series 1`,points:c.t(F,[28,34,24,42,30,36])},{label:`Series 2`,points:c.t(F,[18,22,16,28,20,24])}],L={class:`s-ui-chart-bar__canvas-wrap`},R=(0,u.defineComponent)({__name:`SChartBar`,props:{series:{default:()=>[]},mode:{default:`grouped`},loading:{type:Boolean,default:!1},yMax:{},yMin:{},yStep:{},rightYMax:{},rightYStep:{},mirrorYAxis:{type:Boolean,default:!1},target:{},showLegend:{type:Boolean,default:!0},showValues:{type:Boolean,default:!1},formatValue:{type:Function},formatYTick:{type:Function},categories:{default:()=>[]},highlightedYTick:{},legendSize:{}},emits:[`pointClick`],setup(r,{expose:i,emit:o}){let s=o,d=(0,u.useTemplateRef)(`chartRootRef`),f=(0,u.useTemplateRef)(`chartCanvasRef`),p=(0,u.computed)(()=>r.loading?I:r.mode===`grouped`?r.series:r.series.slice(0,1)),m=(e,t)=>{let n=p.value[t],r=n?.points[e];n&&r&&s(`pointClick`,e,t,r,n)},h=l.t(`onPointClick`),g=(0,u.computed)(()=>!r.loading&&r.series.length===0?null:P({seriesList:p.value,colorHostElement:d.value,yMax:r.loading?50:r.yMax,yMin:r.loading?void 0:r.yMin,yStep:r.loading?10:r.yStep,rightYMax:r.rightYMax,rightYStep:r.rightYStep,mirrorYAxis:r.mirrorYAxis,target:r.loading?void 0:r.target,skeleton:r.loading,showValues:r.showValues,formatValue:r.formatValue,formatYTick:r.formatYTick,mode:r.mode,categories:r.categories,highlightedYTick:r.highlightedYTick,onPointClick:h()?m:void 0})),_=(0,u.computed)(()=>!r.loading&&r.categories.length>0),v=(0,u.computed)(()=>_.value?r.categories.map(e=>({label:e.label,color:n.t(e.color,d.value)})):c.n(p.value,(e,t)=>a.t(e,d.value,t,r.loading))),y=(0,u.computed)(()=>r.loading||!r.target?.legendLabel?[]:[{label:r.target.legendLabel,color:r.target.color?n.t(r.target.color,d.value):e.b(e.T.grid,d.value),marker:`line`}]),b=(0,u.computed)(()=>[...v.value,...y.value]),{chartInstance:x}=e.n({canvasRef:f,config:g,enabled:(0,u.computed)(()=>r.loading||r.series.length>0)}),{exportImage:S,handleLegendItemHover:C}=e.t({chartInstance:x,canvasRef:f,colorHostElement:d,legendDimKind:()=>_.value?`category`:`series`}),w=e=>{C(e!==null&&e<v.value.length?e:null)};return i({exportImage:S}),(n,i)=>((0,u.openBlock)(),(0,u.createElementBlock)(`div`,{ref_key:`chartRootRef`,ref:d,class:(0,u.normalizeClass)([`s-ui-chart-bar`,{"s-ui-chart-bar--skeleton":r.loading}])},[(0,u.createElementVNode)(`div`,L,[(0,u.createVNode)((0,u.unref)(e.x),{loading:r.loading},{default:(0,u.withCtx)(()=>[(0,u.createElementVNode)(`canvas`,{ref_key:`chartCanvasRef`,ref:f,class:`s-ui-chart-bar__canvas`},null,512)]),_:1},8,[`loading`])]),r.showLegend&&b.value.length?((0,u.openBlock)(),(0,u.createBlock)((0,u.unref)(t.t),{key:0,items:b.value,size:r.legendSize,disabled:r.loading,interactive:!r.loading,onItemHover:w},null,8,[`items`,`size`,`disabled`,`interactive`])):(0,u.createCommentVNode)(``,!0)],2))}});Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return R}});
|
|
@@ -0,0 +1,261 @@
|
|
|
1
|
+
import { T as e, b as t, d as n, f as r, g as i, l as a, n as o, t as s, u as c, x as l } from "./useChartInteractivity-DygkiRA1.js";
|
|
2
|
+
import { t as u } from "./SChartLegend-dDqLhvIj.js";
|
|
3
|
+
import { t as d } from "./createChartCrosshairPlugin-EqMlaexu.js";
|
|
4
|
+
import { t as f } from "./buildMultiLineChartScales-Di-yTvEB.js";
|
|
5
|
+
import { computed as p, createElementBlock as m, createElementVNode as h, createVNode as g, defineComponent as _, normalizeClass as v, openBlock as y, unref as b, useTemplateRef as x, withCtx as S } from "vue";
|
|
6
|
+
//#region src/utils/chart/burnup/createBurnupTodayLinePlugin.ts
|
|
7
|
+
var C = (n, r) => ({
|
|
8
|
+
id: "sUiChartBurnupTodayLine",
|
|
9
|
+
beforeDatasetsDraw(i) {
|
|
10
|
+
if (n < 0) return;
|
|
11
|
+
let { ctx: a, chartArea: o } = i, s = i.scales.x;
|
|
12
|
+
if (!o || !s) return;
|
|
13
|
+
let c = t(e.burnupToday, r), l = s.getPixelForValue(n);
|
|
14
|
+
a.save(), a.beginPath(), a.moveTo(l, o.top), a.lineTo(l, o.bottom), a.lineWidth = 1, a.strokeStyle = c, a.stroke(), a.restore();
|
|
15
|
+
}
|
|
16
|
+
}), w = 8, T = 4, E = 5, D = 12, O = 12, k = 60, A = 12, j = (e) => {
|
|
17
|
+
if (typeof window > "u") return "500 10px sans-serif";
|
|
18
|
+
let t = e ?? document.documentElement;
|
|
19
|
+
return `500 10px ${getComputedStyle(t).getPropertyValue("--s-ui-font-family-label").trim() || "sans-serif"}`;
|
|
20
|
+
}, M = (e, t, n, r, i, a) => {
|
|
21
|
+
let o = Math.min(a, r / 2, i / 2);
|
|
22
|
+
e.beginPath(), e.moveTo(t + o, n), e.lineTo(t + r - o, n), e.arcTo(t + r, n, t + r, n + o, o), e.lineTo(t + r, n + i - o), e.arcTo(t + r, n + i, t + r - o, n + i, o), e.lineTo(t + o, n + i), e.arcTo(t, n + i, t, n + i - o, o), e.lineTo(t, n + o), e.arcTo(t, n, t + o, n, o), e.closePath();
|
|
23
|
+
}, N = ({ tagLines: n, factDatasetIndex: r, todayIndex: i }, a) => ({
|
|
24
|
+
id: "sUiChartBurnupTag",
|
|
25
|
+
afterDatasetsDraw(o) {
|
|
26
|
+
if (i < 0 || n.length === 0) return;
|
|
27
|
+
let s = o.getDatasetMeta(r)?.data[i], { chartArea: c } = o;
|
|
28
|
+
if (!s || !c) return;
|
|
29
|
+
let l = t(e.burnupToday, a), u = t(e.burnupTagBackground, a), { ctx: d } = o;
|
|
30
|
+
d.save(), d.font = j(a), d.textAlign = "center", d.textBaseline = "middle";
|
|
31
|
+
let f = n.reduce((e, t) => Math.max(e, d.measureText(t).width), 0), p = Math.max(k, f + w * 2), m = n.length * O + T + E, h = Math.min(Math.max(s.x - p / 2, c.left), c.right - p), g = Math.max(s.y - A - m, c.top);
|
|
32
|
+
M(d, h, g, p, m, D), d.fillStyle = u, d.fill(), d.lineWidth = 1, d.strokeStyle = l, d.stroke(), d.fillStyle = l, n.forEach((e, t) => {
|
|
33
|
+
d.fillText(e, h + p / 2, g + T + O * (t + .5));
|
|
34
|
+
}), d.restore();
|
|
35
|
+
}
|
|
36
|
+
}), P = (e, t) => t >= 0 && e > t, F = ({ todayIndex: e, futureLabel: t, resolveTitle: n }) => ({
|
|
37
|
+
title: (t) => {
|
|
38
|
+
let r = t[0];
|
|
39
|
+
return !r || P(r.dataIndex, e) ? "" : n?.(r.dataIndex) ?? `${r.label}`;
|
|
40
|
+
},
|
|
41
|
+
label: (n) => P(n.dataIndex, e) ? t : `${n.dataset.label ?? ""}: ${n.parsed.y ?? 0}%`
|
|
42
|
+
}), I = (e) => (t) => !P(t.dataIndex, e) || t.datasetIndex === 0, L = 1, R = 1, z = 2, B = [8, 8], V = [9, 9], H = 2, U = 25, W = (e) => e.reduce((e, t, n) => t.fact === null ? e : n, -1), G = (e, t) => e.goal ?? t, K = (e, t, n) => {
|
|
43
|
+
let r = e.reduce((e, n) => Math.max(e, n.plan, n.fact ?? 0, G(n, t)), t);
|
|
44
|
+
return Math.ceil(r / n) * n;
|
|
45
|
+
}, q = (e, t) => t.some((e) => e.label === "") ? {
|
|
46
|
+
...e,
|
|
47
|
+
x: {
|
|
48
|
+
...e.x,
|
|
49
|
+
ticks: {
|
|
50
|
+
...e.x.ticks,
|
|
51
|
+
autoSkip: !1,
|
|
52
|
+
maxRotation: 0
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
} : e, J = ({ points: o, colorHostElement: s, goalValue: l = 100, goalLabel: u = "Цель", planLabel: p = "План", factLabel: m = "Факт", futureLabel: h = "Этот день ещё не наступил", yStep: g = U, mirrorYAxis: _ = !0, showTag: v = !0, skeleton: y = !1 }) => {
|
|
56
|
+
if (o.length === 0) return null;
|
|
57
|
+
let b = t(e.axisLabel, s), x = t(e.grid, s), S = t(e.tooltipBackground, s), w = t(e.tooltipText, s), T = t(e.skeletonSeries, s), E = y ? T : t(e.burnupGoal, s), D = y ? T : t(e.burnupPlan, s), O = y ? T : t(e.burnupFact, s), k = t(e.burnupFactFillStart, s), A = t(e.burnupFactFillEnd, s), j = W(o), M = j >= 0 ? o[j] : void 0, P = M ? [`${m.toLowerCase()} ${M.fact}%`, `${p.toLowerCase()} ${M.plan}%`] : [];
|
|
58
|
+
return {
|
|
59
|
+
type: "line",
|
|
60
|
+
data: {
|
|
61
|
+
labels: o.map((e) => e.label),
|
|
62
|
+
datasets: [
|
|
63
|
+
{
|
|
64
|
+
label: u,
|
|
65
|
+
data: o.map((e) => G(e, l)),
|
|
66
|
+
borderColor: E,
|
|
67
|
+
backgroundColor: E,
|
|
68
|
+
borderWidth: L,
|
|
69
|
+
borderDash: B,
|
|
70
|
+
fill: !1,
|
|
71
|
+
pointRadius: 0,
|
|
72
|
+
pointHoverRadius: 0,
|
|
73
|
+
tension: 0
|
|
74
|
+
},
|
|
75
|
+
{
|
|
76
|
+
label: p,
|
|
77
|
+
data: o.map((e) => e.plan),
|
|
78
|
+
borderColor: D,
|
|
79
|
+
backgroundColor: D,
|
|
80
|
+
borderWidth: R,
|
|
81
|
+
borderDash: V,
|
|
82
|
+
fill: !1,
|
|
83
|
+
pointRadius: 0,
|
|
84
|
+
pointHoverRadius: 0,
|
|
85
|
+
tension: .4
|
|
86
|
+
},
|
|
87
|
+
{
|
|
88
|
+
label: m,
|
|
89
|
+
data: o.map((e) => e.fact ?? null),
|
|
90
|
+
borderColor: O,
|
|
91
|
+
backgroundColor: y ? O : (e) => a(e, k, A),
|
|
92
|
+
borderWidth: z,
|
|
93
|
+
fill: !y,
|
|
94
|
+
spanGaps: !1,
|
|
95
|
+
pointRadius: 0,
|
|
96
|
+
pointHoverRadius: 4,
|
|
97
|
+
tension: .4
|
|
98
|
+
}
|
|
99
|
+
]
|
|
100
|
+
},
|
|
101
|
+
options: {
|
|
102
|
+
responsive: !0,
|
|
103
|
+
maintainAspectRatio: !1,
|
|
104
|
+
interaction: c(y, {
|
|
105
|
+
mode: "index",
|
|
106
|
+
intersect: !1
|
|
107
|
+
}),
|
|
108
|
+
plugins: {
|
|
109
|
+
legend: { display: !1 },
|
|
110
|
+
tooltip: {
|
|
111
|
+
enabled: n(y),
|
|
112
|
+
backgroundColor: S,
|
|
113
|
+
titleColor: w,
|
|
114
|
+
bodyColor: w,
|
|
115
|
+
displayColors: !1,
|
|
116
|
+
position: i,
|
|
117
|
+
yAlign: "bottom",
|
|
118
|
+
xAlign: "center",
|
|
119
|
+
caretPadding: 8,
|
|
120
|
+
filter: I(j),
|
|
121
|
+
callbacks: F({
|
|
122
|
+
todayIndex: j,
|
|
123
|
+
futureLabel: h,
|
|
124
|
+
resolveTitle: (e) => o[e]?.tooltipLabel
|
|
125
|
+
})
|
|
126
|
+
}
|
|
127
|
+
},
|
|
128
|
+
scales: q(f({
|
|
129
|
+
axisLabelColor: b,
|
|
130
|
+
gridColor: x,
|
|
131
|
+
yMin: 0,
|
|
132
|
+
yMax: K(o, l, g),
|
|
133
|
+
yStep: g,
|
|
134
|
+
mirrorYAxis: _,
|
|
135
|
+
formatYAxisTick: (e) => `${e}%`
|
|
136
|
+
}), o)
|
|
137
|
+
},
|
|
138
|
+
plugins: r(y, [
|
|
139
|
+
d(s),
|
|
140
|
+
C(j, s),
|
|
141
|
+
...v ? [N({
|
|
142
|
+
tagLines: P,
|
|
143
|
+
factDatasetIndex: H,
|
|
144
|
+
todayIndex: j
|
|
145
|
+
}, s)] : []
|
|
146
|
+
])
|
|
147
|
+
};
|
|
148
|
+
}, Y = [
|
|
149
|
+
8,
|
|
150
|
+
15,
|
|
151
|
+
23,
|
|
152
|
+
31,
|
|
153
|
+
38,
|
|
154
|
+
46,
|
|
155
|
+
54,
|
|
156
|
+
62,
|
|
157
|
+
69,
|
|
158
|
+
77,
|
|
159
|
+
85,
|
|
160
|
+
92,
|
|
161
|
+
96,
|
|
162
|
+
100
|
|
163
|
+
], X = [
|
|
164
|
+
5,
|
|
165
|
+
10,
|
|
166
|
+
16,
|
|
167
|
+
22,
|
|
168
|
+
28,
|
|
169
|
+
34,
|
|
170
|
+
40,
|
|
171
|
+
45,
|
|
172
|
+
50,
|
|
173
|
+
54,
|
|
174
|
+
57,
|
|
175
|
+
60,
|
|
176
|
+
null,
|
|
177
|
+
null
|
|
178
|
+
], Z = Y.map((e, t) => ({
|
|
179
|
+
label: `Д${t + 1}`,
|
|
180
|
+
plan: e,
|
|
181
|
+
fact: X[t]
|
|
182
|
+
})), Q = { class: "s-ui-chart-burnup__canvas-wrap" }, $ = /* @__PURE__ */ _({
|
|
183
|
+
__name: "SChartBurnup",
|
|
184
|
+
props: {
|
|
185
|
+
points: { default: () => [] },
|
|
186
|
+
loading: {
|
|
187
|
+
type: Boolean,
|
|
188
|
+
default: !1
|
|
189
|
+
},
|
|
190
|
+
goalValue: { default: 100 },
|
|
191
|
+
goalLabel: { default: "Цель" },
|
|
192
|
+
planLabel: { default: "План" },
|
|
193
|
+
factLabel: { default: "Факт" },
|
|
194
|
+
futureLabel: { default: "Этот день ещё не наступил" },
|
|
195
|
+
yStep: { default: 25 },
|
|
196
|
+
mirrorYAxis: {
|
|
197
|
+
type: Boolean,
|
|
198
|
+
default: !0
|
|
199
|
+
},
|
|
200
|
+
showTag: {
|
|
201
|
+
type: Boolean,
|
|
202
|
+
default: !0
|
|
203
|
+
}
|
|
204
|
+
},
|
|
205
|
+
setup(n, { expose: r }) {
|
|
206
|
+
let i = x("chartRootRef"), a = x("chartCanvasRef"), c = p(() => n.loading ? Z : n.points), d = p(() => !n.loading && n.points.length === 0 ? null : J({
|
|
207
|
+
points: c.value,
|
|
208
|
+
colorHostElement: i.value,
|
|
209
|
+
goalValue: n.goalValue,
|
|
210
|
+
goalLabel: n.goalLabel,
|
|
211
|
+
planLabel: n.planLabel,
|
|
212
|
+
factLabel: n.factLabel,
|
|
213
|
+
futureLabel: n.futureLabel,
|
|
214
|
+
yStep: n.yStep,
|
|
215
|
+
mirrorYAxis: n.mirrorYAxis,
|
|
216
|
+
showTag: n.showTag,
|
|
217
|
+
skeleton: n.loading
|
|
218
|
+
})), f = p(() => [
|
|
219
|
+
{
|
|
220
|
+
label: n.goalLabel,
|
|
221
|
+
cssVariable: e.burnupGoal
|
|
222
|
+
},
|
|
223
|
+
{
|
|
224
|
+
label: n.planLabel,
|
|
225
|
+
cssVariable: e.burnupPlan
|
|
226
|
+
},
|
|
227
|
+
{
|
|
228
|
+
label: n.factLabel,
|
|
229
|
+
cssVariable: e.burnupFact
|
|
230
|
+
}
|
|
231
|
+
].map((r) => ({
|
|
232
|
+
label: r.label.toLowerCase(),
|
|
233
|
+
color: t(n.loading ? e.skeletonSeries : r.cssVariable, i.value)
|
|
234
|
+
}))), { chartInstance: _ } = o({
|
|
235
|
+
canvasRef: a,
|
|
236
|
+
config: d,
|
|
237
|
+
enabled: p(() => n.loading || n.points.length > 0)
|
|
238
|
+
}), { exportImage: C } = s({
|
|
239
|
+
chartInstance: _,
|
|
240
|
+
canvasRef: a,
|
|
241
|
+
colorHostElement: i
|
|
242
|
+
});
|
|
243
|
+
return r({ exportImage: C }), (e, t) => (y(), m("div", {
|
|
244
|
+
ref_key: "chartRootRef",
|
|
245
|
+
ref: i,
|
|
246
|
+
class: v(["s-ui-chart-burnup", { "s-ui-chart-burnup--skeleton": n.loading }])
|
|
247
|
+
}, [h("div", Q, [g(b(l), { loading: n.loading }, {
|
|
248
|
+
default: S(() => [h("canvas", {
|
|
249
|
+
ref_key: "chartCanvasRef",
|
|
250
|
+
ref: a,
|
|
251
|
+
class: "s-ui-chart-burnup__canvas"
|
|
252
|
+
}, null, 512)]),
|
|
253
|
+
_: 1
|
|
254
|
+
}, 8, ["loading"])]), g(b(u), {
|
|
255
|
+
items: f.value,
|
|
256
|
+
disabled: n.loading
|
|
257
|
+
}, null, 8, ["items", "disabled"])], 2));
|
|
258
|
+
}
|
|
259
|
+
});
|
|
260
|
+
//#endregion
|
|
261
|
+
export { $ as t };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const e=require("./useChartInteractivity-CaZ37kX-.cjs"),t=require("./SChartLegend-D1gPKGm0.cjs"),n=require("./createChartCrosshairPlugin-BTPv09h4.cjs"),r=require("./buildMultiLineChartScales-lVP6h9H4.cjs");let i=require("vue");var a=(t,n)=>({id:`sUiChartBurnupTodayLine`,beforeDatasetsDraw(r){if(t<0)return;let{ctx:i,chartArea:a}=r,o=r.scales.x;if(!a||!o)return;let s=e.b(e.T.burnupToday,n),c=o.getPixelForValue(t);i.save(),i.beginPath(),i.moveTo(c,a.top),i.lineTo(c,a.bottom),i.lineWidth=1,i.strokeStyle=s,i.stroke(),i.restore()}}),o=8,s=4,c=5,l=12,u=12,d=60,f=12,p=e=>{if(typeof window>`u`)return`500 10px sans-serif`;let t=e??document.documentElement;return`500 10px ${getComputedStyle(t).getPropertyValue(`--s-ui-font-family-label`).trim()||`sans-serif`}`},m=(e,t,n,r,i,a)=>{let o=Math.min(a,r/2,i/2);e.beginPath(),e.moveTo(t+o,n),e.lineTo(t+r-o,n),e.arcTo(t+r,n,t+r,n+o,o),e.lineTo(t+r,n+i-o),e.arcTo(t+r,n+i,t+r-o,n+i,o),e.lineTo(t+o,n+i),e.arcTo(t,n+i,t,n+i-o,o),e.lineTo(t,n+o),e.arcTo(t,n,t+o,n,o),e.closePath()},h=({tagLines:t,factDatasetIndex:n,todayIndex:r},i)=>({id:`sUiChartBurnupTag`,afterDatasetsDraw(a){if(r<0||t.length===0)return;let h=a.getDatasetMeta(n)?.data[r],{chartArea:g}=a;if(!h||!g)return;let _=e.b(e.T.burnupToday,i),v=e.b(e.T.burnupTagBackground,i),{ctx:y}=a;y.save(),y.font=p(i),y.textAlign=`center`,y.textBaseline=`middle`;let b=t.reduce((e,t)=>Math.max(e,y.measureText(t).width),0),x=Math.max(d,b+o*2),S=t.length*u+s+c,C=Math.min(Math.max(h.x-x/2,g.left),g.right-x),w=Math.max(h.y-f-S,g.top);m(y,C,w,x,S,l),y.fillStyle=v,y.fill(),y.lineWidth=1,y.strokeStyle=_,y.stroke(),y.fillStyle=_,t.forEach((e,t)=>{y.fillText(e,C+x/2,w+s+u*(t+.5))}),y.restore()}}),g=(e,t)=>t>=0&&e>t,_=({todayIndex:e,futureLabel:t,resolveTitle:n})=>({title:t=>{let r=t[0];return!r||g(r.dataIndex,e)?``:n?.(r.dataIndex)??`${r.label}`},label:n=>g(n.dataIndex,e)?t:`${n.dataset.label??``}: ${n.parsed.y??0}%`}),v=e=>t=>!g(t.dataIndex,e)||t.datasetIndex===0,y=1,b=1,x=2,S=[8,8],C=[9,9],w=2,T=25,E=e=>e.reduce((e,t,n)=>t.fact===null?e:n,-1),D=(e,t)=>e.goal??t,O=(e,t,n)=>{let r=e.reduce((e,n)=>Math.max(e,n.plan,n.fact??0,D(n,t)),t);return Math.ceil(r/n)*n},k=(e,t)=>t.some(e=>e.label===``)?{...e,x:{...e.x,ticks:{...e.x.ticks,autoSkip:!1,maxRotation:0}}}:e,A=({points:t,colorHostElement:i,goalValue:o=100,goalLabel:s=`Цель`,planLabel:c=`План`,factLabel:l=`Факт`,futureLabel:u=`Этот день ещё не наступил`,yStep:d=T,mirrorYAxis:f=!0,showTag:p=!0,skeleton:m=!1})=>{if(t.length===0)return null;let g=e.b(e.T.axisLabel,i),A=e.b(e.T.grid,i),j=e.b(e.T.tooltipBackground,i),M=e.b(e.T.tooltipText,i),N=e.b(e.T.skeletonSeries,i),P=m?N:e.b(e.T.burnupGoal,i),F=m?N:e.b(e.T.burnupPlan,i),I=m?N:e.b(e.T.burnupFact,i),L=e.b(e.T.burnupFactFillStart,i),R=e.b(e.T.burnupFactFillEnd,i),z=E(t),B=z>=0?t[z]:void 0,V=B?[`${l.toLowerCase()} ${B.fact}%`,`${c.toLowerCase()} ${B.plan}%`]:[];return{type:`line`,data:{labels:t.map(e=>e.label),datasets:[{label:s,data:t.map(e=>D(e,o)),borderColor:P,backgroundColor:P,borderWidth:y,borderDash:S,fill:!1,pointRadius:0,pointHoverRadius:0,tension:0},{label:c,data:t.map(e=>e.plan),borderColor:F,backgroundColor:F,borderWidth:b,borderDash:C,fill:!1,pointRadius:0,pointHoverRadius:0,tension:.4},{label:l,data:t.map(e=>e.fact??null),borderColor:I,backgroundColor:m?I:t=>e.l(t,L,R),borderWidth:x,fill:!m,spanGaps:!1,pointRadius:0,pointHoverRadius:4,tension:.4}]},options:{responsive:!0,maintainAspectRatio:!1,interaction:e.u(m,{mode:`index`,intersect:!1}),plugins:{legend:{display:!1},tooltip:{enabled:e.d(m),backgroundColor:j,titleColor:M,bodyColor:M,displayColors:!1,position:e.g,yAlign:`bottom`,xAlign:`center`,caretPadding:8,filter:v(z),callbacks:_({todayIndex:z,futureLabel:u,resolveTitle:e=>t[e]?.tooltipLabel})}},scales:k(r.t({axisLabelColor:g,gridColor:A,yMin:0,yMax:O(t,o,d),yStep:d,mirrorYAxis:f,formatYAxisTick:e=>`${e}%`}),t)},plugins:e.f(m,[n.t(i),a(z,i),...p?[h({tagLines:V,factDatasetIndex:w,todayIndex:z},i)]:[]])}},j=[8,15,23,31,38,46,54,62,69,77,85,92,96,100],M=[5,10,16,22,28,34,40,45,50,54,57,60,null,null],N=j.map((e,t)=>({label:`Д${t+1}`,plan:e,fact:M[t]})),P={class:`s-ui-chart-burnup__canvas-wrap`},F=(0,i.defineComponent)({__name:`SChartBurnup`,props:{points:{default:()=>[]},loading:{type:Boolean,default:!1},goalValue:{default:100},goalLabel:{default:`Цель`},planLabel:{default:`План`},factLabel:{default:`Факт`},futureLabel:{default:`Этот день ещё не наступил`},yStep:{default:25},mirrorYAxis:{type:Boolean,default:!0},showTag:{type:Boolean,default:!0}},setup(n,{expose:r}){let a=(0,i.useTemplateRef)(`chartRootRef`),o=(0,i.useTemplateRef)(`chartCanvasRef`),s=(0,i.computed)(()=>n.loading?N:n.points),c=(0,i.computed)(()=>!n.loading&&n.points.length===0?null:A({points:s.value,colorHostElement:a.value,goalValue:n.goalValue,goalLabel:n.goalLabel,planLabel:n.planLabel,factLabel:n.factLabel,futureLabel:n.futureLabel,yStep:n.yStep,mirrorYAxis:n.mirrorYAxis,showTag:n.showTag,skeleton:n.loading})),l=(0,i.computed)(()=>[{label:n.goalLabel,cssVariable:e.T.burnupGoal},{label:n.planLabel,cssVariable:e.T.burnupPlan},{label:n.factLabel,cssVariable:e.T.burnupFact}].map(t=>({label:t.label.toLowerCase(),color:e.b(n.loading?e.T.skeletonSeries:t.cssVariable,a.value)}))),{chartInstance:u}=e.n({canvasRef:o,config:c,enabled:(0,i.computed)(()=>n.loading||n.points.length>0)}),{exportImage:d}=e.t({chartInstance:u,canvasRef:o,colorHostElement:a});return r({exportImage:d}),(r,s)=>((0,i.openBlock)(),(0,i.createElementBlock)(`div`,{ref_key:`chartRootRef`,ref:a,class:(0,i.normalizeClass)([`s-ui-chart-burnup`,{"s-ui-chart-burnup--skeleton":n.loading}])},[(0,i.createElementVNode)(`div`,P,[(0,i.createVNode)((0,i.unref)(e.x),{loading:n.loading},{default:(0,i.withCtx)(()=>[(0,i.createElementVNode)(`canvas`,{ref_key:`chartCanvasRef`,ref:o,class:`s-ui-chart-burnup__canvas`},null,512)]),_:1},8,[`loading`])]),(0,i.createVNode)((0,i.unref)(t.t),{items:l.value,disabled:n.loading},null,8,[`items`,`disabled`])],2))}});Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return F}});
|