@amcharts/amcharts5 5.9.13 → 5.10.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/.internal/charts/flow/ArcDiagramNodes.d.ts.map +1 -1
- package/.internal/charts/flow/ArcDiagramNodes.js +2 -0
- package/.internal/charts/flow/ArcDiagramNodes.js.map +1 -1
- package/.internal/charts/flow/ChordNodes.d.ts.map +1 -1
- package/.internal/charts/flow/ChordNodes.js +2 -0
- package/.internal/charts/flow/ChordNodes.js.map +1 -1
- package/.internal/charts/flow/FlowNodes.d.ts +17 -1
- package/.internal/charts/flow/FlowNodes.d.ts.map +1 -1
- package/.internal/charts/flow/FlowNodes.js +13 -0
- package/.internal/charts/flow/FlowNodes.js.map +1 -1
- package/.internal/charts/flow/SankeyNodes.d.ts.map +1 -1
- package/.internal/charts/flow/SankeyNodes.js +2 -0
- package/.internal/charts/flow/SankeyNodes.js.map +1 -1
- package/.internal/charts/funnel/FunnelSeries.d.ts.map +1 -1
- package/.internal/charts/funnel/FunnelSeries.js +2 -0
- package/.internal/charts/funnel/FunnelSeries.js.map +1 -1
- package/.internal/charts/hierarchy/Hierarchy.d.ts +16 -0
- package/.internal/charts/hierarchy/Hierarchy.d.ts.map +1 -1
- package/.internal/charts/hierarchy/Hierarchy.js +25 -4
- package/.internal/charts/hierarchy/Hierarchy.js.map +1 -1
- package/.internal/charts/hierarchy/LinkedHierarchy.d.ts.map +1 -1
- package/.internal/charts/hierarchy/LinkedHierarchy.js +5 -0
- package/.internal/charts/hierarchy/LinkedHierarchy.js.map +1 -1
- package/.internal/charts/hierarchy/Pack.d.ts.map +1 -1
- package/.internal/charts/hierarchy/Pack.js +2 -0
- package/.internal/charts/hierarchy/Pack.js.map +1 -1
- package/.internal/charts/hierarchy/Partition.d.ts.map +1 -1
- package/.internal/charts/hierarchy/Partition.js +2 -0
- package/.internal/charts/hierarchy/Partition.js.map +1 -1
- package/.internal/charts/hierarchy/Sunburst.d.ts.map +1 -1
- package/.internal/charts/hierarchy/Sunburst.js +2 -0
- package/.internal/charts/hierarchy/Sunburst.js.map +1 -1
- package/.internal/charts/hierarchy/Treemap.d.ts.map +1 -1
- package/.internal/charts/hierarchy/Treemap.js +2 -0
- package/.internal/charts/hierarchy/Treemap.js.map +1 -1
- package/.internal/charts/hierarchy/VoronoiTreemap.d.ts.map +1 -1
- package/.internal/charts/hierarchy/VoronoiTreemap.js +2 -0
- package/.internal/charts/hierarchy/VoronoiTreemap.js.map +1 -1
- package/.internal/charts/percent/PercentSeries.d.ts +16 -0
- package/.internal/charts/percent/PercentSeries.d.ts.map +1 -1
- package/.internal/charts/percent/PercentSeries.js +13 -0
- package/.internal/charts/percent/PercentSeries.js.map +1 -1
- package/.internal/charts/pie/PieSeries.d.ts.map +1 -1
- package/.internal/charts/pie/PieSeries.js +2 -0
- package/.internal/charts/pie/PieSeries.js.map +1 -1
- package/.internal/charts/stock/indicators/ChartIndicator.js +2 -2
- package/.internal/charts/stock/indicators/ChartIndicator.js.map +1 -1
- package/.internal/charts/venn/Venn.d.ts +19 -3
- package/.internal/charts/venn/Venn.d.ts.map +1 -1
- package/.internal/charts/venn/Venn.js +13 -0
- package/.internal/charts/venn/Venn.js.map +1 -1
- package/.internal/charts/xy/XYChart.d.ts +1 -1
- package/.internal/charts/xy/XYChart.d.ts.map +1 -1
- package/.internal/charts/xy/XYChart.js +7 -0
- package/.internal/charts/xy/XYChart.js.map +1 -1
- package/.internal/charts/xy/series/BaseColumnSeries.d.ts.map +1 -1
- package/.internal/charts/xy/series/BaseColumnSeries.js +5 -0
- package/.internal/charts/xy/series/BaseColumnSeries.js.map +1 -1
- package/.internal/charts/xy/series/LineSeries.d.ts.map +1 -1
- package/.internal/charts/xy/series/LineSeries.js +8 -0
- package/.internal/charts/xy/series/LineSeries.js.map +1 -1
- package/.internal/core/Classes.d.ts +2 -0
- package/.internal/core/Classes.d.ts.map +1 -1
- package/.internal/core/Classes.js.map +1 -1
- package/.internal/core/Registry.js +1 -1
- package/.internal/core/Registry.js.map +1 -1
- package/.internal/core/render/Component.d.ts +12 -4
- package/.internal/core/render/Component.d.ts.map +1 -1
- package/.internal/core/render/Component.js +14 -6
- package/.internal/core/render/Component.js.map +1 -1
- package/.internal/core/render/SerialChart.d.ts +9 -1
- package/.internal/core/render/SerialChart.d.ts.map +1 -1
- package/.internal/core/render/SerialChart.js +4 -0
- package/.internal/core/render/SerialChart.js.map +1 -1
- package/.internal/core/render/Series.d.ts +12 -4
- package/.internal/core/render/Series.d.ts.map +1 -1
- package/.internal/core/render/Series.js +4 -3
- package/.internal/core/render/Series.js.map +1 -1
- package/.internal/core/render/Sprite.d.ts.map +1 -1
- package/.internal/core/render/Sprite.js +45 -39
- package/.internal/core/render/Sprite.js.map +1 -1
- package/.internal/core/util/DurationFormatter.d.ts.map +1 -1
- package/.internal/core/util/DurationFormatter.js +9 -2
- package/.internal/core/util/DurationFormatter.js.map +1 -1
- package/.internal/core/util/PatternSet.d.ts +91 -0
- package/.internal/core/util/PatternSet.d.ts.map +1 -0
- package/.internal/core/util/PatternSet.js +236 -0
- package/.internal/core/util/PatternSet.js.map +1 -0
- package/.internal/plugins/json/Classes-script.d.ts +2 -0
- package/.internal/plugins/json/Classes-script.d.ts.map +1 -1
- package/.internal/plugins/json/Classes-script.js +1 -0
- package/.internal/plugins/json/Classes-script.js.map +1 -1
- package/.internal/plugins/json/Classes.d.ts +2 -0
- package/.internal/plugins/json/Classes.d.ts.map +1 -1
- package/.internal/plugins/json/Classes.js +1 -0
- package/.internal/plugins/json/Classes.js.map +1 -1
- package/.internal/themes/DefaultTheme.d.ts.map +1 -1
- package/.internal/themes/DefaultTheme.js +7 -0
- package/.internal/themes/DefaultTheme.js.map +1 -1
- package/CHANGELOG.md +18 -1
- package/examples/javascript/flow-arc-horizontal/package.json +1 -1
- package/examples/javascript/flow-arc-vertical/package.json +1 -1
- package/examples/javascript/flow-chord/package.json +1 -1
- package/examples/javascript/flow-chord-directed/package.json +1 -1
- package/examples/javascript/flow-chord-non-ribbon/package.json +1 -1
- package/examples/javascript/flow-sankey/package.json +1 -1
- package/examples/javascript/gauge/package.json +1 -1
- package/examples/javascript/gauge-bands/package.json +1 -1
- package/examples/javascript/hierarchy-force-directed/package.json +1 -1
- package/examples/javascript/hierarchy-pack/package.json +1 -1
- package/examples/javascript/hierarchy-partition/package.json +1 -1
- package/examples/javascript/hierarchy-sunburst/package.json +1 -1
- package/examples/javascript/hierarchy-tree/package.json +1 -1
- package/examples/javascript/hierarchy-treemap/package.json +1 -1
- package/examples/javascript/hierarchy-voronoi-treemap/package.json +1 -1
- package/examples/javascript/jest/package.json +1 -1
- package/examples/javascript/json-pie/package.json +1 -1
- package/examples/javascript/json-xy/package.json +1 -1
- package/examples/javascript/map-animating-along-lines/package.json +1 -1
- package/examples/javascript/map-clustered-points/package.json +1 -1
- package/examples/javascript/map-day-and-night/package.json +1 -1
- package/examples/javascript/map-globe-rotate-to-country/package.json +1 -1
- package/examples/javascript/map-globe-with-projected-circles/package.json +1 -1
- package/examples/javascript/map-with-bubbles/package.json +1 -1
- package/examples/javascript/map-zoom-to-country/package.json +1 -1
- package/examples/javascript/misc-40-charts/package.json +1 -1
- package/examples/javascript/misc-microchart-grid/package.json +1 -1
- package/examples/javascript/pie-chart/package.json +1 -1
- package/examples/javascript/pie-donut-chart/package.json +1 -1
- package/examples/javascript/pie-variable-radius/package.json +1 -1
- package/examples/javascript/radar-column-iwatch-style/package.json +1 -1
- package/examples/javascript/radar-heat-map/package.json +1 -1
- package/examples/javascript/radar-line/package.json +1 -1
- package/examples/javascript/radar-time-line/package.json +1 -1
- package/examples/javascript/sliced-funnel/package.json +1 -1
- package/examples/javascript/sliced-pictorial-stacked/package.json +1 -1
- package/examples/javascript/sliced-pyramid/package.json +1 -1
- package/examples/javascript/stock-chart/package.json +1 -1
- package/examples/javascript/stock-chart-comparing-stocks/package.json +1 -1
- package/examples/javascript/stock-chart-data-granularity/package.json +1 -1
- package/examples/javascript/stock-chart-data-grouping/package.json +1 -1
- package/examples/javascript/stock-chart-intraday/package.json +1 -1
- package/examples/javascript/stock-chart-live/package.json +1 -1
- package/examples/javascript/stock-chart-volume-separate-panel/package.json +1 -1
- package/examples/javascript/venn-diagram/package.json +1 -1
- package/examples/javascript/wordcloud-with-data/package.json +1 -1
- package/examples/javascript/wordcloud-with-text/package.json +1 -1
- package/examples/javascript/xy-100-percent-stacked-column/package.json +1 -1
- package/examples/javascript/xy-animated-bullet-at-the-end-of-the-series/package.json +1 -1
- package/examples/javascript/xy-bubble/package.json +1 -1
- package/examples/javascript/xy-candlestick/package.json +1 -1
- package/examples/javascript/xy-clustered-column/package.json +1 -1
- package/examples/javascript/xy-column/package.json +1 -1
- package/examples/javascript/xy-comparing-series-google-analytics-style/package.json +1 -1
- package/examples/javascript/xy-data-grouping/package.json +1 -1
- package/examples/javascript/xy-draggable-range/package.json +1 -1
- package/examples/javascript/xy-drawing-series-with-mouse-or-touch/package.json +1 -1
- package/examples/javascript/xy-dumbbell plot/package.json +1 -1
- package/examples/javascript/xy-evenly-spaced-date-axis/package.json +1 -1
- package/examples/javascript/xy-line/package.json +1 -1
- package/examples/javascript/xy-line-highlight-on-legend-hover/package.json +1 -1
- package/examples/javascript/xy-live-data/package.json +1 -1
- package/examples/javascript/xy-multiple-synced-value-axes/package.json +1 -1
- package/examples/javascript/xy-ohlc/package.json +1 -1
- package/examples/javascript/xy-real-time-data-sorting/package.json +1 -1
- package/examples/javascript/xy-smoothed-line/package.json +1 -1
- package/examples/javascript/xy-stacked-and-clustered-column/package.json +1 -1
- package/examples/javascript/xy-stacked-column/package.json +1 -1
- package/examples/javascript/xy-stacked-step/package.json +1 -1
- package/examples/javascript/xy-stock/package.json +1 -1
- package/examples/javascript/xy-stock-comparing/package.json +1 -1
- package/examples/typescript/flow-arc-horizontal/package.json +1 -1
- package/examples/typescript/flow-arc-vertical/package.json +1 -1
- package/examples/typescript/flow-chord/package.json +1 -1
- package/examples/typescript/flow-chord-directed/package.json +1 -1
- package/examples/typescript/flow-chord-non-ribbon/package.json +1 -1
- package/examples/typescript/flow-sankey/package.json +1 -1
- package/examples/typescript/gauge/package.json +1 -1
- package/examples/typescript/gauge-bands/package.json +1 -1
- package/examples/typescript/hierarchy-force-directed/package.json +1 -1
- package/examples/typescript/hierarchy-pack/package.json +1 -1
- package/examples/typescript/hierarchy-partition/package.json +1 -1
- package/examples/typescript/hierarchy-sunburst/package.json +1 -1
- package/examples/typescript/hierarchy-tree/package.json +1 -1
- package/examples/typescript/hierarchy-treemap/package.json +1 -1
- package/examples/typescript/hierarchy-voronoi-treemap/package.json +1 -1
- package/examples/typescript/jest/package.json +1 -1
- package/examples/typescript/json-pie/package.json +1 -1
- package/examples/typescript/json-xy/package.json +1 -1
- package/examples/typescript/map-animating-along-lines/package.json +1 -1
- package/examples/typescript/map-clustered-points/package.json +1 -1
- package/examples/typescript/map-day-and-night/package.json +1 -1
- package/examples/typescript/map-globe-rotate-to-country/package.json +1 -1
- package/examples/typescript/map-globe-with-projected-circles/package.json +1 -1
- package/examples/typescript/map-with-bubbles/package.json +1 -1
- package/examples/typescript/map-zoom-to-country/package.json +1 -1
- package/examples/typescript/misc-40-charts/package.json +1 -1
- package/examples/typescript/misc-microchart-grid/package.json +1 -1
- package/examples/typescript/pie-chart/package.json +1 -1
- package/examples/typescript/pie-donut-chart/package.json +1 -1
- package/examples/typescript/pie-variable-radius/package.json +1 -1
- package/examples/typescript/radar-column-iwatch-style/package.json +1 -1
- package/examples/typescript/radar-heat-map/package.json +1 -1
- package/examples/typescript/radar-line/package.json +1 -1
- package/examples/typescript/radar-time-line/package.json +1 -1
- package/examples/typescript/sliced-funnel/package.json +1 -1
- package/examples/typescript/sliced-pictorial-stacked/package.json +1 -1
- package/examples/typescript/sliced-pyramid/package.json +1 -1
- package/examples/typescript/stock-chart/package.json +1 -1
- package/examples/typescript/stock-chart-comparing-stocks/package.json +1 -1
- package/examples/typescript/stock-chart-data-granularity/package.json +1 -1
- package/examples/typescript/stock-chart-data-grouping/package.json +1 -1
- package/examples/typescript/stock-chart-intraday/package.json +1 -1
- package/examples/typescript/stock-chart-live/package.json +1 -1
- package/examples/typescript/stock-chart-volume-separate-panel/package.json +1 -1
- package/examples/typescript/venn-diagram/package.json +1 -1
- package/examples/typescript/wordcloud-with-data/package.json +1 -1
- package/examples/typescript/wordcloud-with-text/package.json +1 -1
- package/examples/typescript/xy-100-percent-stacked-column/package.json +1 -1
- package/examples/typescript/xy-animated-bullet-at-the-end-of-the-series/package.json +1 -1
- package/examples/typescript/xy-bubble/package.json +1 -1
- package/examples/typescript/xy-candlestick/package.json +1 -1
- package/examples/typescript/xy-clustered-column/package.json +1 -1
- package/examples/typescript/xy-column/package.json +1 -1
- package/examples/typescript/xy-comparing-series-google-analytics-style/package.json +1 -1
- package/examples/typescript/xy-data-grouping/package.json +1 -1
- package/examples/typescript/xy-draggable-range/package.json +1 -1
- package/examples/typescript/xy-drawing-series-with-mouse-or-touch/package.json +1 -1
- package/examples/typescript/xy-dumbbell plot/package.json +1 -1
- package/examples/typescript/xy-evenly-spaced-date-axis/package.json +1 -1
- package/examples/typescript/xy-line/package.json +1 -1
- package/examples/typescript/xy-line-highlight-on-legend-hover/package.json +1 -1
- package/examples/typescript/xy-live-data/package.json +1 -1
- package/examples/typescript/xy-multiple-synced-value-axes/package.json +1 -1
- package/examples/typescript/xy-ohlc/package.json +1 -1
- package/examples/typescript/xy-real-time-data-sorting/package.json +1 -1
- package/examples/typescript/xy-smoothed-line/package.json +1 -1
- package/examples/typescript/xy-stacked-and-clustered-column/package.json +1 -1
- package/examples/typescript/xy-stacked-column/package.json +1 -1
- package/examples/typescript/xy-stacked-step/package.json +1 -1
- package/examples/typescript/xy-stock/package.json +1 -1
- package/examples/typescript/xy-stock-comparing/package.json +1 -1
- package/index.d.ts +1 -0
- package/index.d.ts.map +1 -1
- package/index.js +1 -0
- package/index.js.map +1 -1
- package/package.json +4 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DurationFormatter.d.ts","sourceRoot":"","sources":["../../../../../src/.internal/core/util/DurationFormatter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAEvC,OAAO,EAAE,MAAM,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,UAAU,CAAA;AAQlE,MAAM,WAAW,0BAA2B,SAAQ,eAAe;IAElE;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB;;;;OAIG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB;;;;;;;OAOG;IACH,QAAQ,CAAC,EAAE,QAAQ,CAAC;IAEpB;;;;OAIG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IAE/E;;;;;OAKG;IACH,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;CAE1B;AAED,MAAM,WAAW,yBAA0B,SAAQ,cAAc;CAChE;AAED;;;;GAIG;AACH,qBAAa,iBAAkB,SAAQ,MAAM;IAC7B,SAAS,EAAE,0BAA0B,CAAC;IACtC,gBAAgB,EAAE,yBAAyB,CAAC;IAE3D,SAAS,CAAC,YAAY;IAgFtB;;OAEG;IACH,SAAS,CAAC,YAAY,EAAE;QAAE,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAOjD;IAEK,cAAc;IAIrB;;;;;;;;;;OAUG;IACI,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,QAAQ,GAAG,MAAM;
|
|
1
|
+
{"version":3,"file":"DurationFormatter.d.ts","sourceRoot":"","sources":["../../../../../src/.internal/core/util/DurationFormatter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAEvC,OAAO,EAAE,MAAM,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,UAAU,CAAA;AAQlE,MAAM,WAAW,0BAA2B,SAAQ,eAAe;IAElE;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB;;;;OAIG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB;;;;;;;OAOG;IACH,QAAQ,CAAC,EAAE,QAAQ,CAAC;IAEpB;;;;OAIG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IAE/E;;;;;OAKG;IACH,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;CAE1B;AAED,MAAM,WAAW,yBAA0B,SAAQ,cAAc;CAChE;AAED;;;;GAIG;AACH,qBAAa,iBAAkB,SAAQ,MAAM;IAC7B,SAAS,EAAE,0BAA0B,CAAC;IACtC,gBAAgB,EAAE,yBAAyB,CAAC;IAE3D,SAAS,CAAC,YAAY;IAgFtB;;OAEG;IACH,SAAS,CAAC,YAAY,EAAE;QAAE,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAOjD;IAEK,cAAc;IAIrB;;;;;;;;;;OAUG;IACI,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,QAAQ,GAAG,MAAM;IAgD/E;;;;;;;OAOG;IACH,SAAS,CAAC,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,QAAQ,GAAG,GAAG;IAqJ3D;;;;;;OAMG;IACH,SAAS,CAAC,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,GAAG,MAAM;IA2C1D;;;;;;OAMG;IACI,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,GAAG,MAAM;IAI7D,SAAS,CAAC,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS;IAqBzD;;;;;;;;;;;;;;;;;;OAkBG;IACI,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,QAAQ,GAAG,MAAM;IAyB/E;;;;;;;OAOG;IACI,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS;IA2B7E;;;;;;OAMG;IACI,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,QAAQ,GAAG,MAAM;IAUlE,SAAS,CAAC,aAAa,CAAC,QAAQ,EAAE,QAAQ,GAAG,MAAM;IAInD,SAAS,CAAC,cAAc,IAAI,GAAG;CAa/B"}
|
|
@@ -308,10 +308,17 @@ export class DurationFormatter extends Entity {
|
|
|
308
308
|
let unit = this._toTimeUnit(part.substr(0, 1));
|
|
309
309
|
let digits = part.length;
|
|
310
310
|
// Calculate current unit value
|
|
311
|
-
let ints
|
|
311
|
+
let ints;
|
|
312
|
+
const unitValue = this._getUnitValue(unit);
|
|
313
|
+
if (i < (len - 1)) {
|
|
314
|
+
ints = Math.floor(tstamp / unitValue);
|
|
315
|
+
}
|
|
316
|
+
else {
|
|
317
|
+
ints = Math.round(tstamp / unitValue);
|
|
318
|
+
}
|
|
312
319
|
res = res.replace($type.PLACEHOLDER, $utils.padString(ints, digits, "0"));
|
|
313
320
|
// Reduce timestamp
|
|
314
|
-
tstamp -= ints *
|
|
321
|
+
tstamp -= ints * unitValue;
|
|
315
322
|
}
|
|
316
323
|
// Reapply negative sign
|
|
317
324
|
if (negative) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DurationFormatter.js","sourceRoot":"","sources":["../../../../../src/.internal/core/util/DurationFormatter.ts"],"names":[],"mappings":"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","sourcesContent":["import type { TimeUnit } from \"./Time\";\r\n\r\nimport { Entity, IEntitySettings, IEntityPrivate } from \"./Entity\"\r\nimport { TextFormatter } from \"./TextFormatter\";\r\n\r\nimport * as $object from \"./Object\";\r\nimport * as $utils from \"./Utils\";\r\nimport * as $type from \"./Type\";\r\n\r\n\r\nexport interface IDurationFormatterSettings extends IEntitySettings {\r\n\r\n\t/**\r\n\t * A universal duration format to use wherever number needs to be formatted\r\n\t * as a duration.\r\n\t */\r\n\tdurationFormat?: string;\r\n\r\n\t/**\r\n\t * A base value. Any number below it will be considered \"negative\".\r\n\t *\r\n\t * @default 0\r\n\t */\r\n\tnegativeBase?: number;\r\n\r\n\t/**\r\n\t * Identifies what values are used in duration.\r\n\t *\r\n\t * Available options: `\"millisecond\"`, `\"second\"` (default), `\"minute\"`, `\"hour\"`, `\"day\"`, `\"week\"`, `\"month\"`, and `\"year\"`.\r\n\t *\r\n\t * @see {@link https://www.amcharts.com/docs/v5/concepts/formatters/formatting-durations/#Base_unit} for more info\r\n\t * @default \"second\"\r\n\t */\r\n\tbaseUnit?: TimeUnit;\r\n\r\n\t/**\r\n\t * Time unit dependent duration formats.\r\n\t *\r\n\t * Used be [[DurationAxis]].\r\n\t */\r\n\tdurationFormats?: Partial<Record<TimeUnit, Partial<Record<TimeUnit, string>>>>;\r\n\r\n\t/**\r\n\t * An array of data fields that hold duration values and should be formatted\r\n\t * with a [[DurationFormatter]].\r\n\t *\r\n\t * @see {@link https://www.amcharts.com/docs/v5/concepts/formatters/data-placeholders/#Formatting_placeholders} for more info\r\n\t */\r\n\tdurationFields?: string[];\r\n\r\n}\r\n\r\nexport interface IDurationFormatterPrivate extends IEntityPrivate {\r\n}\r\n\r\n/**\r\n * A class used to format numberic values as time duration.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/formatters/formatting-durations/} for more info\r\n */\r\nexport class DurationFormatter extends Entity {\r\n\tdeclare public _settings: IDurationFormatterSettings;\r\n\tdeclare public _privateSettings: IDurationFormatterPrivate;\r\n\r\n\tprotected _setDefaults() {\r\n\t\tconst dmillisecond = \"_duration_millisecond\";\r\n\t\tconst dsecond = \"_duration_second\";\r\n\t\tconst dminute = \"_duration_minute\";\r\n\t\tconst dhour = \"_duration_hour\";\r\n\t\tconst dday = \"_duration_day\";\r\n\t\tconst dweek = \"_duration_week\";\r\n\t\tconst dmonth = \"_duration_month\";\r\n\t\tconst dyear = \"_duration_year\";\r\n\r\n\t\tconst asecond = \"_second\";\r\n\t\tconst aminute = \"_minute\";\r\n\t\tconst ahour = \"_hour\";\r\n\t\tconst aday = \"_day\";\r\n\t\tconst aweek = \"_week\";\r\n\t\tconst amonth = \"_week\";\r\n\t\tconst ayear = \"_year\";\r\n\r\n\t\t// Defaults\r\n\t\tthis._setDefault(\"negativeBase\", 0);\r\n\t\tthis._setDefault(\"baseUnit\", \"second\");\r\n\t\tthis._setDefault(\"durationFormats\", {\r\n\t\t\t\"millisecond\": {\r\n\t\t\t\t\"millisecond\": this._t(dmillisecond),\r\n\t\t\t\t\"second\": this._t((dmillisecond + asecond) as any),\r\n\t\t\t\t\"minute\": this._t((dmillisecond + aminute) as any),\r\n\t\t\t\t\"hour\": this._t((dmillisecond + ahour) as any),\r\n\t\t\t\t\"day\": this._t((dmillisecond + aday) as any),\r\n\t\t\t\t\"week\": this._t((dmillisecond + aweek) as any),\r\n\t\t\t\t\"month\": this._t((dmillisecond + amonth) as any),\r\n\t\t\t\t\"year\": this._t((dmillisecond + ayear) as any)\r\n\t\t\t},\r\n\t\t\t\"second\": {\r\n\t\t\t\t\"second\": this._t((dsecond) as any),\r\n\t\t\t\t\"minute\": this._t((dsecond + aminute) as any),\r\n\t\t\t\t\"hour\": this._t((dsecond + ahour) as any),\r\n\t\t\t\t\"day\": this._t((dsecond + aday) as any),\r\n\t\t\t\t\"week\": this._t((dsecond + aweek) as any),\r\n\t\t\t\t\"month\": this._t((dsecond + amonth) as any),\r\n\t\t\t\t\"year\": this._t((dsecond + ayear) as any)\r\n\t\t\t},\r\n\t\t\t\"minute\": {\r\n\t\t\t\t\"minute\": this._t((dminute) as any),\r\n\t\t\t\t\"hour\": this._t((dminute + ahour) as any),\r\n\t\t\t\t\"day\": this._t((dminute + aday) as any),\r\n\t\t\t\t\"week\": this._t((dminute + aweek) as any),\r\n\t\t\t\t\"month\": this._t((dminute + amonth) as any),\r\n\t\t\t\t\"year\": this._t((dminute + ayear) as any)\r\n\t\t\t},\r\n\t\t\t\"hour\": {\r\n\t\t\t\t\"hour\": this._t((dhour) as any),\r\n\t\t\t\t\"day\": this._t((dhour + aday) as any),\r\n\t\t\t\t\"week\": this._t((dhour + aweek) as any),\r\n\t\t\t\t\"month\": this._t((dhour + amonth) as any),\r\n\t\t\t\t\"year\": this._t((dhour + ayear) as any)\r\n\t\t\t},\r\n\t\t\t\"day\": {\r\n\t\t\t\t\"day\": this._t((dday) as any),\r\n\t\t\t\t\"week\": this._t((dday + aweek) as any),\r\n\t\t\t\t\"month\": this._t((dday + amonth) as any),\r\n\t\t\t\t\"year\": this._t((dday + ayear) as any)\r\n\t\t\t},\r\n\t\t\t\"week\": {\r\n\t\t\t\t\"week\": this._t((dweek) as any),\r\n\t\t\t\t\"month\": this._t((dweek + amonth) as any),\r\n\t\t\t\t\"year\": this._t((dweek + ayear) as any)\r\n\t\t\t},\r\n\t\t\t\"month\": {\r\n\t\t\t\t\"month\": this._t((dmonth) as any),\r\n\t\t\t\t\"year\": this._t((dmonth + ayear) as any)\r\n\t\t\t},\r\n\t\t\t\"year\": {\r\n\t\t\t\t\"year\": this._t(dyear)\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tsuper._setDefaults();\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Collection of aliases for units.\r\n\t */\r\n\tprotected _unitAliases: { [index: string]: string } = {\r\n\t\t\"Y\": \"y\",\r\n\t\t\"D\": \"d\",\r\n\t\t\"H\": \"h\",\r\n\t\t\"K\": \"h\",\r\n\t\t\"k\": \"h\",\r\n\t\t\"n\": \"S\"\r\n\t};\r\n\r\n\tpublic _beforeChanged() {\r\n\t\tsuper._beforeChanged();\r\n\t}\r\n\r\n\t/**\r\n\t * Formats the number as duration.\r\n\t *\r\n\t * For example `1000` (base unit seconds) would be converted to `16:40` as in\r\n\t * 16 minutes and 40 seconds.\r\n\t *\r\n\t * @param value Value to format\r\n\t * @param format Format to apply\r\n\t * @param base Override base unit\r\n\t * @return Formatted number\r\n\t */\r\n\tpublic format(value: number | string, format?: string, base?: TimeUnit): string {\r\n\r\n\t\t// no base unit?\r\n\t\tlet baseUnit = base || this.get(\"baseUnit\");\r\n\r\n\t\t// no format passed in or empty\r\n\t\tif (typeof format === \"undefined\" || format === \"\") {\r\n\t\t\tif (this.get(\"durationFormat\") != null) {\r\n\t\t\t\tformat = this.get(\"durationFormat\");\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tformat = this.getFormat($type.toNumber(value), undefined, baseUnit);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Clean format\r\n\t\tformat = $utils.cleanFormat(format!);\r\n\r\n\t\t// get format info (it will also deal with parser caching)\r\n\t\tlet info = this.parseFormat(format, baseUnit);\r\n\r\n\t\t// cast to number just in case\r\n\t\t// TODO: maybe use better casting\r\n\t\tlet source: number = Number(value);\r\n\r\n\t\t// format and replace the number\r\n\t\tlet details;\r\n\t\tif (source > this.get(\"negativeBase\")) {\r\n\t\t\tdetails = info.positive;\r\n\t\t}\r\n\t\telse if (source < this.get(\"negativeBase\")) {\r\n\t\t\tdetails = info.negative;\r\n\t\t}\r\n\t\telse {\r\n\t\t\tdetails = info.zero;\r\n\t\t}\r\n\r\n\r\n\t\t// Format\r\n\t\tlet formatted = this.applyFormat(source, details);\r\n\r\n\t\t// Apply color?\r\n\t\tif (details.color !== \"\") {\r\n\t\t\tformatted = \"[\" + details.color + \"]\" + formatted + \"[/]\";\r\n\t\t}\r\n\r\n\t\treturn formatted;\r\n\t}\r\n\r\n\t/**\r\n\t * Parses supplied format into structured object which can be used to format\r\n\t * the number.\r\n\t *\r\n\t * @param format Format string, i.e. \"#,###.00\"\r\n\t * @param base Override base unit\r\n\t * @return Parsed information\r\n\t */\r\n\tprotected parseFormat(format: string, base?: TimeUnit): any {\r\n\r\n\t\t// Check cache\r\n\t\t// TODO\r\n\t\t// let cached = this.getCache(format);\r\n\t\t// if (cached != null) {\r\n\t\t// \treturn cached;\r\n\t\t// }\r\n\r\n\t\t// no base unit?\r\n\t\tlet baseUnit = base || this.get(\"baseUnit\");\r\n\r\n\t\t// Initialize duration parsing info\r\n\t\tlet info = {\r\n\t\t\t\"positive\": {\r\n\t\t\t\t\"color\": \"\",\r\n\t\t\t\t\"template\": \"\",\r\n\t\t\t\t\"parts\": <any>[],\r\n\t\t\t\t\"source\": \"\",\r\n\t\t\t\t\"baseUnit\": baseUnit,\r\n\t\t\t\t\"parsed\": false,\r\n\t\t\t\t\"absolute\": false\r\n\t\t\t},\r\n\t\t\t\"negative\": {\r\n\t\t\t\t\"color\": \"\",\r\n\t\t\t\t\"template\": \"\",\r\n\t\t\t\t\"parts\": <any>[],\r\n\t\t\t\t\"source\": \"\",\r\n\t\t\t\t\"baseUnit\": baseUnit,\r\n\t\t\t\t\"parsed\": false,\r\n\t\t\t\t\"absolute\": false\r\n\t\t\t},\r\n\t\t\t\"zero\": {\r\n\t\t\t\t\"color\": \"\",\r\n\t\t\t\t\"template\": \"\",\r\n\t\t\t\t\"parts\": <any>[],\r\n\t\t\t\t\"source\": \"\",\r\n\t\t\t\t\"baseUnit\": baseUnit,\r\n\t\t\t\t\"parsed\": false,\r\n\t\t\t\t\"absolute\": false\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\t// Escape double vertical bars (that mean display one vertical bar)\r\n\t\tformat = format.replace(\"||\", $type.PLACEHOLDER2);\r\n\r\n\t\t// Split it up and deal with different formats\r\n\t\tlet parts = format.split(\"|\");\r\n\t\tinfo.positive.source = parts[0];\r\n\r\n\t\tif (typeof parts[2] === \"undefined\") {\r\n\t\t\tinfo.zero = info.positive;\r\n\t\t}\r\n\t\telse {\r\n\t\t\tinfo.zero.source = parts[2];\r\n\t\t}\r\n\r\n\t\tif (typeof parts[1] === \"undefined\") {\r\n\t\t\tinfo.negative = info.positive;\r\n\t\t}\r\n\t\telse {\r\n\t\t\tinfo.negative.source = parts[1];\r\n\t\t}\r\n\r\n\t\t// Parse each\r\n\t\t$object.each(info, (_part, item) => {\r\n\t\t\t// Already parsed\r\n\t\t\tif (item.parsed) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\t// Check cached\r\n\t\t\t// TODO\r\n\t\t\t// if (typeof this.getCache(item.source) !== \"undefined\") {\r\n\t\t\t// \tinfo[part] = this.getCache(item.source);\r\n\t\t\t// \treturn;\r\n\t\t\t// }\r\n\r\n\t\t\t// Begin parsing\r\n\t\t\tlet partFormat: string = item.source;\r\n\r\n\t\t\t// Check for [] directives\r\n\t\t\tlet dirs: string[] | null = [];\r\n\t\t\tdirs = item.source.match(/^\\[([^\\]]*)\\]/);\r\n\t\t\tif (dirs && dirs.length && dirs[0] !== \"\") {\r\n\t\t\t\tpartFormat = item.source.substr(dirs[0].length);\r\n\t\t\t\titem.color = dirs[1];\r\n\t\t\t}\r\n\r\n\r\n\t\t\t// Let TextFormatter split into chunks\r\n\t\t\tlet chunks = TextFormatter.chunk(partFormat, true);\r\n\t\t\tfor (let i: number = 0; i < chunks.length; i++) {\r\n\t\t\t\tlet chunk = chunks[i];\r\n\r\n\t\t\t\t// replace back double vertical bar\r\n\t\t\t\tchunk.text = chunk.text.replace($type.PLACEHOLDER2, \"|\");\r\n\r\n\t\t\t\tif (chunk.type === \"value\") {\r\n\r\n\t\t\t\t\t// Just \"Duration\"?\r\n\t\t\t\t\t// if (chunk.text.toLowerCase() === \"duration\") {\r\n\t\t\t\t\t// \tchunk.text = durationFormat;\r\n\t\t\t\t\t// }\r\n\r\n\t\t\t\t\t// Check for \"a\" (absolute) modifier\r\n\t\t\t\t\tif (chunk.text.match(/[yYMdDwhHKkmsSn]+a/)) {\r\n\t\t\t\t\t\titem.absolute = true;\r\n\t\t\t\t\t\tchunk.text = chunk.text.replace(/([yYMdDwhHKkmsSn]+)a/, \"$1\");\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t// Find all possible parts\r\n\t\t\t\t\tlet matches = chunk.text.match(/y+|Y+|M+|d+|D+|w+|h+|H+|K+|k+|m+|s+|S+|n+/g);\r\n\r\n\t\t\t\t\tif (matches) {\r\n\t\t\t\t\t\t// Populate template\r\n\t\t\t\t\t\tfor (let x = 0; x < matches.length; x++) {\r\n\t\t\t\t\t\t\t// Is it an alias?\r\n\t\t\t\t\t\t\tif (matches[x] == null) {\r\n\t\t\t\t\t\t\t\tmatches[x] = this._unitAliases[matches[x]];\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\titem.parts.push(matches[x]);\r\n\t\t\t\t\t\t\tchunk.text = chunk.text.replace(matches[x], $type.PLACEHOLDER);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Apply to template\r\n\t\t\t\titem.template += chunk.text;\r\n\t\t\t}\r\n\r\n\t\t\t// Apply style formatting\r\n\t\t\t//item.template = TextFormatter.format(item.template, this.outputFormat);\r\n\r\n\t\t\t// Save cache\r\n\t\t\t// TODO\r\n\t\t\t//this.setCache(item.source, item);\r\n\r\n\t\t\t// Mark this as parsed\r\n\t\t\titem.parsed = true;\r\n\t\t});\r\n\r\n\t\t// Save cache (the whole thing)\r\n\t\t// TODO\r\n\t\t//this.setCache(format, info);\r\n\r\n\t\treturn info;\r\n\t}\r\n\r\n\t/**\r\n\t * Applies parsed format to a numeric value.\r\n\t *\r\n\t * @param value Value\r\n\t * @param details Parsed format as returned by {parseFormat}\r\n\t * @return Formatted duration\r\n\t */\r\n\tprotected applyFormat(value: number, details: any): string {\r\n\r\n\t\t// Use absolute values\r\n\t\tlet negative = !details.absolute && (value < this.get(\"negativeBase\"));\r\n\t\tvalue = Math.abs(value);\r\n\r\n\t\t// Recalculate to milliseconds\r\n\t\tlet tstamp = this.toTimeStamp(value, details.baseUnit);\r\n\r\n\t\t// Init return value\r\n\t\tlet res = details.template;\r\n\r\n\t\t// Iterate through duration parts\r\n\t\tfor (let i = 0, len = details.parts.length; i < len; i++) {\r\n\r\n\t\t\t// Gather the part\r\n\t\t\tlet part = details.parts[i];\r\n\t\t\tlet unit = this._toTimeUnit(part.substr(0, 1));\r\n\t\t\tlet digits = part.length;\r\n\r\n\t\t\t// Calculate current unit value\r\n\t\t\tlet ints = Math.floor(tstamp / this._getUnitValue(unit!));\r\n\t\t\tres = res.replace($type.PLACEHOLDER, $utils.padString(ints, digits, \"0\"));\r\n\r\n\t\t\t// Reduce timestamp\r\n\t\t\ttstamp -= ints * this._getUnitValue(unit!);\r\n\t\t}\r\n\r\n\t\t// Reapply negative sign\r\n\t\tif (negative) {\r\n\t\t\tres = \"-\" + res;\r\n\t\t}\r\n\r\n\t\treturn res;\r\n\t}\r\n\r\n\t/**\r\n\t * Converts numeric value to timestamp in milliseconds.\r\n\t *\r\n\t * @param value A source value\r\n\t * @param baseUnit Base unit the source value is in: \"q\", \"s\", \"i\", \"h\", \"d\", \"w\", \"m\", \"y\"\r\n\t * @return Value representation as a timestamp in milliseconds\r\n\t */\r\n\tpublic toTimeStamp(value: number, baseUnit: TimeUnit): number {\r\n\t\treturn value * this._getUnitValue(baseUnit);\r\n\t}\r\n\r\n\tprotected _toTimeUnit(code: string): TimeUnit | undefined {\r\n\t\tswitch (code) {\r\n\t\t\tcase \"S\":\r\n\t\t\t\treturn \"millisecond\";\r\n\t\t\tcase \"s\":\r\n\t\t\t\treturn \"second\";\r\n\t\t\tcase \"m\":\r\n\t\t\t\treturn \"minute\";\r\n\t\t\tcase \"h\":\r\n\t\t\t\treturn \"hour\";\r\n\t\t\tcase \"d\":\r\n\t\t\t\treturn \"day\";\r\n\t\t\tcase \"w\":\r\n\t\t\t\treturn \"week\";\r\n\t\t\tcase \"M\":\r\n\t\t\t\treturn \"month\";\r\n\t\t\tcase \"y\":\r\n\t\t\t\treturn \"year\";\r\n\t\t};\r\n\t}\r\n\r\n\t/**\r\n\t * Returns appropriate default format for the value.\r\n\t *\r\n\t * If `maxValue` is sepcified, it will use that value to determine the time\r\n\t * unit for the format.\r\n\t *\r\n\t * For example if your `baseUnit` is `\"second\"` and you pass in `10`, you\r\n\t * will get `\"10\"`.\r\n\t *\r\n\t * However, you might want it to be formatted in the context of bigger scale,\r\n\t * say 10 minutes (600 seconds). If you pass in `600` as `maxValue`, all\r\n\t * values, including small ones will use format with minutes, e.g.:\r\n\t * `00:10`, `00:50`, `12: 30`, etc.\r\n\t *\r\n\t * @param value Value to format\r\n\t * @param maxValue Maximum value to be used to determine format\r\n\t * @param baseUnit Base unit of the value\r\n\t * @return Format\r\n\t */\r\n\tpublic getFormat(value: number, maxValue?: number, baseUnit?: TimeUnit): string {\r\n\r\n\t\t// Is format override set?\r\n\t\tif (this.get(\"durationFormat\") != null) {\r\n\t\t\treturn this.get(\"durationFormat\")!;\r\n\t\t}\r\n\r\n\t\t// Get base unit\r\n\t\tif (!baseUnit) {\r\n\t\t\tbaseUnit = this.get(\"baseUnit\");\r\n\t\t}\r\n\r\n\t\tif (maxValue != null && value != maxValue) {\r\n\t\t\tvalue = Math.abs(value);\r\n\t\t\tmaxValue = Math.abs(maxValue);\r\n\t\t\tlet maxUnit = this.getValueUnit(Math.max(value, maxValue), baseUnit);\r\n\t\t\treturn (<any>this.get(\"durationFormats\"))[baseUnit!][maxUnit!];\r\n\t\t}\r\n\t\telse {\r\n\t\t\tlet unit = this.getValueUnit(value, baseUnit);\r\n\t\t\treturn (<any>this.get(\"durationFormats\"))[baseUnit!][unit!];\r\n\t\t}\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Returns value's closest denominator time unit, e.g 100 seconds is\r\n\t * `\"minute\"`, while 59 seconds would still be `second`.\r\n\t *\r\n\t * @param value Source duration value\r\n\t * @param baseUnit Base unit\r\n\t * @return Denominator\r\n\t */\r\n\tpublic getValueUnit(value: number, baseUnit?: TimeUnit): TimeUnit | undefined {\r\n\r\n\t\t// Get base unit\r\n\t\tif (!baseUnit) {\r\n\t\t\tbaseUnit = this.get(\"baseUnit\");\r\n\t\t}\r\n\r\n\t\t// Convert to milliseconds\r\n\t\tlet currentUnit: any;\r\n\t\tlet ms = this.getMilliseconds(value, baseUnit);\r\n\t\t$object.eachContinue(this._getUnitValues(), (key, val) => {\r\n\t\t\tif (key == baseUnit || currentUnit) {\r\n\t\t\t\tlet num = ms / val;\r\n\t\t\t\tif (num <= 1) {\r\n\t\t\t\t\tif (!currentUnit) {\r\n\t\t\t\t\t\tcurrentUnit = key;\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t\tcurrentUnit = key;\r\n\t\t\t}\r\n\t\t\treturn true;\r\n\t\t});\r\n\r\n\t\treturn currentUnit;\r\n\t}\r\n\r\n\t/**\r\n\t * Converts value to milliseconds according to `baseUnit`.\r\n\t *\r\n\t * @param value Source duration value\r\n\t * @param baseUnit Base unit\r\n\t * @return Value in milliseconds\r\n\t */\r\n\tpublic getMilliseconds(value: number, baseUnit?: TimeUnit): number {\r\n\r\n\t\t// Get base unit\r\n\t\tif (!baseUnit) {\r\n\t\t\tbaseUnit = this.get(\"baseUnit\");\r\n\t\t}\r\n\r\n\t\treturn value * this._getUnitValue(baseUnit!);\r\n\t}\r\n\r\n\tprotected _getUnitValue(timeUnit: TimeUnit): number {\r\n\t\treturn this._getUnitValues()[timeUnit];\r\n\t}\r\n\r\n\tprotected _getUnitValues(): any {\r\n\t\treturn {\r\n\t\t\t\"millisecond\": 1,\r\n\t\t\t\"second\": 1000,\r\n\t\t\t\"minute\": 60000,\r\n\t\t\t\"hour\": 3600000,\r\n\t\t\t\"day\": 86400000,\r\n\t\t\t\"week\": 604800000,\r\n\t\t\t\"month\": 2592000000,\r\n\t\t\t\"year\": 31536000000,\r\n\t\t};\r\n\t}\r\n\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"DurationFormatter.js","sourceRoot":"","sources":["../../../../../src/.internal/core/util/DurationFormatter.ts"],"names":[],"mappings":"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","sourcesContent":["import type { TimeUnit } from \"./Time\";\r\n\r\nimport { Entity, IEntitySettings, IEntityPrivate } from \"./Entity\"\r\nimport { TextFormatter } from \"./TextFormatter\";\r\n\r\nimport * as $object from \"./Object\";\r\nimport * as $utils from \"./Utils\";\r\nimport * as $type from \"./Type\";\r\n\r\n\r\nexport interface IDurationFormatterSettings extends IEntitySettings {\r\n\r\n\t/**\r\n\t * A universal duration format to use wherever number needs to be formatted\r\n\t * as a duration.\r\n\t */\r\n\tdurationFormat?: string;\r\n\r\n\t/**\r\n\t * A base value. Any number below it will be considered \"negative\".\r\n\t *\r\n\t * @default 0\r\n\t */\r\n\tnegativeBase?: number;\r\n\r\n\t/**\r\n\t * Identifies what values are used in duration.\r\n\t *\r\n\t * Available options: `\"millisecond\"`, `\"second\"` (default), `\"minute\"`, `\"hour\"`, `\"day\"`, `\"week\"`, `\"month\"`, and `\"year\"`.\r\n\t *\r\n\t * @see {@link https://www.amcharts.com/docs/v5/concepts/formatters/formatting-durations/#Base_unit} for more info\r\n\t * @default \"second\"\r\n\t */\r\n\tbaseUnit?: TimeUnit;\r\n\r\n\t/**\r\n\t * Time unit dependent duration formats.\r\n\t *\r\n\t * Used be [[DurationAxis]].\r\n\t */\r\n\tdurationFormats?: Partial<Record<TimeUnit, Partial<Record<TimeUnit, string>>>>;\r\n\r\n\t/**\r\n\t * An array of data fields that hold duration values and should be formatted\r\n\t * with a [[DurationFormatter]].\r\n\t *\r\n\t * @see {@link https://www.amcharts.com/docs/v5/concepts/formatters/data-placeholders/#Formatting_placeholders} for more info\r\n\t */\r\n\tdurationFields?: string[];\r\n\r\n}\r\n\r\nexport interface IDurationFormatterPrivate extends IEntityPrivate {\r\n}\r\n\r\n/**\r\n * A class used to format numberic values as time duration.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/formatters/formatting-durations/} for more info\r\n */\r\nexport class DurationFormatter extends Entity {\r\n\tdeclare public _settings: IDurationFormatterSettings;\r\n\tdeclare public _privateSettings: IDurationFormatterPrivate;\r\n\r\n\tprotected _setDefaults() {\r\n\t\tconst dmillisecond = \"_duration_millisecond\";\r\n\t\tconst dsecond = \"_duration_second\";\r\n\t\tconst dminute = \"_duration_minute\";\r\n\t\tconst dhour = \"_duration_hour\";\r\n\t\tconst dday = \"_duration_day\";\r\n\t\tconst dweek = \"_duration_week\";\r\n\t\tconst dmonth = \"_duration_month\";\r\n\t\tconst dyear = \"_duration_year\";\r\n\r\n\t\tconst asecond = \"_second\";\r\n\t\tconst aminute = \"_minute\";\r\n\t\tconst ahour = \"_hour\";\r\n\t\tconst aday = \"_day\";\r\n\t\tconst aweek = \"_week\";\r\n\t\tconst amonth = \"_week\";\r\n\t\tconst ayear = \"_year\";\r\n\r\n\t\t// Defaults\r\n\t\tthis._setDefault(\"negativeBase\", 0);\r\n\t\tthis._setDefault(\"baseUnit\", \"second\");\r\n\t\tthis._setDefault(\"durationFormats\", {\r\n\t\t\t\"millisecond\": {\r\n\t\t\t\t\"millisecond\": this._t(dmillisecond),\r\n\t\t\t\t\"second\": this._t((dmillisecond + asecond) as any),\r\n\t\t\t\t\"minute\": this._t((dmillisecond + aminute) as any),\r\n\t\t\t\t\"hour\": this._t((dmillisecond + ahour) as any),\r\n\t\t\t\t\"day\": this._t((dmillisecond + aday) as any),\r\n\t\t\t\t\"week\": this._t((dmillisecond + aweek) as any),\r\n\t\t\t\t\"month\": this._t((dmillisecond + amonth) as any),\r\n\t\t\t\t\"year\": this._t((dmillisecond + ayear) as any)\r\n\t\t\t},\r\n\t\t\t\"second\": {\r\n\t\t\t\t\"second\": this._t((dsecond) as any),\r\n\t\t\t\t\"minute\": this._t((dsecond + aminute) as any),\r\n\t\t\t\t\"hour\": this._t((dsecond + ahour) as any),\r\n\t\t\t\t\"day\": this._t((dsecond + aday) as any),\r\n\t\t\t\t\"week\": this._t((dsecond + aweek) as any),\r\n\t\t\t\t\"month\": this._t((dsecond + amonth) as any),\r\n\t\t\t\t\"year\": this._t((dsecond + ayear) as any)\r\n\t\t\t},\r\n\t\t\t\"minute\": {\r\n\t\t\t\t\"minute\": this._t((dminute) as any),\r\n\t\t\t\t\"hour\": this._t((dminute + ahour) as any),\r\n\t\t\t\t\"day\": this._t((dminute + aday) as any),\r\n\t\t\t\t\"week\": this._t((dminute + aweek) as any),\r\n\t\t\t\t\"month\": this._t((dminute + amonth) as any),\r\n\t\t\t\t\"year\": this._t((dminute + ayear) as any)\r\n\t\t\t},\r\n\t\t\t\"hour\": {\r\n\t\t\t\t\"hour\": this._t((dhour) as any),\r\n\t\t\t\t\"day\": this._t((dhour + aday) as any),\r\n\t\t\t\t\"week\": this._t((dhour + aweek) as any),\r\n\t\t\t\t\"month\": this._t((dhour + amonth) as any),\r\n\t\t\t\t\"year\": this._t((dhour + ayear) as any)\r\n\t\t\t},\r\n\t\t\t\"day\": {\r\n\t\t\t\t\"day\": this._t((dday) as any),\r\n\t\t\t\t\"week\": this._t((dday + aweek) as any),\r\n\t\t\t\t\"month\": this._t((dday + amonth) as any),\r\n\t\t\t\t\"year\": this._t((dday + ayear) as any)\r\n\t\t\t},\r\n\t\t\t\"week\": {\r\n\t\t\t\t\"week\": this._t((dweek) as any),\r\n\t\t\t\t\"month\": this._t((dweek + amonth) as any),\r\n\t\t\t\t\"year\": this._t((dweek + ayear) as any)\r\n\t\t\t},\r\n\t\t\t\"month\": {\r\n\t\t\t\t\"month\": this._t((dmonth) as any),\r\n\t\t\t\t\"year\": this._t((dmonth + ayear) as any)\r\n\t\t\t},\r\n\t\t\t\"year\": {\r\n\t\t\t\t\"year\": this._t(dyear)\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tsuper._setDefaults();\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Collection of aliases for units.\r\n\t */\r\n\tprotected _unitAliases: { [index: string]: string } = {\r\n\t\t\"Y\": \"y\",\r\n\t\t\"D\": \"d\",\r\n\t\t\"H\": \"h\",\r\n\t\t\"K\": \"h\",\r\n\t\t\"k\": \"h\",\r\n\t\t\"n\": \"S\"\r\n\t};\r\n\r\n\tpublic _beforeChanged() {\r\n\t\tsuper._beforeChanged();\r\n\t}\r\n\r\n\t/**\r\n\t * Formats the number as duration.\r\n\t *\r\n\t * For example `1000` (base unit seconds) would be converted to `16:40` as in\r\n\t * 16 minutes and 40 seconds.\r\n\t *\r\n\t * @param value Value to format\r\n\t * @param format Format to apply\r\n\t * @param base Override base unit\r\n\t * @return Formatted number\r\n\t */\r\n\tpublic format(value: number | string, format?: string, base?: TimeUnit): string {\r\n\r\n\t\t// no base unit?\r\n\t\tlet baseUnit = base || this.get(\"baseUnit\");\r\n\r\n\t\t// no format passed in or empty\r\n\t\tif (typeof format === \"undefined\" || format === \"\") {\r\n\t\t\tif (this.get(\"durationFormat\") != null) {\r\n\t\t\t\tformat = this.get(\"durationFormat\");\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tformat = this.getFormat($type.toNumber(value), undefined, baseUnit);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Clean format\r\n\t\tformat = $utils.cleanFormat(format!);\r\n\r\n\t\t// get format info (it will also deal with parser caching)\r\n\t\tlet info = this.parseFormat(format, baseUnit);\r\n\r\n\t\t// cast to number just in case\r\n\t\t// TODO: maybe use better casting\r\n\t\tlet source: number = Number(value);\r\n\r\n\t\t// format and replace the number\r\n\t\tlet details;\r\n\t\tif (source > this.get(\"negativeBase\")) {\r\n\t\t\tdetails = info.positive;\r\n\t\t}\r\n\t\telse if (source < this.get(\"negativeBase\")) {\r\n\t\t\tdetails = info.negative;\r\n\t\t}\r\n\t\telse {\r\n\t\t\tdetails = info.zero;\r\n\t\t}\r\n\r\n\t\t// Format\r\n\t\tlet formatted = this.applyFormat(source, details);\r\n\r\n\t\t// Apply color?\r\n\t\tif (details.color !== \"\") {\r\n\t\t\tformatted = \"[\" + details.color + \"]\" + formatted + \"[/]\";\r\n\t\t}\r\n\r\n\t\treturn formatted;\r\n\t}\r\n\r\n\t/**\r\n\t * Parses supplied format into structured object which can be used to format\r\n\t * the number.\r\n\t *\r\n\t * @param format Format string, i.e. \"#,###.00\"\r\n\t * @param base Override base unit\r\n\t * @return Parsed information\r\n\t */\r\n\tprotected parseFormat(format: string, base?: TimeUnit): any {\r\n\r\n\t\t// Check cache\r\n\t\t// TODO\r\n\t\t// let cached = this.getCache(format);\r\n\t\t// if (cached != null) {\r\n\t\t// \treturn cached;\r\n\t\t// }\r\n\r\n\t\t// no base unit?\r\n\t\tlet baseUnit = base || this.get(\"baseUnit\");\r\n\r\n\t\t// Initialize duration parsing info\r\n\t\tlet info = {\r\n\t\t\t\"positive\": {\r\n\t\t\t\t\"color\": \"\",\r\n\t\t\t\t\"template\": \"\",\r\n\t\t\t\t\"parts\": <any>[],\r\n\t\t\t\t\"source\": \"\",\r\n\t\t\t\t\"baseUnit\": baseUnit,\r\n\t\t\t\t\"parsed\": false,\r\n\t\t\t\t\"absolute\": false\r\n\t\t\t},\r\n\t\t\t\"negative\": {\r\n\t\t\t\t\"color\": \"\",\r\n\t\t\t\t\"template\": \"\",\r\n\t\t\t\t\"parts\": <any>[],\r\n\t\t\t\t\"source\": \"\",\r\n\t\t\t\t\"baseUnit\": baseUnit,\r\n\t\t\t\t\"parsed\": false,\r\n\t\t\t\t\"absolute\": false\r\n\t\t\t},\r\n\t\t\t\"zero\": {\r\n\t\t\t\t\"color\": \"\",\r\n\t\t\t\t\"template\": \"\",\r\n\t\t\t\t\"parts\": <any>[],\r\n\t\t\t\t\"source\": \"\",\r\n\t\t\t\t\"baseUnit\": baseUnit,\r\n\t\t\t\t\"parsed\": false,\r\n\t\t\t\t\"absolute\": false\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\t// Escape double vertical bars (that mean display one vertical bar)\r\n\t\tformat = format.replace(\"||\", $type.PLACEHOLDER2);\r\n\r\n\t\t// Split it up and deal with different formats\r\n\t\tlet parts = format.split(\"|\");\r\n\t\tinfo.positive.source = parts[0];\r\n\r\n\t\tif (typeof parts[2] === \"undefined\") {\r\n\t\t\tinfo.zero = info.positive;\r\n\t\t}\r\n\t\telse {\r\n\t\t\tinfo.zero.source = parts[2];\r\n\t\t}\r\n\r\n\t\tif (typeof parts[1] === \"undefined\") {\r\n\t\t\tinfo.negative = info.positive;\r\n\t\t}\r\n\t\telse {\r\n\t\t\tinfo.negative.source = parts[1];\r\n\t\t}\r\n\r\n\t\t// Parse each\r\n\t\t$object.each(info, (_part, item) => {\r\n\t\t\t// Already parsed\r\n\t\t\tif (item.parsed) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\t// Check cached\r\n\t\t\t// TODO\r\n\t\t\t// if (typeof this.getCache(item.source) !== \"undefined\") {\r\n\t\t\t// \tinfo[part] = this.getCache(item.source);\r\n\t\t\t// \treturn;\r\n\t\t\t// }\r\n\r\n\t\t\t// Begin parsing\r\n\t\t\tlet partFormat: string = item.source;\r\n\r\n\t\t\t// Check for [] directives\r\n\t\t\tlet dirs: string[] | null = [];\r\n\t\t\tdirs = item.source.match(/^\\[([^\\]]*)\\]/);\r\n\t\t\tif (dirs && dirs.length && dirs[0] !== \"\") {\r\n\t\t\t\tpartFormat = item.source.substr(dirs[0].length);\r\n\t\t\t\titem.color = dirs[1];\r\n\t\t\t}\r\n\r\n\r\n\t\t\t// Let TextFormatter split into chunks\r\n\t\t\tlet chunks = TextFormatter.chunk(partFormat, true);\r\n\t\t\tfor (let i: number = 0; i < chunks.length; i++) {\r\n\t\t\t\tlet chunk = chunks[i];\r\n\r\n\t\t\t\t// replace back double vertical bar\r\n\t\t\t\tchunk.text = chunk.text.replace($type.PLACEHOLDER2, \"|\");\r\n\r\n\t\t\t\tif (chunk.type === \"value\") {\r\n\r\n\t\t\t\t\t// Just \"Duration\"?\r\n\t\t\t\t\t// if (chunk.text.toLowerCase() === \"duration\") {\r\n\t\t\t\t\t// \tchunk.text = durationFormat;\r\n\t\t\t\t\t// }\r\n\r\n\t\t\t\t\t// Check for \"a\" (absolute) modifier\r\n\t\t\t\t\tif (chunk.text.match(/[yYMdDwhHKkmsSn]+a/)) {\r\n\t\t\t\t\t\titem.absolute = true;\r\n\t\t\t\t\t\tchunk.text = chunk.text.replace(/([yYMdDwhHKkmsSn]+)a/, \"$1\");\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t// Find all possible parts\r\n\t\t\t\t\tlet matches = chunk.text.match(/y+|Y+|M+|d+|D+|w+|h+|H+|K+|k+|m+|s+|S+|n+/g);\r\n\r\n\t\t\t\t\tif (matches) {\r\n\t\t\t\t\t\t// Populate template\r\n\t\t\t\t\t\tfor (let x = 0; x < matches.length; x++) {\r\n\t\t\t\t\t\t\t// Is it an alias?\r\n\t\t\t\t\t\t\tif (matches[x] == null) {\r\n\t\t\t\t\t\t\t\tmatches[x] = this._unitAliases[matches[x]];\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\titem.parts.push(matches[x]);\r\n\t\t\t\t\t\t\tchunk.text = chunk.text.replace(matches[x], $type.PLACEHOLDER);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Apply to template\r\n\t\t\t\titem.template += chunk.text;\r\n\t\t\t}\r\n\r\n\t\t\t// Apply style formatting\r\n\t\t\t//item.template = TextFormatter.format(item.template, this.outputFormat);\r\n\r\n\t\t\t// Save cache\r\n\t\t\t// TODO\r\n\t\t\t//this.setCache(item.source, item);\r\n\r\n\t\t\t// Mark this as parsed\r\n\t\t\titem.parsed = true;\r\n\t\t});\r\n\r\n\t\t// Save cache (the whole thing)\r\n\t\t// TODO\r\n\t\t//this.setCache(format, info);\r\n\r\n\t\treturn info;\r\n\t}\r\n\r\n\t/**\r\n\t * Applies parsed format to a numeric value.\r\n\t *\r\n\t * @param value Value\r\n\t * @param details Parsed format as returned by {parseFormat}\r\n\t * @return Formatted duration\r\n\t */\r\n\tprotected applyFormat(value: number, details: any): string {\r\n\r\n\t\t// Use absolute values\r\n\t\tlet negative = !details.absolute && (value < this.get(\"negativeBase\"));\r\n\t\tvalue = Math.abs(value);\r\n\r\n\t\t// Recalculate to milliseconds\r\n\t\tlet tstamp = this.toTimeStamp(value, details.baseUnit);\r\n\r\n\t\t// Init return value\r\n\t\tlet res = details.template;\r\n\r\n\t\t// Iterate through duration parts\r\n\t\tfor (let i = 0, len = details.parts.length; i < len; i++) {\r\n\r\n\t\t\t// Gather the part\r\n\t\t\tlet part = details.parts[i];\r\n\t\t\tlet unit = this._toTimeUnit(part.substr(0, 1));\r\n\t\t\tlet digits = part.length;\r\n\r\n\t\t\t// Calculate current unit value\r\n\t\t\tlet ints: number;\r\n\t\t\tconst unitValue = this._getUnitValue(unit!);\r\n\t\t\tif (i < (len -1)) {\r\n\t\t\t\tints = Math.floor(tstamp / unitValue);\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tints = Math.round(tstamp / unitValue);\r\n\t\t\t}\r\n\t\t\tres = res.replace($type.PLACEHOLDER, $utils.padString(ints, digits, \"0\"));\r\n\r\n\t\t\t// Reduce timestamp\r\n\t\t\ttstamp -= ints * unitValue;\r\n\t\t}\r\n\r\n\t\t// Reapply negative sign\r\n\t\tif (negative) {\r\n\t\t\tres = \"-\" + res;\r\n\t\t}\r\n\r\n\t\treturn res;\r\n\t}\r\n\r\n\t/**\r\n\t * Converts numeric value to timestamp in milliseconds.\r\n\t *\r\n\t * @param value A source value\r\n\t * @param baseUnit Base unit the source value is in: \"q\", \"s\", \"i\", \"h\", \"d\", \"w\", \"m\", \"y\"\r\n\t * @return Value representation as a timestamp in milliseconds\r\n\t */\r\n\tpublic toTimeStamp(value: number, baseUnit: TimeUnit): number {\r\n\t\treturn value * this._getUnitValue(baseUnit);\r\n\t}\r\n\r\n\tprotected _toTimeUnit(code: string): TimeUnit | undefined {\r\n\t\tswitch (code) {\r\n\t\t\tcase \"S\":\r\n\t\t\t\treturn \"millisecond\";\r\n\t\t\tcase \"s\":\r\n\t\t\t\treturn \"second\";\r\n\t\t\tcase \"m\":\r\n\t\t\t\treturn \"minute\";\r\n\t\t\tcase \"h\":\r\n\t\t\t\treturn \"hour\";\r\n\t\t\tcase \"d\":\r\n\t\t\t\treturn \"day\";\r\n\t\t\tcase \"w\":\r\n\t\t\t\treturn \"week\";\r\n\t\t\tcase \"M\":\r\n\t\t\t\treturn \"month\";\r\n\t\t\tcase \"y\":\r\n\t\t\t\treturn \"year\";\r\n\t\t};\r\n\t}\r\n\r\n\t/**\r\n\t * Returns appropriate default format for the value.\r\n\t *\r\n\t * If `maxValue` is sepcified, it will use that value to determine the time\r\n\t * unit for the format.\r\n\t *\r\n\t * For example if your `baseUnit` is `\"second\"` and you pass in `10`, you\r\n\t * will get `\"10\"`.\r\n\t *\r\n\t * However, you might want it to be formatted in the context of bigger scale,\r\n\t * say 10 minutes (600 seconds). If you pass in `600` as `maxValue`, all\r\n\t * values, including small ones will use format with minutes, e.g.:\r\n\t * `00:10`, `00:50`, `12: 30`, etc.\r\n\t *\r\n\t * @param value Value to format\r\n\t * @param maxValue Maximum value to be used to determine format\r\n\t * @param baseUnit Base unit of the value\r\n\t * @return Format\r\n\t */\r\n\tpublic getFormat(value: number, maxValue?: number, baseUnit?: TimeUnit): string {\r\n\r\n\t\t// Is format override set?\r\n\t\tif (this.get(\"durationFormat\") != null) {\r\n\t\t\treturn this.get(\"durationFormat\")!;\r\n\t\t}\r\n\r\n\t\t// Get base unit\r\n\t\tif (!baseUnit) {\r\n\t\t\tbaseUnit = this.get(\"baseUnit\");\r\n\t\t}\r\n\r\n\t\tif (maxValue != null && value != maxValue) {\r\n\t\t\tvalue = Math.abs(value);\r\n\t\t\tmaxValue = Math.abs(maxValue);\r\n\t\t\tlet maxUnit = this.getValueUnit(Math.max(value, maxValue), baseUnit);\r\n\t\t\treturn (<any>this.get(\"durationFormats\"))[baseUnit!][maxUnit!];\r\n\t\t}\r\n\t\telse {\r\n\t\t\tlet unit = this.getValueUnit(value, baseUnit);\r\n\t\t\treturn (<any>this.get(\"durationFormats\"))[baseUnit!][unit!];\r\n\t\t}\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Returns value's closest denominator time unit, e.g 100 seconds is\r\n\t * `\"minute\"`, while 59 seconds would still be `second`.\r\n\t *\r\n\t * @param value Source duration value\r\n\t * @param baseUnit Base unit\r\n\t * @return Denominator\r\n\t */\r\n\tpublic getValueUnit(value: number, baseUnit?: TimeUnit): TimeUnit | undefined {\r\n\r\n\t\t// Get base unit\r\n\t\tif (!baseUnit) {\r\n\t\t\tbaseUnit = this.get(\"baseUnit\");\r\n\t\t}\r\n\r\n\t\t// Convert to milliseconds\r\n\t\tlet currentUnit: any;\r\n\t\tlet ms = this.getMilliseconds(value, baseUnit);\r\n\t\t$object.eachContinue(this._getUnitValues(), (key, val) => {\r\n\t\t\tif (key == baseUnit || currentUnit) {\r\n\t\t\t\tlet num = ms / val;\r\n\t\t\t\tif (num <= 1) {\r\n\t\t\t\t\tif (!currentUnit) {\r\n\t\t\t\t\t\tcurrentUnit = key;\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t\tcurrentUnit = key;\r\n\t\t\t}\r\n\t\t\treturn true;\r\n\t\t});\r\n\r\n\t\treturn currentUnit;\r\n\t}\r\n\r\n\t/**\r\n\t * Converts value to milliseconds according to `baseUnit`.\r\n\t *\r\n\t * @param value Source duration value\r\n\t * @param baseUnit Base unit\r\n\t * @return Value in milliseconds\r\n\t */\r\n\tpublic getMilliseconds(value: number, baseUnit?: TimeUnit): number {\r\n\r\n\t\t// Get base unit\r\n\t\tif (!baseUnit) {\r\n\t\t\tbaseUnit = this.get(\"baseUnit\");\r\n\t\t}\r\n\r\n\t\treturn value * this._getUnitValue(baseUnit!);\r\n\t}\r\n\r\n\tprotected _getUnitValue(timeUnit: TimeUnit): number {\r\n\t\treturn this._getUnitValues()[timeUnit];\r\n\t}\r\n\r\n\tprotected _getUnitValues(): any {\r\n\t\treturn {\r\n\t\t\t\"millisecond\": 1,\r\n\t\t\t\"second\": 1000,\r\n\t\t\t\"minute\": 60000,\r\n\t\t\t\"hour\": 3600000,\r\n\t\t\t\"day\": 86400000,\r\n\t\t\t\"week\": 604800000,\r\n\t\t\t\"month\": 2592000000,\r\n\t\t\t\"year\": 31536000000,\r\n\t\t};\r\n\t}\r\n\r\n}\r\n"]}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import type { Pattern } from "../render/patterns/Pattern";
|
|
2
|
+
import type { Color } from "./Color";
|
|
3
|
+
import { LinePattern, ILinePatternSettings } from "../render/patterns/LinePattern";
|
|
4
|
+
import { RectanglePattern, IRectanglePatternSettings } from "../render/patterns/RectanglePattern";
|
|
5
|
+
import { CirclePattern, ICirclePatternSettings } from "../render/patterns/CirclePattern";
|
|
6
|
+
import { Entity, IEntitySettings, IEntityPrivate } from "./Entity";
|
|
7
|
+
export interface IPatternSetSettings extends IEntitySettings {
|
|
8
|
+
/**
|
|
9
|
+
* List of colors in the set.
|
|
10
|
+
*/
|
|
11
|
+
patterns?: Pattern[];
|
|
12
|
+
/**
|
|
13
|
+
* A step size when using `next()`.
|
|
14
|
+
*
|
|
15
|
+
* E.g. setting to `2` will make it return every second pattern in the list.
|
|
16
|
+
*
|
|
17
|
+
* @default 1
|
|
18
|
+
*/
|
|
19
|
+
step?: number;
|
|
20
|
+
/**
|
|
21
|
+
* A base color to use for all patterns.
|
|
22
|
+
*
|
|
23
|
+
* @see {@link https://www.amcharts.com/docs/v5/concepts/colors-gradients-and-patterns/patterns/#Colors} for more info
|
|
24
|
+
*/
|
|
25
|
+
color?: Color;
|
|
26
|
+
/**
|
|
27
|
+
* Start iterating patterns from specific index.
|
|
28
|
+
*/
|
|
29
|
+
startIndex?: number;
|
|
30
|
+
}
|
|
31
|
+
export interface IPatternSetPrivate extends IEntityPrivate {
|
|
32
|
+
/**
|
|
33
|
+
* Current step.
|
|
34
|
+
*/
|
|
35
|
+
currentStep?: number;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* An object which holds list of [[Pattern]] objects and can serve them up in
|
|
39
|
+
* an interative way.
|
|
40
|
+
*
|
|
41
|
+
* @see {@link https://www.amcharts.com/docs/v5/concepts/colors-gradients-and-patterns/patterns/#Pattern_sets} for more info
|
|
42
|
+
* @since 5.10.0
|
|
43
|
+
*/
|
|
44
|
+
export declare class PatternSet extends Entity {
|
|
45
|
+
static className: string;
|
|
46
|
+
static classNames: Array<string>;
|
|
47
|
+
_settings: IPatternSetSettings;
|
|
48
|
+
_privateSettings: IPatternSetPrivate;
|
|
49
|
+
protected _afterNew(): void;
|
|
50
|
+
_beforeChanged(): void;
|
|
51
|
+
/**
|
|
52
|
+
* Returns a [[Pattern]] at specific index.
|
|
53
|
+
*
|
|
54
|
+
* @param index Index
|
|
55
|
+
* @return Color
|
|
56
|
+
*/
|
|
57
|
+
getIndex(index: number): Pattern;
|
|
58
|
+
/**
|
|
59
|
+
* Returns next [[Color]] in the list.
|
|
60
|
+
*
|
|
61
|
+
* If the list is out of colors, new ones are generated dynamically.
|
|
62
|
+
*/
|
|
63
|
+
next(): Pattern;
|
|
64
|
+
/**
|
|
65
|
+
* Resets counter to the start of the list, so the next call for `next()` will
|
|
66
|
+
* return the first pattern.
|
|
67
|
+
*/
|
|
68
|
+
reset(): void;
|
|
69
|
+
/**
|
|
70
|
+
* Returns a [[LinePattern].
|
|
71
|
+
*
|
|
72
|
+
* @param settings Pattern settings
|
|
73
|
+
* @return Pattern object
|
|
74
|
+
*/
|
|
75
|
+
getLinePattern(settings: ILinePatternSettings): LinePattern;
|
|
76
|
+
/**
|
|
77
|
+
* Returns a [[RectanglePattern].
|
|
78
|
+
*
|
|
79
|
+
* @param settings Pattern settings
|
|
80
|
+
* @return Pattern object
|
|
81
|
+
*/
|
|
82
|
+
getRectanglePattern(settings: IRectanglePatternSettings): RectanglePattern;
|
|
83
|
+
/**
|
|
84
|
+
* Returns a [[CirclePattern].
|
|
85
|
+
*
|
|
86
|
+
* @param settings Pattern settings
|
|
87
|
+
* @return Pattern object
|
|
88
|
+
*/
|
|
89
|
+
getCirclePattern(settings: ICirclePatternSettings): CirclePattern;
|
|
90
|
+
}
|
|
91
|
+
//# sourceMappingURL=PatternSet.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PatternSet.d.ts","sourceRoot":"","sources":["../../../../../src/.internal/core/util/PatternSet.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAErC,OAAO,EAAE,WAAW,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AACnF,OAAO,EAAE,gBAAgB,EAAE,yBAAyB,EAAE,MAAM,qCAAqC,CAAC;AAClG,OAAO,EAAE,aAAa,EAAE,sBAAsB,EAAE,MAAM,kCAAkC,CAAC;AACzF,OAAO,EAAE,MAAM,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAGnE,MAAM,WAAW,mBAAoB,SAAQ,eAAe;IAE3D;;OAEG;IACH,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAC;IAErB;;;;;;OAMG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd;;;;OAIG;IACH,KAAK,CAAC,EAAE,KAAK,CAAC;IAEd;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;CAEpB;AAED,MAAM,WAAW,kBAAmB,SAAQ,cAAc;IAEzD;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;CAErB;AAGD;;;;;;GAMG;AACH,qBAAa,UAAW,SAAQ,MAAM;IACrC,OAAc,SAAS,EAAE,MAAM,CAAgB;IAC/C,OAAc,UAAU,EAAE,KAAK,CAAC,MAAM,CAAC,CAAoD;IAE5E,SAAS,EAAE,mBAAmB,CAAC;IAC/B,gBAAgB,EAAE,kBAAkB,CAAC;IAEpD,SAAS,CAAC,SAAS;IAiJZ,cAAc,IAAI,IAAI;IAM7B;;;;;OAKG;IACI,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IAgBvC;;;;OAIG;IACI,IAAI,IAAI,OAAO;IAMtB;;;OAGG;IACI,KAAK,IAAI,IAAI;IAIpB;;;;;OAKG;IACI,cAAc,CAAC,QAAQ,EAAE,oBAAoB,GAAG,WAAW;IAKlE;;;;;OAKG;IACI,mBAAmB,CAAC,QAAQ,EAAE,yBAAyB,GAAG,gBAAgB;IAKjF;;;;;OAKG;IACI,gBAAgB,CAAC,QAAQ,EAAE,sBAAsB,GAAG,aAAa;CAKxE"}
|
|
@@ -0,0 +1,236 @@
|
|
|
1
|
+
import { LinePattern } from "../render/patterns/LinePattern";
|
|
2
|
+
import { RectanglePattern } from "../render/patterns/RectanglePattern";
|
|
3
|
+
import { CirclePattern } from "../render/patterns/CirclePattern";
|
|
4
|
+
import { Entity } from "./Entity";
|
|
5
|
+
/**
|
|
6
|
+
* An object which holds list of [[Pattern]] objects and can serve them up in
|
|
7
|
+
* an interative way.
|
|
8
|
+
*
|
|
9
|
+
* @see {@link https://www.amcharts.com/docs/v5/concepts/colors-gradients-and-patterns/patterns/#Pattern_sets} for more info
|
|
10
|
+
* @since 5.10.0
|
|
11
|
+
*/
|
|
12
|
+
export class PatternSet extends Entity {
|
|
13
|
+
_afterNew() {
|
|
14
|
+
// Applying themes because pattern set will not have parent
|
|
15
|
+
super._afterNewApplyThemes();
|
|
16
|
+
if (this.get("patterns", []).length === 0) {
|
|
17
|
+
const color = this.get("color", this.root.interfaceColors.get("stroke"));
|
|
18
|
+
this.set("patterns", [
|
|
19
|
+
this.getLinePattern({
|
|
20
|
+
width: 1000,
|
|
21
|
+
height: 1000,
|
|
22
|
+
rotation: 45,
|
|
23
|
+
strokeWidth: 1,
|
|
24
|
+
//gap: 6,
|
|
25
|
+
color: color
|
|
26
|
+
}),
|
|
27
|
+
this.getRectanglePattern({
|
|
28
|
+
width: 10,
|
|
29
|
+
height: 10,
|
|
30
|
+
rotation: 0,
|
|
31
|
+
maxWidth: 4,
|
|
32
|
+
maxHeight: 4,
|
|
33
|
+
color: color
|
|
34
|
+
}),
|
|
35
|
+
this.getLinePattern({
|
|
36
|
+
width: 1000,
|
|
37
|
+
height: 1000,
|
|
38
|
+
rotation: -45,
|
|
39
|
+
strokeWidth: 1,
|
|
40
|
+
gap: 6,
|
|
41
|
+
color: color
|
|
42
|
+
}),
|
|
43
|
+
this.getCirclePattern({
|
|
44
|
+
width: 11,
|
|
45
|
+
height: 11,
|
|
46
|
+
radius: 2,
|
|
47
|
+
color: color
|
|
48
|
+
}),
|
|
49
|
+
this.getLinePattern({
|
|
50
|
+
width: 6,
|
|
51
|
+
height: 6,
|
|
52
|
+
rotation: 90,
|
|
53
|
+
strokeWidth: 1,
|
|
54
|
+
color: color
|
|
55
|
+
}),
|
|
56
|
+
this.getRectanglePattern({
|
|
57
|
+
width: 14,
|
|
58
|
+
height: 14,
|
|
59
|
+
rotation: 45,
|
|
60
|
+
gap: 4,
|
|
61
|
+
maxWidth: 6,
|
|
62
|
+
maxHeight: 6,
|
|
63
|
+
checkered: true,
|
|
64
|
+
color: color
|
|
65
|
+
}),
|
|
66
|
+
this.getLinePattern({
|
|
67
|
+
width: 6,
|
|
68
|
+
height: 6,
|
|
69
|
+
rotation: 0,
|
|
70
|
+
strokeWidth: 1,
|
|
71
|
+
color: color
|
|
72
|
+
}),
|
|
73
|
+
this.getRectanglePattern({
|
|
74
|
+
width: 15,
|
|
75
|
+
height: 15,
|
|
76
|
+
rotation: 0,
|
|
77
|
+
gap: 5,
|
|
78
|
+
maxWidth: 5,
|
|
79
|
+
maxHeight: 5,
|
|
80
|
+
checkered: true,
|
|
81
|
+
color: color
|
|
82
|
+
}),
|
|
83
|
+
this.getLinePattern({
|
|
84
|
+
width: 1000,
|
|
85
|
+
height: 1000,
|
|
86
|
+
rotation: 45,
|
|
87
|
+
strokeWidth: 2,
|
|
88
|
+
gap: 3,
|
|
89
|
+
strokeDasharray: [4, 2],
|
|
90
|
+
color: color
|
|
91
|
+
}),
|
|
92
|
+
this.getCirclePattern({
|
|
93
|
+
width: 20,
|
|
94
|
+
height: 20,
|
|
95
|
+
radius: 3,
|
|
96
|
+
gap: 4,
|
|
97
|
+
checkered: true,
|
|
98
|
+
color: color
|
|
99
|
+
}),
|
|
100
|
+
this.getLinePattern({
|
|
101
|
+
width: 1000,
|
|
102
|
+
height: 1000,
|
|
103
|
+
rotation: -45,
|
|
104
|
+
strokeWidth: 2,
|
|
105
|
+
gap: 3,
|
|
106
|
+
strokeDasharray: [4, 2],
|
|
107
|
+
color: color
|
|
108
|
+
}),
|
|
109
|
+
this.getRectanglePattern({
|
|
110
|
+
width: 10,
|
|
111
|
+
height: 10,
|
|
112
|
+
rotation: 0,
|
|
113
|
+
gap: 1,
|
|
114
|
+
maxWidth: 9,
|
|
115
|
+
maxHeight: 9,
|
|
116
|
+
color: color
|
|
117
|
+
}),
|
|
118
|
+
this.getLinePattern({
|
|
119
|
+
width: 1000,
|
|
120
|
+
height: 1000,
|
|
121
|
+
rotation: -45,
|
|
122
|
+
strokeWidth: 2,
|
|
123
|
+
gap: 1,
|
|
124
|
+
color: color
|
|
125
|
+
}),
|
|
126
|
+
this.getLinePattern({
|
|
127
|
+
width: 1000,
|
|
128
|
+
height: 1000,
|
|
129
|
+
rotation: 45,
|
|
130
|
+
strokeWidth: 2,
|
|
131
|
+
gap: 1,
|
|
132
|
+
color: color
|
|
133
|
+
}),
|
|
134
|
+
this.getLinePattern({
|
|
135
|
+
width: 1000,
|
|
136
|
+
height: 1000,
|
|
137
|
+
rotation: 0,
|
|
138
|
+
strokeWidth: 3,
|
|
139
|
+
gap: 1,
|
|
140
|
+
color: color
|
|
141
|
+
}),
|
|
142
|
+
this.getLinePattern({
|
|
143
|
+
width: 1000,
|
|
144
|
+
height: 1000,
|
|
145
|
+
rotation: 90,
|
|
146
|
+
strokeWidth: 3,
|
|
147
|
+
gap: 1,
|
|
148
|
+
color: color
|
|
149
|
+
}),
|
|
150
|
+
]);
|
|
151
|
+
}
|
|
152
|
+
this._dirty["patterns"] = false;
|
|
153
|
+
}
|
|
154
|
+
_beforeChanged() {
|
|
155
|
+
if (this.isDirty("patterns")) {
|
|
156
|
+
this.reset();
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
* Returns a [[Pattern]] at specific index.
|
|
161
|
+
*
|
|
162
|
+
* @param index Index
|
|
163
|
+
* @return Color
|
|
164
|
+
*/
|
|
165
|
+
getIndex(index) {
|
|
166
|
+
const patterns = this.get("patterns", []);
|
|
167
|
+
if ((index < patterns.length) && patterns[index] !== null) {
|
|
168
|
+
return patterns[index];
|
|
169
|
+
}
|
|
170
|
+
if (index > (patterns.length - 1)) {
|
|
171
|
+
const adjustedIndex = index - Math.floor(index * (index / patterns.length));
|
|
172
|
+
return patterns[adjustedIndex];
|
|
173
|
+
}
|
|
174
|
+
return patterns[index];
|
|
175
|
+
}
|
|
176
|
+
/**
|
|
177
|
+
* Returns next [[Color]] in the list.
|
|
178
|
+
*
|
|
179
|
+
* If the list is out of colors, new ones are generated dynamically.
|
|
180
|
+
*/
|
|
181
|
+
next() {
|
|
182
|
+
let currentStep = this.getPrivate("currentStep", this.get("startIndex", 0));
|
|
183
|
+
this.setPrivate("currentStep", currentStep + this.get("step", 1));
|
|
184
|
+
return this.getIndex(currentStep);
|
|
185
|
+
}
|
|
186
|
+
/**
|
|
187
|
+
* Resets counter to the start of the list, so the next call for `next()` will
|
|
188
|
+
* return the first pattern.
|
|
189
|
+
*/
|
|
190
|
+
reset() {
|
|
191
|
+
this.setPrivate("currentStep", this.get("startIndex", 0));
|
|
192
|
+
}
|
|
193
|
+
/**
|
|
194
|
+
* Returns a [[LinePattern].
|
|
195
|
+
*
|
|
196
|
+
* @param settings Pattern settings
|
|
197
|
+
* @return Pattern object
|
|
198
|
+
*/
|
|
199
|
+
getLinePattern(settings) {
|
|
200
|
+
let pattern = LinePattern.new(this.root, settings);
|
|
201
|
+
return pattern;
|
|
202
|
+
}
|
|
203
|
+
/**
|
|
204
|
+
* Returns a [[RectanglePattern].
|
|
205
|
+
*
|
|
206
|
+
* @param settings Pattern settings
|
|
207
|
+
* @return Pattern object
|
|
208
|
+
*/
|
|
209
|
+
getRectanglePattern(settings) {
|
|
210
|
+
let pattern = RectanglePattern.new(this.root, settings);
|
|
211
|
+
return pattern;
|
|
212
|
+
}
|
|
213
|
+
/**
|
|
214
|
+
* Returns a [[CirclePattern].
|
|
215
|
+
*
|
|
216
|
+
* @param settings Pattern settings
|
|
217
|
+
* @return Pattern object
|
|
218
|
+
*/
|
|
219
|
+
getCirclePattern(settings) {
|
|
220
|
+
let pattern = CirclePattern.new(this.root, settings);
|
|
221
|
+
return pattern;
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
Object.defineProperty(PatternSet, "className", {
|
|
225
|
+
enumerable: true,
|
|
226
|
+
configurable: true,
|
|
227
|
+
writable: true,
|
|
228
|
+
value: "PatternSet"
|
|
229
|
+
});
|
|
230
|
+
Object.defineProperty(PatternSet, "classNames", {
|
|
231
|
+
enumerable: true,
|
|
232
|
+
configurable: true,
|
|
233
|
+
writable: true,
|
|
234
|
+
value: Entity.classNames.concat([PatternSet.className])
|
|
235
|
+
});
|
|
236
|
+
//# sourceMappingURL=PatternSet.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PatternSet.js","sourceRoot":"","sources":["../../../../../src/.internal/core/util/PatternSet.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Pattern } from \"../render/patterns/Pattern\";\nimport type { Color } from \"./Color\";\n\nimport { LinePattern, ILinePatternSettings } from \"../render/patterns/LinePattern\";\nimport { RectanglePattern, IRectanglePatternSettings } from \"../render/patterns/RectanglePattern\";\nimport { CirclePattern, ICirclePatternSettings } from \"../render/patterns/CirclePattern\";\nimport { Entity, IEntitySettings, IEntityPrivate } from \"./Entity\";\n\n\nexport interface IPatternSetSettings extends IEntitySettings {\n\n\t/**\n\t * List of colors in the set.\n\t */\n\tpatterns?: Pattern[];\n\n\t/**\n\t * A step size when using `next()`.\n\t *\n\t * E.g. setting to `2` will make it return every second pattern in the list.\n\t *\n\t * @default 1\n\t */\n\tstep?: number;\n\n\t/**\n\t * A base color to use for all patterns.\n\t *\n\t * @see {@link https://www.amcharts.com/docs/v5/concepts/colors-gradients-and-patterns/patterns/#Colors} for more info\n\t */\n\tcolor?: Color;\n\n\t/**\n\t * Start iterating patterns from specific index.\n\t */\n\tstartIndex?: number;\n\n}\n\nexport interface IPatternSetPrivate extends IEntityPrivate {\n\n\t/**\n\t * Current step.\n\t */\n\tcurrentStep?: number;\n\n}\n\n\n/**\n * An object which holds list of [[Pattern]] objects and can serve them up in\n * an interative way.\n *\n * @see {@link https://www.amcharts.com/docs/v5/concepts/colors-gradients-and-patterns/patterns/#Pattern_sets} for more info\n * @since 5.10.0\n */\nexport class PatternSet extends Entity {\n\tpublic static className: string = \"PatternSet\";\n\tpublic static classNames: Array<string> = Entity.classNames.concat([PatternSet.className]);\n\n\tdeclare public _settings: IPatternSetSettings;\n\tdeclare public _privateSettings: IPatternSetPrivate;\n\n\tprotected _afterNew() {\n\t\t// Applying themes because pattern set will not have parent\n\t\tsuper._afterNewApplyThemes();\n\n\t\tif (this.get(\"patterns\", []).length === 0) {\n\t\t\tconst color = this.get(\"color\", this.root.interfaceColors.get(\"stroke\"));\n\t\t\tthis.set(\"patterns\", [\n\t\t\t\tthis.getLinePattern({\n\t\t\t\t\twidth: 1000,\n\t\t\t\t\theight: 1000,\n\t\t\t\t\trotation: 45,\n\t\t\t\t\tstrokeWidth: 1,\n\t\t\t\t\t//gap: 6,\n\t\t\t\t\tcolor: color\n\t\t\t\t}),\n\t\t\t\tthis.getRectanglePattern({\n\t\t\t\t\twidth: 10,\n\t\t\t\t\theight: 10,\n\t\t\t\t\trotation: 0,\n\t\t\t\t\tmaxWidth: 4,\n\t\t\t\t\tmaxHeight: 4,\n\t\t\t\t\tcolor: color\n\t\t\t\t}),\n\t\t\t\tthis.getLinePattern({\n\t\t\t\t\twidth: 1000,\n\t\t\t\t\theight: 1000,\n\t\t\t\t\trotation: -45,\n\t\t\t\t\tstrokeWidth: 1,\n\t\t\t\t\tgap: 6,\n\t\t\t\t\tcolor: color\n\t\t\t\t}),\n\t\t\t\tthis.getCirclePattern({\n\t\t\t\t\twidth: 11,\n\t\t\t\t\theight: 11,\n\t\t\t\t\tradius: 2,\n\t\t\t\t\tcolor: color\n\t\t\t\t}),\n\t\t\t\tthis.getLinePattern({\n\t\t\t\t\twidth: 6,\n\t\t\t\t\theight: 6,\n\t\t\t\t\trotation: 90,\n\t\t\t\t\tstrokeWidth: 1,\n\t\t\t\t\tcolor: color\n\t\t\t\t}),\n\t\t\t\tthis.getRectanglePattern({\n\t\t\t\t\twidth: 14,\n\t\t\t\t\theight: 14,\n\t\t\t\t\trotation: 45,\n\t\t\t\t\tgap: 4,\n\t\t\t\t\tmaxWidth: 6,\n\t\t\t\t\tmaxHeight: 6,\n\t\t\t\t\tcheckered: true,\n\t\t\t\t\tcolor: color\n\t\t\t\t}),\n\t\t\t\tthis.getLinePattern({\n\t\t\t\t\twidth: 6,\n\t\t\t\t\theight: 6,\n\t\t\t\t\trotation: 0,\n\t\t\t\t\tstrokeWidth: 1,\n\t\t\t\t\tcolor: color\n\t\t\t\t}),\n\t\t\t\tthis.getRectanglePattern({\n\t\t\t\t\twidth: 15,\n\t\t\t\t\theight: 15,\n\t\t\t\t\trotation: 0,\n\t\t\t\t\tgap: 5,\n\t\t\t\t\tmaxWidth: 5,\n\t\t\t\t\tmaxHeight: 5,\n\t\t\t\t\tcheckered: true,\n\t\t\t\t\tcolor: color\n\t\t\t\t}),\n\t\t\t\tthis.getLinePattern({\n\t\t\t\t\twidth: 1000,\n\t\t\t\t\theight: 1000,\n\t\t\t\t\trotation: 45,\n\t\t\t\t\tstrokeWidth: 2,\n\t\t\t\t\tgap: 3,\n\t\t\t\t\tstrokeDasharray: [4, 2],\n\t\t\t\t\tcolor: color\n\t\t\t\t}),\n\t\t\t\tthis.getCirclePattern({\n\t\t\t\t\twidth: 20,\n\t\t\t\t\theight: 20,\n\t\t\t\t\tradius: 3,\n\t\t\t\t\tgap: 4,\n\t\t\t\t\tcheckered: true,\n\t\t\t\t\tcolor: color\n\t\t\t\t}),\n\t\t\t\tthis.getLinePattern({\n\t\t\t\t\twidth: 1000,\n\t\t\t\t\theight: 1000,\n\t\t\t\t\trotation: -45,\n\t\t\t\t\tstrokeWidth: 2,\n\t\t\t\t\tgap: 3,\n\t\t\t\t\tstrokeDasharray: [4, 2],\n\t\t\t\t\tcolor: color\n\t\t\t\t}),\n\t\t\t\tthis.getRectanglePattern({\n\t\t\t\t\twidth: 10,\n\t\t\t\t\theight: 10,\n\t\t\t\t\trotation: 0,\n\t\t\t\t\tgap: 1,\n\t\t\t\t\tmaxWidth: 9,\n\t\t\t\t\tmaxHeight: 9,\n\t\t\t\t\tcolor: color\n\t\t\t\t}),\n\t\t\t\tthis.getLinePattern({\n\t\t\t\t\twidth: 1000,\n\t\t\t\t\theight: 1000,\n\t\t\t\t\trotation: -45,\n\t\t\t\t\tstrokeWidth: 2,\n\t\t\t\t\tgap: 1,\n\t\t\t\t\tcolor: color\n\t\t\t\t}),\n\t\t\t\tthis.getLinePattern({\n\t\t\t\t\twidth: 1000,\n\t\t\t\t\theight: 1000,\n\t\t\t\t\trotation: 45,\n\t\t\t\t\tstrokeWidth: 2,\n\t\t\t\t\tgap: 1,\n\t\t\t\t\tcolor: color\n\t\t\t\t}),\n\t\t\t\tthis.getLinePattern({\n\t\t\t\t\twidth: 1000,\n\t\t\t\t\theight: 1000,\n\t\t\t\t\trotation: 0,\n\t\t\t\t\tstrokeWidth: 3,\n\t\t\t\t\tgap: 1,\n\t\t\t\t\tcolor: color\n\t\t\t\t}),\n\t\t\t\tthis.getLinePattern({\n\t\t\t\t\twidth: 1000,\n\t\t\t\t\theight: 1000,\n\t\t\t\t\trotation: 90,\n\t\t\t\t\tstrokeWidth: 3,\n\t\t\t\t\tgap: 1,\n\t\t\t\t\tcolor: color\n\t\t\t\t}),\n\t\t\t])\n\t\t}\n\n\t\tthis._dirty[\"patterns\"] = false;\n\n\t}\n\n\tpublic _beforeChanged(): void {\n\t\tif (this.isDirty(\"patterns\")) {\n\t\t\tthis.reset();\n\t\t}\n\t}\n\n\t/**\n\t * Returns a [[Pattern]] at specific index.\n\t *\n\t * @param index Index\n\t * @return Color\n\t */\n\tpublic getIndex(index: number): Pattern {\n\t\tconst patterns = this.get(\"patterns\", []);\n\n\t\tif ((index < patterns.length) && patterns[index] !== null) {\n\t\t\treturn patterns[index];\n\t\t}\n\n\n\n\t\tif (index > (patterns.length - 1)) {\n\t\t\tconst adjustedIndex = index - Math.floor(index * (index / patterns.length));\n\t\t\treturn patterns[adjustedIndex];\n\t\t}\n\t\treturn patterns[index];\n\t}\n\n\t/**\n\t * Returns next [[Color]] in the list.\n\t *\n\t * If the list is out of colors, new ones are generated dynamically.\n\t */\n\tpublic next(): Pattern {\n\t\tlet currentStep = this.getPrivate(\"currentStep\", this.get(\"startIndex\", 0));\n\t\tthis.setPrivate(\"currentStep\", currentStep + this.get(\"step\", 1));\n\t\treturn this.getIndex(currentStep);\n\t}\n\n\t/**\n\t * Resets counter to the start of the list, so the next call for `next()` will\n\t * return the first pattern.\n\t */\n\tpublic reset(): void {\n\t\tthis.setPrivate(\"currentStep\", this.get(\"startIndex\", 0));\n\t}\n\n\t/**\n\t * Returns a [[LinePattern].\n\t *\n\t * @param settings Pattern settings\n\t * @return Pattern object\n\t */\n\tpublic getLinePattern(settings: ILinePatternSettings): LinePattern {\n\t\tlet pattern = LinePattern.new(this.root, settings);\n\t\treturn pattern;\n\t}\n\n\t/**\n\t * Returns a [[RectanglePattern].\n\t *\n\t * @param settings Pattern settings\n\t * @return Pattern object\n\t */\n\tpublic getRectanglePattern(settings: IRectanglePatternSettings): RectanglePattern {\n\t\tlet pattern = RectanglePattern.new(this.root, settings);\n\t\treturn pattern;\n\t}\n\n\t/**\n\t * Returns a [[CirclePattern].\n\t *\n\t * @param settings Pattern settings\n\t * @return Pattern object\n\t */\n\tpublic getCirclePattern(settings: ICirclePatternSettings): CirclePattern {\n\t\tlet pattern = CirclePattern.new(this.root, settings);\n\t\treturn pattern;\n\t}\n\n}"]}
|
|
@@ -141,6 +141,7 @@ import type { ParallelChannelSeries } from "./../../../stock";
|
|
|
141
141
|
import type { Partition } from "./../../../hierarchy";
|
|
142
142
|
import type { PathPattern } from "./../../../index";
|
|
143
143
|
import type { Pattern } from "./../../../index";
|
|
144
|
+
import type { PatternSet } from "./../../../index";
|
|
144
145
|
import type { PercentChart } from "./../../../percent";
|
|
145
146
|
import type { PercentSeries } from "./../../../percent";
|
|
146
147
|
import type { PeriodSelector } from "./../../../stock";
|
|
@@ -367,6 +368,7 @@ export interface IClasses {
|
|
|
367
368
|
"Partition": () => Promise<typeof Partition>;
|
|
368
369
|
"PathPattern": () => Promise<typeof PathPattern>;
|
|
369
370
|
"Pattern": () => Promise<typeof Pattern>;
|
|
371
|
+
"PatternSet": () => Promise<typeof PatternSet>;
|
|
370
372
|
"PercentChart": () => Promise<typeof PercentChart>;
|
|
371
373
|
"PercentSeries": () => Promise<typeof PercentSeries>;
|
|
372
374
|
"PeriodSelector": () => Promise<typeof PeriodSelector>;
|