[Groonga-commit] groonga/groonga-admin at dda8fb2 [master] Split large function

Back to archive index

Kouhei Sutou null+****@clear*****
Tue Nov 4 15:10:16 JST 2014


Kouhei Sutou	2014-11-04 15:10:16 +0900 (Tue, 04 Nov 2014)

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

  Message:
    Split large function

  Modified files:
    app/scripts/controllers/table-search-controller.js
    app/scripts/groonga-client/response/table-list.js

  Modified: app/scripts/controllers/table-search-controller.js (+49 -36)
===================================================================
--- app/scripts/controllers/table-search-controller.js    2014-11-04 15:10:02 +0900 (c223482)
+++ app/scripts/controllers/table-search-controller.js    2014-11-04 15:10:16 +0900 (4999468)
@@ -56,46 +56,59 @@ angular.module('groongaAdminApp')
       $location.search({});
     }
 
-    function fillOptions() {
-      client.execute('table_list')
+    function extractTableInfo(table) {
+      if (table.name === $scope.table) {
+        $scope.outputColumns.push({name: '_id', inUse: true});
+        if (table.hasKey) {
+          $scope.outputColumns.push({name: '_key', inUse: true});
+        }
+      }
+
+      client.execute('column_list', {table: table.name})
         .success(function(response) {
-          response.tables().forEach(function(table) {
-            client.execute('column_list', {table: table.name})
-            .success(function(response) {
-              response.columns().forEach(function(column) {
-                if (!column.isIndex) {
-                  return;
-                }
-                if (column.range !== $scope.table) {
-                  return;
-                }
-                var matchColumns = $scope.parameters.match_columns;
-                column.sources.forEach(function(source) {
-                  var localName = source.split('.')[1];
-                  var inUse = true;
-                  if (matchColumns) {
-                      inUse = matchColumns.indexOf(localName) !== -1;
-                  }
-                  $scope.indexedColumns.push({name: localName, inUse: inUse});
-                });
-              });
-            });
-          });
+          extractColumnsInfo(table, response.columns());
+        });
+    }
+
+    function extractColumnsInfo(table, columns) {
+      if (table.name === $scope.table) {
+        var outputColumns = $scope.parameters.output_columns;
+        columns.forEach(function(column) {
+          if (column.isIndex) {
+            return;
+          }
+          var inUse = true;
+          if (outputColumns) {
+            inUse = outputColumns.indexOf(column.name) !== -1;
+          }
+          $scope.outputColumns.push({name: column.name, inUse: inUse});
+        });
+      }
+
+      columns.forEach(function(column) {
+        if (!column.isIndex) {
+          return;
+        }
+        if (column.range !== $scope.table) {
+          return;
+        }
+        var matchColumns = $scope.parameters.match_columns;
+        column.sources.forEach(function(source) {
+          var localName = source.split('.')[1];
+          var inUse = true;
+          if (matchColumns) {
+            inUse = matchColumns.indexOf(localName) !== -1;
+          }
+          $scope.indexedColumns.push({name: localName, inUse: inUse});
         });
+      });
+    }
 
-      client.execute('column_list', {table: $scope.table})
+    function fillOptions() {
+      client.execute('table_list')
         .success(function(response) {
-          var outputColumns = $scope.parameters.output_columns;
-          console.log(response.columns());
-          response.columns().forEach(function(column) {
-            if (column.isIndex) {
-              return;
-            }
-            var inUse = true;
-            if (outputColumns) {
-              inUse = outputColumns.indexOf(column.name) !== -1;
-            }
-            $scope.outputColumns.push({name: column.name, inUse: inUse});
+          response.tables().forEach(function(table) {
+            extractTableInfo(table);
           });
         });
     }

  Modified: app/scripts/groonga-client/response/table-list.js (+16 -1)
===================================================================
--- app/scripts/groonga-client/response/table-list.js    2014-11-04 15:10:02 +0900 (e99d99c)
+++ app/scripts/groonga-client/response/table-list.js    2014-11-04 15:10:16 +0900 (ea7cf7c)
@@ -23,8 +23,23 @@
     return this.body().slice(1).map(function(tableProperties) {
       var table = {};
       parameters.forEach(function(parameter, index) {
-        table[parameter.name] = tableProperties[index];
+        var name = parameter.name;
+        var value = tableProperties[index];
+        switch (name) {
+        case 'flags':
+          value = value.split('|');
+          break;
+        case 'source':
+          name = 'sources';
+          break;
+        }
+        table[name] = value;
       });
+      table.isArray          = table.flags.indexOf('TABLE_NO_KEY')   != -1;
+      table.isHashTable      = table.flags.indexOf('TABLE_HASH_KEY') != -1;
+      table.isPatriciaTrie   = table.flags.indexOf('TABLE_PAT_KEY')  != -1;
+      table.isDoublArrayTrie = table.flags.indexOf('TABLE_DAT_KEY')  != -1;
+      table.hasKey = !table.isArray;
       return table;
     });
   };
-------------- next part --------------
HTML����������������������������...
下載 



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