SUPPORT-8732: refactoring for review
This commit is contained in:
parent
c36e0b04aa
commit
5dbbd66f37
1 changed files with 70 additions and 57 deletions
|
|
@ -219,14 +219,19 @@ export class ErvuChartV2 extends Control implements Filterable {
|
|||
chartOptions.plugins.title = this.title;
|
||||
}
|
||||
|
||||
if (this.addDataSetsVisibilityToggleDataset && chartConfig.data.datasets &&
|
||||
chartConfig.data.datasets.length > 0) {
|
||||
let datasetLength = chartConfig.data.datasets.length;
|
||||
chartConfig.data.datasets.push({
|
||||
label: this.hideAllDatasetsLabel,
|
||||
xAxisID: {display: false},
|
||||
yAxisID: {display: false}
|
||||
});
|
||||
let datasets;
|
||||
let datasetsLength: number = 0;
|
||||
if (chartConfig.data && chartConfig.data.datasets && chartConfig.data.datasets.length > 0) {
|
||||
datasets = chartConfig.data.datasets;
|
||||
datasetsLength = datasets.length;
|
||||
}
|
||||
|
||||
if (this.addDataSetsVisibilityToggleDataset && datasetsLength > 0) {
|
||||
datasets.push({
|
||||
label: this.hideAllDatasetsLabel,
|
||||
xAxisID: {display: false},
|
||||
yAxisID: {display: false}
|
||||
});
|
||||
|
||||
chartOptions.plugins.legend.onClick = (e, legendItem, legend) => {
|
||||
const index = legendItem.datasetIndex;
|
||||
|
|
@ -234,12 +239,12 @@ export class ErvuChartV2 extends Control implements Filterable {
|
|||
|
||||
let datasetMeta = chartObj.getDatasetMeta(index);
|
||||
|
||||
if (datasetLength == index) {
|
||||
if (datasetsLength == index) {
|
||||
let showAll = datasetMeta.label == this.showAllDatasetsLabel;
|
||||
chartObj.data.datasets[index].label =
|
||||
showAll ? this.hideAllDatasetsLabel : this.showAllDatasetsLabel;
|
||||
|
||||
for (let i = 0; i < datasetLength; i++) {
|
||||
for (let i = 0; i < datasetsLength; i++) {
|
||||
chartObj.setDatasetVisibility(i, showAll);
|
||||
}
|
||||
chartObj.update();
|
||||
|
|
@ -257,8 +262,8 @@ export class ErvuChartV2 extends Control implements Filterable {
|
|||
};
|
||||
}
|
||||
|
||||
if (chartConfig.data.datasets) { // remove it after change type of ChartDataSetDto.backgroundColor
|
||||
chartConfig.data.datasets.forEach(dataset => {
|
||||
if (datasetsLength > 0) { // remove it after change type of ChartDataSetDto.backgroundColor
|
||||
datasets.forEach(dataset => {
|
||||
if (dataset.backgroundColors) dataset.backgroundColor = dataset.backgroundColors;
|
||||
});
|
||||
}
|
||||
|
|
@ -281,54 +286,16 @@ export class ErvuChartV2 extends Control implements Filterable {
|
|||
chartOptions.scales.y = this.bars.y;
|
||||
|
||||
// shadow bar treatment must be before border radius treatment
|
||||
if (this.bars.shadowBar && chartConfig.data.datasets &&
|
||||
chartConfig.data.datasets.length > 0) {
|
||||
const shadowBarStack: string = this.bars.shadowBar;
|
||||
let datasets = chartConfig.data.datasets;
|
||||
const shadowBarIndex = datasets.findIndex(element => element.stack === shadowBarStack);
|
||||
|
||||
if (shadowBarIndex > -1) {
|
||||
const shadowBar = datasets[shadowBarIndex];
|
||||
|
||||
const stacks: string[] = [];
|
||||
datasets.forEach((element, index) => {
|
||||
let stack: string = element.stack;
|
||||
if (stack) {
|
||||
if (stack !== shadowBarStack && stacks.includes(stack)) {
|
||||
stacks.push(stack);
|
||||
}
|
||||
}
|
||||
else {
|
||||
stack = shadowBarStack + index;
|
||||
element.stack = stack;
|
||||
stacks.push(stack);
|
||||
}
|
||||
});
|
||||
|
||||
datasets.splice(shadowBarIndex, 1);
|
||||
|
||||
stacks.forEach(value => {
|
||||
const cloneShadowBar = {...shadowBar};
|
||||
cloneShadowBar.stack = value;
|
||||
datasets.push(cloneShadowBar);
|
||||
});
|
||||
}
|
||||
if (this.bars.shadowBar && datasetsLength > 0) {
|
||||
this.initShadowBar(datasets);
|
||||
}
|
||||
}
|
||||
|
||||
if (this.datasetsCommon && chartConfig.data.datasets &&
|
||||
chartConfig.data.datasets.length > 0) {
|
||||
// border radius treatment
|
||||
if (this.datasetsCommon.borderRadiusNumber
|
||||
|| (this.datasetsCommon.borderRadius &&
|
||||
(this.datasetsCommon.borderRadius.topLeft ||
|
||||
this.datasetsCommon.borderRadius.topRight ||
|
||||
this.datasetsCommon.borderRadius.bottomLeft ||
|
||||
this.datasetsCommon.borderRadius.bottomRight))) {
|
||||
|
||||
const borderRadiusNumber: number = this.datasetsCommon.borderRadiusNumber;
|
||||
chartConfig.data.datasets.forEach(dataset => dataset.borderRadius =
|
||||
borderRadiusNumber ? borderRadiusNumber : this.datasetsCommon.borderRadius);
|
||||
if (this.datasetsCommon) {
|
||||
if ((this.datasetsCommon.borderRadiusNumber || this.datasetsCommon.borderRadius)
|
||||
&& datasetsLength > 0) {
|
||||
// border radius treatment
|
||||
this.initBorderRadius(datasets);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -346,6 +313,52 @@ export class ErvuChartV2 extends Control implements Filterable {
|
|||
this.chartConfig = chartConfig;
|
||||
}
|
||||
|
||||
private initBorderRadius(datasets) {
|
||||
if (this.datasetsCommon.borderRadiusNumber
|
||||
|| (this.datasetsCommon.borderRadius &&
|
||||
(this.datasetsCommon.borderRadius.topLeft ||
|
||||
this.datasetsCommon.borderRadius.topRight ||
|
||||
this.datasetsCommon.borderRadius.bottomLeft ||
|
||||
this.datasetsCommon.borderRadius.bottomRight))) {
|
||||
|
||||
const borderRadiusNumber: number = this.datasetsCommon.borderRadiusNumber;
|
||||
datasets.forEach(dataset => dataset.borderRadius =
|
||||
borderRadiusNumber ? borderRadiusNumber : this.datasetsCommon.borderRadius);
|
||||
}
|
||||
}
|
||||
|
||||
private initShadowBar(datasets) {
|
||||
const shadowBarStack: string = this.bars.shadowBar;
|
||||
const shadowBarIndex = datasets.findIndex(element => element.stack === shadowBarStack);
|
||||
|
||||
if (shadowBarIndex > -1) {
|
||||
const shadowBar = datasets[shadowBarIndex];
|
||||
|
||||
const stacks: string[] = [];
|
||||
datasets.forEach((element, index) => {
|
||||
let stack: string = element.stack;
|
||||
if (stack) {
|
||||
if (stack !== shadowBarStack && stacks.includes(stack)) {
|
||||
stacks.push(stack);
|
||||
}
|
||||
}
|
||||
else {
|
||||
stack = shadowBarStack + index;
|
||||
element.stack = stack;
|
||||
stacks.push(stack);
|
||||
}
|
||||
});
|
||||
|
||||
datasets.splice(shadowBarIndex, 1);
|
||||
|
||||
stacks.forEach(value => {
|
||||
const cloneShadowBar = {...shadowBar};
|
||||
cloneShadowBar.stack = value;
|
||||
datasets.push(cloneShadowBar);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
private repaint(chartData) {
|
||||
if (this.chart) {
|
||||
this.chart.destroy();
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue