Drop

config setup actions
const config = {type: 'line',data: data,options: {animations: {y: {easing: 'easeInOutElastic',from: (ctx) => {if (ctx.type === 'data') {if (ctx.mode === 'default' && !ctx.dropped) {ctx.dropped = true;return 0;}}}}},},};
const DATA_COUNT = 7;const NUMBER_CFG = {count: DATA_COUNT, min: -100, max: 100};const labels = Utils.months({count: 7});const data = {labels: labels,datasets: [{label: 'Dataset 1',animations: {y: {duration: 2000,delay: 500}},data: Utils.numbers(NUMBER_CFG),borderColor: Utils.CHART_COLORS.red,backgroundColor: Utils.transparentize(Utils.CHART_COLORS.red, 0.5),fill: 1,tension: 0.5},{label: 'Dataset 2',data: Utils.numbers(NUMBER_CFG),borderColor: Utils.CHART_COLORS.blue,backgroundColor: Utils.transparentize(Utils.CHART_COLORS.blue, 0.5),}]};
const actions = [{name: 'Randomize',handler(chart) {chart.data.datasets.forEach(dataset => {dataset.data = Utils.numbers({count: chart.data.labels.length, min: -100, max: 100});});chart.update();}},{name: 'Add Dataset',handler(chart) {const data = chart.data;const dsColor = Utils.namedColor(chart.data.datasets.length);const newDataset = {label: 'Dataset ' + (data.datasets.length + 1),backgroundColor: Utils.transparentize(dsColor, 0.5),borderColor: dsColor,data: Utils.numbers({count: data.labels.length, min: -100, max: 100}),};chart.data.datasets.push(newDataset);chart.update();}},{name: 'Add Data',handler(chart) {const data = chart.data;if (data.datasets.length > 0) {data.labels = Utils.months({count: data.labels.length + 1});for (var index = 0; index < data.datasets.length; ++index) {data.datasets[index].data.push(Utils.rand(-100, 100));}chart.update();}}},{name: 'Remove Dataset',handler(chart) {chart.data.datasets.pop();chart.update();}},{name: 'Remove Data',handler(chart) {chart.data.labels.splice(-1, 1); // remove the label firstchart.data.datasets.forEach(dataset => {dataset.data.pop();});chart.update();}}];