You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by pa...@apache.org on 2020/10/28 09:00:13 UTC

[ambari] branch branch-2.7 updated: AMBARI-25573 Ambari Metrics save as JSON/CSV use custom fileName instead of default name. (#3247)

This is an automated email from the ASF dual-hosted git repository.

payert pushed a commit to branch branch-2.7
in repository https://gitbox.apache.org/repos/asf/ambari.git


The following commit(s) were added to refs/heads/branch-2.7 by this push:
     new 0475c20  AMBARI-25573 Ambari Metrics save as JSON/CSV use custom fileName instead of default name. (#3247)
0475c20 is described below

commit 0475c203c1c5b16dfe5b1de4d2715af121c479d2
Author: neko <ec...@gmail.com>
AuthorDate: Wed Oct 28 17:00:00 2020 +0800

    AMBARI-25573 Ambari Metrics save as JSON/CSV use custom fileName instead of default name. (#3247)
    
    Ambari metrics widgets download function now provides a meaningful default name instead of the general data.csv/json.
---
 .../mixins/common/widgets/export_metrics_mixin.js  | 10 ++++--
 .../app/views/common/widget/graph_widget_view.js   | 39 +++++++++++++---------
 .../views/common/widget/graph_widget_view_test.js  |  2 +-
 3 files changed, 32 insertions(+), 19 deletions(-)

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 aa4f77c..00ba552 100644
--- a/ambari-web/app/mixins/common/widgets/export_metrics_mixin.js
+++ b/ambari-web/app/mixins/common/widgets/export_metrics_mixin.js
@@ -63,14 +63,20 @@ App.ExportMetricsMixin = Em.Mixin.create({
     });
   },
 
+  getCustomFileName: function () {
+    return this.get('targetView').title.replace(/\s+/g, '_').toLowerCase();
+  },
+
   exportGraphDataSuccessCallback: function (response, request, params) {
     var seriesData = this.get('targetView').getData(response);
     if (!seriesData.length) {
       App.showAlertPopup(Em.I18n.t('graphs.noData.title'), Em.I18n.t('graphs.noData.tooltip.title'));
     } else {
       var fileType = params.isCSV ? 'csv' : 'json',
-        fileName = 'data.' + fileType,
-        data = params.isCSV ? this.prepareCSV(seriesData) : JSON.stringify(seriesData, this.jsonReplacer(), 4);
+          fileName = (Em.isEmpty(this.get('targetView') || Em.isEmpty(this.get('targetView').title)) ?
+          'data' : this.getCustomFileName()) + '.' + fileType,
+          data = params.isCSV ? this.prepareCSV(seriesData) : JSON.stringify(seriesData, this.jsonReplacer(), 4);
+
       fileUtils.downloadTextFile(data, fileType, fileName);
     }
   },
diff --git a/ambari-web/app/views/common/widget/graph_widget_view.js b/ambari-web/app/views/common/widget/graph_widget_view.js
index 324358e..c1b7020 100644
--- a/ambari-web/app/views/common/widget/graph_widget_view.js
+++ b/ambari-web/app/views/common/widget/graph_widget_view.js
@@ -364,21 +364,28 @@ App.GraphWidgetView = Em.View.extend(App.WidgetMixin, App.ExportMetricsMixin, {
     }.observes('parentView.data')
   }),
 
-  exportGraphData: function (event) {
-    this.set('isExportMenuHidden', true);
-    var data,
-      isCSV = !!event.context,
-      fileType = isCSV ? 'csv' : 'json',
-      fileName = 'data.' + fileType,
-      metrics = this.get('data'),
-      hasData = Em.isArray(metrics) && metrics.some(function (item) {
-        return Em.isArray(item.data);
-      });
-    if (hasData) {
-      data = isCSV ? this.prepareCSV(metrics) : JSON.stringify(metrics, this.jsonReplacer(), 4);
-      fileUtils.downloadTextFile(data, fileType, fileName);
-    } else {
-      App.showAlertPopup(Em.I18n.t('graphs.noData.title'), Em.I18n.t('graphs.noData.tooltip.title'));
+    getCustomFileName: function () {
+        // get current service name if it exists.
+        var currentServiceName = Em.isEmpty(this.get('controller.content.serviceName')) ? "" : this.get('controller.content.serviceName') + '_';
+        // serviceName_widgetName_metricName
+        return (currentServiceName + this.get('content.widgetName').replace(/\s+/g, '_')).toLowerCase();
+    },
+
+    exportGraphData: function (event) {
+        this.set('isExportMenuHidden', true);
+        var data,
+            isCSV = !!event.context,
+            fileType = isCSV ? 'csv' : 'json',
+            fileName = (Em.isEmpty(this.get('content.widgetName')) ? 'data' : this.getCustomFileName()) + '.' + fileType,
+            metrics = this.get('data'),
+            hasData = Em.isArray(metrics) && metrics.some(function (item) {
+                return Em.isArray(item.data);
+            });
+        if (hasData) {
+            data = isCSV ? this.prepareCSV(metrics) : JSON.stringify(metrics, this.jsonReplacer(), 4);
+            fileUtils.downloadTextFile(data, fileType, fileName);
+        } else {
+            App.showAlertPopup(Em.I18n.t('graphs.noData.title'), Em.I18n.t('graphs.noData.tooltip.title'));
+        }
     }
-  }
 });
diff --git a/ambari-web/test/views/common/widget/graph_widget_view_test.js b/ambari-web/test/views/common/widget/graph_widget_view_test.js
index 3a35fd8..5a12cd1 100644
--- a/ambari-web/test/views/common/widget/graph_widget_view_test.js
+++ b/ambari-web/test/views/common/widget/graph_widget_view_test.js
@@ -815,4 +815,4 @@ describe('App.GraphWidgetView', function () {
     //  });
     //});
   });
-});
\ No newline at end of file
+});