Browse Source

HUE-8298 [kafka] TotalStorage the current topic schema

Romain Rigaux 7 years ago
parent
commit
93e4e957e1

+ 11 - 3
desktop/libs/indexer/src/indexer/templates/importer.mako

@@ -355,10 +355,10 @@ ${ assist.assistPanel() }
                   ##  <input type="text" class="input-xxlarge" data-bind="value: createWizard.source.kafkaFieldType">
                   ##</label>
                   <label class="control-label"><div>${ _('Type') }</div>
-                    <select class="input-small" data-bind="options: ['delimited', 'bitarray'], value: createWizard.source.kafkaFieldType"></select>
+                    <select class="input-medium" data-bind="options: ['delimited', 'bitarray'], value: createWizard.source.kafkaFieldType"></select>
                   </label>
                   <label class="control-label"><div>${ _('Delimiter') }</div>
-                    <input type="text" class="input-small" data-bind="value: createWizard.source.kafkaFieldDelimiter">
+                    <input type="text" class="input-xsmall" data-bind="value: createWizard.source.kafkaFieldDelimiter">
                   </label>
 
                   <label class="control-label"><div>${ _('Field names') }</div>
@@ -1570,17 +1570,25 @@ ${ assist.assistPanel() }
       self.streamSelection = ko.observable(self.publicStreams()[0]['value']);
 
       self.kafkaTopics = ko.observableArray();
-      self.kafkaSelectedTopics = ko.observable('');
+      self.kafkaSelectedTopics = ko.observable(''); // Currently designed just for one
       self.kafkaSelectedTopics.subscribe(function(newValue) {
         if (newValue) {
           viewModel.createWizard.guessFieldTypes();
+          self.kafkaFieldNames($.totalStorage('pai' + '_kafka_topics_' + newValue + '_kafkaFieldNames'));
+          self.kafkaFieldTypes($.totalStorage('pai' + '_kafka_topics_' + newValue + '_kafkaFieldTypes'));
         }
       });
       self.kafkaSchemaManual = ko.observable('manual');
       self.kafkaFieldType = ko.observable('delimited');
       self.kafkaFieldDelimiter = ko.observable(',');
       self.kafkaFieldNames = ko.observable('');
+      self.kafkaFieldNames.subscribe(function(newValue) {
+        $.totalStorage('pai' + '_kafka_topics_' + self.kafkaSelectedTopics() + '_kafkaFieldNames', newValue);
+      });
       self.kafkaFieldTypes = ko.observable('');
+      self.kafkaFieldTypes.subscribe(function(newValue) {
+        $.totalStorage('pai' + '_kafka_topics_' + self.kafkaSelectedTopics() + '_kafkaFieldTypes', newValue)
+      });
       self.kafkaFieldSchemaPath = ko.observable('');
 
       self.streamUsername = ko.observable('');

+ 13 - 2
desktop/libs/indexer/src/indexer/templates/topics.mako

@@ -328,10 +328,10 @@ ${ assist.assistPanel() }
         <select class="input-medium" data-bind="options: ['delimited', 'bitarray'], value: 'delimited'"></select>
       </label>
       <label class="control-label"><div>${ _('Field names') }</div>
-        <input type="text" class="input-xxlarge" placeholder="${ _('The list of fields to consume, e.g. orders,returns') }">
+        <input type="text" class="input-xxlarge" data-bind="value: kafkaFieldNames" placeholder="${ _('The list of fields to consume, e.g. orders,returns') }">
       </label>
       <label class="control-label"><div>${ _('Field types') }</div>
-        <input type="text" class="input-xxlarge" placeholder="${ _('The list of field typs, e.g. string,int') }">
+        <input type="text" class="input-xxlarge" data-bind="value: kafkaFieldTypes" placeholder="${ _('The list of field typs, e.g. string,int') }">
       </label>
     </div>
   </div>
@@ -486,6 +486,17 @@ ${ assist.assistPanel() }
         return returned;
       });
 
+      // Should come from Kafka Schema or ZooKeeper
+      var userPrefix = 'pai';
+      self.kafkaFieldNames = ko.observable($.totalStorage(userPrefix + '_kafka_topics_' + self.name() + '_kafkaFieldNames'));
+      self.kafkaFieldNames.subscribe(function(newValue) {
+        $.totalStorage(userPrefix + '_kafka_topics_' + self.name() + '_kafkaFieldNames', newValue);
+      });
+      self.kafkaFieldTypes = ko.observable($.totalStorage(userPrefix + '_kafka_topics_' + self.name() + '_kafkaFieldTypes'));
+      self.kafkaFieldTypes.subscribe(function(newValue) {
+        $.totalStorage(userPrefix + '_kafka_topics_' + self.name() + '_kafkaFieldTypes', newValue)
+      });
+
       self.sample = ko.observableArray();
       self.samplePreview = ko.pureComputed(function () {
         return self.sample().slice(0, 5)