[Groonga-commit] groonga/groonga-admin at 22cfca6 [master] Fix a bug that search doesn't work

Back to archive index

Kouhei Sutou null+****@clear*****
Tue Nov 25 12:50:20 JST 2014


Kouhei Sutou	2014-11-25 12:50:20 +0900 (Tue, 25 Nov 2014)

  New Revision: 22cfca6f876c720acf51d036604f0d22f7edf7f4
  https://github.com/groonga/groonga-admin/commit/22cfca6f876c720acf51d036604f0d22f7edf7f4

  Message:
    Fix a bug that search doesn't work

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

  Modified: app/scripts/controllers/table-search-controller.js (+31 -17)
===================================================================
--- app/scripts/controllers/table-search-controller.js    2014-11-23 12:41:16 +0900 (00a2c35)
+++ app/scripts/controllers/table-search-controller.js    2014-11-25 12:50:20 +0900 (5832179)
@@ -137,7 +137,7 @@ angular.module('groongaAdminApp')
 
         parameters.limit = $scope.nRecordsInPage;
 
-        var sortColumns = $scope.response.columns.filter(function(column) {
+        var sortColumns = $scope.allColumns.filter(function(column) {
           return column.sort;
         });
         parameters.sortby = packSortColumns(sortColumns);
@@ -168,9 +168,8 @@ angular.module('groongaAdminApp')
         $location.search({});
       }
 
-      function setColumnSort(column, sort) {
-        column.sort = sort;
-        switch (column.sort) {
+      function setSortIconClass(column, sort) {
+        switch (sort) {
         case 'ascending':
           column.iconClass = 'glyphicon-sort-by-attributes';
           break;
@@ -184,8 +183,15 @@ angular.module('groongaAdminApp')
       }
 
       function toggleSort(column) {
+        var columnInfo = $scope.allColumns.find(function(columnInfo) {
+          return columnInfo.name === column.name;
+        });
+        if (!columnInfo) {
+          return;
+        }
+
         var sort;
-        switch (column.sort) {
+        switch (columnInfo.sort) {
         case 'ascending':
           sort = 'descending';
           break;
@@ -196,8 +202,9 @@ angular.module('groongaAdminApp')
           sort = 'ascending';
           break;
         }
-        setColumnSort(column, sort);
-        search();
+        columnInfo.sort = sort;
+        setSortIconClass(column, columnInfo.sort);
+        incrementalSearch();
       }
 
       function isTableType(type) {
@@ -262,11 +269,20 @@ angular.module('groongaAdminApp')
           drilldown = drilldowns.indexOf(name) !== -1;
         }
 
+        var sort = null;
+        var sortKeys = ($scope.parameters.sortby || '').split(/\s*,\s*/);
+        if (sortKeys.indexOf(column.name) !== -1) {
+          sort = 'ascending';
+        } else if (sortKeys.indexOf('-' + column.name) !== -1) {
+          sort = 'descending';
+        }
+
         return {
           name: name,
           type: column.range,
           output: output,
-          drilldown: drilldown
+          drilldown: drilldown,
+          sort: sort
         };
       }
 
@@ -485,16 +501,14 @@ angular.module('groongaAdminApp')
           }
           $scope.currentPage = computeCurrentPage(parameters.offset || 0);
           $scope.response.nTotalRecords = response.nTotalRecords();
-          var sortKeys = ($scope.parameters.sortby || '').split(/\s*,\s*/);
-          $scope.response.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';
+          $scope.response.columns = response.columns();
+          $scope.response.columns.forEach(function(column) {
+            var columnInfo = $scope.allColumns.find(function(columnInfo) {
+              return columnInfo.name === column.name;
+            });
+            if (columnInfo) {
+              setSortIconClass(column, columnInfo.sort);
             }
-            setColumnSort(column, sort);
-            return column;
           });
           $scope.response.records = response.records().map(function(record) {
             return record.map(function(value, index) {
-------------- next part --------------
HTML����������������������������...
Download 



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