Repository: ambari Updated Branches: refs/heads/branch-2.5 28cb97ce0 -> 2b0cf6dd9
AMBARI-19110. "Cluster Load" widget in ambari-dashboard, download as CSV is not working (alexantonenko)" Project: http://git-wip-us.apache.org/repos/asf/ambari/repo Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/2b0cf6dd Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/2b0cf6dd Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/2b0cf6dd Branch: refs/heads/branch-2.5 Commit: 2b0cf6dd9b637999ec13e0af989577e9f27bc634 Parents: 28cb97c Author: Alex Antonenko <[email protected]> Authored: Tue Dec 6 18:29:00 2016 +0200 Committer: Alex Antonenko <[email protected]> Committed: Tue Dec 6 19:05:24 2016 +0200 ---------------------------------------------------------------------- .../common/widgets/export_metrics_mixin.js | 28 ++++++++++++++++++-- 1 file changed, 26 insertions(+), 2 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ambari/blob/2b0cf6dd/ambari-web/app/mixins/common/widgets/export_metrics_mixin.js ---------------------------------------------------------------------- diff --git a/ambari-web/app/mixins/common/widgets/export_metrics_mixin.js b/ambari-web/app/mixins/common/widgets/export_metrics_mixin.js index 7517efd..aa4f77c 100644 --- a/ambari-web/app/mixins/common/widgets/export_metrics_mixin.js +++ b/ambari-web/app/mixins/common/widgets/export_metrics_mixin.js @@ -85,6 +85,7 @@ App.ExportMetricsMixin = Em.Mixin.create({ ticksNumber, metricsNumber, metricsArray; + this.checkGraphDataForValidity(data); titles = data.map(function (item) { return displayUnit ? item.name + ' (' + displayUnit + ')' : item.name; }, this); @@ -95,12 +96,35 @@ App.ExportMetricsMixin = Em.Mixin.create({ for (var i = 0; i < ticksNumber; i++) { metricsArray.push([data[0].data[i][1]]); for (var j = 0; j < metricsNumber; j++) { - metricsArray[i + 1].push(data[j].data[i][0]); + metricsArray[i + 1].push(data[j].data[i][0]); }; - } + }; return stringUtils.arrayToCSV(metricsArray); }, + checkGraphDataForValidity: function (data) { + data.sort(function (a, b) { + return b.data.length - a.data.length + }); + + var maxLength = data[0].data.length; + + for (var i = 1; i < data.length; i ++) { + if (data[i].data.length !== maxLength) this.fillGraphDataArrayWithMockedData(data[i], maxLength); + } + }, + + fillGraphDataArrayWithMockedData: function (dataArray, neededLength) { + var startIndex = dataArray.data.length, + timestampInterval = dataArray.data[2][1] - dataArray.data[1][1]; + + for (var i = startIndex; i < neededLength; i++) { + var previousTimestamp = dataArray.data[i - 1][1]; + + dataArray.data.push([null, previousTimestamp + timestampInterval]); + } + }, + jsonReplacer: function () { var displayUnit = this.get('targetView.displayUnit'); return function (key, value) {
