Diff
checker
文本
文本
圖像
文檔
Excel
文件夾
Legal
Enterprise
桌面版
定價
登入
下載 Diffchecker 桌面版
比較文本
尋找兩個文字檔案之間的差異
工具
歷史
顯示
檢視
拆分
統一
即時編輯器
隱藏空白變更
摺疊未變更行
關閉換行
比對精度
智能
語法
無
變更外觀
處理
忽略
文字轉換
前往第一個差異
編輯輸入
Diffchecker Desktop
執行Diffchecker最安全的方式。取得Diffchecker桌面應用程式:您的差異永遠不會離開您的電腦!
取得桌面版
rawgit.com/CodeYellowBV/chartist-plugin-legend/master/chartist-plugin-legend.js VS unpkg.com/chartist-plugin-legend@0.6.2/chartist-plugin-legend.js
建立於
6 年前
差異永不過期
清除
匯出
分享
解釋
158 刪除
行
總計
刪除
字符
總計
刪除
要繼續使用此功能,請升級到
Diff
checker
Pro
查看價格
237 行
全部複製
100 新增
行
總計
新增
字符
總計
新增
要繼續使用此功能,請升級到
Diff
checker
Pro
查看價格
217 行
全部複製
(function (root, factory) {
(function (root, factory) {
if (typeof define === 'function' && define.amd) {
if (typeof define === 'function' && define.amd) {
// AMD. Register as an anonymous module.
// AMD. Register as an anonymous module.
define(['chartist'], function (chartist) {
define(['chartist'], function (chartist) {
return (root.returnExportsGlobal = factory(chartist));
return (root.returnExportsGlobal = factory(chartist));
});
});
} else if (typeof exports === 'object') {
} else if (typeof exports === 'object') {
// Node. Does not work with strict CommonJS, but
// Node. Does not work with strict CommonJS, but
// only CommonJS-like enviroments that support module.exports,
// only CommonJS-like enviroments that support module.exports,
// like Node.
// like Node.
module.exports = factory(require('chartist'));
module.exports = factory(require('chartist'));
} else {
} else {
root['Chartist.plugins.legend'] = factory(root.Chartist);
root['Chartist.plugins.legend'] = factory(root.Chartist);
}
}
}(this, function (Chartist) {
}(this, function (Chartist) {
/**
/**
* This Chartist plugin creates a legend to show next to the chart.
* This Chartist plugin creates a legend to show next to the chart.
*
*
*/
*/
'use strict';
'use strict';
var defaultOptions = {
var defaultOptions = {
className: '',
className: '',
classNames: false,
classNames: false,
removeAll: false,
removeAll: false,
legendNames: false,
legendNames: false,
clickable: true,
clickable: true,
onClick: null,
onClick: null,
position: 'top'
position: 'top'
};
};
Chartist.plugins = Chartist.plugins || {};
Chartist.plugins = Chartist.plugins || {};
Chartist.plugins.legend = function (options) {
Chartist.plugins.legend = function (options) {
複製
已複製
複製
已複製
function compareNumbers(a, b) {
return a - b;
}
// Catch invalid options
// Catch invalid options
if (options && options.position) {
if (options && options.position) {
複製
已複製
複製
已複製
if (!(options.position === 'top' || options.position === 'bottom' || options.position instanceof HTMLElement)) {
if (!(options.position === 'top' || options.position === 'bottom' || options.position instanceof HTMLElement)) {
throw Error('The position you entered is not a valid position');
throw Error('The position you entered is not a valid position');
}
}
if
(options.position instanceof HTMLElement)
{
if
(options.position instanceof HTMLElement)
{
// Detatch DOM element from options object, because Chartist.extend
// Detatch DOM element from options object, because Chartist.extend
currently chokes on circular references present in HTMLElements
//
currently chokes on circular references present in HTMLElements
var cachedDOMPosition = options.position;
var cachedDOMPosition = options.position;
delete options.position;
delete options.position;
}
}
}
}
options = Chartist.extend({}, defaultOptions, options);
options = Chartist.extend({}, defaultOptions, options);
複製
已複製
複製
已複製
if
(cachedDOMPosition)
{
if
(cachedDOMPosition)
{
// Reattatch the DOM Element position if it was removed before
// Reattatch the DOM Element position if it was removed before
options.position = cachedDOMPosition
options.position = cachedDOMPosition
}
}
return function legend(chart) {
return function legend(chart) {
複製
已複製
複製
已複製
var
existingL
egendElement = chart.container.querySelector('.ct-legend');
function removeLegendElement() {
if (
existingL
egendElement) {
var
l
egendElement = chart.container.querySelector('.ct-legend');
// Clear legend if already existing.
if (
l
egendElement) {
existingLegendElement
.parentNode.removeChild(
existingL
egendElement);
legendElement
.parentNode.removeChild(
l
egendElement);
}
}
}
// Set a unique className for each series so that when a series is removed,
// Set a unique className for each series so that when a series is removed,
// the other series still have the same color.
// the other series still have the same color.
複製
已複製
複製
已複製
function setSeriesClassNames(
) {
if (options.clickable
) {
chart.data.s
eries = chart.data.series.map(function (series, seriesIndex) {
var newS
eries = chart.data.series.map(function (series, seriesIndex) {
if (typeof series !== 'object') {
if (typeof series !== 'object') {
series = {
series = {
value: series
value: series
};
};
}
}
複製
已複製
複製
已複製
series.className = series.className || chart.options.classNames.series + '-' + Chartist.alphaNumerate(seriesIndex);
series.className = series.className || chart.options.classNames.series + '-' + Chartist.alphaNumerate(seriesIndex);
return series;
return series;
});
});
複製
已複製
複製
已複製
chart.data.series = newSeries;
}
}
複製
已複製
複製
已複製
function createLegendElement() {
var legendElement = document.createElement('ul')
,
var legendElement = document.createElement('ul')
;
isPieChart = chart instanceof Chartist.Pie
;
legendElement.className = 'ct-legend';
legendElement.className = 'ct-legend';
if (chart instanceof Chartist.Pie) {
if (chart instanceof Chartist.Pie) {
legendElement.classList.add('ct-legend-inside');
legendElement.classList.add('ct-legend-inside');
}
}
if (typeof options.className === 'string' && options.className.length > 0) {
if (typeof options.className === 'string' && options.className.length > 0) {
legendElement.classList.add(options.className);
legendElement.classList.add(options.className);
}
}
複製
已複製
複製
已複製
複製
已複製
複製
已複製
if (chart.options.width) {
if (chart.options.width) {
legendElement.style.cssText = 'width: ' + chart.options.width + 'px;margin: 0 auto;';
legendElement.style.cssText = 'width: ' + chart.options.width + 'px;margin: 0 auto;';
}
}
return legendElement;
}
var removedSeries = [],
originalSeries = chart.data.series.slice(0);
// Get the right array to use for generating the legend.
// Get the right array to use for generating the legend.
複製
已複製
複製
已複製
function getL
egendNames
(useLabels) {
var l
egendNames
= chart.data.series,
return options.legendNames || (useLabels ?
chart.data.labels
:
chart.data.
series)
;
useLabels = isPieChart && chart.data.labels && chart.data.labels.length;
if
(useLabels) {
var originalLabels =
chart.data.labels
.slice(0);
legendNames =
chart.data.
labels
;
}
}
複製
已複製
複製
已複製
legendNames = options.legendNames || legendNames;
複製
已複製
複製
已複製
// Initialize the array that associates series with legends.
// Check if given class names are viable to append to legends
// -1 indicates that there is no legend associated with it.
var classNamesViable = (Array.isArray(options.classNames) && (options.classNames.length === legendNames.length));
function initSeriesMetadata(useLabels) {
var seriesMetadata = new Array(chart.data.series.length);
for (var i = 0; i < chart.data.series.length; i++) {
seriesMetadata[i] = {
data: chart.data.series[i],
label: useLabels ? chart.data.labels[i] : null,
legend: -1
};
}
return seriesMetadata;
}
複製
已複製
複製
已複製
function
createNameElement(i,
legend
Text, classNamesViable
) {
// Loop through all legends to set each name in a list item.
legendNames.forEach(
function
(
legend
, i
) {
var li = document.createElement('li');
var li = document.createElement('li');
li.
classList.add(
'ct-series-' + i
)
;
li.
className =
'ct-series-' + i
;
// Append specific class to a legend element, if viable classes are given
// Append specific class to a legend element, if viable classes are given
if (classNamesViable) {
if (classNamesViable) {
li.
classList.add(
options.classNames[i]
)
;
li.
className += ' ' +
options.classNames[i]
;
}
}
li.setAttribute('data-legend', i);
li.setAttribute('data-legend', i);
li.textContent = legend
Text
;
li.textContent = legend
.name || legend
;
return li
;
legendElement.appendChild(li)
;
}
}
);
複製
已複製
複製
已複製
chart.on('created', function (data) {
複製
已複製
複製
已複製
// Append the legend element to the DOM
// Append the legend element to the DOM
function appendLegendToDOM(legendElement) {
if
(!(options.position instanceof HTMLElement))
if
(!(options.position instanceof HTMLElement))
{
{
switch (options.position) {
switch (options.position) {
case 'top':
case 'top':
chart.container.insertBefore(legendElement, chart.container.childNodes[0]);
chart.container.insertBefore(legendElement, chart.container.childNodes[0]);
break;
break;
複製
已複製
複製
已複製
case 'bottom':
case 'bottom':
chart.container.insertBefore(legendElement, null);
chart.container.insertBefore(legendElement, null);
break;
break;
}
}
}
else {
}
else {
// Appends the legend element as the last child of a given HTMLElement
// Appends the legend element as the last child of a given HTMLElement
options.position.insertBefore(legendElement, null);
options.position.insertBefore(legendElement, null);
}
}
}
}
);
複製
已複製
複製
已複製
function addClickHandler(legendElement, legends, seriesMetadata, useLabels
) {
if (options.clickable
) {
legendElement.addEventListener('click', function
(e) {
legendElement.addEventListener('click', function
(e) {
var li = e.target;
var li = e.target;
if (li.parentNode !== legendElement || !li.hasAttribute('data-legend'))
if (li.parentNode !== legendElement || !li.hasAttribute('data-legend'))
return;
return;
e.preventDefault();
e.preventDefault();
複製
已複製
複製
已複製
var
legendIndex
= parseInt(li.getAttribute('data-legend'))
;
var
seriesIndex
= parseInt(li.getAttribute('data-legend'))
,
var legend
=
legends[legendIndex]
;
removedSeriesIndex
=
removedSeries.indexOf(seriesIndex)
;
複製
已複製
複製
已複製
if (
!legend.active
) {
if (
removedSeriesIndex > -1
) {
legend.active = true;
// Add to series again.
removedSeries.splice(removedSeriesIndex, 1);
li.classList.remove('inactive');
li.classList.remove('inactive');
} else {
} else {
複製
已複製
複製
已複製
legend.active = false;
if (!options.removeAll) {
// Remove from series, only if a minimum of one series is still visible.
if ( chart.data.series.length > 1) {
removedSeries.push(seriesIndex);
li.classList.add('inactive');
li.classList.add('inactive');
複製
已複製
複製
已複製
var activeCount = legends.filter(function(legend) { return legend.active; }).length;
if (!options.removeAll && activeCount == 0) {
// If we can't disable all series at the same time, let's
// reenable all of them:
for (var i = 0; i < legends.length; i++) {
legends[i].active = true;
legendElement.childNodes[i].classList.remove('inactive');
複製
已複製
複製
已複製
}
}
複製
已複製
複製
已複製
// Set all series as active.
else {
removedSeries = [];
var seriesItems = Array.prototype.slice.call(legendElement.childNodes);
seriesItems.forEach(function (item) {
item.classList.remove('inactive');
});
複製
已複製
複製
已複製
}
}
}
}
else {
var newSeries = [];
// Remove series unaffected if it is the last or not
var newLabels = [];
removedSeries.push(seriesIndex);
li.classList.add('inactive'
);
for (var i = 0; i < seriesMetadata.length; i++) {
if (seriesMetadata[i].legend != -1 && legends[seriesMetadata[i].legend].active) {
newSeries.push(seriesMetadata[i].data);
newLabels.push(seriesMetadata[i].label
);
}
}
}
}
複製
已複製
複製
已複製
chart.data.
series
= newSeries;
// Reset the series to original and remove each
series
that
// is still removed again, to remain index order.
var seriesCopy = originalSeries.slice(0);
if (useLabels) {
if (useLabels) {
複製
已複製
複製
已複製
chart.data.
labels
=
newLabels
;
var
labels
Copy
=
originalLabels.slice(0)
;
}
}
複製
已複製
複製
已複製
chart.update();
// Reverse sort the removedSeries to prevent removing the wrong index.
removedSeries.sort(compareNumbers).reverse();
removedSeries.forEach(function (series) {
seriesCopy.splice(series, 1);
if (useLabels) {
labelsCopy.splice(series, 1);
}
});
if (options.onClick) {
if (options.onClick) {
options.onClick(chart, e);
options.onClick(chart, e);
}
}
複製
已複製
複製
已複製
chart.data.series = seriesCopy;
if (useLabels) {
chart.data.labels = labelsCopy;
}
chart.update();
});
});
}
}
複製
已複製
複製
已複製
removeLegendElement();
var legendElement = createLegendElement();
var useLabels = chart instanceof Chartist.Pie && chart.data.labels && chart.data.labels.length;
var legendNames = getLegendNames(useLabels);
var seriesMetadata = initSeriesMetadata(useLabels);
var legends = [];
// Check if given class names are viable to append to legends
var classNamesViable = Array.isArray(options.classNames) && options.classNames.length === legendNames.length;
// Loop through all legends to set each name in a list item.
legendNames.forEach(function (legend, i) {
var legendText = legend.name || legend;
var legendSeries = legend.series || [i];
var li = createNameElement(i, legendText, classNamesViable);
legendElement.appendChild(li);
legendSeries.forEach(function(seriesIndex) {
seriesMetadata[seriesIndex].legend = i;
});
legends.push({
text: legendText,
series: legendSeries,
active: true
});
});
chart.on('created', function (data) {
appendLegendToDOM(legendElement);
});
if (options.clickable) {
setSeriesClassNames();
addClickHandler(legendElement, legends, seriesMetadata, useLabels);
}
};
};
複製
已複製
複製
已複製
};
};
return Chartist.plugins.legend;
return Chartist.plugins.legend;
}));
}));
已保存差異
原始文本
開啟檔案
(function (root, factory) { if (typeof define === 'function' && define.amd) { // AMD. Register as an anonymous module. define(['chartist'], function (chartist) { return (root.returnExportsGlobal = factory(chartist)); }); } else if (typeof exports === 'object') { // Node. Does not work with strict CommonJS, but // only CommonJS-like enviroments that support module.exports, // like Node. module.exports = factory(require('chartist')); } else { root['Chartist.plugins.legend'] = factory(root.Chartist); } }(this, function (Chartist) { /** * This Chartist plugin creates a legend to show next to the chart. * */ 'use strict'; var defaultOptions = { className: '', classNames: false, removeAll: false, legendNames: false, clickable: true, onClick: null, position: 'top' }; Chartist.plugins = Chartist.plugins || {}; Chartist.plugins.legend = function (options) { // Catch invalid options if (options && options.position) { if (!(options.position === 'top' || options.position === 'bottom' || options.position instanceof HTMLElement)) { throw Error('The position you entered is not a valid position'); } if (options.position instanceof HTMLElement) { // Detatch DOM element from options object, because Chartist.extend // currently chokes on circular references present in HTMLElements var cachedDOMPosition = options.position; delete options.position; } } options = Chartist.extend({}, defaultOptions, options); if (cachedDOMPosition) { // Reattatch the DOM Element position if it was removed before options.position = cachedDOMPosition } return function legend(chart) { function removeLegendElement() { var legendElement = chart.container.querySelector('.ct-legend'); if (legendElement) { legendElement.parentNode.removeChild(legendElement); } } // Set a unique className for each series so that when a series is removed, // the other series still have the same color. function setSeriesClassNames() { chart.data.series = chart.data.series.map(function (series, seriesIndex) { if (typeof series !== 'object') { series = { value: series }; } series.className = series.className || chart.options.classNames.series + '-' + Chartist.alphaNumerate(seriesIndex); return series; }); } function createLegendElement() { var legendElement = document.createElement('ul'); legendElement.className = 'ct-legend'; if (chart instanceof Chartist.Pie) { legendElement.classList.add('ct-legend-inside'); } if (typeof options.className === 'string' && options.className.length > 0) { legendElement.classList.add(options.className); } if (chart.options.width) { legendElement.style.cssText = 'width: ' + chart.options.width + 'px;margin: 0 auto;'; } return legendElement; } // Get the right array to use for generating the legend. function getLegendNames(useLabels) { return options.legendNames || (useLabels ? chart.data.labels : chart.data.series); } // Initialize the array that associates series with legends. // -1 indicates that there is no legend associated with it. function initSeriesMetadata(useLabels) { var seriesMetadata = new Array(chart.data.series.length); for (var i = 0; i < chart.data.series.length; i++) { seriesMetadata[i] = { data: chart.data.series[i], label: useLabels ? chart.data.labels[i] : null, legend: -1 }; } return seriesMetadata; } function createNameElement(i, legendText, classNamesViable) { var li = document.createElement('li'); li.classList.add('ct-series-' + i); // Append specific class to a legend element, if viable classes are given if (classNamesViable) { li.classList.add(options.classNames[i]); } li.setAttribute('data-legend', i); li.textContent = legendText; return li; } // Append the legend element to the DOM function appendLegendToDOM(legendElement) { if (!(options.position instanceof HTMLElement)) { switch (options.position) { case 'top': chart.container.insertBefore(legendElement, chart.container.childNodes[0]); break; case 'bottom': chart.container.insertBefore(legendElement, null); break; } } else { // Appends the legend element as the last child of a given HTMLElement options.position.insertBefore(legendElement, null); } } function addClickHandler(legendElement, legends, seriesMetadata, useLabels) { legendElement.addEventListener('click', function(e) { var li = e.target; if (li.parentNode !== legendElement || !li.hasAttribute('data-legend')) return; e.preventDefault(); var legendIndex = parseInt(li.getAttribute('data-legend')); var legend = legends[legendIndex]; if (!legend.active) { legend.active = true; li.classList.remove('inactive'); } else { legend.active = false; li.classList.add('inactive'); var activeCount = legends.filter(function(legend) { return legend.active; }).length; if (!options.removeAll && activeCount == 0) { // If we can't disable all series at the same time, let's // reenable all of them: for (var i = 0; i < legends.length; i++) { legends[i].active = true; legendElement.childNodes[i].classList.remove('inactive'); } } } var newSeries = []; var newLabels = []; for (var i = 0; i < seriesMetadata.length; i++) { if (seriesMetadata[i].legend != -1 && legends[seriesMetadata[i].legend].active) { newSeries.push(seriesMetadata[i].data); newLabels.push(seriesMetadata[i].label); } } chart.data.series = newSeries; if (useLabels) { chart.data.labels = newLabels; } chart.update(); if (options.onClick) { options.onClick(chart, e); } }); } removeLegendElement(); var legendElement = createLegendElement(); var useLabels = chart instanceof Chartist.Pie && chart.data.labels && chart.data.labels.length; var legendNames = getLegendNames(useLabels); var seriesMetadata = initSeriesMetadata(useLabels); var legends = []; // Check if given class names are viable to append to legends var classNamesViable = Array.isArray(options.classNames) && options.classNames.length === legendNames.length; // Loop through all legends to set each name in a list item. legendNames.forEach(function (legend, i) { var legendText = legend.name || legend; var legendSeries = legend.series || [i]; var li = createNameElement(i, legendText, classNamesViable); legendElement.appendChild(li); legendSeries.forEach(function(seriesIndex) { seriesMetadata[seriesIndex].legend = i; }); legends.push({ text: legendText, series: legendSeries, active: true }); }); chart.on('created', function (data) { appendLegendToDOM(legendElement); }); if (options.clickable) { setSeriesClassNames(); addClickHandler(legendElement, legends, seriesMetadata, useLabels); } }; }; return Chartist.plugins.legend; }));
更改後文本
開啟檔案
(function (root, factory) { if (typeof define === 'function' && define.amd) { // AMD. Register as an anonymous module. define(['chartist'], function (chartist) { return (root.returnExportsGlobal = factory(chartist)); }); } else if (typeof exports === 'object') { // Node. Does not work with strict CommonJS, but // only CommonJS-like enviroments that support module.exports, // like Node. module.exports = factory(require('chartist')); } else { root['Chartist.plugins.legend'] = factory(root.Chartist); } }(this, function (Chartist) { /** * This Chartist plugin creates a legend to show next to the chart. * */ 'use strict'; var defaultOptions = { className: '', classNames: false, removeAll: false, legendNames: false, clickable: true, onClick: null, position: 'top' }; Chartist.plugins = Chartist.plugins || {}; Chartist.plugins.legend = function (options) { function compareNumbers(a, b) { return a - b; } // Catch invalid options if (options && options.position) { if (!(options.position === 'top' || options.position === 'bottom' || options.position instanceof HTMLElement)) { throw Error('The position you entered is not a valid position'); } if(options.position instanceof HTMLElement){ // Detatch DOM element from options object, because Chartist.extend currently chokes on circular references present in HTMLElements var cachedDOMPosition = options.position; delete options.position; } } options = Chartist.extend({}, defaultOptions, options); if(cachedDOMPosition){ // Reattatch the DOM Element position if it was removed before options.position = cachedDOMPosition } return function legend(chart) { var existingLegendElement = chart.container.querySelector('.ct-legend'); if (existingLegendElement) { // Clear legend if already existing. existingLegendElement.parentNode.removeChild(existingLegendElement); } // Set a unique className for each series so that when a series is removed, // the other series still have the same color. if (options.clickable) { var newSeries = chart.data.series.map(function (series, seriesIndex) { if (typeof series !== 'object') { series = { value: series }; } series.className = series.className || chart.options.classNames.series + '-' + Chartist.alphaNumerate(seriesIndex); return series; }); chart.data.series = newSeries; } var legendElement = document.createElement('ul'), isPieChart = chart instanceof Chartist.Pie; legendElement.className = 'ct-legend'; if (chart instanceof Chartist.Pie) { legendElement.classList.add('ct-legend-inside'); } if (typeof options.className === 'string' && options.className.length > 0) { legendElement.classList.add(options.className); } if (chart.options.width) { legendElement.style.cssText = 'width: ' + chart.options.width + 'px;margin: 0 auto;'; } var removedSeries = [], originalSeries = chart.data.series.slice(0); // Get the right array to use for generating the legend. var legendNames = chart.data.series, useLabels = isPieChart && chart.data.labels && chart.data.labels.length; if (useLabels) { var originalLabels = chart.data.labels.slice(0); legendNames = chart.data.labels; } legendNames = options.legendNames || legendNames; // Check if given class names are viable to append to legends var classNamesViable = (Array.isArray(options.classNames) && (options.classNames.length === legendNames.length)); // Loop through all legends to set each name in a list item. legendNames.forEach(function (legend, i) { var li = document.createElement('li'); li.className = 'ct-series-' + i; // Append specific class to a legend element, if viable classes are given if (classNamesViable) { li.className += ' ' + options.classNames[i]; } li.setAttribute('data-legend', i); li.textContent = legend.name || legend; legendElement.appendChild(li); }); chart.on('created', function (data) { // Append the legend element to the DOM if(!(options.position instanceof HTMLElement)) { switch (options.position) { case 'top': chart.container.insertBefore(legendElement, chart.container.childNodes[0]); break; case 'bottom': chart.container.insertBefore(legendElement, null); break; } } else { // Appends the legend element as the last child of a given HTMLElement options.position.insertBefore(legendElement, null); } }); if (options.clickable) { legendElement.addEventListener('click', function (e) { var li = e.target; if (li.parentNode !== legendElement || !li.hasAttribute('data-legend')) return; e.preventDefault(); var seriesIndex = parseInt(li.getAttribute('data-legend')), removedSeriesIndex = removedSeries.indexOf(seriesIndex); if (removedSeriesIndex > -1) { // Add to series again. removedSeries.splice(removedSeriesIndex, 1); li.classList.remove('inactive'); } else { if (!options.removeAll) { // Remove from series, only if a minimum of one series is still visible. if ( chart.data.series.length > 1) { removedSeries.push(seriesIndex); li.classList.add('inactive'); } // Set all series as active. else { removedSeries = []; var seriesItems = Array.prototype.slice.call(legendElement.childNodes); seriesItems.forEach(function (item) { item.classList.remove('inactive'); }); } } else { // Remove series unaffected if it is the last or not removedSeries.push(seriesIndex); li.classList.add('inactive'); } } // Reset the series to original and remove each series that // is still removed again, to remain index order. var seriesCopy = originalSeries.slice(0); if (useLabels) { var labelsCopy = originalLabels.slice(0); } // Reverse sort the removedSeries to prevent removing the wrong index. removedSeries.sort(compareNumbers).reverse(); removedSeries.forEach(function (series) { seriesCopy.splice(series, 1); if (useLabels) { labelsCopy.splice(series, 1); } }); if (options.onClick) { options.onClick(chart, e); } chart.data.series = seriesCopy; if (useLabels) { chart.data.labels = labelsCopy; } chart.update(); }); } }; }; return Chartist.plugins.legend; }));
尋找差異