浏览代码

HUE-2017 [search] Warning that highlightning only works if documents have and id field

Remove the result data when switching between layouts
Happens when dropping a new HTML or Grid result widget
Romain Rigaux 11 年之前
父节点
当前提交
fe129690a3
共有 2 个文件被更改,包括 18 次插入7 次删除
  1. 13 3
      apps/search/src/search/templates/search.mako
  2. 5 4
      apps/search/static/js/search.ko.js

+ 13 - 3
apps/search/src/search/templates/search.mako

@@ -104,7 +104,7 @@ ${ commonheader(_('Search'), "search", user, "80px") | n,unicode }
     <div data-bind="css: { 'draggable-widget': true, 'disabled': !availableDraggableResultset() },
                     draggable: {data: draggableResultset(), isEnabled: availableDraggableResultset,
                     options: {'start': function(event, ui){lastWindowScrollPosition = $(window).scrollTop();$('.card-body').slideUp('fast');},
-                              'stop': function(event, ui){$('.card-body').slideDown('fast'); $root.collection.template.isGridLayout(true); }}}"
+                              'stop': function(event, ui){$('.card-body').slideDown('fast'); $root.collection.template.isGridLayout(true); checkResultHighlightingAvailability(); }}}"
          title="${_('Grid Results')}" rel="tooltip" data-placement="top">
          <a data-bind="style: { cursor: $root.availableDraggableResultset() ? 'move' : 'default' }">
                        <i class="fa fa-table"></i>
@@ -114,7 +114,13 @@ ${ commonheader(_('Search'), "search", user, "80px") | n,unicode }
                     draggable: {data: draggableHtmlResultset(),
                     isEnabled: availableDraggableResultset,
                     options: {'start': function(event, ui){lastWindowScrollPosition = $(window).scrollTop();$('.card-body').slideUp('fast');},
-                              'stop': function(event, ui){$('.card-body').slideDown('fast', function(){$(window).scrollTop(lastWindowScrollPosition)}); $root.collection.template.isGridLayout(false); }}}"
+                              'stop': function(event, ui){
+                                  $('.card-body').slideDown('fast', function(){$(window).scrollTop(lastWindowScrollPosition)});
+                                  $root.collection.template.isGridLayout(false);
+                                  checkResultHighlightingAvailability();
+                               }
+                             }
+                    }"
          title="${_('HTML Results')}" rel="tooltip" data-placement="top">
          <a data-bind="style: { cursor: $root.availableDraggableResultset() ? 'move' : 'default' }">
                        <i class="fa fa-code"></i>
@@ -2016,7 +2022,11 @@ $(document).ready(function () {
     }
   }
 
-
+  function checkResultHighlightingAvailability() {
+    if (! viewModel.collection.idField()) {
+      $(document).trigger("warn", "${ _('Result highlighting is unavailable: the collection does not have an index field') }");
+    }
+  }
 </script>
 
 

+ 5 - 4
apps/search/static/js/search.ko.js

@@ -218,9 +218,6 @@ var Query = function (vm, query) {
   });
 
   self.selectedMultiq = ko.observable('query');
-  self.selectedMultiq.subscribe(function () {
-    vm.search();
-  });
 
   self.getFacetFilter = function(widget_id) {
     var _fq = null;
@@ -257,6 +254,10 @@ var Query = function (vm, query) {
     self.qs.remove(query);
   };
 
+  self.selectedMultiq.subscribe(function () { // To keep below the computeds!
+	vm.search();
+  });
+
   self.toggleFacet = function (data) {
     var fq = self.getFacetFilter(data.widget_id);
 
@@ -366,6 +367,7 @@ var Collection = function (vm, collection) {
     vm.search();
   });
   self.template.isGridLayout.subscribe(function () {
+    vm.results.removeAll();
     vm.search();
   });
 
@@ -1010,7 +1012,6 @@ var SearchViewModel = function (collection_json, query_json, initial_json) {
     self.collection.removeFacet(widget_json.id);
     self.query.removeFilter(widget_json);
     self.removeWidgetById(widget_json.id());
-    self.search();
   }
 
   self.getWidgetById = function (widget_id) {