浏览代码

HUE-4116 [editor] ChangeTracker now works in hybrid mode

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

+ 1 - 1
apps/oozie/src/oozie/static/oozie/js/bundle-editor.ko.js

@@ -26,7 +26,7 @@ var Bundle = function (vm, bundle) {
   self.coordinators = ko.mapping.fromJS(typeof bundle.coordinators != "undefined" && bundle.coordinators != null ? bundle.coordinators : []);
   self.properties = ko.mapping.fromJS(typeof bundle.properties != "undefined" && bundle.properties != null ? bundle.properties : {});
 
-  self.tracker = new ChangeTracker(self);  // from ko.common-dashboard.js
+  self.tracker = new ChangeTracker(self, ko);  // from ko.common-dashboard.js
 
   self.isDirty = ko.computed(function () {
     return self.tracker().somethingHasChanged();

+ 3 - 9
apps/oozie/src/oozie/static/oozie/js/coordinator-editor.ko.js

@@ -41,14 +41,10 @@ var Coordinator = function (vm, coordinator) {
   self.showAdvancedFrequencyUI = ko.observable(typeof coordinator.showAdvancedFrequencyUI != "undefined" && coordinator.showAdvancedFrequencyUI != null ? coordinator.showAdvancedFrequencyUI : false);
   self.workflowParameters = ko.mapping.fromJS(typeof coordinator.workflowParameters != "undefined" && coordinator.workflowParameters != null ? coordinator.workflowParameters : []);
 
-  self.tracker = null;
-
-  if (typeof ChangeTracker !== 'undefined'){
-    self.tracker = new ChangeTracker(self);
-  }
+  self.tracker = new ChangeTracker(self, ko);
 
   self.isDirty = ko.computed(function () {
-    return self.tracker != null ? self.tracker().somethingHasChanged() : false;
+    return self.tracker().somethingHasChanged();
   });
 
   self._get_parameter = function (name) {
@@ -228,9 +224,7 @@ var CoordinatorEditorViewModel = function (coordinator_json, credentials_json, w
       }, function (data) {
         if (data.status == 0) {
           self.coordinator.id(data.id);
-          if (self.coordinator.tracker != null){
-            self.coordinator.tracker().markCurrentStateAsClean();
-          }
+          self.coordinator.tracker().markCurrentStateAsClean();
           if (cb) {
             cb(data);
           } else {

+ 1 - 1
apps/oozie/src/oozie/static/oozie/js/workflow-editor.ko.js

@@ -176,7 +176,7 @@ var Workflow = function (vm, workflow) {
   self.uuid = ko.observable(typeof workflow.uuid != "undefined" && workflow.uuid != null ? workflow.uuid : UUID());
   self.name = ko.observable(typeof workflow.name != "undefined" && workflow.name != null ? workflow.name : "");
 
-  self.tracker = new ChangeTracker(self); // from ko.common-dashboard.js
+  self.tracker = new ChangeTracker(self, ko); // from ko.common-dashboard.js
 
   self.isDirty = ko.computed(function () {
     return self.tracker().somethingHasChanged();

+ 4 - 4
desktop/core/src/desktop/static/desktop/js/ko.common-dashboard.js

@@ -285,15 +285,15 @@ function setLayout(colSizes, vm) {
   $(document).trigger("setLayout");
 }
 
-function ChangeTracker(objectToTrack, hashFunction) {
-  hashFunction = hashFunction || ko.toJSON;
+function ChangeTracker(objectToTrack, ko) {
+  var hashFunction = ko.toJSON;
   var lastCleanState = ko.observable(hashFunction(objectToTrack));
 
   var result = {
-    somethingHasChanged: ko.dependentObservable(function () {
+    somethingHasChanged: ko.computed(function () {
       $(document).trigger("viewmodelHasChanged");
       return hashFunction(objectToTrack) != lastCleanState()
-    }),
+    }).extend({ rateLimit: 500 }),
     markCurrentStateAsClean: function () {
       lastCleanState(hashFunction(objectToTrack));
     }

+ 1 - 1
desktop/libs/notebook/src/notebook/static/notebook/js/notebook.ko.js

@@ -1571,7 +1571,7 @@
         ko.applyBindings(self.schedulerViewModel, $("#schedulerEditor")[0]);
 
         self.schedulerViewModel.coordinator.properties.cron_advanced.valueHasMutated(); // Update jsCron enabled status
-        //self.schedulerViewModel.coordinator.tracker().markCurrentStateAsClean();
+        self.schedulerViewModel.coordinator.tracker().markCurrentStateAsClean();
       }).fail(function (xhr) {
         $(document).trigger("error", xhr.responseText);
       });

+ 2 - 0
desktop/libs/notebook/src/notebook/templates/editor_components.mako

@@ -160,6 +160,8 @@ from notebook.conf import ENABLE_QUERY_BUILDER, ENABLE_QUERY_SCHEDULING
 ## <script src="${ static('desktop/js/jqCron.js') }" type="text/javascript"></script>
 <script src="${ static('desktop/ext/js/moment-timezone-with-data.min.js') }" type="text/javascript" charset="utf-8"></script>
 <script src="${ static('desktop/ext/js/tzdetect.js') }" type="text/javascript" charset="utf-8"></script>
+
+<script src="${ static('desktop/js/ko.common-dashboard.js') }" type="text/javascript" charset="utf-8"></script>
 ## <script src="${ static('oozie/js/coordinator-editor.ko.js') }" type="text/javascript" charset="utf-8"></script>
 ## <script src="${ static('oozie/js/editor2-utils.js') }" type="text/javascript" charset="utf-8"></script>