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.
 
 
 
 
StackGenVis/frontend/node_modules/vue-chartjs/es/mixins/index.js

94 lines
2.4 KiB

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
};