Browse Source

[search] Fixed admin highlighting functionality and improved date facets ordering

Enrico Berti 12 years ago
parent
commit
b130712

+ 8 - 0
apps/search/src/search/models.py

@@ -126,6 +126,14 @@ class Result(models.Model):
     data_dict = json.loads(self.data)
     return data_dict.get('extracode')
 
+  def get_highlighting(self):
+    data_dict = json.loads(self.data)
+    return json.dumps(data_dict.get('highlighting'))
+
+  def get_properties(self):
+    data_dict = json.loads(self.data)
+    return json.dumps(data_dict.get('properties'))
+
   def get_query_params(self):
     data_dict = json.loads(self.data)
 

+ 4 - 3
apps/search/src/search/templates/admin_core_highlighting.mako

@@ -93,10 +93,11 @@ ${ commonheader(_('Search'), "search", user) | n,unicode }
     var self = this;
     self.fields = ko.observableArray(${ hue_core.fields | n,unicode });
 
-    var resultData = ${ hue_core.result.data | n,unicode };
+    var highlighting = ${ hue_core.result.get_highlighting() | n,unicode };
+    var properties = ${ hue_core.result.get_properties() | n,unicode };
 
-    self.highlightedFields = ko.observableArray(resultData != null ? resultData.highlighting : []);
-    self.isEnabled = ko.observable(${ hue_core.result.data | n,unicode }.properties.highlighting_enabled);
+    self.highlightedFields = ko.observableArray(highlighting != null ? highlighting : []);
+    self.isEnabled = ko.observable(properties.highlighting_enabled);
 
     self.submit = function () {
       $.ajax("${ url('search:admin_core_highlighting', core=hue_core.name) }", {

+ 14 - 11
apps/search/src/search/templates/admin_core_template.mako

@@ -26,12 +26,13 @@ ${ commonheader(_('Search'), "search", user) | n,unicode }
 
 <style type="text/css">
   .CodeMirror {
-    border: 1px solid #CDCDCD;
+    border: 1px dotted #DDDDDD;
   }
 
   #content-editor {
     outline: 0;
-    border: 1px solid #CDCDCD;
+    margin-top: 20px;
+    min-height: 400px;
   }
 
   #content-editor [class*="span"], .tmpl [class*="span"] {
@@ -143,7 +144,7 @@ ${ commonheader(_('Search'), "search", user) | n,unicode }
         <div class="row-fluid">
           <div class="span9">
             <div id="toolbar"></div>
-            <div id="content-editor" class="clear" style="margin-top: 20px; min-height: 400px">${ hue_core.result.get_template() | n,unicode }</div>
+            <div id="content-editor" class="clear">${ hue_core.result.get_template() | n,unicode }</div>
             <div id="load-template" class="btn-group">
               <a title="Layout" class="btn toolbar-btn toolbar-cmd">
                 <i class="icon-th-large" style="margin-top:2px;"></i>
@@ -196,15 +197,15 @@ ${ commonheader(_('Search'), "search", user) | n,unicode }
       </div>
       <div class="tab-pane" id="source">
         <div class="row-fluid">
-          <div class="span9">
+          <div class="span9" style="padding-top: 10px">
             <textarea id="template-source"></textarea>
           </div>
           <div class="span3">
-            <div class="widget-box" style="margin-top: 0; min-height: 400px">
+            <div class="widget-box">
               <div class="widget-title">
-				<span class="icon">
-					<i class="icon-th-list"></i>
-				</span>
+                <span class="icon">
+                  <i class="icon-th-list"></i>
+                </span>
                 <h5>${_('Available Fields')}</h5>
               </div>
               <div class="widget-content">
@@ -216,9 +217,9 @@ ${ commonheader(_('Search'), "search", user) | n,unicode }
             </div>
             <div class="widget-box">
               <div class="widget-title">
-				<span class="icon">
-					<i class="icon-magic"></i>
-				</span>
+                <span class="icon">
+                  <i class="icon-magic"></i>
+                </span>
                 <h5>${_('Available Functions')}</h5>
               </div>
               <div class="widget-content">
@@ -536,9 +537,11 @@ ${ commonheader(_('Search'), "search", user) | n,unicode }
     $("a[data-toggle='tab']").on("shown", function (e) {
       if ($(e.target).attr("href") == "#source") {
         templateSourceMirror.setValue($("#content-editor").html());
+        templateSourceMirror.setSize("100%", 450);
         templateSourceMirror.refresh();
       }
       if ($(e.target).attr("href") == "#extra") {
+        templateExtraMirror.setSize("100%", 420);
         templateExtraMirror.refresh();
       }
       if ($(e.target).attr("href") == "#preview") {

+ 20 - 4
apps/search/src/search/templates/index.mako

@@ -127,10 +127,10 @@ ${ commonheader(_('Search'), "search", user, "40px") | n,unicode }
                         remove_list = solr_query['fq'].split('|')
                         remove_list.remove(fq)
                   %>
-                <li class="nav-header">${cat}</li>
+                <li class="nav-header dateFacetHeader">${cat}</li>
                 % for date, count in response['facet_counts']['facet_dates'][cat].iteritems():
                   % if date not in ('start', 'end', 'gap') and count > 0 and found_value == "":
-                    <li><a href='?query=${ solr_query['q'] }&fq=${ solr_query['fq'] }|${ cat }:"${ date }"&sort=${solr_query["sort"]}'><span class="dateFacet">${ date }</span> (${ count })</a></li>
+                    <li class="dateFacetItem"><a href='?query=${ solr_query['q'] }&fq=${ solr_query['fq'] }|${ cat }:"${ date }"&sort=${solr_query["sort"]}'><span class="dateFacet">${ date }</span> (${ count })</a></li>
                   % endif
                   % if found_value != "" and '"' + date + '"' == found_value:
                       <li><strong><span class="dateFacet">${date}</span></strong> <a href="?query=${ solr_query['q'] }&fq=${'|'.join(remove_list)}&sort=${solr_query["sort"]}"><i class="icon-remove"></i></a></li>
@@ -279,9 +279,25 @@ ${ hue_core.result.get_extracode() | n,unicode }
 
 <script>
   $(document).ready(function () {
-    $(".dateFacet").each(function(){
-      $(this).text(moment($(this).text()).fromNow());
+    $(".dateFacet").each(function () {
+      var _m = moment($(this).text());
+      $(this).text(_m.fromNow());
+      $(this).parents(".dateFacetItem").data("epoch", _m.valueOf());
+    });
+
+    var orderedDateFacets = $(".dateFacetItem");
+    orderedDateFacets.sort(function (a, b) {
+      a = $(a).data("epoch");
+      b = $(b).data("epoch");
+      if (a > b) {
+        return -1;
+      } else if (a < b) {
+        return 1;
+      } else {
+        return 0;
+      }
     });
+    $(".dateFacetHeader").after(orderedDateFacets);
 
     $(".current-core").text($("select[name='cores'] option:selected").text());
     % if user.is_superuser: