Kouhei Sutou
null+****@clear*****
Mon Nov 10 15:01:20 JST 2014
Kouhei Sutou 2014-11-10 15:01:20 +0900 (Mon, 10 Nov 2014) New Revision: b0b7d9006abeac08e40e2597361216313604814a https://github.com/groonga/groonga-admin/commit/b0b7d9006abeac08e40e2597361216313604814a Message: Support drilldown by reference column Modified files: app/scripts/controllers/table-search-controller.js Modified: app/scripts/controllers/table-search-controller.js (+29 -5) =================================================================== --- app/scripts/controllers/table-search-controller.js 2014-11-10 14:31:47 +0900 (18a6de8) +++ app/scripts/controllers/table-search-controller.js 2014-11-10 15:01:20 +0900 (b440084) @@ -27,6 +27,7 @@ angular.module('groongaAdminApp') nTotalRecords: 0 }; $scope.indexedColumns = []; + $scope.allTables = []; $scope.allColumns = []; $scope.commandLine = ''; $scope.message = ''; @@ -127,11 +128,26 @@ angular.module('groongaAdminApp') } 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) { + queryKey += '._key'; + } + } + + var escapedValue = '"' + value.replace('"', '\\"') + '"'; + var query = $scope.parameters.query || ''; if (query.length > 0) { query += ' '; } - $scope.parameters.query = query + key + ':' + value; + $scope.parameters.query = query + queryKey + ':' + escapedValue; var drilldowns = ($scope.parameters.drilldown || '').split(/\s*,\s*/); drilldowns = drilldowns.filter(function(drilldown) { @@ -142,7 +158,9 @@ angular.module('groongaAdminApp') search(); } - function createColumnInfo(name) { + function createColumnInfo(column) { + var name = column.name; + var output = true; var outputColumns = $scope.parameters.output_columns; if (outputColumns) { @@ -159,6 +177,7 @@ angular.module('groongaAdminApp') return { name: name, + type: column.range, output: output, drilldown: drilldown }; @@ -170,7 +189,7 @@ angular.module('groongaAdminApp') if (column.isIndex) { return; } - $scope.allColumns.push(createColumnInfo(column.name)); + $scope.allColumns.push(createColumnInfo(column)); }); } @@ -203,7 +222,11 @@ angular.module('groongaAdminApp') function extractTableInfo(table) { if (table.name === $scope.table) { - $scope.allColumns.push(createColumnInfo('_id')); + var idColumn = { + name: '_id', + range: "UInt32" + }; + $scope.allColumns.push(createColumnInfo(idColumn)); } client.execute('column_list', {table: table.name}) @@ -215,7 +238,8 @@ angular.module('groongaAdminApp') function fillOptions() { client.execute('table_list') .success(function(response) { - response.tables().forEach(function(table) { + $scope.allTables = response.tables(); + $scope.allTables.forEach(function(table) { extractTableInfo(table); }); }); -------------- next part -------------- HTML����������������������������...下載