mdt-charts 1.9.7 → 1.9.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (150) hide show
  1. package/README.md +190 -190
  2. package/dist/index.html +363 -48
  3. package/dist/listeners.89e1e272264c0e680de8.js +278 -0
  4. package/dist/main.f8b6bc6fee33cef1116c.js +228 -0
  5. package/dist/src_engine_engine_ts.ccee2a280374e0083541.js +759 -0
  6. package/dist/vendors-node_modules_chroma-js_chroma_js-node_modules_d3-array_src_max_js-node_modules_d3-arr-c3fc24.b32acc465b8557229277.js +1869 -0
  7. package/package.json +57 -57
  8. package/dist/bundle.js +0 -2
  9. package/dist/bundle.js.LICENSE.txt +0 -56
  10. package/lib/config/config.d.ts +0 -146
  11. package/lib/config/config.js +0 -1
  12. package/lib/designer/designerConfig.d.ts +0 -71
  13. package/lib/designer/designerConfig.js +0 -1
  14. package/lib/engine/block/block.d.ts +0 -35
  15. package/lib/engine/block/block.js +0 -110
  16. package/lib/engine/block/blockHelper.d.ts +0 -12
  17. package/lib/engine/block/blockHelper.js +0 -19
  18. package/lib/engine/contentManager.d.ts +0 -9
  19. package/lib/engine/contentManager.js +0 -29
  20. package/lib/engine/elementHighlighter/elementHighlighter.d.ts +0 -30
  21. package/lib/engine/elementHighlighter/elementHighlighter.js +0 -197
  22. package/lib/engine/elementHighlighter/selectHighlighter.d.ts +0 -11
  23. package/lib/engine/elementHighlighter/selectHighlighter.js +0 -95
  24. package/lib/engine/engine.d.ts +0 -20
  25. package/lib/engine/engine.js +0 -64
  26. package/lib/engine/features/aggregator/aggregator.d.ts +0 -22
  27. package/lib/engine/features/aggregator/aggregator.js +0 -95
  28. package/lib/engine/features/axis/axis.d.ts +0 -12
  29. package/lib/engine/features/axis/axis.js +0 -118
  30. package/lib/engine/features/axis/axisDomHelper.d.ts +0 -7
  31. package/lib/engine/features/axis/axisDomHelper.js +0 -24
  32. package/lib/engine/features/axis/axisHelper.d.ts +0 -9
  33. package/lib/engine/features/axis/axisHelper.js +0 -53
  34. package/lib/engine/features/axis/axisLabelDomHelper.d.ts +0 -17
  35. package/lib/engine/features/axis/axisLabelDomHelper.js +0 -143
  36. package/lib/engine/features/axis/axisLabelsEventManager.d.ts +0 -6
  37. package/lib/engine/features/axis/axisLabelsEventManager.js +0 -36
  38. package/lib/engine/features/embeddedLabels/embeddedLabels.d.ts +0 -23
  39. package/lib/engine/features/embeddedLabels/embeddedLabels.js +0 -147
  40. package/lib/engine/features/embeddedLabels/embeddedLabelsDomHelper.d.ts +0 -8
  41. package/lib/engine/features/embeddedLabels/embeddedLabelsDomHelper.js +0 -30
  42. package/lib/engine/features/embeddedLabels/embeddedLabelsHelper.d.ts +0 -27
  43. package/lib/engine/features/embeddedLabels/embeddedLabelsHelper.js +0 -65
  44. package/lib/engine/features/gridLine/gidLineHelper.d.ts +0 -13
  45. package/lib/engine/features/gridLine/gidLineHelper.js +0 -30
  46. package/lib/engine/features/gridLine/gridLine.d.ts +0 -11
  47. package/lib/engine/features/gridLine/gridLine.js +0 -67
  48. package/lib/engine/features/legend/legend.d.ts +0 -22
  49. package/lib/engine/features/legend/legend.js +0 -109
  50. package/lib/engine/features/legend/legendDomHelper.d.ts +0 -8
  51. package/lib/engine/features/legend/legendDomHelper.js +0 -48
  52. package/lib/engine/features/legend/legendEventsManager.d.ts +0 -12
  53. package/lib/engine/features/legend/legendEventsManager.js +0 -47
  54. package/lib/engine/features/legend/legendHelper.d.ts +0 -21
  55. package/lib/engine/features/legend/legendHelper.js +0 -97
  56. package/lib/engine/features/markDots/markDot.d.ts +0 -20
  57. package/lib/engine/features/markDots/markDot.js +0 -68
  58. package/lib/engine/features/markDots/markDotsHelper.d.ts +0 -6
  59. package/lib/engine/features/markDots/markDotsHelper.js +0 -16
  60. package/lib/engine/features/recordOverflowAlert/recordOverflowAlert.d.ts +0 -14
  61. package/lib/engine/features/recordOverflowAlert/recordOverflowAlert.js +0 -97
  62. package/lib/engine/features/scale/scale.d.ts +0 -16
  63. package/lib/engine/features/scale/scale.js +0 -74
  64. package/lib/engine/features/tipBox/tipBox.d.ts +0 -11
  65. package/lib/engine/features/tipBox/tipBox.js +0 -32
  66. package/lib/engine/features/tipBox/tipBoxHelper.d.ts +0 -16
  67. package/lib/engine/features/tipBox/tipBoxHelper.js +0 -48
  68. package/lib/engine/features/title/title.d.ts +0 -9
  69. package/lib/engine/features/title/title.js +0 -35
  70. package/lib/engine/features/tolltip/tooltip.d.ts +0 -19
  71. package/lib/engine/features/tolltip/tooltip.js +0 -180
  72. package/lib/engine/features/tolltip/tooltipComponentsManager.d.ts +0 -17
  73. package/lib/engine/features/tolltip/tooltipComponentsManager.js +0 -127
  74. package/lib/engine/features/tolltip/tooltipDomHelper.d.ts +0 -36
  75. package/lib/engine/features/tolltip/tooltipDomHelper.js +0 -114
  76. package/lib/engine/features/tolltip/tooltipHelper.d.ts +0 -16
  77. package/lib/engine/features/tolltip/tooltipHelper.js +0 -99
  78. package/lib/engine/filterManager/filterEventManager.d.ts +0 -33
  79. package/lib/engine/filterManager/filterEventManager.js +0 -127
  80. package/lib/engine/helpers/domHelper.d.ts +0 -30
  81. package/lib/engine/helpers/domHelper.js +0 -68
  82. package/lib/engine/helpers/helper.d.ts +0 -30
  83. package/lib/engine/helpers/helper.js +0 -89
  84. package/lib/engine/helpers/namesHelper.d.ts +0 -5
  85. package/lib/engine/helpers/namesHelper.js +0 -9
  86. package/lib/engine/intervalNotation/gantt.d.ts +0 -10
  87. package/lib/engine/intervalNotation/gantt.js +0 -62
  88. package/lib/engine/intervalNotation/intervalManager.d.ts +0 -7
  89. package/lib/engine/intervalNotation/intervalManager.js +0 -30
  90. package/lib/engine/polarNotation/donut/DonutHelper.d.ts +0 -15
  91. package/lib/engine/polarNotation/donut/DonutHelper.js +0 -58
  92. package/lib/engine/polarNotation/donut/donut.d.ts +0 -32
  93. package/lib/engine/polarNotation/donut/donut.js +0 -124
  94. package/lib/engine/polarNotation/polarManager.d.ts +0 -10
  95. package/lib/engine/polarNotation/polarManager.js +0 -55
  96. package/lib/engine/transitionManager.d.ts +0 -19
  97. package/lib/engine/transitionManager.js +0 -64
  98. package/lib/engine/twoDimensionalNotation/area/area.d.ts +0 -17
  99. package/lib/engine/twoDimensionalNotation/area/area.js +0 -131
  100. package/lib/engine/twoDimensionalNotation/area/areaHelper.d.ts +0 -9
  101. package/lib/engine/twoDimensionalNotation/area/areaHelper.js +0 -40
  102. package/lib/engine/twoDimensionalNotation/bar/bar.d.ts +0 -34
  103. package/lib/engine/twoDimensionalNotation/bar/bar.js +0 -216
  104. package/lib/engine/twoDimensionalNotation/bar/barHelper.d.ts +0 -24
  105. package/lib/engine/twoDimensionalNotation/bar/barHelper.js +0 -103
  106. package/lib/engine/twoDimensionalNotation/line/line.d.ts +0 -17
  107. package/lib/engine/twoDimensionalNotation/line/line.js +0 -132
  108. package/lib/engine/twoDimensionalNotation/line/lineHelper.d.ts +0 -8
  109. package/lib/engine/twoDimensionalNotation/line/lineHelper.js +0 -28
  110. package/lib/engine/twoDimensionalNotation/twoDimensionalManager.d.ts +0 -11
  111. package/lib/engine/twoDimensionalNotation/twoDimensionalManager.js +0 -101
  112. package/lib/engine/valueFormatter.d.ts +0 -6
  113. package/lib/engine/valueFormatter.js +0 -8
  114. package/lib/main.d.ts +0 -79
  115. package/lib/main.js +0 -85
  116. package/lib/model/chartStyleModel.d.ts +0 -16
  117. package/lib/model/chartStyleModel.js +0 -67
  118. package/lib/model/dataManagerModel.d.ts +0 -22
  119. package/lib/model/dataManagerModel.js +0 -137
  120. package/lib/model/featuresModel/axisModel.d.ts +0 -18
  121. package/lib/model/featuresModel/axisModel.js +0 -111
  122. package/lib/model/featuresModel/legendModel/legendCanvasModel.d.ts +0 -7
  123. package/lib/model/featuresModel/legendModel/legendCanvasModel.js +0 -86
  124. package/lib/model/featuresModel/legendModel/legendModel.d.ts +0 -13
  125. package/lib/model/featuresModel/legendModel/legendModel.js +0 -78
  126. package/lib/model/featuresModel/otherComponents.d.ts +0 -6
  127. package/lib/model/featuresModel/otherComponents.js +0 -12
  128. package/lib/model/featuresModel/scaleModel.d.ts +0 -17
  129. package/lib/model/featuresModel/scaleModel.js +0 -100
  130. package/lib/model/featuresModel/titleModel.d.ts +0 -4
  131. package/lib/model/featuresModel/titleModel.js +0 -14
  132. package/lib/model/featuresModel/tooltipModel.d.ts +0 -4
  133. package/lib/model/featuresModel/tooltipModel.js +0 -7
  134. package/lib/model/marginModel.d.ts +0 -19
  135. package/lib/model/marginModel.js +0 -126
  136. package/lib/model/model.d.ts +0 -220
  137. package/lib/model/model.js +0 -1
  138. package/lib/model/modelBuilder.d.ts +0 -16
  139. package/lib/model/modelBuilder.js +0 -128
  140. package/lib/model/modelHelper.d.ts +0 -7
  141. package/lib/model/modelHelper.js +0 -41
  142. package/lib/model/notations/intervalModel.d.ts +0 -8
  143. package/lib/model/notations/intervalModel.js +0 -93
  144. package/lib/model/notations/polarModel.d.ts +0 -7
  145. package/lib/model/notations/polarModel.js +0 -27
  146. package/lib/model/notations/twoDimensionalModel.d.ts +0 -19
  147. package/lib/model/notations/twoDimensionalModel.js +0 -85
  148. package/lib/style/charts-main.css +0 -240
  149. package/lib/style/charts-main.less +0 -240
  150. package/test.html +0 -196
