Ver Fonte

AMBARI-20228. HiveView 2.0 : After download CSV, the pop-up persists (pallavkul)

pallavkul há 8 anos atrás
pai
commit
2081ca0fa7

+ 40 - 3
contrib/views/hive20/src/main/resources/ui/app/adapters/job.js

@@ -26,12 +26,49 @@ export default ApplicationAdapter.extend({
 
   getQuery(job) {
     let queryUrl = this.buildURL() + "/file" + encodeURI(job.get('queryFile'));
-    console.log(queryUrl);
   },
 
   saveToHDFS(jobId, path){
-    let resultUrl = this.urlForFindRecord(jobId, 'job') + "/results/csv/saveToHDFS?commence=true&file=" + path + ".csv";
-    return this.ajax(resultUrl, 'GET');
+    let url = this.urlForFindRecord(jobId, 'job') + "/results/csv/saveToHDFS?commence=true&file=" + path + ".csv";
+
+    return new Ember.RSVP.Promise((resolve, reject) => {
+      this.ajax(url).then((response) => {
+        if (response.status.toLowerCase() !== "TERMINATED".toLowerCase()) {
+          this.pollSaveToHDFS(response).then( (response) => {
+            resolve(response);
+          },  (error) => {
+            reject(error);
+          });
+        } else {
+          resolve(response);
+        }
+      }, (error) => {
+        reject(error);
+      });
+    })
+
+  },
+
+  pollSaveToHDFS: function (data) {
+    let url = this.urlForFindRecord(data.jobId, 'job') + "/results/csv/saveToHDFS";
+
+    return new Ember.RSVP.Promise((resolve, reject) => {
+
+      this.ajax(url).then( (response) => {
+        if (response.status.toLowerCase() !== "TERMINATED".toLowerCase()) {
+          Ember.run.later( () => {
+            this.pollSaveToHDFS(response)
+              .then((data) => { resolve(data)}, (error) => {
+                reject(error);
+              });
+          }, 2000);
+        } else {
+            resolve(response);
+        }
+      }, (error) => {
+        reject(error);
+      });
+    });
   },
 
   downloadAsCsv(jobId, path){

+ 0 - 39
contrib/views/hive20/src/main/resources/ui/app/routes/queries/query.js

@@ -530,45 +530,6 @@ export default Ember.Route.extend(UILoggerMixin, {
       this.get('controller').set('showWorksheetModal', false);
     },
 
-    saveToHDFS(jobId, path){
-
-      console.log('saveToHDFS query route with jobId == ', jobId);
-      console.log('saveToHDFS query route with path == ', path);
-
-      this.get('query').saveToHDFS(jobId, path)
-        .then((data) => {
-          console.log('successfully saveToHDFS', data);
-          this.get('controller').set('isExportResultSuccessMessege', true);
-          this.get('controller').set('isExportResultFailureMessege', false);
-
-          Ember.run.later(() => {
-            this.get('controller').set('showSaveHdfsModal', false);
-          }, 2 * 1000);
-
-        }, (error) => {
-          console.log("Error encountered", error);
-          this.get('controller').set('isExportResultFailureMessege', true);
-          this.get('controller').set('isExportResultSuccessMessege', false);
-
-          Ember.run.later(() => {
-            this.get('controller').set('showSaveHdfsModal', false);
-          }, 2 * 1000);
-
-        });
-    },
-
-    downloadAsCsv(jobId, path){
-
-      console.log('downloadAsCsv query route with jobId == ', jobId);
-      console.log('downloadAsCsv query route with path == ', path);
-
-      let downloadAsCsvUrl = this.get('query').downloadAsCsv(jobId, path) || '';
-
-      this.get('controller').set('showDownloadCsvModal', false);
-      window.open(downloadAsCsvUrl);
-
-    },
-
     expandQueryEdidorPanel(){
       if(!this.get('isQueryEdidorPaneExpanded')){
         this.set('isQueryEdidorPaneExpanded', true);

+ 58 - 1
contrib/views/hive20/src/main/resources/ui/app/routes/queries/query/results.js

@@ -17,8 +17,9 @@
  */
 
 import Ember from 'ember';
+import UILoggerMixin from '../../../mixins/ui-logger';
 
-export default Ember.Route.extend({
+export default Ember.Route.extend(UILoggerMixin, {
 
   jobs: Ember.inject.service(),
   query: Ember.inject.service(),
@@ -44,7 +45,14 @@ export default Ember.Route.extend({
       this.controller.set('previousPage', model.get('previousPage'));
       this.controller.set('hasNext', model.get('hasNext'));
       this.controller.set('hasPrevious', model.get('hasPrevious'));
+
       this.controller.set('queryResult', model.get('queryResult'));
+      this.controller.set('isExportResultSuccessMessege', false);
+      this.controller.set('isExportResultFailureMessege', false);
+      this.controller.set('showSaveHdfsModal', false);
+      this.controller.set('showDownloadCsvModal', false);
+
+
       this.controller.set('hasJobAssociated', true);
     } else {
       this.controller.set('hasJobAssociated', false);
@@ -54,6 +62,55 @@ export default Ember.Route.extend({
 
   actions:{
 
+    saveToHDFS(jobId, path){
+
+      var self = this;
+
+      console.log('saveToHDFS query route with jobId == ', jobId);
+      console.log('saveToHDFS query route with path == ', path);
+
+      this.get('query').saveToHDFS(jobId, path)
+        .then((data) => {
+
+          console.log('successfully saveToHDFS', data);
+          this.get('controller').set('isExportResultSuccessMessege', true);
+          this.get('controller').set('isExportResultFailureMessege', false);
+
+          Ember.run.later(() => {
+            this.get('controller').set('showSaveHdfsModal', false);
+            this.get('logger').success('Successfully Saved to HDFS.');
+
+          }, 2 * 1000);
+
+        }, (error) => {
+
+          console.log("Error encountered", error);
+          this.get('controller').set('isExportResultFailureMessege', true);
+          this.get('controller').set('isExportResultSuccessMessege', false);
+
+          Ember.run.later(() => {
+            this.get('controller').set('showSaveHdfsModal', false);
+            this.get('logger').danger('Failed to save to HDFS.', this.extractError(error));
+          }, 2 * 1000);
+
+
+        });
+    },
+
+
+    downloadAsCsv(jobId, path){
+
+      console.log('downloadAsCsv query route with jobId == ', jobId);
+      console.log('downloadAsCsv query route with path == ', path);
+
+      let downloadAsCsvUrl = this.get('query').downloadAsCsv(jobId, path) || '';
+
+      this.get('controller').set('showDownloadCsvModal', false);
+      this.get('logger').success('Successfully downloaded as CSV.');
+      window.open(downloadAsCsvUrl);
+
+    },
+
   }
 
 });

+ 1 - 8
contrib/views/hive20/src/main/resources/ui/app/services/query.js

@@ -43,14 +43,7 @@ export default Ember.Service.extend({
   },
 
   saveToHDFS(jobId, path){
-    let self = this;
-    return new Promise( (resolve, reject) => {
-      this.get('store').adapterFor('job').saveToHDFS(jobId, path).then(function(data) {
-        resolve(data);
-      }, function(err) {
-          reject(err);
-      });
-    });
+    return this.get('store').adapterFor('job').saveToHDFS(jobId, path);
   },
 
   downloadAsCsv(jobId, path){

+ 4 - 3
contrib/views/hive20/src/main/resources/ui/app/templates/queries/query/results.hbs

@@ -39,9 +39,10 @@
   saveToHDFS='saveToHDFS'
   downloadAsCsv='downloadAsCsv'
   expandQueryResultPanel='expandQueryResultPanel'
-  isExportResultSuccessMessege=false
-  isExportResultFailureMessege=false
-  showSaveHdfsModal=false
+  isExportResultSuccessMessege=isExportResultSuccessMessege
+  isExportResultFailureMessege=isExportResultFailureMessege
+  showSaveHdfsModal=showSaveHdfsModal
+  showDownloadCsvModal=showDownloadCsvModal
   }}
 {{/if}}