StackGenVis: Alignment of Data, Algorithms, and Models for Stacking Ensemble Learning Using Performance Metrics
https://doi.org/10.1109/TVCG.2020.3030352
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
94 lines
2.4 KiB
94 lines
2.4 KiB
4 years ago
|
function dataHandler(newData, oldData) {
|
||
|
if (oldData) {
|
||
|
var chart = this.$data._chart;
|
||
|
var newDatasetLabels = newData.datasets.map(function (dataset) {
|
||
|
return dataset.label;
|
||
|
});
|
||
|
var oldDatasetLabels = oldData.datasets.map(function (dataset) {
|
||
|
return dataset.label;
|
||
|
});
|
||
|
var oldLabels = JSON.stringify(oldDatasetLabels);
|
||
|
var newLabels = JSON.stringify(newDatasetLabels);
|
||
|
|
||
|
if (newLabels === oldLabels && oldData.datasets.length === newData.datasets.length) {
|
||
|
newData.datasets.forEach(function (dataset, i) {
|
||
|
var oldDatasetKeys = Object.keys(oldData.datasets[i]);
|
||
|
var newDatasetKeys = Object.keys(dataset);
|
||
|
var deletionKeys = oldDatasetKeys.filter(function (key) {
|
||
|
return key !== '_meta' && newDatasetKeys.indexOf(key) === -1;
|
||
|
});
|
||
|
deletionKeys.forEach(function (deletionKey) {
|
||
|
delete chart.data.datasets[i][deletionKey];
|
||
|
});
|
||
|
|
||
|
for (var attribute in dataset) {
|
||
|
if (dataset.hasOwnProperty(attribute)) {
|
||
|
chart.data.datasets[i][attribute] = dataset[attribute];
|
||
|
}
|
||
|
}
|
||
|
});
|
||
|
|
||
|
if (newData.hasOwnProperty('labels')) {
|
||
|
chart.data.labels = newData.labels;
|
||
|
this.$emit('labels:update');
|
||
|
}
|
||
|
|
||
|
if (newData.hasOwnProperty('xLabels')) {
|
||
|
chart.data.xLabels = newData.xLabels;
|
||
|
this.$emit('xlabels:update');
|
||
|
}
|
||
|
|
||
|
if (newData.hasOwnProperty('yLabels')) {
|
||
|
chart.data.yLabels = newData.yLabels;
|
||
|
this.$emit('ylabels:update');
|
||
|
}
|
||
|
|
||
|
chart.update();
|
||
|
this.$emit('chart:update');
|
||
|
} else {
|
||
|
if (chart) {
|
||
|
chart.destroy();
|
||
|
this.$emit('chart:destroy');
|
||
|
}
|
||
|
|
||
|
this.renderChart(this.chartData, this.options);
|
||
|
this.$emit('chart:render');
|
||
|
}
|
||
|
} else {
|
||
|
if (this.$data._chart) {
|
||
|
this.$data._chart.destroy();
|
||
|
|
||
|
this.$emit('chart:destroy');
|
||
|
}
|
||
|
|
||
|
this.renderChart(this.chartData, this.options);
|
||
|
this.$emit('chart:render');
|
||
|
}
|
||
|
}
|
||
|
|
||
|
export var reactiveData = {
|
||
|
data: function data() {
|
||
|
return {
|
||
|
chartData: null
|
||
|
};
|
||
|
},
|
||
|
watch: {
|
||
|
'chartData': dataHandler
|
||
|
}
|
||
|
};
|
||
|
export var reactiveProp = {
|
||
|
props: {
|
||
|
chartData: {
|
||
|
type: Object,
|
||
|
required: true,
|
||
|
default: function _default() {}
|
||
|
}
|
||
|
},
|
||
|
watch: {
|
||
|
'chartData': dataHandler
|
||
|
}
|
||
|
};
|
||
|
export default {
|
||
|
reactiveData: reactiveData,
|
||
|
reactiveProp: reactiveProp
|
||
|
};
|