Explorar el Código

HUE-7614 [dashboard] Enable drag'n'drop from assist

Enrico Berti hace 8 años
padre
commit
7186260781

+ 8 - 5
desktop/libs/dashboard/src/dashboard/static/dashboard/js/search.ko.js

@@ -930,7 +930,7 @@ var Collection = function (vm, collection) {
     return null;
   }
 
-  self.addFacet = function (facet_json) {
+  self.addFacet = function (facet_json, callback) {
     self.removeFacet(function(){return facet_json.widget_id});
     hueAnalytics.log('dashboard', 'add_facet/' + facet_json.widgetType);
 
@@ -951,6 +951,9 @@ var Collection = function (vm, collection) {
         } else {
           $(document).trigger("error", data.message);
         }
+        if (callback) {
+          callback();
+        }
     }).fail(function (xhr, textStatus, errorThrown) {});
   };
 
@@ -1068,10 +1071,10 @@ var Collection = function (vm, collection) {
   }
 
   self.dropOnWidget = function (id) {
-    if (vm.isEditing() && vm.lastDraggedMeta() && vm.lastDraggedMeta().type === 'solr') {
+    if (vm.isEditing() && vm.lastDraggedMeta() && vm.lastDraggedMeta().type === 'sql' && vm.lastDraggedMeta().column  && self.template.availableWidgetFieldsNames().indexOf(vm.lastDraggedMeta().column) > -1) {
       var facet = self.getFacetById(id);
       if (facet && facet.properties && facet.properties.facets_form) {
-        facet.properties.facets_form.field(vm.lastDraggedMeta().field());
+        facet.properties.facets_form.field(vm.lastDraggedMeta().column);
       }
       if (self.supportAnalytics()) {
         self.addPivotFacetValue2(facet);
@@ -1084,7 +1087,7 @@ var Collection = function (vm, collection) {
   }
 
   self.dropOnEmpty = function (column, atBeginning) {
-    if (vm.isEditing() && vm.lastDraggedMeta() && vm.lastDraggedMeta().type === 'solr') {
+    if (vm.isEditing() && vm.lastDraggedMeta() && vm.lastDraggedMeta().type === 'sql' && vm.lastDraggedMeta().column  && self.template.availableWidgetFieldsNames().indexOf(vm.lastDraggedMeta().column) > -1) {
       var row = column.addEmptyRow(atBeginning);
       if (self.supportAnalytics()) {
         row.addWidget(vm.draggableBucket());
@@ -1094,7 +1097,7 @@ var Collection = function (vm, collection) {
       }
       var widget = row.widgets()[0];
       self.addFacet({
-        'name': vm.lastDraggedMeta().field(),
+        'name': vm.lastDraggedMeta().column,
         'widget_id': widget.id(),
         'widgetType': widget.widgetType()
       });

+ 47 - 24
desktop/libs/dashboard/src/dashboard/templates/common_search.mako

@@ -3902,51 +3902,74 @@ $(document).ready(function () {
   %if USE_GRIDSTER.get():
   var selectedGridster = null;
   function showAddFacetDemiModal(widget, gridsterTarget) {
-    var fakeRow = searchViewModel.columns()[0].addEmptyRow(true);
-    fakeRow.addWidget(widget);
     selectedGridster = gridsterTarget;
+    if (widget && widget.id) {
+      var fakeRow = searchViewModel.columns()[0].addEmptyRow(true);
+      fakeRow.addWidget(widget);
 
-    if (["resultset-widget", "html-resultset-widget", "filter-widget", "leafletmap-widget"].indexOf(widget.widgetType()) == -1) {
-      searchViewModel.collection.template.fieldsModalFilter("");
-      searchViewModel.collection.template.fieldsModalType(widget.widgetType());
+      if (["resultset-widget", "html-resultset-widget", "filter-widget", "leafletmap-widget"].indexOf(widget.widgetType()) == -1) {
+        searchViewModel.collection.template.fieldsModalFilter("");
+        searchViewModel.collection.template.fieldsModalType(widget.widgetType());
 
-      selectedWidget = widget;
+        selectedWidget = widget;
 
-      if (searchViewModel.collection.template.availableWidgetFields().length == 1){
-        addFacetDemiModalFieldPreview(searchViewModel.collection.template.availableWidgetFields()[0]);
+        if (searchViewModel.collection.template.availableWidgetFields().length == 1) {
+          addFacetDemiModalFieldPreview(searchViewModel.collection.template.availableWidgetFields()[0]);
+        }
+        else {
+          $('#addFacetInput').typeahead({
+            'source': searchViewModel.collection.template.availableWidgetFieldsNames(),
+            'updater': function (item) {
+              addFacetDemiModalFieldPreview({
+                'name': function () {
+                  return item
+                }
+              });
+              return item;
+            }
+          });
+          $("#addFacetDemiModal").modal("show");
+          $("#addFacetDemiModal input[type='text']").focus();
+        }
       }
       else {
-        $('#addFacetInput').typeahead({
-          'source': searchViewModel.collection.template.availableWidgetFieldsNames(),
-          'updater': function (item) {
-            addFacetDemiModalFieldPreview({'name': function () {
-              return item
-            }});
-            return item;
-          }
-        });
-        $("#addFacetDemiModal").modal("show");
-        $("#addFacetDemiModal input[type='text']").focus();
+        huePubSub.publish('gridster.add.widget', {id: widget.id(), target: gridsterTarget});
       }
     }
-    else {
-      huePubSub.publish('gridster.add.widget', { id: widget.id(), target: gridsterTarget });
+    else if (searchViewModel.lastDraggedMeta() && searchViewModel.lastDraggedMeta().type === 'sql' && searchViewModel.lastDraggedMeta().column && searchViewModel.collection.template.availableWidgetFieldsNames().indexOf(searchViewModel.lastDraggedMeta().column) > -1) {
+      if (searchViewModel.collection.supportAnalytics()) {
+        selectedWidget = searchViewModel.draggableTextFacet();
+      }
+      else {
+        selectedWidget = searchViewModel.draggableFacet();
+      }
+      var fakeRow = searchViewModel.columns()[0].addEmptyRow(true);
+      fakeRow.addWidget(selectedWidget);
+      addFacetDemiModalFieldPreview({
+        'name': function () {
+          return searchViewModel.lastDraggedMeta().column
+        }
+      });
     }
   }
 
-
   function addFacetDemiModalFieldPreview(field) {
     var _existingFacet = searchViewModel.collection.getFacetById(selectedWidget.id());
     if (selectedWidget != null) {
       selectedWidget.hasBeenSelected = true;
       selectedWidget.isLoading(true);
-      searchViewModel.collection.addFacet({'name': field.name(), 'widget_id': selectedWidget.id(), 'widgetType': selectedWidget.widgetType()});
+      searchViewModel.collection.addFacet({
+        'name': field.name(),
+        'widget_id': selectedWidget.id(),
+        'widgetType': selectedWidget.widgetType()
+      }, function () {
+        huePubSub.publish('gridster.add.widget', {id: selectedWidget.id(), target: selectedGridster});
+      });
       if (_existingFacet != null) {
         _existingFacet.label(field.name());
         _existingFacet.field(field.name());
       }
       $("#addFacetDemiModal").modal("hide");
-      huePubSub.publish('gridster.add.widget', { id: selectedWidget.id(), target: selectedGridster });
     }
   }
   %else: