@servicetitan/marketing-ui 5.9.0 → 5.11.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/ads/ads-stat.js +21 -10
- package/dist/components/ads/ads-stat.js.map +1 -1
- package/dist/components/charts/funnel-chart/components/funnel-chart.js +118 -6
- package/dist/components/charts/funnel-chart/components/funnel-chart.js.map +1 -1
- package/dist/components/charts/funnel-chart/components/funnel-chart.module.less.d.ts +9 -0
- package/dist/components/charts/funnel-chart/components/funnel-svg.js +62 -12
- package/dist/components/charts/funnel-chart/components/funnel-svg.js.map +1 -1
- package/dist/components/charts/funnel-chart/index.js +1 -0
- package/dist/components/charts/funnel-chart/index.js.map +1 -1
- package/dist/components/charts/funnel-chart/utils/const.js +1 -0
- package/dist/components/charts/funnel-chart/utils/const.js.map +1 -1
- package/dist/components/charts/funnel-chart/utils/interface.js +2 -1
- package/dist/components/charts/funnel-chart/utils/interface.js.map +1 -1
- package/dist/components/charts/line-chart/components/body.js +105 -16
- package/dist/components/charts/line-chart/components/body.js.map +1 -1
- package/dist/components/charts/line-chart/components/body.module.less.d.ts +4 -0
- package/dist/components/charts/line-chart/components/container.js +12 -4
- package/dist/components/charts/line-chart/components/container.js.map +1 -1
- package/dist/components/charts/line-chart/components/hover-popover.js +56 -13
- package/dist/components/charts/line-chart/components/hover-popover.js.map +1 -1
- package/dist/components/charts/line-chart/components/hover-popover.module.less.d.ts +5 -0
- package/dist/components/charts/line-chart/components/sidebar.js +35 -5
- package/dist/components/charts/line-chart/components/sidebar.js.map +1 -1
- package/dist/components/charts/line-chart/components/sidebar.module.less.d.ts +13 -0
- package/dist/components/charts/line-chart/components/stuff.js +73 -32
- package/dist/components/charts/line-chart/components/stuff.js.map +1 -1
- package/dist/components/charts/line-chart/components/stuff.module.less.d.ts +6 -0
- package/dist/components/charts/line-chart/components/svg-bars.js +58 -26
- package/dist/components/charts/line-chart/components/svg-bars.js.map +1 -1
- package/dist/components/charts/line-chart/components/svg-body.js +52 -11
- package/dist/components/charts/line-chart/components/svg-body.js.map +1 -1
- package/dist/components/charts/line-chart/components/svg-lines.js +46 -27
- package/dist/components/charts/line-chart/components/svg-lines.js.map +1 -1
- package/dist/components/charts/line-chart/components/svg.module.less.d.ts +5 -0
- package/dist/components/charts/line-chart/index.js +1 -0
- package/dist/components/charts/line-chart/index.js.map +1 -1
- package/dist/components/charts/line-chart/stores/line-chart.store.js +98 -137
- package/dist/components/charts/line-chart/stores/line-chart.store.js.map +1 -1
- package/dist/components/charts/line-chart/stores/svg.store.js +66 -108
- package/dist/components/charts/line-chart/stores/svg.store.js.map +1 -1
- package/dist/components/charts/line-chart/utils/const.js +8 -7
- package/dist/components/charts/line-chart/utils/const.js.map +1 -1
- package/dist/components/charts/line-chart/utils/formatters.js +13 -11
- package/dist/components/charts/line-chart/utils/formatters.js.map +1 -1
- package/dist/components/charts/line-chart/utils/interfaces.js +2 -1
- package/dist/components/charts/line-chart/utils/interfaces.js.map +1 -1
- package/dist/components/charts/line-chart/utils/internal-interfaces.js +2 -1
- package/dist/components/charts/line-chart/utils/internal-interfaces.js.map +1 -1
- package/dist/components/charts/line-chart/utils/key.js +2 -1
- package/dist/components/charts/line-chart/utils/key.js.map +1 -1
- package/dist/components/charts/line-chart/utils/labels.js +50 -46
- package/dist/components/charts/line-chart/utils/labels.js.map +1 -1
- package/dist/components/charts/pie-chart/components/pie-chart.js +60 -6
- package/dist/components/charts/pie-chart/components/pie-chart.js.map +1 -1
- package/dist/components/charts/pie-chart/components/pie-chart.module.less.d.ts +3 -0
- package/dist/components/charts/pie-chart/components/pie.js +176 -39
- package/dist/components/charts/pie-chart/components/pie.js.map +1 -1
- package/dist/components/charts/pie-chart/index.js +2 -0
- package/dist/components/charts/pie-chart/index.js.map +1 -1
- package/dist/components/charts/pie-chart/utils/const.js +55 -39
- package/dist/components/charts/pie-chart/utils/const.js.map +1 -1
- package/dist/components/charts/pie-chart/utils/interface.js +2 -1
- package/dist/components/charts/pie-chart/utils/interface.js.map +1 -1
- package/dist/components/image-cropper/image-cropper.js +74 -88
- package/dist/components/image-cropper/image-cropper.js.map +1 -1
- package/dist/components/stat/stat-card.js +68 -22
- package/dist/components/stat/stat-card.js.map +1 -1
- package/dist/components/stat/stat-card.module.less.d.ts +5 -0
- package/dist/components/stat/stat-extended-card.js +76 -4
- package/dist/components/stat/stat-extended-card.js.map +1 -1
- package/dist/components/ui/action-button/action-button.js +33 -7
- package/dist/components/ui/action-button/action-button.js.map +1 -1
- package/dist/components/ui/action-button/action-button.module.less.d.ts +9 -0
- package/dist/components/ui/action-button/index.js +1 -0
- package/dist/components/ui/action-button/index.js.map +1 -1
- package/dist/components/ui/centered-spinner/centered-spinner.js +20 -2
- package/dist/components/ui/centered-spinner/centered-spinner.js.map +1 -1
- package/dist/components/ui/date-range-picker/date-range-picker.js +71 -35
- package/dist/components/ui/date-range-picker/date-range-picker.js.map +1 -1
- package/dist/components/ui/date-range-picker/date-range-picker.module.less.d.ts +4 -0
- package/dist/components/ui/disabled-button.js +12 -3
- package/dist/components/ui/disabled-button.js.map +1 -1
- package/dist/components/ui/label-with-hint/label-with-hint.js +23 -1
- package/dist/components/ui/label-with-hint/label-with-hint.js.map +1 -1
- package/dist/components/ui/line-text/index.js +1 -0
- package/dist/components/ui/line-text/index.js.map +1 -1
- package/dist/components/ui/line-text/line-text.js +71 -12
- package/dist/components/ui/line-text/line-text.js.map +1 -1
- package/dist/components/ui/line-text/line-text.module.less.d.ts +6 -0
- package/dist/components/ui/title-popover/index.js +1 -0
- package/dist/components/ui/title-popover/index.js.map +1 -1
- package/dist/components/ui/title-popover/title-popover.js +78 -69
- package/dist/components/ui/title-popover/title-popover.js.map +1 -1
- package/dist/components/ui/title-popover/title-popover.module.less.d.ts +3 -0
- package/dist/index.js +3 -1
- package/dist/index.js.map +1 -1
- package/dist/utils/ads-texts.js +2 -1
- package/dist/utils/ads-texts.js.map +1 -1
- package/dist/utils/date/date-range-picker-options.js +90 -68
- package/dist/utils/date/date-range-picker-options.js.map +1 -1
- package/dist/utils/date/date-range-picker-state.js +42 -43
- package/dist/utils/date/date-range-picker-state.js.map +1 -1
- package/dist/utils/date/date-tenant.js +4 -6
- package/dist/utils/date/date-tenant.js.map +1 -1
- package/dist/utils/date/date.js +5 -9
- package/dist/utils/date/date.js.map +1 -1
- package/dist/utils/date/index.js +1 -0
- package/dist/utils/date/index.js.map +1 -1
- package/dist/utils/format-big-numbers.js +11 -6
- package/dist/utils/format-big-numbers.js.map +1 -1
- package/dist/utils/formatters.js +8 -7
- package/dist/utils/formatters.js.map +1 -1
- package/dist/utils/helpers.js +9 -12
- package/dist/utils/helpers.js.map +1 -1
- package/dist/utils/marketing-parner-handlers.js +9 -12
- package/dist/utils/marketing-parner-handlers.js.map +1 -1
- package/dist/utils/string-case.js +1 -0
- package/dist/utils/string-case.js.map +1 -1
- package/dist/utils/use-client-rect.js +19 -19
- package/dist/utils/use-client-rect.js.map +1 -1
- package/dist/utils/use-target-range-store.js +7 -6
- package/dist/utils/use-target-range-store.js.map +1 -1
- package/package.json +11 -11
- package/dist/components/charts/funnel-chart/funnel-chart.stories.js +0 -76
- package/dist/components/charts/funnel-chart/funnel-chart.stories.js.map +0 -1
- package/dist/components/charts/line-chart/line-chart.stories.js +0 -225
- package/dist/components/charts/line-chart/line-chart.stories.js.map +0 -1
- package/dist/components/charts/pie-chart/pie-chart.stories.js +0 -22
- package/dist/components/charts/pie-chart/pie-chart.stories.js.map +0 -1
- package/dist/components/image-cropper/image-cropper.stories.js +0 -39
- package/dist/components/image-cropper/image-cropper.stories.js.map +0 -1
- package/dist/components/stat/stat-cards.stories.js +0 -16
- package/dist/components/stat/stat-cards.stories.js.map +0 -1
- package/dist/components/stat/stat-extended-card.stories.js +0 -12
- package/dist/components/stat/stat-extended-card.stories.js.map +0 -1
- package/dist/components/ui/action-button/action-button.stories.js +0 -11
- package/dist/components/ui/action-button/action-button.stories.js.map +0 -1
- package/dist/components/ui/centered-spinner/centered-spinner.stories.js +0 -12
- package/dist/components/ui/centered-spinner/centered-spinner.stories.js.map +0 -1
- package/dist/components/ui/date-range-picker/date-range-picker.stories.js +0 -18
- package/dist/components/ui/date-range-picker/date-range-picker.stories.js.map +0 -1
- package/dist/components/ui/label-with-hint/label-with-hint.stories.js +0 -12
- package/dist/components/ui/label-with-hint/label-with-hint.stories.js.map +0 -1
- package/dist/components/ui/line-text/line-text-body.stories.js +0 -11
- package/dist/components/ui/line-text/line-text-body.stories.js.map +0 -1
- package/dist/components/ui/line-text/line-text-head.stories.js +0 -11
- package/dist/components/ui/line-text/line-text-head.stories.js.map +0 -1
- package/dist/components/ui/title-popover/title-popover.stories.js +0 -17
- package/dist/components/ui/title-popover/title-popover.stories.js.map +0 -1
- package/dist/utils/__tests__/format-big-numbers.test.js +0 -16
- package/dist/utils/__tests__/format-big-numbers.test.js.map +0 -1
- package/dist/utils/__tests__/formatters.test.js +0 -45
- package/dist/utils/__tests__/formatters.test.js.map +0 -1
- package/dist/utils/__tests__/helpers.test.js +0 -31
- package/dist/utils/__tests__/helpers.test.js.map +0 -1
- package/dist/utils/__tests__/string-case.test.js +0 -20
- package/dist/utils/__tests__/string-case.test.js.map +0 -1
- package/dist/utils/date/__mocks__/date-mock.js +0 -19
- package/dist/utils/date/__mocks__/date-mock.js.map +0 -1
- package/dist/utils/date/__tests__/date-range-picker.test.js +0 -93
- package/dist/utils/date/__tests__/date-range-picker.test.js.map +0 -1
- package/dist/utils/date/__tests__/date-tenant.test.js +0 -29
- package/dist/utils/date/__tests__/date-tenant.test.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"sources":["../../../../../src/components/charts/line-chart/components/svg-bars.tsx"],"sourcesContent":["import { FC } from 'react';\nimport { observer } from 'mobx-react';\nimport { useDependencies } from '@servicetitan/react-ioc';\nimport { ChartMetric } from '../utils/internal-interfaces';\nimport { keyVal } from '../utils/key';\nimport { SvgStore } from '../stores/svg.store';\n\ninterface SvgBarsProps {\n metrics: ChartMetric[];\n isStackedBarChart?: boolean;\n isGroupedBarChart?: boolean;\n}\n\nexport const SvgBars: FC<SvgBarsProps> = observer(\n ({ metrics, isStackedBarChart, isGroupedBarChart }) => {\n // eslint-disable-next-line react-hooks/rules-of-hooks\n const [store] = useDependencies(SvgStore);\n const { fpx, fpy, barWidth, length } = store;\n const barWidthHalf = barWidth / 2;\n const paths = [];\n\n for (let i = 0; i < length; i++) {\n const x = store.periodX(i);\n const values = metrics.map(m => ({\n id: m.id,\n color: m.valuesOpts?.[i]?.color ?? m.color,\n opacity: m.opacity,\n val: store.periodY(m, i),\n }));\n\n if (isStackedBarChart) {\n let stackedBarHeight = values.reduce((sum, curr) => sum + curr.val, 0);\n\n for (const value of values) {\n paths.push(\n <rect\n key={keyVal(value.id, i)}\n x={fpx(x - barWidthHalf)}\n y={fpy(stackedBarHeight)}\n width={fpx(barWidth)}\n height={fpx(value.val)}\n fill={value.color}\n />\n );\n stackedBarHeight -= value.val;\n }\n } else if (isGroupedBarChart) {\n for (let j = 0; j < values.length; j++) {\n const groupedBarX = (j * barWidth) / values.length;\n const value = values[j];\n\n paths.push(\n <rect\n key={keyVal(value.id, i)}\n x={x + groupedBarX - barWidthHalf}\n y={fpy(value.val)}\n width={barWidth / values.length - 0.1}\n height={fpx(value.val)}\n fill={value.color}\n opacity={value.opacity}\n />\n );\n }\n } else {\n values.sort((a, b) => b.val - a.val);\n for (const value of values) {\n paths.push(\n <rect\n key={keyVal(value.id, i)}\n x={fpx(x - barWidthHalf)}\n y={fpy(value.val)}\n width={fpx(barWidth)}\n height={fpx(value.val)}\n fill={value.color}\n />\n );\n }\n }\n }\n\n return <g>{paths}</g>;\n }\n);\n\ninterface SvgBarsHoverProps {\n onHover(ind: number): void;\n onLeave(ind: number): void;\n}\n\nexport const SvgBarsHover: FC<SvgBarsHoverProps> = observer(({ onHover, onLeave }) => {\n // eslint-disable-next-line react-hooks/rules-of-hooks\n const [store] = useDependencies(SvgStore);\n const { fpx, fpy, barWidth, length } = store;\n const barWidthHalf = barWidth / 2;\n const paths = [];\n\n for (let i = 0; i < length; i++) {\n const x = store.periodX(i);\n\n paths.push(\n <rect\n key={keyVal('_', i)}\n onMouseEnter={() => onHover(i)}\n onMouseLeave={() => onLeave(i)}\n x={fpx(x - barWidthHalf)}\n y={fpy(100)}\n width={fpx(barWidth)}\n height=\"100%\"\n fill=\"white\"\n fillOpacity=\"0\"\n />\n );\n }\n\n return <g>{paths}</g>;\n});\n"],"names":["observer","useDependencies","keyVal","SvgStore","SvgBars","metrics","isStackedBarChart","isGroupedBarChart","store","fpx","fpy","barWidth","length","barWidthHalf","paths","i","x","periodX","values","map","m","id","color","valuesOpts","opacity","val","periodY","stackedBarHeight","reduce","sum","curr","value","push","rect","y","width","height","fill","j","groupedBarX","sort","a","b","g","SvgBarsHover","onHover","onLeave","onMouseEnter","onMouseLeave","fillOpacity"],"mappings":"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"}
|
|
@@ -7,21 +7,62 @@ import { keyVal } from '../utils/key';
|
|
|
7
7
|
import { SvgBars, SvgBarsHover } from './svg-bars';
|
|
8
8
|
import { SvgLines } from './svg-lines';
|
|
9
9
|
import * as Styles from './svg.module.less';
|
|
10
|
-
const SvgGrid = ()
|
|
10
|
+
const SvgGrid = ()=>{
|
|
11
11
|
const lines = [];
|
|
12
|
-
for
|
|
12
|
+
for(let i = 1; i <= 10; i += 1){
|
|
13
13
|
const y = `${9.09 * i}%`;
|
|
14
|
-
lines.push(_jsx("line", {
|
|
14
|
+
lines.push(/*#__PURE__*/ _jsx("line", {
|
|
15
|
+
className: Styles.line,
|
|
16
|
+
x1: "0",
|
|
17
|
+
y1: y,
|
|
18
|
+
x2: "100%",
|
|
19
|
+
y2: y,
|
|
20
|
+
stroke: tokens.colorNeutral60,
|
|
21
|
+
strokeWidth: "1"
|
|
22
|
+
}, y));
|
|
15
23
|
}
|
|
16
|
-
return _jsx("g", {
|
|
24
|
+
return /*#__PURE__*/ _jsx("g", {
|
|
25
|
+
children: lines
|
|
26
|
+
});
|
|
17
27
|
};
|
|
18
|
-
export const SvgBody = observer(({ horizontalGrid, metrics })
|
|
28
|
+
export const SvgBody = observer(({ horizontalGrid, metrics })=>{
|
|
19
29
|
const [{ key }] = useDependencies(SvgStore);
|
|
20
|
-
const barMetrics = metrics.filter(m
|
|
21
|
-
const stackedBarMetrics = metrics.filter(m
|
|
22
|
-
const groupedBarMetrics = metrics.filter(m
|
|
23
|
-
const lineMetrics = metrics.filter(m
|
|
24
|
-
return
|
|
30
|
+
const barMetrics = metrics.filter((m)=>m.type === 'bar');
|
|
31
|
+
const stackedBarMetrics = metrics.filter((m)=>m.type === 'stacked-bar');
|
|
32
|
+
const groupedBarMetrics = metrics.filter((m)=>m.type === 'grouped-bar');
|
|
33
|
+
const lineMetrics = metrics.filter((m)=>m.type === 'line');
|
|
34
|
+
return /*#__PURE__*/ _jsxs("svg", {
|
|
35
|
+
className: Styles.svgBody,
|
|
36
|
+
viewBox: "0 0 100 100",
|
|
37
|
+
preserveAspectRatio: "none",
|
|
38
|
+
vectorEffect: "non-scaling-stroke",
|
|
39
|
+
children: [
|
|
40
|
+
horizontalGrid && /*#__PURE__*/ _jsx(SvgGrid, {}),
|
|
41
|
+
!!barMetrics.length && /*#__PURE__*/ _jsx(SvgBars, {
|
|
42
|
+
metrics: barMetrics
|
|
43
|
+
}, keyVal('bars', key)),
|
|
44
|
+
!!stackedBarMetrics.length && /*#__PURE__*/ _jsx(SvgBars, {
|
|
45
|
+
metrics: stackedBarMetrics,
|
|
46
|
+
isStackedBarChart: true
|
|
47
|
+
}, keyVal('stacked-bars', key)),
|
|
48
|
+
!!groupedBarMetrics.length && /*#__PURE__*/ _jsx(SvgBars, {
|
|
49
|
+
metrics: groupedBarMetrics,
|
|
50
|
+
isGroupedBarChart: true
|
|
51
|
+
}, keyVal('grouped-bars', key)),
|
|
52
|
+
!!lineMetrics.length && /*#__PURE__*/ _jsx(SvgLines, {
|
|
53
|
+
metrics: lineMetrics
|
|
54
|
+
}, keyVal('lines', key))
|
|
55
|
+
]
|
|
56
|
+
});
|
|
25
57
|
});
|
|
26
|
-
export const SvgBodyHover = ({ onValueHover, onValueLeave })
|
|
58
|
+
export const SvgBodyHover = ({ onValueHover, onValueLeave })=>/*#__PURE__*/ _jsx("svg", {
|
|
59
|
+
className: Styles.svgHover,
|
|
60
|
+
viewBox: "0 0 100 100",
|
|
61
|
+
preserveAspectRatio: "none",
|
|
62
|
+
children: /*#__PURE__*/ _jsx(SvgBarsHover, {
|
|
63
|
+
onHover: onValueHover,
|
|
64
|
+
onLeave: onValueLeave
|
|
65
|
+
})
|
|
66
|
+
});
|
|
67
|
+
|
|
27
68
|
//# sourceMappingURL=svg-body.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"sources":["../../../../../src/components/charts/line-chart/components/svg-body.tsx"],"sourcesContent":["import { FC } from 'react';\nimport { observer } from 'mobx-react';\nimport { tokens } from '@servicetitan/tokens/core';\nimport { useDependencies } from '@servicetitan/react-ioc';\n\nimport { SvgStore } from '../stores/svg.store';\nimport { ChartMetric } from '../utils/internal-interfaces';\nimport { keyVal } from '../utils/key';\n\nimport { SvgBars, SvgBarsHover } from './svg-bars';\nimport { SvgLines } from './svg-lines';\nimport * as Styles from './svg.module.less';\n\nconst SvgGrid: FC = () => {\n const lines = [];\n\n for (let i = 1; i <= 10; i += 1) {\n const y = `${9.09 * i}%`;\n\n lines.push(\n <line\n className={Styles.line}\n key={y}\n x1=\"0\"\n y1={y}\n x2=\"100%\"\n y2={y}\n stroke={tokens.colorNeutral60}\n strokeWidth=\"1\"\n />\n );\n }\n\n return <g>{lines}</g>;\n};\n\ninterface SvgBodyProps {\n horizontalGrid: boolean;\n metrics: ChartMetric[];\n}\n\nexport const SvgBody: FC<SvgBodyProps> = observer(({ horizontalGrid, metrics }) => {\n const [{ key }] = useDependencies(SvgStore);\n const barMetrics = metrics.filter(m => m.type === 'bar');\n const stackedBarMetrics = metrics.filter(m => m.type === 'stacked-bar');\n const groupedBarMetrics = metrics.filter(m => m.type === 'grouped-bar');\n const lineMetrics = metrics.filter(m => m.type === 'line');\n\n return (\n <svg\n className={Styles.svgBody}\n viewBox=\"0 0 100 100\"\n preserveAspectRatio=\"none\"\n vectorEffect=\"non-scaling-stroke\"\n >\n {horizontalGrid && <SvgGrid />}\n {!!barMetrics.length && <SvgBars key={keyVal('bars', key)} metrics={barMetrics} />}\n {!!stackedBarMetrics.length && (\n <SvgBars\n key={keyVal('stacked-bars', key)}\n metrics={stackedBarMetrics}\n isStackedBarChart\n />\n )}\n {!!groupedBarMetrics.length && (\n <SvgBars\n key={keyVal('grouped-bars', key)}\n metrics={groupedBarMetrics}\n isGroupedBarChart\n />\n )}\n {!!lineMetrics.length && <SvgLines key={keyVal('lines', key)} metrics={lineMetrics} />}\n </svg>\n );\n});\n\ninterface SvgBodyHoverProps {\n onValueHover(ind: number): void;\n onValueLeave(ind: number): void;\n}\n\nexport const SvgBodyHover: FC<SvgBodyHoverProps> = ({ onValueHover, onValueLeave }) => (\n <svg className={Styles.svgHover} viewBox=\"0 0 100 100\" preserveAspectRatio=\"none\">\n <SvgBarsHover onHover={onValueHover} onLeave={onValueLeave} />\n </svg>\n);\n"],"names":["observer","tokens","useDependencies","SvgStore","keyVal","SvgBars","SvgBarsHover","SvgLines","Styles","SvgGrid","lines","i","y","push","line","className","x1","y1","x2","y2","stroke","colorNeutral60","strokeWidth","g","SvgBody","horizontalGrid","metrics","key","barMetrics","filter","m","type","stackedBarMetrics","groupedBarMetrics","lineMetrics","svg","svgBody","viewBox","preserveAspectRatio","vectorEffect","length","isStackedBarChart","isGroupedBarChart","SvgBodyHover","onValueHover","onValueLeave","svgHover","onHover","onLeave"],"mappings":";AACA,SAASA,QAAQ,QAAQ,aAAa;AACtC,SAASC,MAAM,QAAQ,4BAA4B;AACnD,SAASC,eAAe,QAAQ,0BAA0B;AAE1D,SAASC,QAAQ,QAAQ,sBAAsB;AAE/C,SAASC,MAAM,QAAQ,eAAe;AAEtC,SAASC,OAAO,EAAEC,YAAY,QAAQ,aAAa;AACnD,SAASC,QAAQ,QAAQ,cAAc;AACvC,YAAYC,YAAY,oBAAoB;AAE5C,MAAMC,UAAc;IAChB,MAAMC,QAAQ,EAAE;IAEhB,IAAK,IAAIC,IAAI,GAAGA,KAAK,IAAIA,KAAK,EAAG;QAC7B,MAAMC,IAAI,GAAG,OAAOD,EAAE,CAAC,CAAC;QAExBD,MAAMG,IAAI,eACN,KAACC;YACGC,WAAWP,OAAOM,IAAI;YAEtBE,IAAG;YACHC,IAAIL;YACJM,IAAG;YACHC,IAAIP;YACJQ,QAAQnB,OAAOoB,cAAc;YAC7BC,aAAY;WANPV;IASjB;IAEA,qBAAO,KAACW;kBAAGb;;AACf;AAOA,OAAO,MAAMc,UAA4BxB,SAAS,CAAC,EAAEyB,cAAc,EAAEC,OAAO,EAAE;IAC1E,MAAM,CAAC,EAAEC,GAAG,EAAE,CAAC,GAAGzB,gBAAgBC;IAClC,MAAMyB,aAAaF,QAAQG,MAAM,CAACC,CAAAA,IAAKA,EAAEC,IAAI,KAAK;IAClD,MAAMC,oBAAoBN,QAAQG,MAAM,CAACC,CAAAA,IAAKA,EAAEC,IAAI,KAAK;IACzD,MAAME,oBAAoBP,QAAQG,MAAM,CAACC,CAAAA,IAAKA,EAAEC,IAAI,KAAK;IACzD,MAAMG,cAAcR,QAAQG,MAAM,CAACC,CAAAA,IAAKA,EAAEC,IAAI,KAAK;IAEnD,qBACI,MAACI;QACGpB,WAAWP,OAAO4B,OAAO;QACzBC,SAAQ;QACRC,qBAAoB;QACpBC,cAAa;;YAEZd,gCAAkB,KAAChB;YACnB,CAAC,CAACmB,WAAWY,MAAM,kBAAI,KAACnC;gBAAkCqB,SAASE;eAA9BxB,OAAO,QAAQuB;YACpD,CAAC,CAACK,kBAAkBQ,MAAM,kBACvB,KAACnC;gBAEGqB,SAASM;gBACTS,iBAAiB;eAFZrC,OAAO,gBAAgBuB;YAKnC,CAAC,CAACM,kBAAkBO,MAAM,kBACvB,KAACnC;gBAEGqB,SAASO;gBACTS,iBAAiB;eAFZtC,OAAO,gBAAgBuB;YAKnC,CAAC,CAACO,YAAYM,MAAM,kBAAI,KAACjC;gBAAoCmB,SAASQ;eAA/B9B,OAAO,SAASuB;;;AAGpE,GAAG;AAOH,OAAO,MAAMgB,eAAsC,CAAC,EAAEC,YAAY,EAAEC,YAAY,EAAE,iBAC9E,KAACV;QAAIpB,WAAWP,OAAOsC,QAAQ;QAAET,SAAQ;QAAcC,qBAAoB;kBACvE,cAAA,KAAChC;YAAayC,SAASH;YAAcI,SAASH;;OAEpD"}
|
|
@@ -4,33 +4,52 @@ import { observer } from 'mobx-react';
|
|
|
4
4
|
import { useDependencies } from '@servicetitan/react-ioc';
|
|
5
5
|
import { SvgStore } from '../stores/svg.store';
|
|
6
6
|
import * as Styles from './svg.module.less';
|
|
7
|
-
const SvgLine = ({ color, points, dashed })
|
|
8
|
-
|
|
7
|
+
const SvgLine = ({ color, points, dashed })=>/*#__PURE__*/ _jsx("path", {
|
|
8
|
+
className: Styles.line,
|
|
9
|
+
d: points.map(([px, py], ind)=>(ind === 0 ? 'M' : 'L') + `${px} ${py}`).join(' '),
|
|
10
|
+
fill: "transparent",
|
|
11
|
+
stroke: color,
|
|
12
|
+
strokeWidth: "3",
|
|
13
|
+
strokeDasharray: dashed ? '5,5' : undefined
|
|
14
|
+
});
|
|
15
|
+
export const SvgLines = observer(({ metrics })=>{
|
|
9
16
|
const [store] = useDependencies(SvgStore);
|
|
10
|
-
const lines = useMemo(()
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
17
|
+
const lines = useMemo(()=>metrics.map((m)=>{
|
|
18
|
+
var _m_opts;
|
|
19
|
+
const points = m.values.map((val, ind)=>[
|
|
20
|
+
store.periodX(ind),
|
|
21
|
+
store.periodY(m, ind)
|
|
22
|
+
]);
|
|
23
|
+
if (store.xOffset && points.length > 1) {
|
|
24
|
+
points[0][1] = (points[1][0] * points[0][1] - points[0][0] * points[1][1]) / (points[1][0] - points[0][0]);
|
|
25
|
+
points[0][0] = 0;
|
|
26
|
+
const l = points.length - 1;
|
|
27
|
+
const x1 = 100 - points[l - 1][0];
|
|
28
|
+
const x2 = 100 - points[l][0];
|
|
29
|
+
points[l][1] = (x1 * points[l][1] - x2 * points[l - 1][1]) / (x1 - x2);
|
|
30
|
+
points[l][0] = 100;
|
|
31
|
+
}
|
|
32
|
+
var _m_opts_dashed;
|
|
33
|
+
return {
|
|
34
|
+
id: m.id,
|
|
35
|
+
color: m.color,
|
|
36
|
+
points: points.map(([x, y])=>[
|
|
37
|
+
store.fpx(x),
|
|
38
|
+
store.fpy(y)
|
|
39
|
+
]),
|
|
40
|
+
dashed: (_m_opts_dashed = (_m_opts = m.opts) === null || _m_opts === void 0 ? void 0 : _m_opts.dashed) !== null && _m_opts_dashed !== void 0 ? _m_opts_dashed : false
|
|
41
|
+
};
|
|
42
|
+
}), [
|
|
43
|
+
store,
|
|
44
|
+
metrics
|
|
45
|
+
]);
|
|
46
|
+
return /*#__PURE__*/ _jsx("g", {
|
|
47
|
+
children: lines.map(({ id, color, points, dashed })=>/*#__PURE__*/ _jsx(SvgLine, {
|
|
48
|
+
color: color,
|
|
49
|
+
points: points,
|
|
50
|
+
dashed: dashed
|
|
51
|
+
}, id))
|
|
52
|
+
});
|
|
35
53
|
});
|
|
54
|
+
|
|
36
55
|
//# sourceMappingURL=svg-lines.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"sources":["../../../../../src/components/charts/line-chart/components/svg-lines.tsx"],"sourcesContent":["import { useMemo, FC } from 'react';\nimport { observer } from 'mobx-react';\nimport { useDependencies } from '@servicetitan/react-ioc';\nimport { ChartMetric } from '../utils/internal-interfaces';\nimport { SvgStore } from '../stores/svg.store';\nimport * as Styles from './svg.module.less';\n\ninterface SvgLineProps {\n color: string;\n points: string[][];\n dashed: boolean;\n}\n\nconst SvgLine: FC<SvgLineProps> = ({ color, points, dashed }) => (\n <path\n className={Styles.line}\n d={points.map(([px, py], ind) => (ind === 0 ? 'M' : 'L') + `${px} ${py}`).join(' ')}\n fill=\"transparent\"\n stroke={color}\n strokeWidth=\"3\"\n strokeDasharray={dashed ? '5,5' : undefined}\n />\n);\n\ninterface SvgLinesProps {\n metrics: ChartMetric[];\n}\n\nexport const SvgLines: FC<SvgLinesProps> = observer(({ metrics }) => {\n const [store] = useDependencies(SvgStore);\n\n const lines = useMemo(\n () =>\n metrics.map(m => {\n const points = m.values.map((val, ind) => [\n store.periodX(ind),\n store.periodY(m, ind),\n ]);\n\n if (store.xOffset && points.length > 1) {\n points[0][1] =\n (points[1][0] * points[0][1] - points[0][0] * points[1][1]) /\n (points[1][0] - points[0][0]);\n points[0][0] = 0;\n\n const l = points.length - 1;\n const x1 = 100 - points[l - 1][0];\n const x2 = 100 - points[l][0];\n\n points[l][1] = (x1 * points[l][1] - x2 * points[l - 1][1]) / (x1 - x2);\n points[l][0] = 100;\n }\n\n return {\n id: m.id,\n color: m.color,\n points: points.map(([x, y]) => [store.fpx(x), store.fpy(y)]),\n dashed: m.opts?.dashed ?? false,\n };\n }),\n [store, metrics]\n );\n\n return (\n <g>\n {lines.map(({ id, color, points, dashed }) => (\n <SvgLine key={id} color={color} points={points} dashed={dashed} />\n ))}\n </g>\n );\n});\n"],"names":["useMemo","observer","useDependencies","SvgStore","Styles","SvgLine","color","points","dashed","path","className","line","d","map","px","py","ind","join","fill","stroke","strokeWidth","strokeDasharray","undefined","SvgLines","metrics","store","lines","m","values","val","periodX","periodY","xOffset","length","l","x1","x2","id","x","y","fpx","fpy","opts","g"],"mappings":";AAAA,SAASA,OAAO,QAAY,QAAQ;AACpC,SAASC,QAAQ,QAAQ,aAAa;AACtC,SAASC,eAAe,QAAQ,0BAA0B;AAE1D,SAASC,QAAQ,QAAQ,sBAAsB;AAC/C,YAAYC,YAAY,oBAAoB;AAQ5C,MAAMC,UAA4B,CAAC,EAAEC,KAAK,EAAEC,MAAM,EAAEC,MAAM,EAAE,iBACxD,KAACC;QACGC,WAAWN,OAAOO,IAAI;QACtBC,GAAGL,OAAOM,GAAG,CAAC,CAAC,CAACC,IAAIC,GAAG,EAAEC,MAAQ,AAACA,CAAAA,QAAQ,IAAI,MAAM,GAAE,IAAK,GAAGF,GAAG,CAAC,EAAEC,IAAI,EAAEE,IAAI,CAAC;QAC/EC,MAAK;QACLC,QAAQb;QACRc,aAAY;QACZC,iBAAiBb,SAAS,QAAQc;;AAQ1C,OAAO,MAAMC,WAA8BtB,SAAS,CAAC,EAAEuB,OAAO,EAAE;IAC5D,MAAM,CAACC,MAAM,GAAGvB,gBAAgBC;IAEhC,MAAMuB,QAAQ1B,QACV,IACIwB,QAAQX,GAAG,CAACc,CAAAA;gBAwBIA;YAvBZ,MAAMpB,SAASoB,EAAEC,MAAM,CAACf,GAAG,CAAC,CAACgB,KAAKb,MAAQ;oBACtCS,MAAMK,OAAO,CAACd;oBACdS,MAAMM,OAAO,CAACJ,GAAGX;iBACpB;YAED,IAAIS,MAAMO,OAAO,IAAIzB,OAAO0B,MAAM,GAAG,GAAG;gBACpC1B,MAAM,CAAC,EAAE,CAAC,EAAE,GACR,AAACA,CAAAA,MAAM,CAAC,EAAE,CAAC,EAAE,GAAGA,MAAM,CAAC,EAAE,CAAC,EAAE,GAAGA,MAAM,CAAC,EAAE,CAAC,EAAE,GAAGA,MAAM,CAAC,EAAE,CAAC,EAAE,AAAD,IACxDA,CAAAA,MAAM,CAAC,EAAE,CAAC,EAAE,GAAGA,MAAM,CAAC,EAAE,CAAC,EAAE,AAAD;gBAC/BA,MAAM,CAAC,EAAE,CAAC,EAAE,GAAG;gBAEf,MAAM2B,IAAI3B,OAAO0B,MAAM,GAAG;gBAC1B,MAAME,KAAK,MAAM5B,MAAM,CAAC2B,IAAI,EAAE,CAAC,EAAE;gBACjC,MAAME,KAAK,MAAM7B,MAAM,CAAC2B,EAAE,CAAC,EAAE;gBAE7B3B,MAAM,CAAC2B,EAAE,CAAC,EAAE,GAAG,AAACC,CAAAA,KAAK5B,MAAM,CAAC2B,EAAE,CAAC,EAAE,GAAGE,KAAK7B,MAAM,CAAC2B,IAAI,EAAE,CAAC,EAAE,AAAD,IAAMC,CAAAA,KAAKC,EAAC;gBACpE7B,MAAM,CAAC2B,EAAE,CAAC,EAAE,GAAG;YACnB;gBAMYP;YAJZ,OAAO;gBACHU,IAAIV,EAAEU,EAAE;gBACR/B,OAAOqB,EAAErB,KAAK;gBACdC,QAAQA,OAAOM,GAAG,CAAC,CAAC,CAACyB,GAAGC,EAAE,GAAK;wBAACd,MAAMe,GAAG,CAACF;wBAAIb,MAAMgB,GAAG,CAACF;qBAAG;gBAC3D/B,QAAQmB,CAAAA,kBAAAA,UAAAA,EAAEe,IAAI,cAANf,8BAAAA,QAAQnB,MAAM,cAAdmB,4BAAAA,iBAAkB;YAC9B;QACJ,IACJ;QAACF;QAAOD;KAAQ;IAGpB,qBACI,KAACmB;kBACIjB,MAAMb,GAAG,CAAC,CAAC,EAAEwB,EAAE,EAAE/B,KAAK,EAAEC,MAAM,EAAEC,MAAM,EAAE,iBACrC,KAACH;gBAAiBC,OAAOA;gBAAOC,QAAQA;gBAAQC,QAAQA;eAA1C6B;;AAI9B,GAAG"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"sources":["../../../../src/components/charts/line-chart/index.ts"],"sourcesContent":["export * from './utils/interfaces';\nexport * from './components/container';\n"],"names":[],"mappings":"AAAA,cAAc,qBAAqB;AACnC,cAAc,yBAAyB"}
|
|
@@ -1,33 +1,42 @@
|
|
|
1
|
-
|
|
1
|
+
function _define_property(obj, key, value) {
|
|
2
|
+
if (key in obj) {
|
|
3
|
+
Object.defineProperty(obj, key, {
|
|
4
|
+
value: value,
|
|
5
|
+
enumerable: true,
|
|
6
|
+
configurable: true,
|
|
7
|
+
writable: true
|
|
8
|
+
});
|
|
9
|
+
} else {
|
|
10
|
+
obj[key] = value;
|
|
11
|
+
}
|
|
12
|
+
return obj;
|
|
13
|
+
}
|
|
14
|
+
function _ts_decorate(decorators, target, key, desc) {
|
|
2
15
|
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
16
|
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
-
else for
|
|
17
|
+
else for(var i = decorators.length - 1; i >= 0; i--)if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
18
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
-
}
|
|
7
|
-
|
|
19
|
+
}
|
|
20
|
+
function _ts_metadata(k, v) {
|
|
8
21
|
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
9
|
-
}
|
|
22
|
+
}
|
|
10
23
|
import { injectable } from '@servicetitan/react-ioc';
|
|
11
24
|
import { action, observable, makeObservable } from 'mobx';
|
|
25
|
+
import { LineChartDisplay, LineChartResolution } from '../utils/interfaces';
|
|
12
26
|
import { defaultDisplay } from '../utils/const';
|
|
27
|
+
import { SideMetricsSettings } from '../utils/internal-interfaces';
|
|
13
28
|
import { getFormatter } from '../utils/formatters';
|
|
14
|
-
const getSideMetricsSettings = (metrics, values, range, title, format)
|
|
15
|
-
var _a;
|
|
29
|
+
const getSideMetricsSettings = (metrics, values, range, title, format)=>{
|
|
16
30
|
let maxRange = range !== null && range !== void 0 ? range : 0;
|
|
17
|
-
const lineBarMetricIDs = metrics
|
|
18
|
-
|
|
19
|
-
.map(m => m.id);
|
|
20
|
-
const stackedBarMetricIDs = metrics.filter(m => m.type === 'stacked-bar').map(m => m.id);
|
|
31
|
+
const lineBarMetricIDs = metrics.filter((m)=>m.type === 'line' || m.type === 'bar' || m.type === 'grouped-bar').map((m)=>m.id);
|
|
32
|
+
const stackedBarMetricIDs = metrics.filter((m)=>m.type === 'stacked-bar').map((m)=>m.id);
|
|
21
33
|
if (!maxRange) {
|
|
22
|
-
maxRange = values.reduce((sum, metricValues)
|
|
23
|
-
? Math.max(sum, metricValues.values.reduce((acc, v) => Math.max(acc, v), 0))
|
|
24
|
-
: sum, 0);
|
|
34
|
+
maxRange = values.reduce((sum, metricValues)=>lineBarMetricIDs.includes(metricValues.metricId) ? Math.max(sum, metricValues.values.reduce((acc, v)=>Math.max(acc, v), 0)) : sum, 0);
|
|
25
35
|
}
|
|
26
36
|
if (stackedBarMetricIDs.length) {
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
const summedStackedMetrics = (_a = stackChartMetricValues[0]) === null || _a === void 0 ? void 0 : _a.map((value, i) => stackChartMetricValues.reduce((sum, metricValues) => sum + metricValues[i], 0));
|
|
37
|
+
var _stackChartMetricValues_;
|
|
38
|
+
const stackChartMetricValues = values.filter((metricValues)=>stackedBarMetricIDs.includes(metricValues.metricId)).map((metric)=>metric.values);
|
|
39
|
+
const summedStackedMetrics = (_stackChartMetricValues_ = stackChartMetricValues[0]) === null || _stackChartMetricValues_ === void 0 ? void 0 : _stackChartMetricValues_.map((value, i)=>stackChartMetricValues.reduce((sum, metricValues)=>sum + metricValues[i], 0));
|
|
31
40
|
if (summedStackedMetrics === null || summedStackedMetrics === void 0 ? void 0 : summedStackedMetrics.length) {
|
|
32
41
|
maxRange = Math.max(...summedStackedMetrics, maxRange);
|
|
33
42
|
}
|
|
@@ -45,151 +54,103 @@ const getSideMetricsSettings = (metrics, values, range, title, format) => {
|
|
|
45
54
|
const sums = [];
|
|
46
55
|
const step = maxRange / 10;
|
|
47
56
|
const formatter = getFormatter(format);
|
|
48
|
-
for
|
|
57
|
+
for(let i = 0; i < 10; i++){
|
|
49
58
|
sums.push(formatter(maxRange - i * step));
|
|
50
59
|
}
|
|
51
60
|
const width = title ? 64 : 48;
|
|
52
|
-
return {
|
|
61
|
+
return {
|
|
62
|
+
maxRange,
|
|
63
|
+
maxValue: 1.1 * maxRange,
|
|
64
|
+
title: title !== null && title !== void 0 ? title : '',
|
|
65
|
+
values: sums,
|
|
66
|
+
width
|
|
67
|
+
};
|
|
53
68
|
};
|
|
54
|
-
|
|
55
|
-
constructor()
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
Object.defineProperty(this, "resolution", {
|
|
81
|
-
enumerable: true,
|
|
82
|
-
configurable: true,
|
|
83
|
-
writable: true,
|
|
84
|
-
value: 'day'
|
|
85
|
-
});
|
|
86
|
-
Object.defineProperty(this, "left", {
|
|
87
|
-
enumerable: true,
|
|
88
|
-
configurable: true,
|
|
89
|
-
writable: true,
|
|
90
|
-
value: void 0
|
|
91
|
-
});
|
|
92
|
-
Object.defineProperty(this, "right", {
|
|
93
|
-
enumerable: true,
|
|
94
|
-
configurable: true,
|
|
95
|
-
writable: true,
|
|
96
|
-
value: void 0
|
|
97
|
-
});
|
|
98
|
-
Object.defineProperty(this, "hoveredIndex", {
|
|
99
|
-
enumerable: true,
|
|
100
|
-
configurable: true,
|
|
101
|
-
writable: true,
|
|
102
|
-
value: -1
|
|
103
|
-
});
|
|
104
|
-
Object.defineProperty(this, "init", {
|
|
105
|
-
enumerable: true,
|
|
106
|
-
configurable: true,
|
|
107
|
-
writable: true,
|
|
108
|
-
value: (props) => {
|
|
109
|
-
var _a;
|
|
110
|
-
this.display = {
|
|
111
|
-
...defaultDisplay(),
|
|
112
|
-
...((_a = props.display) !== null && _a !== void 0 ? _a : {}),
|
|
69
|
+
export class LineChartStore {
|
|
70
|
+
constructor(){
|
|
71
|
+
_define_property(this, "isInit", false);
|
|
72
|
+
_define_property(this, "display", defaultDisplay());
|
|
73
|
+
_define_property(this, "metrics", []);
|
|
74
|
+
_define_property(this, "periods", []);
|
|
75
|
+
_define_property(this, "resolution", 'day');
|
|
76
|
+
_define_property(this, "left", void 0);
|
|
77
|
+
_define_property(this, "right", void 0);
|
|
78
|
+
_define_property(this, "hoveredIndex", -1);
|
|
79
|
+
_define_property(this, "init", (props)=>{
|
|
80
|
+
var _props_display;
|
|
81
|
+
this.display = {
|
|
82
|
+
...defaultDisplay(),
|
|
83
|
+
...(_props_display = props.display) !== null && _props_display !== void 0 ? _props_display : {}
|
|
84
|
+
};
|
|
85
|
+
this.metrics = props.metrics.map((m)=>{
|
|
86
|
+
const mv = props.metricValues.find((mv)=>mv.metricId === m.id);
|
|
87
|
+
var _m_type, _m_opts, _mv_values;
|
|
88
|
+
return {
|
|
89
|
+
...m,
|
|
90
|
+
isRight: !!m.isRight,
|
|
91
|
+
type: (_m_type = m.type) !== null && _m_type !== void 0 ? _m_type : 'line',
|
|
92
|
+
opts: (_m_opts = m.opts) !== null && _m_opts !== void 0 ? _m_opts : {},
|
|
93
|
+
values: (_mv_values = mv === null || mv === void 0 ? void 0 : mv.values) !== null && _mv_values !== void 0 ? _mv_values : [],
|
|
94
|
+
valuesOpts: mv === null || mv === void 0 ? void 0 : mv.opts
|
|
113
95
|
};
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
opts: (_b = m.opts) !== null && _b !== void 0 ? _b : {},
|
|
122
|
-
values: (_c = mv === null || mv === void 0 ? void 0 : mv.values) !== null && _c !== void 0 ? _c : [],
|
|
123
|
-
valuesOpts: mv === null || mv === void 0 ? void 0 : mv.opts,
|
|
124
|
-
};
|
|
125
|
-
});
|
|
126
|
-
this.left = getSideMetricsSettings(this.metrics.filter(m => !m.isRight), props.metricValues, props.maxRange, props.titleY, this.display.yLeftFormat);
|
|
127
|
-
this.right = getSideMetricsSettings(this.metrics.filter(m => m.isRight), props.metricValues, props.maxRangeRight, props.titleYRight, this.display.yRightFormat);
|
|
128
|
-
this.resolution = props.resolution;
|
|
129
|
-
this.periods = props.periods || [];
|
|
130
|
-
this.hoveredIndex = -1;
|
|
131
|
-
this.isInit = true;
|
|
132
|
-
}
|
|
96
|
+
});
|
|
97
|
+
this.left = getSideMetricsSettings(this.metrics.filter((m)=>!m.isRight), props.metricValues, props.maxRange, props.titleY, this.display.yLeftFormat);
|
|
98
|
+
this.right = getSideMetricsSettings(this.metrics.filter((m)=>m.isRight), props.metricValues, props.maxRangeRight, props.titleYRight, this.display.yRightFormat);
|
|
99
|
+
this.resolution = props.resolution;
|
|
100
|
+
this.periods = props.periods || [];
|
|
101
|
+
this.hoveredIndex = -1;
|
|
102
|
+
this.isInit = true;
|
|
133
103
|
});
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
if (isHovered) {
|
|
140
|
-
this.hoveredIndex = index;
|
|
141
|
-
}
|
|
142
|
-
else if (index === this.hoveredIndex) {
|
|
143
|
-
this.hoveredIndex = -1;
|
|
144
|
-
}
|
|
104
|
+
_define_property(this, "setHoveredIndex", (index, isHovered)=>{
|
|
105
|
+
if (isHovered) {
|
|
106
|
+
this.hoveredIndex = index;
|
|
107
|
+
} else if (index === this.hoveredIndex) {
|
|
108
|
+
this.hoveredIndex = -1;
|
|
145
109
|
}
|
|
146
110
|
});
|
|
147
111
|
makeObservable(this);
|
|
148
112
|
}
|
|
149
|
-
}
|
|
150
|
-
|
|
151
|
-
observable
|
|
152
|
-
__metadata("design:type", Object)
|
|
113
|
+
}
|
|
114
|
+
_ts_decorate([
|
|
115
|
+
observable
|
|
153
116
|
], LineChartStore.prototype, "isInit", void 0);
|
|
154
|
-
|
|
117
|
+
_ts_decorate([
|
|
155
118
|
observable,
|
|
156
|
-
|
|
119
|
+
_ts_metadata("design:type", typeof LineChartDisplay === "undefined" ? Object : LineChartDisplay)
|
|
157
120
|
], LineChartStore.prototype, "display", void 0);
|
|
158
|
-
|
|
121
|
+
_ts_decorate([
|
|
159
122
|
observable,
|
|
160
|
-
|
|
123
|
+
_ts_metadata("design:type", Array)
|
|
161
124
|
], LineChartStore.prototype, "metrics", void 0);
|
|
162
|
-
|
|
125
|
+
_ts_decorate([
|
|
163
126
|
observable,
|
|
164
|
-
|
|
127
|
+
_ts_metadata("design:type", Array)
|
|
165
128
|
], LineChartStore.prototype, "periods", void 0);
|
|
166
|
-
|
|
129
|
+
_ts_decorate([
|
|
167
130
|
observable,
|
|
168
|
-
|
|
131
|
+
_ts_metadata("design:type", typeof LineChartResolution === "undefined" ? Object : LineChartResolution)
|
|
169
132
|
], LineChartStore.prototype, "resolution", void 0);
|
|
170
|
-
|
|
133
|
+
_ts_decorate([
|
|
171
134
|
observable,
|
|
172
|
-
|
|
135
|
+
_ts_metadata("design:type", typeof SideMetricsSettings === "undefined" ? Object : SideMetricsSettings)
|
|
173
136
|
], LineChartStore.prototype, "left", void 0);
|
|
174
|
-
|
|
137
|
+
_ts_decorate([
|
|
175
138
|
observable,
|
|
176
|
-
|
|
139
|
+
_ts_metadata("design:type", typeof SideMetricsSettings === "undefined" ? Object : SideMetricsSettings)
|
|
177
140
|
], LineChartStore.prototype, "right", void 0);
|
|
178
|
-
|
|
179
|
-
observable
|
|
180
|
-
__metadata("design:type", Object)
|
|
141
|
+
_ts_decorate([
|
|
142
|
+
observable
|
|
181
143
|
], LineChartStore.prototype, "hoveredIndex", void 0);
|
|
182
|
-
|
|
183
|
-
action
|
|
184
|
-
__metadata("design:type", Object)
|
|
144
|
+
_ts_decorate([
|
|
145
|
+
action
|
|
185
146
|
], LineChartStore.prototype, "init", void 0);
|
|
186
|
-
|
|
187
|
-
action
|
|
188
|
-
__metadata("design:type", Object)
|
|
147
|
+
_ts_decorate([
|
|
148
|
+
action
|
|
189
149
|
], LineChartStore.prototype, "setHoveredIndex", void 0);
|
|
190
|
-
LineChartStore =
|
|
150
|
+
LineChartStore = _ts_decorate([
|
|
191
151
|
injectable(),
|
|
192
|
-
|
|
152
|
+
_ts_metadata("design:type", Function),
|
|
153
|
+
_ts_metadata("design:paramtypes", [])
|
|
193
154
|
], LineChartStore);
|
|
194
|
-
|
|
155
|
+
|
|
195
156
|
//# sourceMappingURL=line-chart.store.js.map
|