@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.
Files changed (182) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/dist/SChartBar-BvytQ-2z.js +293 -0
  3. package/dist/SChartBar-BzCeNCsi.cjs +1 -0
  4. package/dist/SChartBurnup-BeQWgnGT.js +261 -0
  5. package/dist/SChartBurnup-joKIDLFb.cjs +1 -0
  6. package/dist/SChartHorizontalBar-C40Yroue.js +176 -0
  7. package/dist/SChartHorizontalBar-Dwln3uuE.cjs +1 -0
  8. package/dist/SChartLegend-D1gPKGm0.cjs +1 -0
  9. package/dist/SChartLegend-dDqLhvIj.js +88 -0
  10. package/dist/{SChartLine-v0tkmnN6.js → SChartLine-BV8Ytso5.js} +36 -36
  11. package/dist/{SChartLine-3l507dBg.cjs → SChartLine-DeJjaBmo.cjs} +1 -1
  12. package/dist/SChartMultiLine-7_HcvVEQ.js +279 -0
  13. package/dist/SChartMultiLine-Cl9Pf3Wp.cjs +1 -0
  14. package/dist/SChartPie-BiLoxutQ.js +267 -0
  15. package/dist/SChartPie-DccW5J0b.cjs +1 -0
  16. package/dist/{SChartProgress-9Zzy7E8K.cjs → SChartProgress-Cpdkad6Q.cjs} +1 -1
  17. package/dist/{SChartProgress-DUgSOdv7.js → SChartProgress-DSxJqRA0.js} +27 -27
  18. package/dist/{SChartStackedArea-Blpqa23h.js → SChartStackedArea-B28offwE.js} +44 -44
  19. package/dist/{SChartStackedArea-C3MezV9k.cjs → SChartStackedArea-Ce7xyhp1.cjs} +1 -1
  20. package/dist/{SChartStackedBar-CCxEXw1H.js → SChartStackedBar-C77FlKGS.js} +55 -55
  21. package/dist/{SChartStackedBar-CJ-UdOfv.cjs → SChartStackedBar-CqUDrFJ3.cjs} +1 -1
  22. package/dist/{STable-Ci_3UqBz.cjs → STable-BXVhLjSQ.cjs} +1 -1
  23. package/dist/{STable-CToIFCiU.js → STable-G2k-tI4g.js} +37 -36
  24. package/dist/applyChartHighlightedYTick-BHVwiljn.cjs +1 -0
  25. package/dist/applyChartHighlightedYTick-DmsstRVM.js +17 -0
  26. package/dist/buildMultiLineChartScales-Di-yTvEB.js +41 -0
  27. package/dist/buildMultiLineChartScales-lVP6h9H4.cjs +1 -0
  28. package/dist/components/SChartBar/SChartBar.types.d.ts +33 -4
  29. package/dist/components/SChartBar/SChartBar.types.d.ts.map +1 -1
  30. package/dist/components/SChartBar/SChartBar.vue.d.ts.map +1 -1
  31. package/dist/components/SChartBar/index.d.ts +1 -1
  32. package/dist/components/SChartBar/index.d.ts.map +1 -1
  33. package/dist/components/SChartBar/utils/buildBarChartConfig.d.ts +8 -2
  34. package/dist/components/SChartBar/utils/buildBarChartConfig.d.ts.map +1 -1
  35. package/dist/components/SChartBar/utils/createBarTargetLinePlugin.d.ts.map +1 -1
  36. package/dist/components/SChartBar/utils/createBarValueLabelPlugin.d.ts +7 -0
  37. package/dist/components/SChartBar/utils/createBarValueLabelPlugin.d.ts.map +1 -0
  38. package/dist/components/SChartBar/utils/demoBarSeries.d.ts +7 -1
  39. package/dist/components/SChartBar/utils/demoBarSeries.d.ts.map +1 -1
  40. package/dist/components/SChartBurnup/SChartBurnup.types.d.ts +8 -1
  41. package/dist/components/SChartBurnup/SChartBurnup.types.d.ts.map +1 -1
  42. package/dist/components/SChartBurnup/utils/buildBurnupChartConfig.d.ts.map +1 -1
  43. package/dist/components/SChartBurnup/utils/demoBurnupPoints.d.ts +1 -0
  44. package/dist/components/SChartBurnup/utils/demoBurnupPoints.d.ts.map +1 -1
  45. package/dist/components/SChartLegend/SChartLegend.types.d.ts +17 -0
  46. package/dist/components/SChartLegend/SChartLegend.types.d.ts.map +1 -1
  47. package/dist/components/SChartLegend/SChartLegend.vue.d.ts +3 -1
  48. package/dist/components/SChartLegend/SChartLegend.vue.d.ts.map +1 -1
  49. package/dist/components/SChartLegend/index.d.ts +1 -0
  50. package/dist/components/SChartLegend/index.d.ts.map +1 -1
  51. package/dist/components/SChartMultiLine/SChartMultiLine.types.d.ts +14 -2
  52. package/dist/components/SChartMultiLine/SChartMultiLine.types.d.ts.map +1 -1
  53. package/dist/components/SChartMultiLine/SChartMultiLine.vue.d.ts +3 -1
  54. package/dist/components/SChartMultiLine/SChartMultiLine.vue.d.ts.map +1 -1
  55. package/dist/components/SChartMultiLine/index.d.ts +1 -1
  56. package/dist/components/SChartMultiLine/index.d.ts.map +1 -1
  57. package/dist/components/SChartMultiLine/utils/buildMultiLineChartConfig.d.ts +9 -2
  58. package/dist/components/SChartMultiLine/utils/buildMultiLineChartConfig.d.ts.map +1 -1
  59. package/dist/components/SChartMultiLine/utils/demoMultiLineSeries.d.ts +4 -1
  60. package/dist/components/SChartMultiLine/utils/demoMultiLineSeries.d.ts.map +1 -1
  61. package/dist/components/SChartPie/SChartPie.types.d.ts +27 -1
  62. package/dist/components/SChartPie/SChartPie.types.d.ts.map +1 -1
  63. package/dist/components/SChartPie/SChartPie.vue.d.ts +16 -2
  64. package/dist/components/SChartPie/SChartPie.vue.d.ts.map +1 -1
  65. package/dist/components/SChartPie/index.d.ts +2 -1
  66. package/dist/components/SChartPie/index.d.ts.map +1 -1
  67. package/dist/components/SChartPie/utils/buildPieChartConfig.d.ts +3 -1
  68. package/dist/components/SChartPie/utils/buildPieChartConfig.d.ts.map +1 -1
  69. package/dist/components/SChartPie/utils/demoPieSlices.d.ts +1 -0
  70. package/dist/components/SChartPie/utils/demoPieSlices.d.ts.map +1 -1
  71. package/dist/components/SChartSegmentedBar/SChartSegmentedBar.types.d.ts +9 -0
  72. package/dist/components/SChartSegmentedBar/SChartSegmentedBar.types.d.ts.map +1 -1
  73. package/dist/components/SChartSegmentedBar/SChartSegmentedBar.vue.d.ts +14 -2
  74. package/dist/components/SChartSegmentedBar/SChartSegmentedBar.vue.d.ts.map +1 -1
  75. package/dist/components/SChartSegmentedBar/utils/buildSegmentedBarChartConfig.d.ts +4 -1
  76. package/dist/components/SChartSegmentedBar/utils/buildSegmentedBarChartConfig.d.ts.map +1 -1
  77. package/dist/components/SChartSegmentedBar/utils/createSegmentedBarBadgePlugin.d.ts.map +1 -1
  78. package/dist/components/SList/utils/resolveListItemFields.d.ts +1 -1
  79. package/dist/components/SList/utils/resolveListItemFields.d.ts.map +1 -1
  80. package/dist/components/SRoadmap/SRoadmap.types.d.ts +47 -0
  81. package/dist/components/SRoadmap/SRoadmap.types.d.ts.map +1 -0
  82. package/dist/components/SRoadmap/SRoadmap.vue.d.ts +21 -0
  83. package/dist/components/SRoadmap/SRoadmap.vue.d.ts.map +1 -0
  84. package/dist/components/SRoadmap/index.d.ts +4 -0
  85. package/dist/components/SRoadmap/index.d.ts.map +1 -0
  86. package/dist/components/SRoadmap/utils/buildRoadmapRows.d.ts +19 -0
  87. package/dist/components/SRoadmap/utils/buildRoadmapRows.d.ts.map +1 -0
  88. package/dist/components/SRoadmap/utils/demoRoadmapItems.d.ts +5 -0
  89. package/dist/components/SRoadmap/utils/demoRoadmapItems.d.ts.map +1 -0
  90. package/dist/components/SRoadmap/utils/roadmapDate.d.ts +16 -0
  91. package/dist/components/SRoadmap/utils/roadmapDate.d.ts.map +1 -0
  92. package/dist/components/STable/STable.vue.d.ts.map +1 -1
  93. package/dist/components/STable/utils/useTableRowHydration.d.ts +3 -1
  94. package/dist/components/STable/utils/useTableRowHydration.d.ts.map +1 -1
  95. package/dist/composables/useChartInteractivity.d.ts +2 -1
  96. package/dist/composables/useChartInteractivity.d.ts.map +1 -1
  97. package/dist/{createChartCrosshairPlugin-B4e8d8OF.cjs → createChartCrosshairPlugin-BTPv09h4.cjs} +1 -1
  98. package/dist/{createChartCrosshairPlugin-C2NUAO5s.js → createChartCrosshairPlugin-EqMlaexu.js} +2 -2
  99. package/dist/createChartMarkersPlugin-BKxLg4pL.cjs +1 -0
  100. package/dist/{createChartMarkersPlugin-DkXituwE.js → createChartMarkersPlugin-DPvfZp_e.js} +11 -11
  101. package/dist/entries/chart-bar.cjs +1 -1
  102. package/dist/entries/chart-bar.js +1 -1
  103. package/dist/entries/chart-burnup.cjs +1 -1
  104. package/dist/entries/chart-burnup.js +1 -1
  105. package/dist/entries/chart-horizontal-bar.cjs +1 -1
  106. package/dist/entries/chart-horizontal-bar.js +1 -1
  107. package/dist/entries/chart-line.cjs +1 -1
  108. package/dist/entries/chart-line.js +1 -1
  109. package/dist/entries/chart-multi-line.cjs +1 -1
  110. package/dist/entries/chart-multi-line.js +1 -1
  111. package/dist/entries/chart-pie.cjs +1 -1
  112. package/dist/entries/chart-pie.d.ts +2 -2
  113. package/dist/entries/chart-pie.d.ts.map +1 -1
  114. package/dist/entries/chart-pie.js +2 -2
  115. package/dist/entries/chart-progress.cjs +1 -1
  116. package/dist/entries/chart-progress.js +1 -1
  117. package/dist/entries/chart-stacked-area.cjs +1 -1
  118. package/dist/entries/chart-stacked-area.js +1 -1
  119. package/dist/entries/chart-stacked-bar.cjs +1 -1
  120. package/dist/entries/chart-stacked-bar.js +1 -1
  121. package/dist/entries/table.cjs +1 -1
  122. package/dist/entries/table.js +1 -1
  123. package/dist/index.cjs +1 -1
  124. package/dist/index.d.ts +7 -5
  125. package/dist/index.d.ts.map +1 -1
  126. package/dist/index.js +569 -303
  127. package/dist/resolveBarStackedSeriesColor-CjwUxrUx.js +11 -0
  128. package/dist/resolveBarStackedSeriesColor-Czkj5bJY.cjs +1 -0
  129. package/dist/resolveCssColorValue-BFMo08-w.cjs +1 -0
  130. package/dist/resolveCssColorValue-DH_SEZj4.js +8 -0
  131. package/dist/resolveSeriesPaletteColor-BepW1gdW.cjs +1 -0
  132. package/dist/{resolveSeriesPaletteColor-B7wHDj1L.js → resolveSeriesPaletteColor-DoPeNP_F.js} +3 -2
  133. package/dist/{resolveStackedChartContext-DxJNWqwE.js → resolveStackedChartContext-BbCzct6O.js} +5 -5
  134. package/dist/{resolveStackedChartContext-Br3N7ISo.cjs → resolveStackedChartContext-D4tuSA6Z.cjs} +1 -1
  135. package/dist/splitChartAxisLabel-D-IFyucJ.js +4 -0
  136. package/dist/splitChartAxisLabel-DAmQOJn6.cjs +2 -0
  137. package/dist/uikit-components.css +1 -1
  138. package/dist/useChartInteractivity-CaZ37kX-.cjs +1 -0
  139. package/dist/{useChartInteractivity-Cl06JL4l.js → useChartInteractivity-DygkiRA1.js} +178 -144
  140. package/dist/utils/chart/burnup/createBurnupTooltipCallbacks.d.ts +3 -1
  141. package/dist/utils/chart/burnup/createBurnupTooltipCallbacks.d.ts.map +1 -1
  142. package/dist/utils/chart/chart.types.d.ts +10 -0
  143. package/dist/utils/chart/chart.types.d.ts.map +1 -1
  144. package/dist/utils/chart/core/applyChartHighlightedYTick.d.ts +19 -0
  145. package/dist/utils/chart/core/applyChartHighlightedYTick.d.ts.map +1 -0
  146. package/dist/utils/chart/core/chartCssVariables.d.ts +3 -0
  147. package/dist/utils/chart/core/chartCssVariables.d.ts.map +1 -1
  148. package/dist/utils/chart/core/chartInteractivity.d.ts +9 -2
  149. package/dist/utils/chart/core/chartInteractivity.d.ts.map +1 -1
  150. package/dist/utils/chart/core/createChartMarkersPlugin.d.ts.map +1 -1
  151. package/dist/utils/chart/core/resolveSeriesPaletteColor.d.ts.map +1 -1
  152. package/dist/utils/chart/core/splitChartAxisLabel.d.ts +2 -0
  153. package/dist/utils/chart/core/splitChartAxisLabel.d.ts.map +1 -0
  154. package/dist/utils/chart/css/resolveCssColorValue.d.ts +2 -0
  155. package/dist/utils/chart/css/resolveCssColorValue.d.ts.map +1 -0
  156. package/dist/utils/chart/horizontalBar/resolveHorizontalBarColor.d.ts.map +1 -1
  157. package/dist/utils/chart/index.d.ts +4 -1
  158. package/dist/utils/chart/index.d.ts.map +1 -1
  159. package/dist/utils/chart/multiLine/buildMultiLineChartScales.d.ts +119 -14
  160. package/dist/utils/chart/multiLine/buildMultiLineChartScales.d.ts.map +1 -1
  161. package/dist/utils/chart/multiLine/createMultiLineTooltipCallbacks.d.ts +7 -2
  162. package/dist/utils/chart/multiLine/createMultiLineTooltipCallbacks.d.ts.map +1 -1
  163. package/package.json +3 -3
  164. package/dist/SChartBar-CUAibXox.js +0 -215
  165. package/dist/SChartBar-xzw8oxXl.cjs +0 -1
  166. package/dist/SChartBurnup-C5Z7UDi-.js +0 -250
  167. package/dist/SChartBurnup-CWSJUoA_.cjs +0 -1
  168. package/dist/SChartHorizontalBar-0RpJa5EJ.cjs +0 -1
  169. package/dist/SChartHorizontalBar-B9SWFvdN.js +0 -175
  170. package/dist/SChartLegend-DGtjd6zV.cjs +0 -1
  171. package/dist/SChartLegend-oZoF8XK7.js +0 -42
  172. package/dist/SChartMultiLine-CG6dKmWm.js +0 -244
  173. package/dist/SChartMultiLine-vz7JdyA3.cjs +0 -1
  174. package/dist/SChartPie-0ugeo2fO.js +0 -182
  175. package/dist/SChartPie-QpnxLQYv.cjs +0 -1
  176. package/dist/buildMultiLineChartScales-7mcIfRVG.cjs +0 -1
  177. package/dist/buildMultiLineChartScales-CFZ8YVeJ.js +0 -19
  178. package/dist/createChartMarkersPlugin-Cg1yGzxW.cjs +0 -1
  179. package/dist/resolveBarStackedSeriesColor-DM7Ax0-s.js +0 -11
  180. package/dist/resolveBarStackedSeriesColor-z3NP5vAS.cjs +0 -1
  181. package/dist/resolveSeriesPaletteColor-D0XlU5vT.cjs +0 -1
  182. 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}});