Browse Source

HUE-8547 [jb] Fix refresh on coordinator page.

jdesjean 7 years ago
parent
commit
66fe27b59b

+ 2 - 1
apps/jobbrowser/src/jobbrowser/templates/job_browser.mako

@@ -2294,7 +2294,8 @@ ${ commonheader("Job Browser", "jobbrowser", user, request) | n,unicode }
         if (vm.job() == self && self.apiStatus() == 'RUNNING') {
           lastFetchJobRequest = self._fetchJob(function (data) {
             if (vm.job().type() == 'schedule') {
-              vm.job(new Job(vm, data.app)); // Updates everything but redraw the page
+              window.hueUtils.deleteAllEmptyStringKey(data.app); // It's preferable for our backend to return empty strings for various values in order to initialize them, but they shouldn't overwrite any values that are currently set.
+              vm.job = ko.mapping.fromJS(data.app, {}, vm.job)
             } else {
               vm.job().fetchStatus();
               vm.job().fetchLogs(vm.job().logActive());

+ 20 - 0
desktop/core/src/desktop/static/desktop/js/hue.utils.js

@@ -474,6 +474,26 @@ window.hueUtils = window.hueUtils || (function () {
     return highLightedText;
   };
 
+  hueUtils.dfs = function(node, callback) {
+    if (!node || typeof(node) !== 'object') {
+      return;
+    }
+    Object.keys(node).forEach(function(key) {
+      callback(node, key);
+      hueUtils.dfs(node[key], callback);
+    });
+  };
+
+  hueUtils.deleteAllEmptyStringKey = function(node) {
+    var fDeleteEmptyStringKey = function (node, key) {
+      if (node[key] || typeof(node[key]) !== 'string') {
+        return;
+      }
+      delete node[key];
+    };
+    hueUtils.dfs(node, fDeleteEmptyStringKey);
+  };
+
   return hueUtils;
 
 })();