X-Git-Url: https://adrianiainlam.tk/git/?a=blobdiff_plain;f=plugins%2Flegend.js;h=5c46aee7ed22def3928b37d64367763b67f9f138;hb=575b2dcdd982fc2a79d829556fdbbb5c6f6b6b6e;hp=bb869491125bcbba192529261be249ac59baccfb;hpb=626b90aa2b1747d7ba8bcb939c8560fa16bbdb94;p=dygraphs.git diff --git a/plugins/legend.js b/plugins/legend.js index bb86949..5c46aee 100644 --- a/plugins/legend.js +++ b/plugins/legend.js @@ -124,8 +124,15 @@ var escapeHTML = function(str) { legend.prototype.select = function(e) { var xValue = e.selectedX; var points = e.selectedPoints; + var row = e.selectedRow; - if (e.dygraph.getOption('legend') === 'follow') { + var legendMode = e.dygraph.getOption('legend'); + if (legendMode === 'never') { + this.legend_div_.style.display = 'none'; + return; + } + + if (legendMode === 'follow') { // create floating legend div var area = e.dygraph.plotter_.area; var labelsDivWidth = e.dygraph.getOption('labelsDivWidth'); @@ -146,16 +153,16 @@ legend.prototype.select = function(e) { e.dygraph.graphDiv.appendChild(this.legend_div_); this.legend_div_.style.left = yAxisLabelWidth + leftLegend + "px"; this.legend_div_.style.top = topLegend + "px"; - this.legend_div_.style.display = ''; } - var html = legend.generateLegendHTML(e.dygraph, xValue, points, this.one_em_width_); + var html = legend.generateLegendHTML(e.dygraph, xValue, points, this.one_em_width_, row); this.legend_div_.innerHTML = html; + this.legend_div_.style.display = ''; }; legend.prototype.deselect = function(e) { - - if (e.dygraph.getOption("legend") === "follow") { + var legendMode = e.dygraph.getOption('legend'); + if (legendMode !== 'always') { this.legend_div_.style.display = "none"; } @@ -163,7 +170,7 @@ legend.prototype.deselect = function(e) { var oneEmWidth = calculateEmWidthInDiv(this.legend_div_); this.one_em_width_ = oneEmWidth; - var html = legend.generateLegendHTML(e.dygraph, undefined, undefined, oneEmWidth); + var html = legend.generateLegendHTML(e.dygraph, undefined, undefined, oneEmWidth, null); this.legend_div_.innerHTML = html; }; @@ -206,14 +213,15 @@ legend.prototype.destroy = function() { * Generates HTML for the legend which is displayed when hovering over the * chart. If no selected points are specified, a default legend is returned * (this may just be the empty string). - * @param { Number } [x] The x-value of the selected points. - * @param { [Object] } [sel_points] List of selected points for the given - * x-value. Should have properties like 'name', 'yval' and 'canvasy'. - * @param { Number } [oneEmWidth] The pixel width for 1em in the legend. Only - * relevant when displaying a legend with no selection (i.e. {legend: - * 'always'}) and with dashed lines. + * @param {number} x The x-value of the selected points. + * @param {Object} sel_points List of selected points for the given + * x-value. Should have properties like 'name', 'yval' and 'canvasy'. + * @param {number} oneEmWidth The pixel width for 1em in the legend. Only + * relevant when displaying a legend with no selection (i.e. {legend: + * 'always'}) and with dashed lines. + * @param {number} row The selected row index. */ -legend.generateLegendHTML = function(g, x, sel_points, oneEmWidth) { +legend.generateLegendHTML = function(g, x, sel_points, oneEmWidth, row) { // TODO(danvk): deprecate this option in place of {legend: 'never'} if (g.getOption('showLabelsOnHighlight') !== true) return ''; @@ -246,7 +254,7 @@ legend.generateLegendHTML = function(g, x, sel_points, oneEmWidth) { // TODO(danvk): remove this use of a private API var xOptView = g.optionsViewForAxis_('x'); var xvf = xOptView('valueFormatter'); - html = xvf(x, xOptView, labels[0], g); + html = xvf(x, xOptView, labels[0], g, row, 0); if (html !== '') { html += ':'; } @@ -269,7 +277,7 @@ legend.generateLegendHTML = function(g, x, sel_points, oneEmWidth) { var series = g.getPropertiesForSeries(pt.name); var yOptView = yOptViews[series.axis - 1]; var fmtFunc = yOptView('valueFormatter'); - var yval = fmtFunc(pt.yval, yOptView, pt.name, g); + var yval = fmtFunc(pt.yval, yOptView, pt.name, g, row, labels.indexOf(pt.name)); var cls = (pt.name == highlightSeries) ? " class='highlight'" : ""; @@ -293,10 +301,6 @@ legend.generateLegendHTML = function(g, x, sel_points, oneEmWidth) { * @private */ generateLegendDashHTML = function(strokePattern, color, oneEmWidth) { - // IE 7,8 fail at these divs, so they get boring legend, have not tested 9. - var isIE = (/MSIE/.test(navigator.userAgent) && !window.opera); - if (isIE) return "—"; - // Easy, common case: a solid line if (!strokePattern || strokePattern.length <= 1) { return "