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����������������������������...下載