Kouhei Sutou
null+****@clear*****
Mon Nov 17 12:00:12 JST 2014
Kouhei Sutou 2014-11-17 12:00:12 +0900 (Mon, 17 Nov 2014) New Revision: c42c8af382620d102efa2538669c33181c99ff8f https://github.com/groonga/groonga-admin/commit/c42c8af382620d102efa2538669c33181c99ff8f Message: Support nested index Modified files: app/scripts/controllers/table-search-controller.js app/views/tables/search.html Modified: app/scripts/controllers/table-search-controller.js (+40 -16) =================================================================== --- app/scripts/controllers/table-search-controller.js 2014-11-10 19:54:32 +0900 (c20ed22) +++ app/scripts/controllers/table-search-controller.js 2014-11-17 12:00:12 +0900 (10d09d2) @@ -129,16 +129,19 @@ angular.module('groongaAdminApp') search(); } + function isTableType(type) { + return $scope.allTables.some(function(table) { + return table.name === type; + }); + } + function selectDrilldown(key, value) { var queryKey = key; var column = $scope.allColumns.find(function(column) { return column.name === key; }); if (column) { - var isTableType = $scope.allTables.some(function(table) { - return table.name === column.type; - }); - if (isTableType) { + if (isTableType(column.type)) { queryKey += '._key'; } } @@ -210,12 +213,23 @@ angular.module('groongaAdminApp') } else { localName = source.split('.')[1]; } + + var indexName = localName; + var sourceColumn = $scope.allColumns.find(function(column) { + return column.name === localName; + }); + if (sourceColumn && isTableType(sourceColumn.type)) { + indexName += '._key'; + } + var inUse = true; if (matchColumns) { - inUse = matchColumns.indexOf(localName) !== -1; + inUse = matchColumns.indexOf(indexName) !== -1; } + $scope.indexedColumns.push({ - name: localName, + name: indexName, + label: localName, inUse: inUse }); }); @@ -223,14 +237,6 @@ angular.module('groongaAdminApp') } function extractTableInfo(table) { - if (table.name === $scope.table) { - var idColumn = { - name: '_id', - range: 'UInt32' - }; - $scope.allColumns.push(createColumnInfo(idColumn)); - } - client.execute('column_list', {table: table.name}) .success(function(response) { extractColumnsInfo(table, response.columns()); @@ -241,9 +247,27 @@ angular.module('groongaAdminApp') client.execute('table_list') .success(function(response) { $scope.allTables = response.tables(); - $scope.allTables.forEach(function(table) { - extractTableInfo(table); + + var currentTable = $scope.allTables.find(function(table) { + return table.name === $scope.table; }); + var idColumn = { + name: '_id', + range: 'UInt32' + }; + $scope.allColumns.push(createColumnInfo(idColumn)); + + client.execute('column_list', {table: currentTable.name}) + .success(function(response) { + extractColumnsInfo(currentTable, response.columns()); + + $scope.allTables.forEach(function(table) { + if (table.name === currentTable.name) { + return; + } + extractTableInfo(table); + }); + }); }); } Modified: app/views/tables/search.html (+1 -1) =================================================================== --- app/views/tables/search.html 2014-11-10 19:54:32 +0900 (9172a76) +++ app/views/tables/search.html 2014-11-17 12:00:12 +0900 (3410b41) @@ -73,7 +73,7 @@ <label> <input type="checkbox" ng-model="indexedColumn.inUse"> - {{indexedColumn.name}} + {{indexedColumn.label}} </label> </span> </div> -------------- next part -------------- HTML����������������������������...Download