瀏覽代碼

[search] Move gridlayout columns to left or right

Romain Rigaux 11 年之前
父節點
當前提交
6ddfa775ff
共有 2 個文件被更改,包括 25 次插入4 次删除
  1. 4 2
      apps/search/src/search/templates/search2.mako
  2. 21 2
      apps/search/static/js/search.ko.js

+ 4 - 2
apps/search/src/search/templates/search2.mako

@@ -312,12 +312,14 @@ ${ commonheader(_('Search'), "search", user, "60px") | n,unicode }
 	<!-- ko if: $root.collection.template.isGridLayout() -->
 	<!-- ko if: $root.collection.template.isGridLayout() -->
     <table id="result-container" data-bind="visible: !$root.isRetrievingResults()" style="margin-top: 0">
     <table id="result-container" data-bind="visible: !$root.isRetrievingResults()" style="margin-top: 0">
       <thead>
       <thead>
-        <tr data-bind="visible: $root.results().length > 0, foreach: $root.collection.template.fields">
-          <th>
+        <tr data-bind="visible: $root.results().length > 0, foreach: $root.collection.template.fieldsSelected">        
+          <th data-bind="with: $root.collection.getTemplateField($data)">
+            <a href="javascript: void(0)" data-bind="visible: $index() > 0, click: function(){ $root.collection.translateSelectedField($index(), 'left'); }"><i class="fa fa-chevron-left"></i></a>
             <a href="javascript: void(0)" title="${ _('Sort') }">
             <a href="javascript: void(0)" title="${ _('Sort') }">
               <span data-bind="text: name, click: $root.collection.toggleSortColumnGridLayout"></span>
               <span data-bind="text: name, click: $root.collection.toggleSortColumnGridLayout"></span>
               <i class="fa" data-bind="visible: sort.direction() != null, css: { 'fa-chevron-down': sort.direction() == 'desc', 'fa-chevron-up': sort.direction() == 'asc' }"></i>
               <i class="fa" data-bind="visible: sort.direction() != null, css: { 'fa-chevron-down': sort.direction() == 'desc', 'fa-chevron-up': sort.direction() == 'asc' }"></i>
             </a>
             </a>
+            <a href="javascript: void(0)" data-bind="visible: $index() < $root.collection.template.fields().length - 1, click: function(){ $root.collection.translateSelectedField($index(), 'right'); }"><i class="fa fa-chevron-right"></i></a>
           </th>
           </th>
         </tr>
         </tr>
         <tr data-bind="visible: $root.collection.template.fieldsSelected().length == 0">
         <tr data-bind="visible: $root.collection.template.fieldsSelected().length == 0">

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

@@ -339,11 +339,21 @@ var Collection = function (vm, collection) {
     $.each(self.template.fieldsAttributes(), function (index, field) {
     $.each(self.template.fieldsAttributes(), function (index, field) {
       var position = self.template.fieldsSelected.indexOf(field.name());
       var position = self.template.fieldsSelected.indexOf(field.name());
       if (position != -1) {
       if (position != -1) {
-      _fields[position] = field;
+        _fields[position] = field;
       }      
       }      
     });
     });
     return _fields;
     return _fields;
   });
   });
+  self.getTemplateField = function (name) {
+    var _field = null;
+    $.each(self.template.fields(), function (index, field) {
+      if (field.name() == name) {
+    	_field = field;
+        return false;
+      }
+    });
+    return _field;	  
+  };
 
 
   self.template.fieldsModalFilter = ko.observable("");
   self.template.fieldsModalFilter = ko.observable("");
   self.template.filteredFieldsAttributes = ko.observableArray(self.template.fieldsAttributes());
   self.template.filteredFieldsAttributes = ko.observableArray(self.template.fieldsAttributes());
@@ -359,7 +369,6 @@ var Collection = function (vm, collection) {
   });
   });
 
 
 
 
-
   self.addDynamicFields = function () { // + Adding merge smartly if schema updated
   self.addDynamicFields = function () { // + Adding merge smartly if schema updated
     $.post("/search/index/" + self.id + "/fields/dynamic", {
     $.post("/search/index/" + self.id + "/fields/dynamic", {
       }, function (data) {
       }, function (data) {
@@ -410,6 +419,16 @@ var Collection = function (vm, collection) {
     $(event.target).button('loading');
     $(event.target).button('loading');
     vm.search();
     vm.search();
   };
   };
+  
+  self.translateSelectedField = function (index, direction) {
+    if (direction == 'left') {
+	  self.template.fieldsSelected.splice(index - 1, 2, array[index], array[index - 1]);
+    } else {
+      self.template.fieldsSelected.splice(index, 2, array[index + 1], array[index]);
+    }
+	
+	vm.search();
+  };
 };
 };