mirror of
https://github.com/chartjs/Chart.js.git
synced 2024-10-08 21:29:07 +02:00
66ee0fecaf
* Generate API docs with vuepress-plugin-typedoc * Links, fixes, cleanup * Convert bar samples to Vuepress * Some line chart samples moved over * Fix lint issues * Derived axis type sample * LineAreaStacked chart created in vuepress * added radar area axample * Line dataset added sample * final area example added * Add derived-chart-type * Bar scriptable sample * Scriptable samples * Clean lint errors * added linear axis samples to vuepress * change tab to spaces to fix lint error * Convert the rest of the scale samples * Scale option samples * Fix typo * Fixes * Legend samples * Title samples * Change the title of the tip block to Note (#8758) * Convert bar samples to Vuepress * Some line chart samples moved over * Fix lint issues * Derived axis type sample * LineAreaStacked chart created in vuepress * added radar area axample * Line dataset added sample * final area example added * Add derived-chart-type * Bar scriptable sample * Scriptable samples * Clean lint errors * added linear axis samples to vuepress * change tab to spaces to fix lint error * Convert the rest of the scale samples * Scale option samples * Fix typo * Fixes * Legend samples * Advanced samples * Remove extra section * Animation samples * Hide legend from progressive line * Add a comment on what `from` does * Tooltip samples * Ädd other charts to vuepress samples * enable plugin again since all samples have been converted * fix skip radar example, middle skip was not calculated correctly * lint error * Progressive-line: add 2nd line * Fix lint errors Co-authored-by: Jukka Kurkela <jukka.kurkela@gmail.com> Co-authored-by: Jacco van den Berg <jaccoberg2281@gmail.com> Co-authored-by: Jacco van den Berg <39033624+LeeLenaleee@users.noreply.github.com>
91 lines
1.7 KiB
Markdown
91 lines
1.7 KiB
Markdown
# Progressive Line
|
|
|
|
```js chart-editor
|
|
|
|
// <block:data:2>
|
|
const data = [];
|
|
const data2 = [];
|
|
let prev = 100;
|
|
let prev2 = 80;
|
|
for (let i = 0; i < 1000; i++) {
|
|
prev += 5 - Math.random() * 10;
|
|
data.push({x: i, y: prev});
|
|
prev2 += 5 - Math.random() * 10;
|
|
data2.push({x: i, y: prev2});
|
|
}
|
|
// </block:data>
|
|
|
|
// <block:animation:1>
|
|
const totalDuration = 10000;
|
|
const delayBetweenPoints = totalDuration / data.length;
|
|
const previousY = (ctx) => ctx.index === 0 ? ctx.chart.scales.y.getPixelForValue(100) : ctx.chart.getDatasetMeta(ctx.datasetIndex).data[ctx.index - 1].getProps(['y'], true).y;
|
|
const animation = {
|
|
x: {
|
|
type: 'number',
|
|
easing: 'linear',
|
|
duration: delayBetweenPoints,
|
|
from: NaN, // the point is initially skipped
|
|
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: previousY,
|
|
delay(ctx) {
|
|
if (ctx.type !== 'data' || ctx.yStarted) {
|
|
return 0;
|
|
}
|
|
ctx.yStarted = true;
|
|
return ctx.index * delayBetweenPoints;
|
|
}
|
|
}
|
|
};
|
|
// </block:animation>
|
|
|
|
// <block:config:0>
|
|
const config = {
|
|
type: 'line',
|
|
data: {
|
|
datasets: [{
|
|
borderColor: Utils.CHART_COLORS.red,
|
|
borderWidth: 1,
|
|
radius: 0,
|
|
data: data,
|
|
},
|
|
{
|
|
borderColor: Utils.CHART_COLORS.blue,
|
|
borderWidth: 1,
|
|
radius: 0,
|
|
data: data2,
|
|
}]
|
|
},
|
|
options: {
|
|
animation,
|
|
interaction: {
|
|
intersect: false
|
|
},
|
|
plugins: {
|
|
legend: false
|
|
},
|
|
scales: {
|
|
x: {
|
|
type: 'linear'
|
|
}
|
|
}
|
|
}
|
|
};
|
|
// </block:config>
|
|
|
|
module.exports = {
|
|
config
|
|
};
|
|
|
|
```
|