浏览代码

HUE-5127 [jb] Added observableDefault to KO

Enrico Berti 9 年之前
父节点
当前提交
6e49c81

+ 12 - 11
apps/jobbrowser/src/jobbrowser/templates/apps.mako

@@ -230,21 +230,22 @@ ${ commonheader("Job Browser", "jobbrowser", user, request) | n,unicode }
 
 
 <script type="text/javascript" charset="utf-8">
+
   (function () {
     var Job = function (vm, job) {
       var self = this;
 
-      self.id = ko.observable(typeof job.id != "undefined" && job.id != null ? job.id : null);
-      self.name = ko.observable(typeof job.name != "undefined" && job.name != null ? job.name : null);
-      self.type = ko.observable(typeof job.type != "undefined" && job.type != null ? job.type : null);
-      self.status = ko.observable(typeof job.status != "undefined" && job.status != null ? job.status : null);
-      self.user = ko.observable(typeof job.user != "undefined" && job.user != null ? job.user : null);
-      self.cluster = ko.observable(typeof job.cluster != "undefined" && job.cluster != null ? job.cluster : null);
-      self.progress = ko.observable(typeof job.progress != "undefined" && job.progress != null ? job.progress : null);
-      self.duration = ko.observable(typeof job.duration != "undefined" && job.duration != null ? job.duration : null);
-      self.submitted = ko.observable(typeof job.submitted != "undefined" && job.submitted != null ? job.submitted : null);
-
-      self.properties = ko.observable(typeof job.properties != "undefined" && job.properties != null ? job.properties : {});
+      self.id = ko.observableDefault(job.id);
+      self.name = ko.observableDefault(job.name);
+      self.type = ko.observableDefault(job.type);
+      self.status = ko.observableDefault(job.status);
+      self.user = ko.observableDefault(job.user);
+      self.cluster = ko.observableDefault(job.cluster);
+      self.progress = ko.observableDefault(job.progress);
+      self.duration = ko.observableDefault(job.duration);
+      self.submitted = ko.observableDefault(job.submitted);
+
+      self.properties = ko.observableDefault(job.properties, {});
       self.mainType = ko.observable(vm.interface());
 
       self.loadingJob = ko.observable(false);

+ 10 - 0
desktop/core/src/desktop/static/desktop/js/ko.hue-bindings.js

@@ -15,6 +15,16 @@
 // limitations under the License.
 
 (function () {
+  ko.observableDefault = function () {
+    var prop = arguments[0], defvalue = arguments[1] || null;
+    return ko.observable(typeof prop != "undefined" && prop != null ? prop : defvalue);
+  };
+
+  ko.observableArrayDefault = function () {
+    var prop = arguments[0], defvalue = arguments[1] || null;
+    return ko.observableArray(typeof prop != "undefined" && prop != null ? prop : defvalue);
+  };
+
   ko.bindingHandlers.autocomplete = {
     init: function (element, valueAccessor) {
       var options = valueAccessor();