浏览代码

HUE-4158 [oozie] Do not lose existing values when renaming variables

Romain Rigaux 9 年之前
父节点
当前提交
fcd1124
共有 1 个文件被更改,包括 27 次插入21 次删除
  1. 27 21
      desktop/libs/notebook/src/notebook/static/notebook/js/notebook.ko.js

+ 27 - 21
desktop/libs/notebook/src/notebook/static/notebook/js/notebook.ko.js

@@ -388,31 +388,37 @@
       var toDelete = [];
       var toAdd = [];
 
-      $.each(newVal, function (key, name) {
-        var match = ko.utils.arrayFirst(self.variables(), function (_var) {
-          return _var.name() == name;
+      if (newVal.length == self.variables().length) { // Just rename one of the variable
+        $.each(newVal, function(i, item) {
+          self.variables()[i].name(newVal[i]);
         });
-        if (!match) {
-          toAdd.push(name);
-        }
-      });
-      $.each(self.variables(), function (key, _var) {
-        var match = ko.utils.arrayFirst(newVal, function (name) {
-          return _var.name() == name;
+      } else {
+        $.each(newVal, function (key, name) {
+          var match = ko.utils.arrayFirst(self.variables(), function (_var) {
+            return _var.name() == name;
+          });
+          if (! match) {
+            toAdd.push(name);
+          }
+        });
+        $.each(self.variables(), function (key, _var) {
+          var match = ko.utils.arrayFirst(newVal, function (name) {
+            return _var.name() == name;
+          });
+          if (! match) {
+            toDelete.push(_var);
+          }
         });
-        if (!match) {
-          toDelete.push(_var);
-        }
-      });
 
-      $.each(toDelete, function (index, item) {
-        self.variables.remove(item);
-      });
-      $.each(toAdd, function (index, item) {
-        self.variables.push(ko.mapping.fromJS({'name': item, 'value': ''}));
-      });
+        $.each(toDelete, function (index, item) {
+          self.variables.remove(item);
+        });
+        $.each(toAdd, function (index, item) {
+          self.variables.push(ko.mapping.fromJS({'name': item, 'value': ''}));
+        });
+      }
 
-      if (toDelete.length > 0 || toAdd.length > 0) { // Only re-update observable when changed
+     if (toDelete.length > 0 || toAdd.length > 0) { // Only re-update observable when changed
         self.variables.sort(function (left, right) {
           var leftIndex = newVal.indexOf(left.name());
           var rightIndex = newVal.indexOf(right.name());