似乎chartjs-plugin-dragdata plugin仅适用于折线图。但在我的情况下,我需要一个带有一个Datapoint的散点图,我希望它可以拖动。但是在拖放数据点之后它就会消失,而且调用函数onDragStart等也不会被调用。 那么有一种简单的方法来修改插件吗?或者也许还有另一个插件正在做我想做的事情?
答案 0 :(得分:1)
我解决了我的问题。只需添加2或3行。以下是我修改的两种方法:
function getElement(chartInstance, callback) {
return function () {
if (_d3Selection.event) {
var e = _d3Selection.event.sourceEvent;
element = chartInstance.getElementAtEvent(e)[0];
if (element) {
scale = element['_yScale'].id;
scaleX = element['_xScale'].id;
if (typeof callback === 'function' && element) callback(e, element);
}
}
};
}
function updateData(chartInstance, callback) {
return function () {
if (element && _d3Selection.event) {
var e = _d3Selection.event.sourceEvent;
var datasetIndex = element['_datasetIndex'];
var index = element['_index'];
var value = chartInstance.scales[scale].getValueForPixel(e.clientY - chartInstance.canvas.getBoundingClientRect().top);
var valueX = chartInstance.scales[scaleX].getValueForPixel(e.clientX-chartInstance.canvas.getBoundingClientRect().left );
chartInstance.data.datasets[datasetIndex].data[index] = {x:valueX, y:value};
chartInstance.update(0);
if (typeof callback === 'function') callback(e, datasetIndex, index, value);
}
};
}