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.
- package/README.md +190 -190
- package/dist/index.html +363 -48
- package/dist/listeners.89e1e272264c0e680de8.js +278 -0
- package/dist/main.f8b6bc6fee33cef1116c.js +228 -0
- package/dist/src_engine_engine_ts.ccee2a280374e0083541.js +759 -0
- 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
- package/package.json +57 -57
- package/dist/bundle.js +0 -2
- package/dist/bundle.js.LICENSE.txt +0 -56
- package/lib/config/config.d.ts +0 -146
- package/lib/config/config.js +0 -1
- package/lib/designer/designerConfig.d.ts +0 -71
- package/lib/designer/designerConfig.js +0 -1
- package/lib/engine/block/block.d.ts +0 -35
- package/lib/engine/block/block.js +0 -110
- package/lib/engine/block/blockHelper.d.ts +0 -12
- package/lib/engine/block/blockHelper.js +0 -19
- package/lib/engine/contentManager.d.ts +0 -9
- package/lib/engine/contentManager.js +0 -29
- package/lib/engine/elementHighlighter/elementHighlighter.d.ts +0 -30
- package/lib/engine/elementHighlighter/elementHighlighter.js +0 -197
- package/lib/engine/elementHighlighter/selectHighlighter.d.ts +0 -11
- package/lib/engine/elementHighlighter/selectHighlighter.js +0 -95
- package/lib/engine/engine.d.ts +0 -20
- package/lib/engine/engine.js +0 -64
- package/lib/engine/features/aggregator/aggregator.d.ts +0 -22
- package/lib/engine/features/aggregator/aggregator.js +0 -95
- package/lib/engine/features/axis/axis.d.ts +0 -12
- package/lib/engine/features/axis/axis.js +0 -118
- package/lib/engine/features/axis/axisDomHelper.d.ts +0 -7
- package/lib/engine/features/axis/axisDomHelper.js +0 -24
- package/lib/engine/features/axis/axisHelper.d.ts +0 -9
- package/lib/engine/features/axis/axisHelper.js +0 -53
- package/lib/engine/features/axis/axisLabelDomHelper.d.ts +0 -17
- package/lib/engine/features/axis/axisLabelDomHelper.js +0 -143
- package/lib/engine/features/axis/axisLabelsEventManager.d.ts +0 -6
- package/lib/engine/features/axis/axisLabelsEventManager.js +0 -36
- package/lib/engine/features/embeddedLabels/embeddedLabels.d.ts +0 -23
- package/lib/engine/features/embeddedLabels/embeddedLabels.js +0 -147
- package/lib/engine/features/embeddedLabels/embeddedLabelsDomHelper.d.ts +0 -8
- package/lib/engine/features/embeddedLabels/embeddedLabelsDomHelper.js +0 -30
- package/lib/engine/features/embeddedLabels/embeddedLabelsHelper.d.ts +0 -27
- package/lib/engine/features/embeddedLabels/embeddedLabelsHelper.js +0 -65
- package/lib/engine/features/gridLine/gidLineHelper.d.ts +0 -13
- package/lib/engine/features/gridLine/gidLineHelper.js +0 -30
- package/lib/engine/features/gridLine/gridLine.d.ts +0 -11
- package/lib/engine/features/gridLine/gridLine.js +0 -67
- package/lib/engine/features/legend/legend.d.ts +0 -22
- package/lib/engine/features/legend/legend.js +0 -109
- package/lib/engine/features/legend/legendDomHelper.d.ts +0 -8
- package/lib/engine/features/legend/legendDomHelper.js +0 -48
- package/lib/engine/features/legend/legendEventsManager.d.ts +0 -12
- package/lib/engine/features/legend/legendEventsManager.js +0 -47
- package/lib/engine/features/legend/legendHelper.d.ts +0 -21
- package/lib/engine/features/legend/legendHelper.js +0 -97
- package/lib/engine/features/markDots/markDot.d.ts +0 -20
- package/lib/engine/features/markDots/markDot.js +0 -68
- package/lib/engine/features/markDots/markDotsHelper.d.ts +0 -6
- package/lib/engine/features/markDots/markDotsHelper.js +0 -16
- package/lib/engine/features/recordOverflowAlert/recordOverflowAlert.d.ts +0 -14
- package/lib/engine/features/recordOverflowAlert/recordOverflowAlert.js +0 -97
- package/lib/engine/features/scale/scale.d.ts +0 -16
- package/lib/engine/features/scale/scale.js +0 -74
- package/lib/engine/features/tipBox/tipBox.d.ts +0 -11
- package/lib/engine/features/tipBox/tipBox.js +0 -32
- package/lib/engine/features/tipBox/tipBoxHelper.d.ts +0 -16
- package/lib/engine/features/tipBox/tipBoxHelper.js +0 -48
- package/lib/engine/features/title/title.d.ts +0 -9
- package/lib/engine/features/title/title.js +0 -35
- package/lib/engine/features/tolltip/tooltip.d.ts +0 -19
- package/lib/engine/features/tolltip/tooltip.js +0 -180
- package/lib/engine/features/tolltip/tooltipComponentsManager.d.ts +0 -17
- package/lib/engine/features/tolltip/tooltipComponentsManager.js +0 -127
- package/lib/engine/features/tolltip/tooltipDomHelper.d.ts +0 -36
- package/lib/engine/features/tolltip/tooltipDomHelper.js +0 -114
- package/lib/engine/features/tolltip/tooltipHelper.d.ts +0 -16
- package/lib/engine/features/tolltip/tooltipHelper.js +0 -99
- package/lib/engine/filterManager/filterEventManager.d.ts +0 -33
- package/lib/engine/filterManager/filterEventManager.js +0 -127
- package/lib/engine/helpers/domHelper.d.ts +0 -30
- package/lib/engine/helpers/domHelper.js +0 -68
- package/lib/engine/helpers/helper.d.ts +0 -30
- package/lib/engine/helpers/helper.js +0 -89
- package/lib/engine/helpers/namesHelper.d.ts +0 -5
- package/lib/engine/helpers/namesHelper.js +0 -9
- package/lib/engine/intervalNotation/gantt.d.ts +0 -10
- package/lib/engine/intervalNotation/gantt.js +0 -62
- package/lib/engine/intervalNotation/intervalManager.d.ts +0 -7
- package/lib/engine/intervalNotation/intervalManager.js +0 -30
- package/lib/engine/polarNotation/donut/DonutHelper.d.ts +0 -15
- package/lib/engine/polarNotation/donut/DonutHelper.js +0 -58
- package/lib/engine/polarNotation/donut/donut.d.ts +0 -32
- package/lib/engine/polarNotation/donut/donut.js +0 -124
- package/lib/engine/polarNotation/polarManager.d.ts +0 -10
- package/lib/engine/polarNotation/polarManager.js +0 -55
- package/lib/engine/transitionManager.d.ts +0 -19
- package/lib/engine/transitionManager.js +0 -64
- package/lib/engine/twoDimensionalNotation/area/area.d.ts +0 -17
- package/lib/engine/twoDimensionalNotation/area/area.js +0 -131
- package/lib/engine/twoDimensionalNotation/area/areaHelper.d.ts +0 -9
- package/lib/engine/twoDimensionalNotation/area/areaHelper.js +0 -40
- package/lib/engine/twoDimensionalNotation/bar/bar.d.ts +0 -34
- package/lib/engine/twoDimensionalNotation/bar/bar.js +0 -216
- package/lib/engine/twoDimensionalNotation/bar/barHelper.d.ts +0 -24
- package/lib/engine/twoDimensionalNotation/bar/barHelper.js +0 -103
- package/lib/engine/twoDimensionalNotation/line/line.d.ts +0 -17
- package/lib/engine/twoDimensionalNotation/line/line.js +0 -132
- package/lib/engine/twoDimensionalNotation/line/lineHelper.d.ts +0 -8
- package/lib/engine/twoDimensionalNotation/line/lineHelper.js +0 -28
- package/lib/engine/twoDimensionalNotation/twoDimensionalManager.d.ts +0 -11
- package/lib/engine/twoDimensionalNotation/twoDimensionalManager.js +0 -101
- package/lib/engine/valueFormatter.d.ts +0 -6
- package/lib/engine/valueFormatter.js +0 -8
- package/lib/main.d.ts +0 -79
- package/lib/main.js +0 -85
- package/lib/model/chartStyleModel.d.ts +0 -16
- package/lib/model/chartStyleModel.js +0 -67
- package/lib/model/dataManagerModel.d.ts +0 -22
- package/lib/model/dataManagerModel.js +0 -137
- package/lib/model/featuresModel/axisModel.d.ts +0 -18
- package/lib/model/featuresModel/axisModel.js +0 -111
- package/lib/model/featuresModel/legendModel/legendCanvasModel.d.ts +0 -7
- package/lib/model/featuresModel/legendModel/legendCanvasModel.js +0 -86
- package/lib/model/featuresModel/legendModel/legendModel.d.ts +0 -13
- package/lib/model/featuresModel/legendModel/legendModel.js +0 -78
- package/lib/model/featuresModel/otherComponents.d.ts +0 -6
- package/lib/model/featuresModel/otherComponents.js +0 -12
- package/lib/model/featuresModel/scaleModel.d.ts +0 -17
- package/lib/model/featuresModel/scaleModel.js +0 -100
- package/lib/model/featuresModel/titleModel.d.ts +0 -4
- package/lib/model/featuresModel/titleModel.js +0 -14
- package/lib/model/featuresModel/tooltipModel.d.ts +0 -4
- package/lib/model/featuresModel/tooltipModel.js +0 -7
- package/lib/model/marginModel.d.ts +0 -19
- package/lib/model/marginModel.js +0 -126
- package/lib/model/model.d.ts +0 -220
- package/lib/model/model.js +0 -1
- package/lib/model/modelBuilder.d.ts +0 -16
- package/lib/model/modelBuilder.js +0 -128
- package/lib/model/modelHelper.d.ts +0 -7
- package/lib/model/modelHelper.js +0 -41
- package/lib/model/notations/intervalModel.d.ts +0 -8
- package/lib/model/notations/intervalModel.js +0 -93
- package/lib/model/notations/polarModel.d.ts +0 -7
- package/lib/model/notations/polarModel.js +0 -27
- package/lib/model/notations/twoDimensionalModel.d.ts +0 -19
- package/lib/model/notations/twoDimensionalModel.js +0 -85
- package/lib/style/charts-main.css +0 -240
- package/lib/style/charts-main.less +0 -240
- 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,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
|
-
}
|