Add animation to line chart (#1328)
This commit is contained in:
parent
3fc2228f1d
commit
44dfd2bd48
@ -48,6 +48,7 @@ export class LineChartComponent implements AfterViewInit, OnChanges, OnDestroy {
|
||||
@Input() benchmarkLabel = '';
|
||||
@Input() currency: string;
|
||||
@Input() historicalDataItems: LineChartItem[];
|
||||
@Input() isAnimated = true;
|
||||
@Input() locale: string;
|
||||
@Input() showGradient = false;
|
||||
@Input() showLegend = false;
|
||||
@ -163,18 +164,51 @@ export class LineChartComponent implements AfterViewInit, OnChanges, OnDestroy {
|
||||
]
|
||||
};
|
||||
|
||||
const animationDuration = 1000;
|
||||
|
||||
const delayBetweenPoints = animationDuration / labels.length;
|
||||
const animation = {
|
||||
x: {
|
||||
type: 'number',
|
||||
easing: 'linear',
|
||||
duration: delayBetweenPoints,
|
||||
from: NaN,
|
||||
delay(ctx) {
|
||||
if (ctx.type !== 'data' || ctx.xStarted) {
|
||||
return 0;
|
||||
}
|
||||
ctx.xStarted = true;
|
||||
return ctx.index * delayBetweenPoints;
|
||||
}
|
||||
},
|
||||
y: {
|
||||
type: 'number',
|
||||
easing: 'linear',
|
||||
duration: delayBetweenPoints,
|
||||
from: 0,
|
||||
delay(ctx) {
|
||||
if (ctx.type !== 'data' || ctx.yStarted) {
|
||||
return 0;
|
||||
}
|
||||
ctx.yStarted = true;
|
||||
return ctx.index * delayBetweenPoints;
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
if (this.chartCanvas) {
|
||||
if (this.chart) {
|
||||
this.chart.data = data;
|
||||
this.chart.options.plugins.tooltip = <unknown>(
|
||||
this.getTooltipPluginConfiguration()
|
||||
);
|
||||
this.chart.options.animation = this.isAnimated && <unknown>animation;
|
||||
this.chart.update();
|
||||
} else {
|
||||
this.chart = new Chart(this.chartCanvas.nativeElement, {
|
||||
data,
|
||||
options: {
|
||||
animation: false,
|
||||
animation: this.isAnimated && <unknown>animation,
|
||||
aspectRatio: 16 / 9,
|
||||
elements: {
|
||||
point: {
|
||||
|
Loading…
x
Reference in New Issue
Block a user