From f42cfbb82c641e3f3ecb364f02fadcc0dd01462e Mon Sep 17 00:00:00 2001 From: Tinkoff DWH Date: Mon, 13 Mar 2017 15:48:23 +0500 Subject: [PATCH] [ZEPPELIN-2252] discreteness of line charts --- .../visualization/builtins/visualization-linechart.js | 11 ++++++++++- .../visualization/builtins/visualization-nvd3chart.js | 9 +++++++-- 2 files changed, 17 insertions(+), 3 deletions(-) diff --git a/zeppelin-web/src/app/visualization/builtins/visualization-linechart.js b/zeppelin-web/src/app/visualization/builtins/visualization-linechart.js index 90db33fdb13..02a2114d7ec 100644 --- a/zeppelin-web/src/app/visualization/builtins/visualization-linechart.js +++ b/zeppelin-web/src/app/visualization/builtins/visualization-linechart.js @@ -70,7 +70,12 @@ export default class LinechartVisualization extends Nvd3ChartVisualization { configureChart(chart) { var self = this; chart.xAxis.tickFormat(function(d) {return self.xAxisTickFormat(d, self.xLabels);}); - chart.yAxis.tickFormat(function(d) {return self.yAxisTickFormat(d, self.xLabels);}); + chart.yAxis.tickFormat(function(d) { + if (d === undefined) { + return 'N/A'; + } + return self.yAxisTickFormat(d, self.xLabels); + }); chart.yAxis.axisLabelDistance(50); if (chart.useInteractiveGuideline) { // lineWithFocusChart hasn't got useInteractiveGuideline chart.useInteractiveGuideline(true); // for better UX and performance issue. (https://github.com/novus/nvd3/issues/691) @@ -111,4 +116,8 @@ export default class LinechartVisualization extends Nvd3ChartVisualization { } }; }; + + defaultY() { + return undefined; + }; } diff --git a/zeppelin-web/src/app/visualization/builtins/visualization-nvd3chart.js b/zeppelin-web/src/app/visualization/builtins/visualization-nvd3chart.js index 61de1d91aac..b0f569e26de 100644 --- a/zeppelin-web/src/app/visualization/builtins/visualization-nvd3chart.js +++ b/zeppelin-web/src/app/visualization/builtins/visualization-nvd3chart.js @@ -81,6 +81,10 @@ export default class Nvd3ChartVisualization extends Visualization { return s; }; + defaultY() { + return 0; + }; + xAxisTickFormat(d, xLabels) { if (xLabels[d] && (isNaN(parseFloat(xLabels[d])) || !isFinite(xLabels[d]))) { // to handle string type xlabel return xLabels[d]; @@ -98,6 +102,7 @@ export default class Nvd3ChartVisualization extends Visualization { d3DataFromPivot( schema, rows, keys, groups, values, allowTextXAxis, fillMissingValues, multiBarChart) { + var self = this; // construct table data var d3g = []; @@ -181,10 +186,10 @@ export default class Nvd3ChartVisualization extends Visualization { } var xVar = isNaN(rowValue) ? ((allowTextXAxis) ? rowValue : rowNameIndex[rowValue]) : parseFloat(rowValue); - var yVar = 0; + var yVar = self.defaultY(); if (xVar === undefined) { xVar = colName; } if (value !== undefined) { - yVar = isNaN(value.value) ? 0 : parseFloat(value.value) / parseFloat(value.count); + yVar = isNaN(value.value) ? self.defaultY() : parseFloat(value.value) / parseFloat(value.count); } d3g[i].values.push({ x: xVar,