Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function combine(data) {
- // await fetch('/dashboard/stats')
- // .then((response) => response.json())
- // .then((myJson) => {
- // data = myJson;
- // console.log({test: myJson});
- // })
- var data = [{"label":"Amaranthaceae","data":150},{"label":"Cupressaceae","data":75},{"label":"Boraginaceae","data":62},{"label":"Compositae","data":10},{"label":"Lamiaceae","data":8},{"label":"Apiaceae","data":6},{"label":"Pinaceae","data":5},{"label":"Leguminosae","data":5},{"label":"Gentianaceae","data":4},{"label":"Papaveraceae","data":3},{"label":"Ranunculaceae","data":3},{"label":"Solanaceae","data":3},{"label":"Capparaceae","data":2},{"label":"Fagaceae","data":2},{"label":"Plantaginaceae","data":2},{"label":"Cucurbitaceae","data":2},{"label":"Oleaceae","data":2},{"label":"Poaceae","data":2},{"label":"Lauraceae","data":2},{"label":"Paeoniaceae","data":2},{"label":"Ericaceae","data":2},{"label":"Cannabaceae","data":2},{"label":"Acanthaceae","data":1},{"label":"Acoraceae","data":1},{"label":"Pteridaceae","data":1},{"label":"Amaryllidaceae","data":1},{"label":"Primulaceae","data":1},{"label":"Sapindaceae","data":1},{"label":"Urticaceae","data":1},{"label":"Brassicaceae","data":1}];
- var total = 0,
- combined = 0,
- numCombined = 0,
- color = options.series.pie.combine.color,
- newdata = [];
- // Fix up the raw data from Flot, ensuring the data is numeric
- for (var i = 0; i < data.length; ++i) {
- var value = data[i].data;
- // If the data is an array, we'll assume that it's a standard
- // Flot x-y pair, and are concerned only with the second value.
- // Note how we use the original array, rather than creating a
- // new one; this is more efficient and preserves any extra data
- // that the user may have stored in higher indexes.
- if ($.isArray(value) && value.length == 1) {
- value = value[0];
- }
- if ($.isArray(value)) {
- // Equivalent to $.isNumeric() but compatible with jQuery < 1.7
- if (!isNaN(parseFloat(value[1])) && isFinite(value[1])) {
- value[1] = +value[1];
- } else {
- value[1] = 0;
- }
- } else if (!isNaN(parseFloat(value)) && isFinite(value)) {
- value = [1, +value];
- } else {
- value = [1, 0];
- }
- data[i].data = [value];
- }
- // Sum up all the slices, so we can calculate percentages for each
- for (var i = 0; i < data.length; ++i) {
- total += data[i].data[0][1];
- }
- // Count the number of slices with percentages below the combine
- // threshold; if it turns out to be just one, we won't combine.
- for (var i = 0; i < data.length; ++i) {
- var value = data[i].data[0][1];
- if (value / total <= options.series.pie.combine.threshold) {
- combined += value;
- numCombined++;
- if (!color) {
- color = data[i].color;
- }
- }
- }
- for (var i = 0; i < data.length; ++i) {
- var value = data[i].data[0][1];
- if (numCombined < 2 || value / total > options.series.pie.combine.threshold) {
- newdata.push(
- $.extend(data[i], { /* extend to allow keeping all other original data values
- and using them e.g. in labelFormatter. */
- data: [[1, value]],
- color: data[i].color,
- label: data[i].label,
- angle: value * Math.PI * 2 / total,
- percent: value / (total / 100)
- })
- );
- }
- }
- if (numCombined > 1) {
- newdata.push({
- data: [[1, combined]],
- color: color,
- label: options.series.pie.combine.label,
- angle: combined * Math.PI * 2 / total,
- percent: combined / (total / 100)
- });
- }
- return newdata;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement