Parcourir la source

AMBARI-4801. Jobs and Job pages should refresh in background every 6s. (alexantonenko)

Alex Antonenko il y a 11 ans
Parent
commit
44619ac774

+ 7 - 6
ambari-web/app/controllers/main/jobs/hive_job_details_controller.js

@@ -24,23 +24,24 @@ App.MainHiveJobDetailsController = Em.Controller.extend({
   content : null,
   loaded : false,
   loadTimeout: null,
+  job: null,
 
-  loadJobDetails : function(job) {
+  loadJobDetails : function() {
     var self = this;
     var timeout = this.get('loadTimeout');
     var yarnService = App.YARNService.find().objectAt(0);
     if (yarnService != null) {
-      var self = this;
-      this.set('loaded', false);
-      if (job != null) {
-        jobsUtils.refreshJobDetails(job, function() {
+      var content = this.get('content');
+      if (content != null) {
+        jobsUtils.refreshJobDetails(content, function() {
+          self.set('content', self.get('job'));
           self.set('loaded', true);
         });
       }
     }else{
       clearTimeout(timeout);
       timeout = setTimeout(function(){
-        self.loadJobDetails(job);
+        self.loadJobDetails();
       }, 300);
     }
   },

+ 11 - 0
ambari-web/app/controllers/main/jobs_controller.js

@@ -27,6 +27,17 @@ App.MainJobsController = Em.ArrayController.extend({
   loaded : false,
   loading : false,
   loadJobsTimeout: null,
+  jobsUpdateInterval: 6000,
+  jobsUpdate: null,
+
+  updateJobs: function (controllerName, funcName) {
+    clearInterval(this.get('jobsUpdate'));
+    var self = this;
+    var interval = setInterval(function () {
+      App.router.get(controllerName)[funcName]();
+    }, this.jobsUpdateInterval);
+    this.set('jobsUpdate', interval);
+  },
 
   totalOfJobs: 0,
   setTotalOfJobs: function () {

+ 7 - 2
ambari-web/app/routes/main.js

@@ -126,6 +126,9 @@ module.exports = Em.Route.extend({
         });
       }
     },
+    exit: function(router) {
+      clearInterval(router.get('mainJobsController').jobsUpdate);
+    },
     index: Ember.Route.extend({
       route: '/',
       connectOutlets : function(router) {
@@ -135,6 +138,7 @@ module.exports = Em.Route.extend({
           });
         } else {
           router.get('mainJobsController').loadJobs();
+          router.get('mainJobsController').updateJobs('mainJobsController', 'refreshLoadedJobs');
           router.get('mainController').connectOutlet('mainJobs');
         }
       }
@@ -143,8 +147,9 @@ module.exports = Em.Route.extend({
       route : '/:job_id',
       connectOutlets : function(router, job) {
         if (job) {
-          router.get('mainHiveJobDetailsController').loadJobDetails(job);
-          router.get('mainController').connectOutlet('mainHiveJobDetails');
+          router.get('mainController').connectOutlet('mainHiveJobDetails', job);
+          router.get('mainHiveJobDetailsController').loadJobDetails();
+          router.get('mainJobsController').updateJobs('mainHiveJobDetailsController', 'loadJobDetails');
         }
       }
     }),

+ 1 - 1
ambari-web/app/utils/jobs.js

@@ -52,7 +52,7 @@ module.exports = {
       complete : function(jqXHR, textStatus) {
         // Now get the Tez DAG ID from the DAG name
         var hiveRecord = App.HiveJob.find(hiveJobId);
-        App.router.get('mainHiveJobDetailsController').set('content', hiveRecord);
+        App.router.get('mainHiveJobDetailsController').set('job', hiveRecord);
         var tezDagName = hiveRecord.get('tezDag.name');
         if (tezDagName != null) {
           var sender = {