Просмотр исходного кода

HUE-8441 [report] Connect document picker demi modal to new facet

Enrico Berti 7 лет назад
Родитель
Сommit
ff9cdf8e30

+ 14 - 29
desktop/libs/dashboard/src/dashboard/static/dashboard/js/search.ko.js

@@ -855,35 +855,6 @@ var Collection = function (vm, collection) {
       });
     }
 
-    facet.properties.parsedStatements = ko.observableArray([]);
-    facet.properties.selectedStatement = ko.observable();
-    facet.properties.selectedStatement.subscribe(function(val){
-      if (val) {
-        facet.properties.statement(val);
-        vm.search();
-      }
-    });
-
-    if (facet.properties.uuid) {
-      facet.properties.uuid.subscribe(function(val){
-        $.get('/desktop/api2/doc/', {
-          uuid: val,
-          data: true,
-          dependencies: true
-        }, function (data) {
-          if (data && data.data && data.data.snippets.length > 0) {
-            var snippet = data.data.snippets[0];
-            facet.properties.parsedStatements(sqlStatementsParser.parse(snippet.statement));
-            facet.template.chartSettings.chartType(snippet.chartType);
-            facet.template.chartSettings.chartX(snippet.chartX);
-            facet.template.chartSettings.chartYSingle(snippet.chartYSingle);
-            facet.template.chartSettings.chartYMulti(snippet.chartYMulti);
-            facet.properties.selectedStatement(facet.properties.parsedStatements()[0].statement);
-          }
-        });
-      });
-    }
-
     // For Solr 5+  only
     if (typeof facet.template != 'undefined') {
       facet.template.filteredAttributeFields = ko.computed(function () { // Dup of template.filteredAttributeFields
@@ -2022,11 +1993,13 @@ var RANGE_SELECTABLE_WIDGETS = ['histogram-widget', 'bar-widget', 'line-widget']
 var TempDocument = function () {
   var self = this;
 
+  self.name = ko.observable('');
   self.uuid = ko.observable();
   self.uuid.subscribe(function (val) {
     if (val) {
       ApiHelper.getInstance().fetchDocument({ uuid: val, silenceErrors: false, fetchContents: true }).done(function (data) {
         if (data && data.data && data.data.snippets.length > 0) {
+          self.name(data.document.name);
           var snippet = data.data.snippets[0];
           self.parsedStatements(sqlStatementsParser.parse(snippet.statement));
           self.selectedStatement(self.parsedStatements()[0].statement);
@@ -2037,11 +2010,23 @@ var TempDocument = function () {
 
   self.parsedStatements = ko.observableArray([]);
   self.selectedStatement = ko.observable();
+  self.selectedStatement.subscribe(function (val) {
+    if (self.parsedStatements().length) {
+      for (var i = 0; i < self.parsedStatements().length; i++) {
+        if (self.parsedStatements()[i].statement === val) {
+          self.selectedStatementId(i);
+        }
+      }
+    }
+  });
+  self.selectedStatementId = ko.observable();
 
   self.reset = function () {
+    self.name('');
     self.uuid('');
     self.parsedStatements([]);
     self.selectedStatement('');
+    self.selectedStatementId('');
   }
 }
 

+ 22 - 12
desktop/libs/dashboard/src/dashboard/templates/common_search.mako

@@ -1826,17 +1826,6 @@ ${ dashboard.layout_skeleton(suffix='search') }
 
     <!-- ko with: $root.collection.getFacetById($parent.id()) -->
     <div>
-      <!-- ko if: properties.parsedStatements && properties.parsedStatements().length > 1 -->
-      <div class="selectize-wrapper query-chooser">
-        <select placeholder="${ _('Available statements') }" data-bind="selectize: properties.parsedStatements, optionsText: 'statement', optionsValue: 'statement', value: properties.selectedStatement"></select>
-      </div>
-      <!-- /ko -->
-      <div class="selectize-wrapper query-chooser">
-        <select placeholder="${ _('Search your queries...') }" data-bind="documentChooser: { value: properties.uuid, type: 'impala' }"></select>
-      </div>
-      <div class="clearfix"></div>
-    </div>
-    <div>
 
 ##       <input type="text" class="input-medium" data-bind="value: properties.engine"/>
 ##       <textarea data-bind="value: properties.statement"></textarea>
@@ -4996,7 +4985,28 @@ $(document).ready(function () {
 
   huePubSub.subscribe('dashboard.confirm.document', function () {
     $('#addDocumentFacetDemiModal').modal('hide');
-    console.log('Selected document', searchViewModel.tempDocument.uuid(), 'statement', searchViewModel.tempDocument.selectedStatement());
+    if (selectedWidget != null) {
+      searchViewModel.collection.selectedDocument({
+        uuid: searchViewModel.tempDocument.uuid(),
+        statement_id: searchViewModel.tempDocument.selectedStatementId(),
+        statement: searchViewModel.tempDocument.selectedStatement()
+      });
+      selectedWidget.hasBeenSelected = true;
+      selectedWidget.isLoading(true);
+      searchViewModel.collection.addFacet({
+        'name': searchViewModel.tempDocument.name() ? searchViewModel.tempDocument.name() : 'Query',
+        'widget_id': selectedWidget.id(),
+        'widgetType': selectedWidget.widgetType()
+      }, function () {
+        if (searchViewModel.isGridster()) {
+          huePubSub.publish('gridster.add.widget', {id: selectedWidget.id(), target: selectedGridster});
+        }
+      });
+      if (!searchViewModel.isGridster() && selectedRow != null) {
+        distributeRowWidgetsSize(selectedRow);
+      }
+    }
+
     searchViewModel.tempDocument.reset();
   }, 'dashboard');