]> git.ipfire.org Git - thirdparty/Chart.js.git/commitdiff
Fix up arguments to tooltip callbacks. Simplified code in some places and removed...
authoretimberg <evert.timberg@gmail.com>
Sat, 31 Oct 2015 00:12:05 +0000 (20:12 -0400)
committeretimberg <evert.timberg@gmail.com>
Sat, 31 Oct 2015 00:12:05 +0000 (20:12 -0400)
src/core/core.tooltip.js

index dc50e55a0b12e5b3e8b58c3bca12998683126102..e79993c8081355ac9ba966873559fec904406bee 100644 (file)
                xOffset: 10,
                multiKeyBackground: '#fff',
                callbacks: {
+                       // Args are: (tooltipItems, data)
                        beforeTitle: helpers.noop,
-                       title: function(xLabel, yLabel, index, datasetIndex, data) {
-                               // Pick first label for now
-                               return helpers.isArray(xLabel) ? xLabel[0] : xLabel;
+                       title: function(tooltipItems, data) {
+                               // Pick first xLabel for now
+                               return tooltipItems.length > 0 ? tooltipItems[0].xLabel : '';
                        },
                        afterTitle: helpers.noop,
 
+                       // Args are: (tooltipItems, data)
                        beforeBody: helpers.noop,
 
+                       // Args are: (tooltipItem, data)
                        beforeLabel: helpers.noop,
-                       label: function(xLabel, yLabel, index, datasetIndex, data) {
-                               return this._data.datasets[datasetIndex].label + ': ' + yLabel;
+                       label: function(tooltipItem, data) {
+                               var datasetLabel = data.datasets[tooltipItem.datasetIndex].label || '';
+                               return datasetLabel + ': ' + tooltipItem.yLabel;
                        },
                        afterLabel: helpers.noop,
 
+                       // Args are: (tooltipItems, data)
                        afterBody: helpers.noop,
 
+                       // Args are: (tooltipItems, data)
                        beforeFooter: helpers.noop,
                        footer: helpers.noop,
                        afterFooter: helpers.noop,
                },
 
                // Get the title 
+               // Args are: (tooltipItem, data)
                getTitle: function() {
                        var beforeTitle = this._options.tooltips.callbacks.beforeTitle.apply(this, arguments),
                                title = this._options.tooltips.callbacks.title.apply(this, arguments),
                        return lines;
                },
 
-               getBeforeBody: function(xLabel, yLabel, index, datasetIndex, data) {
-                       var lines = this._options.tooltips.callbacks.beforeBody.call(this, xLabel, yLabel, index, datasetIndex, data);
+               // Args are: (tooltipItem, data)
+               getBeforeBody: function() {
+                       var lines = this._options.tooltips.callbacks.beforeBody.call(this, arguments);
                        return helpers.isArray(lines) ? lines : [lines];
                },
 
-               getBody: function(items, data) {
+               // Args are: (tooltipItem, data)
+               getBody: function(tooltipItems, data) {
                        var lines = [];
 
-                       helpers.each(items, function(bodyItem) {
-                               var beforeLabel = this._options.tooltips.callbacks.beforeLabel.call(this, bodyItem.xLabel, bodyItem.yLabel, bodyItem.index, bodyItem.datasetIndex);
-                               var afterLabel = this._options.tooltips.callbacks.afterLabel.call(this, bodyItem.xLabel, bodyItem.yLabel, bodyItem.index, bodyItem.datasetIndex);
+                       helpers.each(tooltipItems, function(bodyItem) {
+                               var beforeLabel = this._options.tooltips.callbacks.beforeLabel.call(this, bodyItem, data) || '';
+                               var bodyLabel = this._options.tooltips.callbacks.label.call(this, bodyItem, data) || '';
+                               var afterLabel = this._options.tooltips.callbacks.afterLabel.call(this, bodyItem, data) || '';
 
-                               lines.push((beforeLabel ? beforeLabel : '') + this._options.tooltips.callbacks.label.call(this, bodyItem.xLabel, bodyItem.yLabel, bodyItem.index, bodyItem.datasetIndex) + (afterLabel ? afterLabel : ''));
+                               lines.push(beforeLabel + bodyLabel + afterLabel);
                        }, this);
 
                        return lines;
                },
 
-               getAfterBody: function(xLabel, yLabel, index, datasetIndex, data) {
-                       var lines = this._options.tooltips.callbacks.afterBody.call(this, xLabel, yLabel, index, datasetIndex, data);
+               // Args are: (tooltipItem, data)
+               getAfterBody: function() {
+                       var lines = this._options.tooltips.callbacks.afterBody.call(this, arguments);
                        return helpers.isArray(lines) ? lines : [lines];
                },
 
                // Get the footer and beforeFooter and afterFooter lines
+               // Args are: (tooltipItem, data)
                getFooter: function() {
                        var beforeFooter = this._options.tooltips.callbacks.beforeFooter.apply(this, arguments);
                        var footer = this._options.tooltips.callbacks.footer.apply(this, arguments);
 
                        var ctx = this._chart.ctx;
 
-                       var element = this._active[0],
-                               xLabel,
-                               yLabel,
+                       var element = this._active[0], 
                                labelColors = [],
                                tooltipPosition;
 
-                       var items = [];
+                       var tooltipItems = [];
 
                        if (this._options.tooltips.mode == 'single') {
-                               items.push({
+                               tooltipItems.push({
                                        xLabel: element._xScale ? element._xScale.getLabelForIndex(element._index, element._datasetIndex) : '',
                                        yLabel: element._yScale ? element._yScale.getLabelForIndex(element._index, element._datasetIndex) : '',
                                        index: element._index,
                                        datasetIndex: element._datasetIndex,
                                });
                                tooltipPosition = this._active[0].tooltipPosition();
-                               xLabel = element._xScale ? element._xScale.getLabelForIndex(element._index, element._datasetIndex) : '';
-                               yLabel = element._yScale ? element._yScale.getLabelForIndex(element._index, element._datasetIndex) : '';
                        } else {
-                               xLabel = [];
-                               yLabel = [];
-
                                helpers.each(this._data.datasets, function(dataset, datasetIndex) {
                                        if (!helpers.isDatasetVisible(dataset)) {
                                                return;
                                        }
-                                       var currentElement = dataset.data[element._index];
-                                       xLabel.push(currentElement._xScale ? currentElement._xScale.getLabelForIndex(element._index, datasetIndex) : '');
-                                       yLabel.push(currentElement._yScale ? currentElement._yScale.getLabelForIndex(element._index, datasetIndex) : '');
+                                       var currentElement = dataset.metaData[element._index];
 
-                                       items.push({
+                                       tooltipItems.push({
                                                xLabel: currentElement._xScale ? currentElement._xScale.getLabelForIndex(currentElement._index, currentElement._datasetIndex) : '',
                                                yLabel: currentElement._yScale ? currentElement._yScale.getLabelForIndex(currentElement._index, currentElement._datasetIndex) : '',
                                                index: element._index,
 
                        // Build the Text Lines
                        helpers.extend(this._model, {
-                               title: this.getTitle(xLabel, yLabel, element._index, element._datasetIndex, this._data),
-                               beforeBody: this.getBeforeBody(xLabel, yLabel, element._index, element._datasetIndex, this._data),
-                               body: this.getBody(items, this._data),
-                               afterBody: this.getAfterBody(xLabel, yLabel, element._index, element._datasetIndex, this._data),
-                               footer: this.getFooter(xLabel, yLabel, element._index, element._datasetIndex, this._data),
+                               title: this.getTitle(tooltipItems, this._data),
+                               beforeBody: this.getBeforeBody(tooltipItems, this._data),
+                               body: this.getBody(tooltipItems, this._data),
+                               afterBody: this.getAfterBody(tooltipItems, this._data),
+                               footer: this.getFooter(tooltipItems, this._data),
                        });
 
                        helpers.extend(this._model, {