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

[search] Adding list of fields with extended metadata like types

Romain Rigaux 11 лет назад
Родитель
Сommit
78a092bca3

+ 11 - 5
apps/search/src/search/models.py

@@ -255,14 +255,19 @@ class Collection(models.Model):
       props['collection'] = self.get_default(user)
     if 'layout' not in props:
       props['layout'] = []    
-#    props['collection'] = self.get_default(user) # to reset
-#    props['layout'] = []  
 
+# to reset collection:
+#    props['collection'] = self.get_default(user) # to reset
+#    props['layout'] = []
+    
+    # Adding dynamic properties
+    props['collection']['template']['extended_fields'] = self.fields_data(user)
+   
     return json.dumps(props)
 
   def get_default(self, user):      
-    fields = self.fields_data(user)
-    id_field = [field['name'] for field in fields if field.get('isId')]
+    extended_fields = self.fields_data(user)
+    id_field = [field['name'] for field in extended_fields if field.get('isId')]
     if id_field:
       id_field = id_field[0]
     fields = [field.get('name') for field in self.fields_data(user)]
@@ -289,7 +294,7 @@ class Collection(models.Model):
     
     collection_properties = {
       'id': self.id, 'name': self.name, 'template': TEMPLATE, 'facets': FACETS['fields'], 
-      'fields': fields, 'idField': id_field
+      'fields': fields, 'idField': id_field, 
     };      
     
     return collection_properties
@@ -321,6 +326,7 @@ class Collection(models.Model):
     if 'collection' in properties_python:
       if 'showFieldList' not in properties_python['collection']['template']:
         properties_python['collection']['template']['showFieldList'] = True
+
     return properties_python
 
   def update_properties(self, post_data):

+ 5 - 5
apps/search/src/search/templates/search2.mako

@@ -190,12 +190,12 @@ ${ commonheader(_('Search'), "search", user, "60px") | n,unicode }
     <div style="font-weight: bold; color: #999; padding-left: 8px">${_('WIDGETS')}</div>
     <div class="draggable-widget" data-bind="draggable: draggableResultset" title="${_('Results')}" rel="tooltip" data-placement="top"><a href="#"><i class="fa fa-table"></i></a></div>    
     <div class="draggable-widget" data-bind="draggable: draggableFacet" title="${_('Text Facet')}" rel="tooltip" data-placement="top"><a href="#"><i class="fa fa-sort-amount-asc"></i></a></div>    
-    <div class="draggable-widget" data-bind="draggable: draggableBar" title="${_('Timeline')}" rel="tooltip" data-placement="top"><a href="#"><i class="hcha hcha-bar-chart"></i></a></div>
-    <div class="draggable-widget" data-bind="draggable: draggableArea" title="${_('Area Chart')}" rel="tooltip" data-placement="top"><a href="#"><i class="hcha hcha-area-chart"></i></a></div>
     <div class="draggable-widget" data-bind="draggable: draggablePie" title="${_('Pie Chart')}" rel="tooltip" data-placement="top"><a href="#"><i class="hcha hcha-pie-chart"></i></a></div>
-    <div class="draggable-widget" data-bind="draggable: draggableLine" title="${_('Line Chart')}" rel="tooltip" data-placement="top"><a href="#"><i class="hcha hcha-line-chart"></i></a></div>
-    <div class="draggable-widget" data-bind="draggable: draggableMap" title="${_('Map')}" rel="tooltip" data-placement="top"><a href="#"><i class="hcha hcha-map-chart"></i></a></div>
-    <div class="draggable-widget" data-bind="draggable: draggableMap" title="${_('Count')}" rel="tooltip" data-placement="top"><a href="#"><i class="hcha tachometer"></i></a></div>
+    <div class="draggable-widget" data-bind="draggable: draggableMap" title="${_('Count')}" rel="tooltip" data-placement="top"><a href="#"><i class="fa fa-tachometer"></i></a></div>
+    <div class="draggable-widget" data-bind="draggable: draggableArea" title="${_('Line Chart')}" rel="tooltip" data-placement="top"><a href="#"><i class="hcha hcha-area-chart"></i></a></div>
+    <div class="draggable-widget" data-bind="draggable: draggableBar" title="${_('Timeline')}" rel="tooltip" data-placement="top"><a href="#"><i class="hcha hcha-bar-chart"></i></a></div>
+    <div class="draggable-widget" data-bind="draggable: draggableLine" title="${_('Filter Bar')}" rel="tooltip" data-placement="top"><a href="#"><i class="fa fa-filter"></i></a></div>
+    <div class="draggable-widget" data-bind="draggable: draggableMap" title="${_('Map')}" rel="tooltip" data-placement="top"><a href="#"><i class="hcha hcha-map-chart"></i></a></div>    
   </div>
   <div class="clearfix"></div>
 </div>

+ 2 - 1
apps/search/static/js/search.ko.js

@@ -73,6 +73,7 @@ var Row = function (widgets) {
   }
 }
 
+// A widget is generic. It has an id that refer to another object (e.g. facet) with the same id.
 var Widget = function (size, id, name, widgetType, properties, offset) {
   var self = this;
   self.size = ko.observable(size).extend({ numeric: 0 });
@@ -122,7 +123,7 @@ function oneThirdLeftLayout() {
   setLayout([3, 9]);
 }
 
-function oneThirdRightLayout() {
+function oneThirdRightLayout() { // instead --> full with 1 row = timeline, 2 = 3 pies, 3 = grid result
   setLayout([9, 3]);
 }