[Groonga-commit] groonga/groonga-admin at 7d5485a [master] Support sorting

Back to archive index

Kouhei Sutou null+****@clear*****
Tue Nov 4 22:25:09 JST 2014


Kouhei Sutou	2014-11-04 22:25:09 +0900 (Tue, 04 Nov 2014)

  New Revision: 7d5485a40582e52271d6d3c57c07cdcd6416fd0e
  https://github.com/groonga/groonga-admin/commit/7d5485a40582e52271d6d3c57c07cdcd6416fd0e

  Message:
    Support sorting

  Modified files:
    app/scripts/controllers/table-search-controller.js
    app/views/tables/search.html

  Modified: app/scripts/controllers/table-search-controller.js (+54 -1)
===================================================================
--- app/scripts/controllers/table-search-controller.js    2014-11-04 21:58:04 +0900 (dd8ba49)
+++ app/scripts/controllers/table-search-controller.js    2014-11-04 22:25:09 +0900 (5717b46)
@@ -34,6 +34,7 @@ angular.module('groongaAdminApp')
 
       $scope.search = search;
       $scope.clear  = clear;
+      $scope.toggleSort = toggleSort;
     }
 
     function packInUseColumns(columns) {
@@ -53,6 +54,16 @@ angular.module('groongaAdminApp')
       parameters.output_columns = packInUseColumns($scope.outputColumns);
       parameters.offset = ($scope.currentPage - 1) * $scope.nRecordsInPage;
       parameters.limit = $scope.nRecordsInPage;
+      var sortKeys = $scope.columns.filter(function(column) {
+        return column.sort;
+      }).map(function(column) {
+        if (column.sort == 'ascending') {
+          return column.name;
+        } else {
+          return '-' + column.name;
+        }
+      }).join(',');
+      parameters.sortby = sortKeys;
       $location.search(parameters);
     }
 
@@ -60,6 +71,38 @@ angular.module('groongaAdminApp')
       $location.search({});
     }
 
+    function setColumnSort(column, sort) {
+      column.sort = sort;
+      switch (column.sort) {
+      case 'ascending':
+        column.iconClass = 'glyphicon-sort-by-attributes';
+        break;
+      case 'descending':
+        column.iconClass = 'glyphicon-sort-by-attributes-alt';
+        break;
+      default:
+        column.iconClass = 'glyphicon-sort';
+        break;
+      }
+    }
+
+    function toggleSort(column) {
+      var sort;
+      switch (column.sort) {
+      case 'ascending':
+        sort = 'descending';
+        break;
+      case 'descending':
+        sort = null;
+        break;
+      default:
+        sort = 'ascending';
+        break;
+      }
+      setColumnSort(column, sort);
+      search();
+    }
+
     function addOutputColumn(name) {
       var outputColumns = $scope.parameters.output_columns;
       var inUse = true;
@@ -144,7 +187,17 @@ angular.module('groongaAdminApp')
         }
         $scope.currentPage = computeCurrentPage(parameters.offset || 0);
         $scope.nTotalRecords = response.nTotalRecords();
-        $scope.columns = response.columns();
+        var sortKeys = ($scope.parameters.sortby || '').split(/\s*,\s*/);
+        $scope.columns = response.columns().map(function(column) {
+          var sort = null;
+          if (sortKeys.indexOf(column.name) !== -1) {
+            sort = 'ascending';
+          } else if (sortKeys.indexOf('-' + column.name) !== -1) {
+            sort = 'descending';
+          }
+          setColumnSort(column, sort);
+          return column;
+        });
         $scope.records = response.records().map(function(record) {
           return record.map(function(value, index) {
             return {

  Modified: app/views/tables/search.html (+7 -0)
===================================================================
--- app/views/tables/search.html    2014-11-04 21:58:04 +0900 (528b25b)
+++ app/views/tables/search.html    2014-11-04 22:25:09 +0900 (cb5c107)
@@ -72,6 +72,13 @@
         <tr>
           <th ng-repeat="column in columns track by $index">
             {{column.name}}
+            <div>
+              <button type="button"
+                      class="btn btn-default"
+                      ng-click="toggleSort(column)">
+                <span class="glyphicon {{column.iconClass}}"></span>
+              </button>
+            </div>
           </th>
         </tr>
       </thead>
-------------- next part --------------
HTML����������������������������...
下載 



More information about the Groonga-commit mailing list
Back to archive index