瀏覽代碼

HUE-5779 [importer] Fields in id list not updated when Creating Kudu table

Enrico Berti 8 年之前
父節點
當前提交
5906498dd9

+ 30 - 0
desktop/core/src/desktop/static/desktop/js/ko.selectize.js

@@ -72,6 +72,22 @@ ko.bindingHandlers.selectize = {
       })
     }
 
+    if (allBindingsAccessor.get('innerSubscriber')) {
+      valueAccessor()().forEach(function (item) {
+        var previousValue;
+        item[allBindingsAccessor.get('innerSubscriber')].subscribe(function (oldValue) {
+          previousValue = oldValue;
+        }, null, 'beforeChange');
+        item[allBindingsAccessor.get('innerSubscriber')].subscribe(function (newValue) {
+          var newOption = {};
+          newOption[options.valueField] = newValue;
+          newOption[options.labelField] = newValue;
+          $select.updateOption(previousValue, newOption);
+          $select.refreshOptions(false);
+        });
+      });
+    }
+
     if (typeof allBindingsAccessor.get('selectedOptions') == 'function') {
       allBindingsAccessor.get('selectedOptions').subscribe(function (new_val) {
         // Removing items which are not in new value
@@ -138,6 +154,20 @@ ko.bindingHandlers.selectize = {
           newOption[options.labelField] = optionLabel;
 
           $select.addOption(newOption);
+
+          if (allBindingsAccessor.get('innerSubscriber')) {
+            var previousValue;
+            item[allBindingsAccessor.get('innerSubscriber')].subscribe(function (oldValue) {
+              previousValue = oldValue;
+            }, null, 'beforeChange');
+            item[allBindingsAccessor.get('innerSubscriber')].subscribe(function (newValue) {
+              var newOption = {};
+              newOption[options.valueField] = newValue;
+              newOption[options.labelField] = newValue;
+              $select.updateOption(previousValue, newOption);
+              $select.refreshOptions(false);
+            });
+          }
         });
 
       }, null, "arrayChange");

+ 1 - 1
desktop/libs/indexer/src/indexer/templates/importer.mako

@@ -589,7 +589,7 @@ ${ assist.assistPanel() }
             <div class="control-group" data-bind="visible: tableFormat() == 'kudu'">
               <label for="kuduPks" class="control-label"><div>${ _('Primary keys') }</div>
                 ## At least one selected
-                <select id="kuduPks" data-bind="selectize: columns, selectedOptions: primaryKeys, selectedObjects: primaryKeyObjects, optionsValue: 'name', optionsText: 'name'" size="3" multiple="true"></select>
+                <select id="kuduPks" data-bind="selectize: columns, selectedOptions: primaryKeys, selectedObjects: primaryKeyObjects, optionsValue: 'name', optionsText: 'name', innerSubscriber: 'name'" size="3" multiple="true"></select>
               </label>
             </div>