@@ -1,30 +0,0 @@
1
- import { MdtChartsDataRow, MdtChartsDataSource } from "../../config/config";
2
- export declare class Helper {
3
- static getRowsByKeys(keys: string[], keyFieldName: string, dataSet: MdtChartsDataRow[]): MdtChartsDataRow[];
4
- static getKeysByIds(ids: number[], keyFieldName: string, dataSet: MdtChartsDataRow[]): string[];
5
- static extractKeysFromRows(keyFieldName: string, dataSet: MdtChartsDataRow[]): string[];
6
- static getRowsByIds(ids: number[], dataSet: MdtChartsDataRow[]): MdtChartsDataRow[];
7
- static getCssClassesLine(cssClasses: string[]): string;
8
- static getCssClassesArray(cssClass: string): string[];
9
- static getCssClassesWithElementIndex(cssClasses: string[], index: number): string[];
10
- static getRgbaFromRgb(rgbValue: string, opacity: number): string;
11
- static getTranslateNumbers(transformValue: string): [number, number];
12
- static getSumOfNumeric(numbers: number[]): number;
13
- static parseFormattedToNumber(value: string, rankSpliter: string): number;
14
- static calcDigitsAfterDot(value: number): number;
15
- static checkDomainsEquality(oldDomain: string[], newDomain: string[]): boolean;
16
- static getValueOrZero(value: number): number;
17
- static getPXValueFromString(propertyValue: string): number;
18
- /**
19
- * Возвращает значение ключа в зависимости от того, обернуты ли данные
20
- * @param row
21
- * @param keyFieldName
22
- * @param isSegmented
23
- * @returns
24
- */
25
- static getKeyFieldValue(row: MdtChartsDataRow, keyFieldName: string, isSegmented: boolean): string;
26
- /**
27
- * Сравнивает старые и новые данные
28
- */
29
- static compareData(oldSource: MdtChartsDataSource, newSource: MdtChartsDataSource, sourceName: string): boolean;
30
- }
@@ -1,89 +0,0 @@
1
- export class Helper {
2
- static getRowsByKeys(keys, keyFieldName, dataSet) {
3
- return dataSet.filter(row => keys.findIndex(key => key === row[keyFieldName]) !== -1);
4
- }
5
- static getKeysByIds(ids, keyFieldName, dataSet) {
6
- return this.extractKeysFromRows(keyFieldName, this.getRowsByIds(ids, dataSet));
7
- }
8
- static extractKeysFromRows(keyFieldName, dataSet) {
9
- return dataSet.map(row => row[keyFieldName]);
10
- }
11
- static getRowsByIds(ids, dataSet) {
12
- return dataSet.filter(row => ids.findIndex(id => id === row.$id) !== -1);
13
- }
14
- static getCssClassesLine(cssClasses) {
15
- return '.' + cssClasses.join('.');
16
- }
17
- static getCssClassesArray(cssClass) {
18
- return cssClass.split(' ');
19
- }
20
- static getCssClassesWithElementIndex(cssClasses, index) {
21
- return cssClasses.concat([`chart-element-${index}`]);
22
- }
23
- static getRgbaFromRgb(rgbValue, opacity) {
24
- const rgbNumbers = rgbValue.substring(3, rgbValue.length - 1);
25
- return `rgba${rgbNumbers}, ${opacity})`;
26
- }
27
- static getTranslateNumbers(transformValue) {
28
- if (!transformValue)
29
- return [0, 0];
30
- const translateNumbers = transformValue.substring(10, transformValue.length - 1).split(', ');
31
- const translateX = parseFloat(translateNumbers[0]);
32
- const translateY = parseFloat(translateNumbers[1]);
33
- return [translateX, translateY];
34
- }
35
- static getSumOfNumeric(numbers) {
36
- return numbers.reduce((acc, value) => acc + value, 0);
37
- }
38
- static parseFormattedToNumber(value, rankSpliter) {
39
- return parseFloat(value.replace(rankSpliter, '.').split(/\s/).join(''));
40
- }
41
- static calcDigitsAfterDot(value) {
42
- const valueInString = value.toString();
43
- const dotIndex = valueInString.lastIndexOf('.') === -1 ? valueInString.length : valueInString.lastIndexOf('.') + 1;
44
- return valueInString.substring(dotIndex).length;
45
- }
46
- static checkDomainsEquality(oldDomain, newDomain) {
47
- if (oldDomain.length !== newDomain.length)
48
- return false;
49
- let isEqual = true;
50
- oldDomain.forEach((keyValue, index) => {
51
- if (keyValue !== newDomain[index])
52
- isEqual = false;
53
- });
54
- return isEqual;
55
- }
56
- static getValueOrZero(value) {
57
- return Math.max(value, 0);
58
- }
59
- static getPXValueFromString(propertyValue) {
60
- return parseFloat(propertyValue);
61
- }
62
- /**
63
- * Возвращает значение ключа в зависимости от того, обернуты ли данные
64
- * @param row
65
- * @param keyFieldName
66
- * @param isSegmented
67
- * @returns
68
- */
69
- static getKeyFieldValue(row, keyFieldName, isSegmented) {
70
- return isSegmented ? row.data[keyFieldName] : row[keyFieldName];
71
- }
72
- /**
73
- * Сравнивает старые и новые данные
74
- */
75
- static compareData(oldSource, newSource, sourceName) {
76
- if (!oldSource || !newSource || !sourceName || !oldSource[sourceName] || !newSource[sourceName] || oldSource[sourceName].length !== newSource[sourceName].length)
77
- return false;
78
- const oldData = oldSource[sourceName];
79
- const newData = newSource[sourceName];
80
- let isEqual = true;
81
- oldData.forEach((row, i) => {
82
- for (let key in row) {
83
- if (row[key] !== newData[i][key] && isEqual)
84
- isEqual = false;
85
- }
86
- });
87
- return isEqual;
88
- }
89
- }
@@ -1,5 +0,0 @@
1
- export declare class NamesHelper {
2
- private static prefix;
3
- static getClassName(classOfElem: string): string;
4
- static getId(idName: string, blockId: number): string;
5
- }
@@ -1,9 +0,0 @@
1
- export class NamesHelper {
2
- static getClassName(classOfElem) {
3
- return this.prefix + classOfElem;
4
- }
5
- static getId(idName, blockId) {
6
- return this.prefix + idName + '-' + blockId;
7
- }
8
- }
9
- NamesHelper.prefix = 'charts-';
@@ -1,10 +0,0 @@
1
- import { MdtChartsDataRow } from '../../config/config';
2
- import { BarChartSettings, BlockMargin, IntervalChartModel, OptionsModelData, Orient } from "../../model/model";
3
- import { Block } from "../block/block";
4
- import { Scales } from "../features/scale/scale";
5
- export declare class Gantt {
6
- private static readonly ganttItemClass;
7
- static render(block: Block, data: MdtChartsDataRow[], dataOptions: OptionsModelData, scales: Scales, margin: BlockMargin, keyAxisOrient: Orient, chart: IntervalChartModel, barSettings: BarChartSettings): void;
8
- private static fillItemsAttrs;
9
- private static getItemsAttrsByKeyOrient;
10
- }
@@ -1,62 +0,0 @@
1
- import { Scale } from "../features/scale/scale";
2
- import { DomHelper } from '../helpers/domHelper';
3
- export class Gantt {
4
- static render(block, data, dataOptions, scales, margin, keyAxisOrient, chart, barSettings) {
5
- const ganttItems = block.getChartBlock()
6
- .selectAll(`.${this.ganttItemClass}`)
7
- .data(data)
8
- .enter()
9
- .append('rect')
10
- .attr('class', this.ganttItemClass)
11
- .style('clip-path', `url(#${block.getClipPathId()})`);
12
- const itemsAttrs = this.getItemsAttrsByKeyOrient(keyAxisOrient, scales, margin, dataOptions.keyField.name, chart.data.valueField1.name, chart.data.valueField2.name, barSettings);
13
- this.fillItemsAttrs(ganttItems, itemsAttrs);
14
- DomHelper.setCssClasses(ganttItems, chart.cssClasses);
15
- DomHelper.setChartStyle(ganttItems, chart.style, 0, 'fill');
16
- }
17
- static fillItemsAttrs(ganttItems, attrs) {
18
- ganttItems
19
- .attr('x', d => attrs.x(d))
20
- .attr('y', d => attrs.y(d))
21
- .attr('width', d => attrs.width(d))
22
- .attr('height', d => attrs.height(d));
23
- }
24
- static getItemsAttrsByKeyOrient(axisOrient, scales, margin, keyField, valueField1, valueField2, barSettings) {
25
- const attrs = {
26
- x: null,
27
- y: null,
28
- width: null,
29
- height: null
30
- };
31
- const itemSize = Scale.getScaleBandWidth(scales.key) > barSettings.maxBarWidth
32
- ? barSettings.maxBarWidth
33
- : Scale.getScaleBandWidth(scales.key);
34
- const sizeDiff = (Scale.getScaleBandWidth(scales.key) - itemSize) / 2;
35
- if (axisOrient === 'top' || axisOrient === 'bottom') {
36
- attrs.x = d => scales.key(d[keyField]) + margin.left + sizeDiff;
37
- attrs.width = d => itemSize;
38
- }
39
- if (axisOrient === 'left' || axisOrient === 'right') {
40
- attrs.y = d => scales.key(d[keyField]) + margin.top + sizeDiff;
41
- attrs.height = d => itemSize;
42
- }
43
- if (axisOrient === 'top') {
44
- attrs.y = d => scales.value(d[valueField1]) + margin.top;
45
- attrs.height = d => scales.value(d[valueField2]) - scales.value(d[valueField1]);
46
- }
47
- else if (axisOrient === 'bottom') {
48
- attrs.y = d => scales.value(d[valueField2]) + margin.top;
49
- attrs.height = d => scales.value(d[valueField1]) - scales.value(d[valueField2]);
50
- }
51
- else if (axisOrient === 'left') {
52
- attrs.x = d => scales.value(d[valueField1]) + margin.left;
53
- attrs.width = d => scales.value(d[valueField2]) - scales.value(d[valueField1]);
54
- }
55
- else if (axisOrient === 'right') {
56
- attrs.x = d => scales.value(d[valueField2]) + margin.left;
57
- attrs.width = d => scales.value(d[valueField1]) - scales.value(d[valueField2]);
58
- }
59
- return attrs;
60
- }
61
- }
62
- Gantt.ganttItemClass = 'gantt-item';
@@ -1,7 +0,0 @@
1
- import { MdtChartsDataSource } from "../../config/config";
2
- import { Model } from "../../model/model";
3
- import { Block } from "../block/block";
4
- export declare class IntervalManager {
5
- static render(block: Block, model: Model, data: MdtChartsDataSource): void;
6
- private static renderCharts;
7
- }
@@ -1,30 +0,0 @@
1
- import { Axis } from "../features/axis/axis";
2
- import { GridLine } from "../features/gridLine/gridLine";
3
- import { Legend } from "../features/legend/legend";
4
- import { RecordOverflowAlert } from "../features/recordOverflowAlert/recordOverflowAlert";
5
- import { Scale } from "../features/scale/scale";
6
- import { Title } from "../features/title/title";
7
- import { Tooltip } from "../features/tolltip/tooltip";
8
- import { Gantt } from "./gantt";
9
- export class IntervalManager {
10
- static render(block, model, data) {
11
- const options = model.options;
12
- block.renderSvg(model.blockCanvas.size);
13
- const scales = Scale.getScales(options.scale.key, options.scale.value, model.chartSettings.bar);
14
- Axis.render(block, scales, options.scale, options.axis, model.blockCanvas.size);
15
- GridLine.render(block, options.additionalElements.gridLine.flag, options.axis, model.blockCanvas.size, model.chartBlock.margin, options.scale.key);
16
- this.renderCharts(block, options.charts, scales, data, options.data, model.chartBlock.margin, options.axis.key.orient, model.chartSettings);
17
- Title.render(block, options.title, model.otherComponents.titleBlock, model.blockCanvas.size);
18
- Legend.render(block, data, options, model);
19
- Tooltip.render(block, model, data, model.otherComponents.tooltipBlock, scales);
20
- if (model.dataSettings.scope.hidedRecordsAmount !== 0)
21
- RecordOverflowAlert.render(block, model.dataSettings.scope.hidedRecordsAmount, 'top', options.orient);
22
- }
23
- static renderCharts(block, charts, scales, data, dataOptions, margin, keyAxisOrient, chartSettings) {
24
- block.renderChartsBlock();
25
- charts.forEach(chart => {
26
- if (chart.type === 'gantt')
27
- Gantt.render(block, data[dataOptions.dataSource], dataOptions, scales, margin, keyAxisOrient, chart, chartSettings.bar);
28
- });
29
- }
30
- }
@@ -1,15 +0,0 @@
1
- import { PieArcDatum, Arc, Pie } from "d3-shape";
2
- import { MdtChartsDataRow, Size } from "../../../config/config";
3
- import { BlockMargin, DonutChartSettings } from "../../../model/model";
4
- import { Translate } from "./donut";
5
- export declare class DonutHelper {
6
- static getThickness(donutSettings: DonutChartSettings, blockSize: Size, margin: BlockMargin): number;
7
- static getArcCentroid(blockSize: Size, margin: BlockMargin, dataItem: PieArcDatum<MdtChartsDataRow>, donutThickness: number): [number, number];
8
- static getArcGeneratorObject(blockSize: Size, margin: BlockMargin, donutThickness: number): Arc<any, PieArcDatum<MdtChartsDataRow>>;
9
- static getOuterRadius(margin: BlockMargin, blockSize: Size): number;
10
- static getInnerRadius(outerRadius: number, thickness: number): number;
11
- static getTranslate(margin: BlockMargin, blockSize: Size): Translate;
12
- static getArcGenerator(outerRadius: number, innerRadius: number): Arc<any, PieArcDatum<MdtChartsDataRow>>;
13
- static getPieGenerator(valueField: string, padAngle: number): Pie<any, MdtChartsDataRow>;
14
- static mergeDataWithZeros(firstDataset: MdtChartsDataRow[], secondDataset: MdtChartsDataRow[], keyField: string): MdtChartsDataRow[];
15
- }
@@ -1,58 +0,0 @@
1
- import { merge } from "d3-array";
2
- import { arc, pie } from "d3-shape";
3
- export class DonutHelper {
4
- static getThickness(donutSettings, blockSize, margin) {
5
- if (Math.min(blockSize.width - margin.left - margin.right, blockSize.height - margin.bottom - margin.top) > 400)
6
- return donutSettings.maxThickness;
7
- return donutSettings.minThickness;
8
- }
9
- static getArcCentroid(blockSize, margin, dataItem, donutThickness) {
10
- const arc = this.getArcGeneratorObject(blockSize, margin, donutThickness);
11
- return arc.centroid(dataItem);
12
- }
13
- static getArcGeneratorObject(blockSize, margin, donutThickness) {
14
- const outerRadius = this.getOuterRadius(margin, blockSize);
15
- const arc = this.getArcGenerator(outerRadius, outerRadius - donutThickness);
16
- return arc;
17
- }
18
- static getOuterRadius(margin, blockSize) {
19
- return Math.min(blockSize.width - margin.left - margin.right, blockSize.height - margin.top - margin.bottom) / 2;
20
- }
21
- static getInnerRadius(outerRadius, thickness) {
22
- return outerRadius - thickness;
23
- }
24
- static getTranslate(margin, blockSize) {
25
- return {
26
- x: (blockSize.width - margin.left - margin.right) / 2 + margin.left,
27
- y: (blockSize.height - margin.top - margin.bottom) / 2 + margin.top
28
- };
29
- }
30
- static getArcGenerator(outerRadius, innerRadius) {
31
- return arc()
32
- .innerRadius(innerRadius)
33
- .outerRadius(outerRadius);
34
- }
35
- static getPieGenerator(valueField, padAngle) {
36
- return pie()
37
- .padAngle(padAngle)
38
- .sort(null)
39
- .value(d => d[valueField]);
40
- }
41
- static mergeDataWithZeros(firstDataset, secondDataset, keyField) {
42
- const secondSet = new Set();
43
- secondDataset.forEach(dataRow => {
44
- secondSet.add(dataRow[keyField]);
45
- });
46
- const onlyNew = firstDataset
47
- .filter(d => !secondSet.has(d[keyField]))
48
- .map((d, index, array) => {
49
- const data = {
50
- keyField: array[index][keyField],
51
- valueField: 0
52
- };
53
- return data;
54
- });
55
- const sortedMerge = merge([secondDataset, onlyNew]);
56
- return sortedMerge;
57
- }
58
- }
@@ -1,32 +0,0 @@
1
- import { PieArcDatum } from 'd3-shape';
2
- import { Selection } from 'd3-selection';
3
- import { BlockMargin, DonutChartSettings, PolarChartModel } from "../../../model/model";
4
- import { Block } from "../../block/block";
5
- import { MdtChartsDataRow, Size } from '../../../config/config';
6
- export interface Translate {
7
- x: number;
8
- y: number;
9
- }
10
- export declare class Donut {
11
- static readonly donutBlockClass = "donut-block";
12
- static readonly arcPathClass = "arc-path";
13
- static readonly arcItemClass = "arc";
14
- static readonly arcHighlightedClass = "arc-highlighted";
15
- static readonly arcClonesGroupClass = "arc-clones";
16
- static readonly arcShadowsGroupClass = "arc-shadow-clones";
17
- static readonly arcCloneClass = "arc-clone";
18
- static readonly arcShadowClass = "arc-shadow-clone";
19
- static render(block: Block, data: MdtChartsDataRow[], margin: BlockMargin, chart: PolarChartModel, blockSize: Size, settings: DonutChartSettings): void;
20
- static update(block: Block, data: MdtChartsDataRow[], margin: BlockMargin, chart: PolarChartModel, blockSize: Size, donutSettings: DonutChartSettings, keyField: string): Promise<any>;
21
- static updateColors(block: Block, chart: PolarChartModel): void;
22
- static getAllArcGroups(block: Block): Selection<SVGGElement, PieArcDatum<MdtChartsDataRow>, SVGGElement, unknown>;
23
- static getAllArcClones(block: Block): Selection<SVGGElement, PieArcDatum<MdtChartsDataRow>, SVGGElement, unknown>;
24
- static getAllArcShadows(block: Block): Selection<SVGGElement, PieArcDatum<MdtChartsDataRow>, SVGGElement, unknown>;
25
- private static renderNewArcItems;
26
- private static setElementsColor;
27
- /**
28
- * Рендер группы для клонов сегментов доната внутри donut-block. Объекдиняет в себе стили для клонов
29
- */
30
- private static renderClonesG;
31
- private static raiseClonesG;
32
- }
@@ -1,124 +0,0 @@
1
- import { interpolate } from 'd3-interpolate';
2
- import { Aggregator } from "../../features/aggregator/aggregator";
3
- import { DonutHelper } from './DonutHelper';
4
- import { DomHelper } from '../../helpers/domHelper';
5
- export class Donut {
6
- static render(block, data, margin, chart, blockSize, settings) {
7
- const outerRadius = DonutHelper.getOuterRadius(margin, blockSize);
8
- const thickness = DonutHelper.getThickness(settings, blockSize, margin);
9
- const innerRadius = DonutHelper.getInnerRadius(outerRadius, thickness);
10
- const arcGenerator = DonutHelper.getArcGenerator(outerRadius, innerRadius);
11
- const pieGenerator = DonutHelper.getPieGenerator(chart.data.valueField.name, settings.padAngle);
12
- const translateAttr = DonutHelper.getTranslate(margin, blockSize);
13
- const donutBlock = block.getSvg()
14
- .append('g')
15
- .attr('class', this.donutBlockClass)
16
- .attr('x', translateAttr.x)
17
- .attr('y', translateAttr.y)
18
- .attr('transform', `translate(${translateAttr.x}, ${translateAttr.y})`);
19
- this.renderNewArcItems(arcGenerator, pieGenerator, donutBlock, data, chart);
20
- this.renderClonesG(donutBlock);
21
- Aggregator.render(block, data, chart.data.valueField, innerRadius, translateAttr, thickness, settings.aggregatorPad);
22
- }
23
- static update(block, data, margin, chart, blockSize, donutSettings, keyField) {
24
- const outerRadius = DonutHelper.getOuterRadius(margin, blockSize);
25
- const thickness = DonutHelper.getThickness(donutSettings, blockSize, margin);
26
- const innerRadius = DonutHelper.getInnerRadius(outerRadius, thickness);
27
- const arcGenerator = DonutHelper.getArcGenerator(outerRadius, innerRadius);
28
- const pieGenerator = DonutHelper.getPieGenerator(chart.data.valueField.name, donutSettings.padAngle);
29
- const oldData = block.getSvg()
30
- .selectAll(`.${this.donutBlockClass}`)
31
- .selectAll('path')
32
- .data()
33
- .map(d => d.data);
34
- const dataNewZeroRows = DonutHelper.mergeDataWithZeros(data, oldData, keyField);
35
- const dataExtraZeroRows = DonutHelper.mergeDataWithZeros(oldData, data, keyField);
36
- const donutBlock = block.getSvg().select(`.${this.donutBlockClass}`);
37
- this.renderNewArcItems(arcGenerator, pieGenerator, donutBlock, dataNewZeroRows, chart);
38
- this.setElementsColor(this.getAllArcGroups(block), chart.style.elementColors);
39
- const path = this.getAllArcGroups(block)
40
- .data(pieGenerator(dataExtraZeroRows))
41
- .select('path');
42
- const items = this.getAllArcGroups(block)
43
- .data(pieGenerator(data));
44
- return new Promise(resolve => {
45
- this.raiseClonesG(block);
46
- path
47
- .interrupt()
48
- .transition()
49
- .duration(block.transitionManager.durations.chartUpdate)
50
- .on('end', () => {
51
- items.exit().remove();
52
- resolve('updated');
53
- })
54
- .attrTween('d', function (d) {
55
- const interpolateFunc = interpolate(this._currentData, d);
56
- return t => {
57
- this._currentData = interpolateFunc(t); // _current - старые данные до обновления, задаются во время рендера
58
- return arcGenerator(this._currentData);
59
- };
60
- });
61
- });
62
- }
63
- static updateColors(block, chart) {
64
- this.setElementsColor(this.getAllArcGroups(block), chart.style.elementColors);
65
- }
66
- static getAllArcGroups(block) {
67
- return block.getSvg()
68
- .selectAll(`.${this.arcItemClass}`);
69
- }
70
- static getAllArcClones(block) {
71
- return block.getSvg()
72
- .selectAll(`.${Donut.arcCloneClass}`);
73
- }
74
- static getAllArcShadows(block) {
75
- return block.getSvg()
76
- .selectAll(`.${this.arcShadowClass}`);
77
- }
78
- static renderNewArcItems(arcGenerator, pieGenerator, donutBlock, data, chart) {
79
- const items = donutBlock
80
- .selectAll(`.${this.arcItemClass}`)
81
- .data(pieGenerator(data))
82
- .enter()
83
- .append('g')
84
- .attr('class', this.arcItemClass);
85
- const arcs = items
86
- .append('path')
87
- .attr('d', arcGenerator)
88
- .attr('class', this.arcPathClass)
89
- .each(function (d) { this._currentData = d; }); // _currentData используется для получения текущих данных внутри функции обновления.
90
- DomHelper.setCssClasses(arcs, chart.cssClasses);
91
- this.setElementsColor(items, chart.style.elementColors);
92
- }
93
- static setElementsColor(arcItems, colorPalette) {
94
- arcItems
95
- .select('path')
96
- .style('fill', (d, i) => colorPalette[i % colorPalette.length]);
97
- }
98
- /**
99
- * Рендер группы для клонов сегментов доната внутри donut-block. Объекдиняет в себе стили для клонов
100
- */
101
- static renderClonesG(donutBlock) {
102
- const clonesShadowsG = donutBlock.append('g').attr('class', this.arcShadowsGroupClass).raise();
103
- const clonesG = donutBlock.append('g').attr('class', this.arcClonesGroupClass).raise();
104
- // ElementHighlighter.setShadowFilter(clonesG);
105
- }
106
- static raiseClonesG(block) {
107
- block.getSvg()
108
- .select(`.${this.donutBlockClass}`)
109
- .select(`.${this.arcShadowsGroupClass}`)
110
- .raise();
111
- block.getSvg()
112
- .select(`.${this.donutBlockClass}`)
113
- .select(`.${this.arcClonesGroupClass}`)
114
- .raise();
115
- }
116
- }
117
- Donut.donutBlockClass = 'donut-block';
118
- Donut.arcPathClass = 'arc-path';
119
- Donut.arcItemClass = 'arc';
120
- Donut.arcHighlightedClass = 'arc-highlighted';
121
- Donut.arcClonesGroupClass = 'arc-clones';
122
- Donut.arcShadowsGroupClass = 'arc-shadow-clones';
123
- Donut.arcCloneClass = 'arc-clone';
124
- Donut.arcShadowClass = 'arc-shadow-clone';
@@ -1,10 +0,0 @@
1
- import { Model } from "../../model/model";
2
- import { Block } from "../block/block";
3
- import Engine from "../engine";
4
- import { MdtChartsDataSource } from "../../config/config";
5
- export declare class PolarManager {
6
- static render(engine: Engine, model: Model): void;
7
- static update(block: Block, model: Model, data: MdtChartsDataSource): void;
8
- static updateColors(block: Block, model: Model): void;
9
- private static renderCharts;
10
- }
@@ -1,55 +0,0 @@
1
- import { Legend } from "../features/legend/legend";
2
- import { RecordOverflowAlert } from "../features/recordOverflowAlert/recordOverflowAlert";
3
- import { Title } from "../features/title/title";
4
- import { ElementHighlighter } from "../elementHighlighter/elementHighlighter";
5
- import { Tooltip } from "../features/tolltip/tooltip";
6
- import { Aggregator } from "../features/aggregator/aggregator";
7
- import { Donut } from "./donut/donut";
8
- export class PolarManager {
9
- static render(engine, model) {
10
- const options = model.options;
11
- engine.block.renderSvg(model.blockCanvas.size);
12
- this.renderCharts(engine.block, options.charts, engine.data, options.data.dataSource, model.chartBlock.margin, model.blockCanvas.size, model.chartSettings.donut);
13
- Title.render(engine.block, options.title, model.otherComponents.titleBlock, model.blockCanvas.size);
14
- Legend.render(engine.block, engine.data, options, model);
15
- ``;
16
- Tooltip.render(engine.block, model, engine.data, model.otherComponents.tooltipBlock);
17
- engine.block.filterEventManager.setListenerPolar(model.chartBlock.margin, model.blockCanvas.size, options, model.chartSettings.donut);
18
- if (model.dataSettings.scope.hidedRecordsAmount !== 0 && model.options.legend.position !== 'off')
19
- RecordOverflowAlert.render(engine.block, model.dataSettings.scope.hidedRecordsAmount, model.options.legend.position);
20
- engine.block.getSvg()
21
- .on('click', (e) => {
22
- if (e.target === engine.block.getSvg().node())
23
- engine.block.filterEventManager.clearKeysForPolar(model.chartBlock.margin, model.blockCanvas.size, options, model.chartSettings.donut);
24
- });
25
- }
26
- static update(block, model, data) {
27
- block.transitionManager.interruptTransitions();
28
- block.removeMouseEvents();
29
- block.filterEventManager.updateData(data[model.options.data.dataSource]);
30
- ElementHighlighter.removeDonutArcClones(block);
31
- ElementHighlighter.removeFilter(Donut.getAllArcGroups(block));
32
- ElementHighlighter.toggleActivityStyle(Donut.getAllArcGroups(block), true);
33
- Tooltip.hide(block);
34
- const options = model.options;
35
- Donut.update(block, data[options.data.dataSource], model.chartBlock.margin, options.charts[0], model.blockCanvas.size, model.chartSettings.donut, options.data.keyField.name)
36
- .then(() => {
37
- Tooltip.render(block, model, data, model.otherComponents.tooltipBlock);
38
- block.filterEventManager.setListenerPolar(model.chartBlock.margin, model.blockCanvas.size, options, model.chartSettings.donut);
39
- });
40
- Aggregator.update(block, data[options.data.dataSource], options.charts[0].data.valueField, model.chartSettings.donut.aggregatorPad);
41
- Legend.update(block, data, model);
42
- if (model.options.legend.position !== 'off')
43
- RecordOverflowAlert.update(block, model.dataSettings.scope.hidedRecordsAmount, model.options.legend.position);
44
- }
45
- static updateColors(block, model) {
46
- Legend.updateColors(block, model.options);
47
- Donut.updateColors(block, model.options.charts[0]);
48
- }
49
- static renderCharts(block, charts, data, dataSource, margin, blockSize, donutSettings) {
50
- charts.forEach((chart) => {
51
- if (chart.type === 'donut')
52
- Donut.render(block, data[dataSource], margin, chart, blockSize, donutSettings);
53
- });
54
- }
55
- }
@@ -1,19 +0,0 @@
1
- import { Transitions } from "../designer/designerConfig";
2
- import { Block } from "./block/block";
3
- interface Durations extends Transitions {
4
- }
5
- export declare class TransitionManager {
6
- /**
7
- * Анимации обновления в ms.
8
- */
9
- durations: Durations;
10
- private block;
11
- /**
12
- * Классы "подвижных" элементов
13
- */
14
- private transitionableElemClasses;
15
- constructor(block: Block, transitionsDurations?: Transitions);
16
- interruptTransitions(): void;
17
- private setDurations;
18
- }
19
- export {};
@@ -1,64 +0,0 @@
1
- import { interrupt } from "d3-transition";
2
- import { Axis } from "./features/axis/axis";
3
- import { EmbeddedLabels } from "./features/embeddedLabels/embeddedLabels";
4
- import { MarkDot } from "./features/markDots/markDot";
5
- import { Tooltip } from "./features/tolltip/tooltip";
6
- import { Aggregator } from "./features/aggregator/aggregator";
7
- import { Donut } from "./polarNotation/donut/donut";
8
- import { Area } from "./twoDimensionalNotation/area/area";
9
- import { Bar } from "./twoDimensionalNotation/bar/bar";
10
- import { Line } from "./twoDimensionalNotation/line/line";
11
- export class TransitionManager {
12
- constructor(block, transitionsDurations = null) {
13
- /**
14
- * Анимации обновления в ms.
15
- */
16
- this.durations = {
17
- chartUpdate: 1000,
18
- tooltipSlide: 75,
19
- higlightedScale: 200,
20
- markerHover: 50,
21
- elementFadeOut: 400
22
- };
23
- /**
24
- * Классы "подвижных" элементов
25
- */
26
- this.transitionableElemClasses = [
27
- Tooltip.tooltipBlockClass,
28
- Tooltip.tooltipLineClass,
29
- Axis.axesClass,
30
- Area.areaChartClass,
31
- Bar.barItemClass,
32
- Line.lineChartClass,
33
- MarkDot.markerDotClass,
34
- EmbeddedLabels.embeddedLabelClass,
35
- Donut.arcPathClass,
36
- Aggregator.aggregatorValueClass
37
- ];
38
- this.block = block;
39
- if (transitionsDurations)
40
- this.setDurations(transitionsDurations);
41
- }
42
- interruptTransitions() {
43
- this.transitionableElemClasses.forEach(elemClass => {
44
- const elementsSelection = this.block
45
- .getSvg()
46
- .selectAll(`.${elemClass}`)
47
- .interrupt();
48
- elementsSelection.nodes().forEach(node => interrupt(node));
49
- });
50
- this.block.getSvg().selectAll(`.${Axis.axesClass}`).selectAll('*').interrupt();
51
- }
52
- setDurations(durations) {
53
- if (durations.chartUpdate !== undefined && durations.chartUpdate >= 0)
54
- this.durations.chartUpdate = durations.chartUpdate;
55
- if (durations.higlightedScale !== undefined && durations.higlightedScale >= 0)
56
- this.durations.higlightedScale = durations.higlightedScale;
57
- if (durations.elementFadeOut !== undefined && durations.elementFadeOut >= 0)
58
- this.durations.elementFadeOut = durations.elementFadeOut;
59
- if (durations.markerHover !== undefined && durations.markerHover >= 0)
60
- this.durations.markerHover = durations.markerHover;
61
- if (durations.tooltipSlide !== undefined && durations.tooltipSlide >= 0)
62
- this.durations.tooltipSlide = durations.tooltipSlide;
63
- }
64
- }
@@ -1,17 +0,0 @@
1
- import { BlockMargin, Field, Orient, TwoDimensionalChartModel } from "../../../model/model";
2
- import { Scales } from "../../features/scale/scale";
3
- import { Block } from "../../block/block";
4
- import { MdtChartsDataRow, Size } from '../../../config/config';
5
- export declare class Area {
6
- static readonly areaChartClass = "area";
7
- static render(block: Block, scales: Scales, data: MdtChartsDataRow[], keyField: Field, margin: BlockMargin, keyAxisOrient: Orient, chart: TwoDimensionalChartModel, blockSize: Size): void;
8
- static update(block: Block, scales: Scales, newData: MdtChartsDataRow[], keyField: Field, margin: BlockMargin, chart: TwoDimensionalChartModel, keyAxisOrient: Orient, blockSize: Size): Promise<any>[];
9
- static updateColors(block: Block, chart: TwoDimensionalChartModel): void;
10
- private static renderGrouped;
11
- private static renderSegmented;
12
- private static updateGrouped;
13
- private static updateSegmented;
14
- private static updateGroupedPath;
15
- private static updateSegmentedPath;
16
- private static setSegmentColor;
17
- }