drop stacked100 lib

This commit is contained in:
Alexander Meindl 2019-12-14 18:29:38 +01:00
parent d42467f5bd
commit fdd78c0314
4 changed files with 1 additions and 159 deletions

View File

@ -8,6 +8,7 @@ Changelog
- FontAwesome 5.12 support
- Mermaid 8.4.3 support
- Drop nvd3 library
- Drop Chartjs stacked100 library
2.0.22
++++++

View File

@ -1,153 +0,0 @@
(function(Chart) {
var isObject = function(obj) {
var type = typeof obj;
return type === 'object' && !!obj;
}
var dataValue = function(dataPoint, isHorizontal) {
if (isObject(dataPoint)) {
return isHorizontal ? dataPoint.x : dataPoint.y;
}
return dataPoint;
}
var cloneArray = function(srcAry) {
var dstAry = [];
var length = srcAry.length;
for (var i = 0; i < length; i++) {
dstAry.push(srcAry[i]);
}
return dstAry;
};
var setOriginalData = function(data) {
data.originalData = data.datasets.map(function(dataset) {
return cloneArray(dataset.data);
});
};
// set calculated rate (xx%) to data.calculatedData
var calculateRate = function(data, isHorizontal, precision) {
var visibles = data.datasets.map(function(dataset) {
if (!dataset._meta) return true;
for (var i in dataset._meta) {
return !dataset._meta[i].hidden;
}
});
var datasetDataLength = 0;
if (data && data.datasets && data.datasets[0] && data.datasets[0].data) {
datasetDataLength = data.datasets[0].data.length;
}
var totals = Array.apply(null, new Array(datasetDataLength)).map(function(el, i) {
return data.datasets.reduce(function(sum, dataset, j) {
var key = dataset.stack;
if (!sum[key]) sum[key] = 0;
sum[key] += Math.abs(dataValue(dataset.data[i], isHorizontal)) * visibles[j];
return sum;
}, {});
});
data.calculatedData = data.datasets.map(function(dataset, i) {
return dataset.data.map(function(val, i) {
var total = totals[i][dataset.stack];
var dv = dataValue(val, isHorizontal);
return dv && total ? round(dv / total, precision) : 0;
});
});
};
var getPrecision = function(pluginOptions) {
// return the (validated) configured precision from pluginOptions or default 1
var defaultPrecision = 1;
if (!pluginOptions.hasOwnProperty("precision")) return defaultPrecision;
if (!pluginOptions.precision) return defaultPrecision;
var optionsPrecision = Math.floor(pluginOptions.precision);
if (isNaN(optionsPrecision)) return defaultPrecision;
if (optionsPrecision < 0 || optionsPrecision > 16) return defaultPrecision;
return optionsPrecision;
};
var round = function(value, precision) {
var multiplicator = Math.pow(10, precision);
return Math.round(value * 100 * multiplicator) / multiplicator;
};
var tooltipLabel = function(isHorizontal) {
return function(tooltipItem, data) {
var datasetIndex = tooltipItem.datasetIndex;
var index = tooltipItem.index;
var datasetLabel = data.datasets[datasetIndex].label || "";
var originalValue = data.originalData[datasetIndex][index];
var rateValue = data.calculatedData[datasetIndex][index];
return "" + datasetLabel + ": " + rateValue + "% (" + dataValue(originalValue, isHorizontal) + ")";
}
};
var reflectData = function(srcData, datasets) {
if (!srcData) return;
srcData.forEach(function(data, i) {
datasets[i].data = data;
});
};
var isHorizontalChart = function(chartInstance) {
return chartInstance.config.type === "horizontalBar";
}
var Stacked100Plugin = {
id: "stacked100",
beforeInit: function(chartInstance, pluginOptions) {
if (!pluginOptions.enable) return;
var xAxes = chartInstance.options.scales.xAxes;
var yAxes = chartInstance.options.scales.yAxes;
var isVertical = chartInstance.config.type === "bar" || chartInstance.config.type === "line";
[xAxes, yAxes].forEach(function(axes) {
axes.forEach(function(hash) {
hash.stacked = true;
});
});
(isVertical ? yAxes : xAxes).forEach(function(hash) {
if (!hash.ticks.min) {
var hasNegative = chartInstance.data.datasets.some(function(dataset) {
return dataset.data.some(function(value) {
return value < 0;
});
});
hash.ticks.min = hasNegative ? -100 : 0;
}
if (!hash.ticks.max) hash.ticks.max = 100;
});
// Replace tooltips
if (pluginOptions.hasOwnProperty("replaceTooltipLabel") && !pluginOptions.replaceTooltipLabel) return;
chartInstance.options.tooltips.callbacks.label = tooltipLabel(isHorizontalChart(chartInstance));
},
beforeDatasetsUpdate: function(chartInstance, pluginOptions) {
if (!pluginOptions.enable) return;
setOriginalData(chartInstance.data);
var precision = getPrecision(pluginOptions);
calculateRate(chartInstance.data, isHorizontalChart(chartInstance), precision);
reflectData(chartInstance.data.calculatedData, chartInstance.data.datasets);
},
afterDatasetsUpdate: function(chartInstance, pluginOptions) {
if (!pluginOptions.enable) return;
reflectData(chartInstance.data.originalData, chartInstance.data.datasets);
}
};
Chart.pluginService.register(Stacked100Plugin);
}.call(this, Chart));

View File

@ -169,7 +169,6 @@ It provides :
* `bootstrap-datepicker 1.9.0 <https://github.com/uxsolutions/bootstrap-datepicker>`_
* `Chart.js 2.9.3 <https://www.chartjs.org/>`_
* `Chart.js Plugin datalabels 0.7.0 <https://github.com/chartjs/chartjs-plugin-datalabels>`_
* `Chart.js Plugin stacked100 0.7.1 <https://github.com/y-takey/chartjs-plugin-stacked100>`_
* `Chart.js Plugin colorschemes 0.4.0 <https://github.com/nagix/chartjs-plugin-colorschemes>`_
* `clipboardJS 2.0.4 <https://clipboardjs.com/>`_
* `d3 3.5.17 <https://d3js.org/>`_
@ -198,7 +197,6 @@ The following modules are available :
* clipboardjs
* chartjs
* chartjs_datalabels
* chartjs_stacked100
* chartjs_colorschemes
* d3
* d3plus

View File

@ -284,10 +284,6 @@ module Additionals
additionals_include_js('chartjs-plugin-datalabels.min')
end
def additionals_load_chartjs_stacked100
additionals_include_js('chartjs-plugin-stacked100')
end
def additionals_load_chartjs_colorschemes
additionals_include_js('chartjs-plugin-colorschemes.min')
end