Repository: incubator-ignite
Updated Branches:
  refs/heads/ignite-843 2640daeb5 -> aea23ea73


IGNITE-843 WIP on metadata screen.


Project: http://git-wip-us.apache.org/repos/asf/incubator-ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-ignite/commit/aea23ea7
Tree: http://git-wip-us.apache.org/repos/asf/incubator-ignite/tree/aea23ea7
Diff: http://git-wip-us.apache.org/repos/asf/incubator-ignite/diff/aea23ea7

Branch: refs/heads/ignite-843
Commit: aea23ea73dab4a32b73d4ff05328186f1a8dbeb0
Parents: 2640dae
Author: AKuznetsov <akuznet...@gridgain.com>
Authored: Tue Aug 11 11:31:02 2015 +0700
Committer: AKuznetsov <akuznet...@gridgain.com>
Committed: Tue Aug 11 11:31:02 2015 +0700

----------------------------------------------------------------------
 .../main/js/controllers/caches-controller.js    | 28 +-----
 .../src/main/js/controllers/common-module.js    | 18 +++-
 .../main/js/controllers/metadata-controller.js  | 99 +++++++++-----------
 .../main/js/controllers/models/metadata.json    |  8 +-
 .../src/main/js/routes/agent.js                 | 28 +++++-
 .../js/views/configuration/metadata-load.jade   |  4 +-
 .../src/main/js/views/includes/controls.jade    |  2 +-
 7 files changed, 98 insertions(+), 89 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/aea23ea7/modules/control-center-web/src/main/js/controllers/caches-controller.js
----------------------------------------------------------------------
diff --git 
a/modules/control-center-web/src/main/js/controllers/caches-controller.js 
b/modules/control-center-web/src/main/js/controllers/caches-controller.js
index 9d9d582..b421953 100644
--- a/modules/control-center-web/src/main/js/controllers/caches-controller.js
+++ b/modules/control-center-web/src/main/js/controllers/caches-controller.js
@@ -36,27 +36,13 @@ controlCenterModule.controller('cachesController', 
['$scope', '$http', '$common'
         $scope.tablePairSave = $table.tablePairSave;
         $scope.tablePairSaveVisible = $table.tablePairSaveVisible;
 
-        $scope.atomicities = [
-            {value: 'ATOMIC', label: 'ATOMIC'},
-            {value: 'TRANSACTIONAL', label: 'TRANSACTIONAL'}
-        ];
+        $scope.atomicities = $common.mkOptions(['ATOMIC', 'TRANSACTIONAL']);
 
-        $scope.modes = [
-            {value: 'PARTITIONED', label: 'PARTITIONED'},
-            {value: 'REPLICATED', label: 'REPLICATED'},
-            {value: 'LOCAL', label: 'LOCAL'}
-        ];
+        $scope.modes = $common.mkOptions(['PARTITIONED', 'REPLICATED', 
'LOCAL']);
 
-        $scope.atomicWriteOrderModes = [
-            {value: 'CLOCK', label: 'CLOCK'},
-            {value: 'PRIMARY', label: 'PRIMARY'}
-        ];
+        $scope.atomicWriteOrderModes = $common.mkOptions(['CLOCK', 'PRIMARY']);
 
-        $scope.memoryModes = [
-            {value: 'ONHEAP_TIERED', label: 'ONHEAP_TIERED'},
-            {value: 'OFFHEAP_TIERED', label: 'OFFHEAP_TIERED'},
-            {value: 'OFFHEAP_VALUES', label: 'OFFHEAP_VALUES'}
-        ];
+        $scope.memoryModes = $common.mkOptions(['ONHEAP_TIERED', 
'OFFHEAP_TIERED', 'OFFHEAP_VALUES']);
 
         $scope.evictionPolicies = [
             {value: 'LRU', label: 'LRU'},
@@ -66,11 +52,7 @@ controlCenterModule.controller('cachesController', 
['$scope', '$http', '$common'
             {value: undefined, label: 'Not set'}
         ];
 
-        $scope.rebalanceModes = [
-            {value: 'SYNC', label: 'SYNC'},
-            {value: 'ASYNC', label: 'ASYNC'},
-            {value: 'NONE', label: 'NONE'}
-        ];
+        $scope.rebalanceModes = $common.mkOptions(['SYNC', 'ASYNC', 'NONE']);
 
         $scope.cacheStoreFactories = [
             {value: 'CacheJdbcPojoStoreFactory', label: 'JDBC POJO store 
factory'},

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/aea23ea7/modules/control-center-web/src/main/js/controllers/common-module.js
----------------------------------------------------------------------
diff --git 
a/modules/control-center-web/src/main/js/controllers/common-module.js 
b/modules/control-center-web/src/main/js/controllers/common-module.js
index 55106aa..a9d4a0c 100644
--- a/modules/control-center-web/src/main/js/controllers/common-module.js
+++ b/modules/control-center-web/src/main/js/controllers/common-module.js
@@ -108,7 +108,13 @@ controlCenterModule.service('$common', ['$alert', function 
($alert) {
         return _.contains(javaBuildInClasses, cls) || 
_.contains(javaBuildInFullNameClasses, cls);
     }
 
-    var javaKeywords = [
+    var JDBC_TYPES = [
+        'BIT', 'BOOLEAN', 'TINYINT', 'SMALLINT', 'INTEGER', 'BIGINT', 'REAL', 
'FLOAT', 'DOUBLE',
+        'NUMERIC', 'DECIMAL', 'CHAR', 'VARCHAR', 'LONGVARCHAR', 'NCHAR', 
'NVARCHAR', 'LONGNVARCHAR',
+        'DATE', 'TIME', 'TIMESTAMP'
+    ];
+
+    var JAVA_KEYWORDS = [
         'abstract',     'assert',        'boolean',      'break',           
'byte',
         'case',         'catch',         'char',         'class',           
'const',
         'continue',     'default',       'do',           'double',          
'else',
@@ -128,7 +134,7 @@ controlCenterModule.service('$common', ['$alert', function 
($alert) {
         if (isEmptyString(ident))
             return showError(msg + ' could not be empty!');
 
-        if (_.contains(javaKeywords, ident))
+        if (_.contains(JAVA_KEYWORDS, ident))
             return showError(msg + ' could not contains reserved java keyword: 
"' + ident + '"!');
 
         if (!VALID_JAVA_IDENTIFIER.test(ident))
@@ -178,6 +184,11 @@ controlCenterModule.service('$common', ['$alert', function 
($alert) {
 
             return lines.join('');
         },
+        mkOptions: function (options) {
+            return _.map(options, function (option) {
+                return {value: option, label: option};
+            });
+        },
         isDefined: isDefined,
         isEmptyArray: isEmptyArray,
         isEmptyString: isEmptyString,
@@ -218,7 +229,8 @@ controlCenterModule.service('$common', ['$alert', function 
($alert) {
             }
 
             return true;
-        }
+        },
+        JDBC_TYPES: JDBC_TYPES
     }
 }]);
 

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/aea23ea7/modules/control-center-web/src/main/js/controllers/metadata-controller.js
----------------------------------------------------------------------
diff --git 
a/modules/control-center-web/src/main/js/controllers/metadata-controller.js 
b/modules/control-center-web/src/main/js/controllers/metadata-controller.js
index 3172225..dfe7c26 100644
--- a/modules/control-center-web/src/main/js/controllers/metadata-controller.js
+++ b/modules/control-center-web/src/main/js/controllers/metadata-controller.js
@@ -47,82 +47,59 @@ controlCenterModule.controller('metadataController', [
                 {value: 'h2', label: 'H2 database'}
             ];
 
-            $scope.presets = {
+            var presets = {
                 oracle: {
+                    db: 'oracle',
                     drvClass: 'oracle.jdbc.OracleDriver',
                     drvUrl: 'jdbc:oracle:thin:@[host]:[port]:[database]',
                     user: 'system'
                 },
                 db2: {
+                    db: 'db2',
                     drvClass: 'com.ibm.db2.jcc.DB2Driver',
                     drvUrl: 'jdbc:db2://[host]:[port]/[database]',
                     user: 'db2admin'
                 },
                 mssql: {
+                    db: 'mssql',
                     drvClass: 'com.microsoft.sqlserver.jdbc.SQLServerDriver',
                     drvUrl: 
'jdbc:sqlserver://[host]:[port][;databaseName=database]',
                     user: 'sa'
                 },
                 postgre: {
+                    db: 'postgre',
                     drvClass: 'org.postgresql.Driver', drvUrl: 
'jdbc:postgresql://[host]:[port]/[database]',
                     user: 'sa'
                 },
                 mysql: {
+                    db: 'mysql',
                     drvClass: 'com.mysql.jdbc.Driver',
                     drvUrl: 'jdbc:mysql://[host]:[port]/[database]', user: 
'root'
                 },
-                h2: {drvClass: 'org.h2.Driver', drvUrl: 'jdbc:h2:[database]', 
user: 'sa'}
+                h2: {
+                    db: 'h2,',
+                    drvClass: 'org.h2.Driver',
+                    drvUrl: 'jdbc:h2:[database]',
+                    user: 'sa'
+                }
             };
 
-            $scope.preset = {
-                rdbms: 'oracle'
+            $scope.preset = presets['oracle'];
 
-            };
+            $scope.$watch('preset.db', function (newDb) {
+                if (newDb) {
+                    var newPreset = presets[newDb];
+                    var curPreset = $scope.preset;
 
-            $scope.jdbcTypes = [
-                {value: 'BIT', label: 'BIT'},
-                {value: 'BOOLEAN', label: 'BOOLEAN'},
-                {value: 'TINYINT', label: 'TINYINT'},
-                {value: 'SMALLINT', label: 'SMALLINT'},
-                {value: 'INTEGER', label: 'INTEGER'},
-                {value: 'BIGINT', label: 'BIGINT'},
-                {value: 'REAL', label: 'REAL'},
-                {value: 'FLOAT', label: 'FLOAT'},
-                {value: 'DOUBLE', label: 'DOUBLE'},
-                {value: 'NUMERIC', label: 'NUMERIC'},
-                {value: 'DECIMAL', label: 'DECIMAL'},
-                {value: 'CHAR', label: 'CHAR'},
-                {value: 'VARCHAR', label: 'VARCHAR'},
-                {value: 'LONGVARCHAR', label: 'LONGVARCHAR'},
-                {value: 'NCHAR', label: 'NCHAR'},
-                {value: 'NVARCHAR', label: 'NVARCHAR'},
-                {value: 'LONGNVARCHAR', label: 'LONGNVARCHAR'},
-                {value: 'DATE', label: 'DATE'},
-                {value: 'TIME', label: 'TIME'},
-                {value: 'TIMESTAMP', label: 'TIMESTAMP'}
-            ];
+                    curPreset.drvClass = newPreset.drvClass;
+                    curPreset.drvUrl = newPreset.drvUrl;
+                    curPreset.user = newPreset.user;
+                }
+            }, true);
 
-            $scope.javaTypes = [
-                {value: 'boolean', label: 'boolean'},
-                {value: 'Boolean', label: 'Boolean'},
-                {value: 'byte', label: 'byte'},
-                {value: 'Byte', label: 'Byte'},
-                {value: 'short', label: 'short'},
-                {value: 'Short', label: 'Short'},
-                {value: 'int', label: 'int'},
-                {value: 'Integer', label: 'Integer'},
-                {value: 'long', label: 'long'},
-                {value: 'Long', label: 'Long'},
-                {value: 'float', label: 'float'},
-                {value: 'Float', label: 'Float'},
-                {value: 'double', label: 'double'},
-                {value: 'Double', label: 'Double'},
-                {value: 'BigDecimal', label: 'BigDecimal'},
-                {value: 'String', label: 'String'},
-                {value: 'Date', label: 'Date'},
-                {value: 'Time', label: 'Time'},
-                {value: 'Timestamp', label: 'Timestamp'}
-            ];
+            $scope.jdbcTypes = $common.mkOptions($common.JDBC_TYPES);
+
+            $scope.javaTypes = $common.mkOptions($common.javaBuildInClasses);
 
             $scope.sortDirections = [
                 {value: false, label: 'ASC'},
@@ -305,14 +282,30 @@ controlCenterModule.controller('metadataController', [
 
             // Show load metadata modal.
             $scope.loadFromDb = function () {
-                loadMetaModal.$promise.then(function () {
-                    loadMetaModal.show();
+                $http.post('/agent/drivers')
+                    .success(function (drivers) {
+                        if (drivers && drivers.length > 0) {
+                            $scope.drivers = _.map(drivers, function (driver) {
+                                return {value: driver, label: driver};
+                            });
 
-                    //$focus('user_email');
-                });
+                            $scope.preset.drvJar = drivers[0];
+
+                            loadMetaModal.$promise.then(function () {
+                                loadMetaModal.show();
+
+                                $focus('db');
+                            });
+                        }
+                        else
+                            $common.showError('JDBC drivers not found!');
+                    })
+                    .error(function (errMsg) {
+                        $common.showError(errMsg);
+                    });
             };
 
-            $scope.loadMetadataFromDb = function(fb_info) {
+            $scope.saveMetadataLoadedFromDb = function(preset) {
                 loadMetaModal.hide();
 
                 $common.showError("Load metadata from DB not ready yet!");

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/aea23ea7/modules/control-center-web/src/main/js/controllers/models/metadata.json
----------------------------------------------------------------------
diff --git 
a/modules/control-center-web/src/main/js/controllers/models/metadata.json 
b/modules/control-center-web/src/main/js/controllers/models/metadata.json
index b0cf070..14ce429 100644
--- a/modules/control-center-web/src/main/js/controllers/models/metadata.json
+++ b/modules/control-center-web/src/main/js/controllers/models/metadata.json
@@ -190,7 +190,7 @@
     {
       "label": "Database preset",
       "type": "select",
-      "model": "preset",
+      "model": "db",
       "items": "databases",
       "tip": [
         "Select database type to connect for loading tables metadata."
@@ -198,9 +198,9 @@
     },
     {
       "label": "Driver JAR",
-      "type": "text",
+      "type": "select",
       "model": "drvJar",
-      "placeholder": "JAR with JDBC driver",
+      "items": "drivers",
       "tip": [
         "Select appropriate JAR with JDBC driver."
       ]
@@ -217,7 +217,7 @@
     {
       "label": "JDBC URL",
       "type": "text",
-      "model": "jdbcUrl",
+      "model": "drvUrl",
       "placeholder": "JDBC URL",
       "tip": [
         "JDBC URL for connecting to database.",

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/aea23ea7/modules/control-center-web/src/main/js/routes/agent.js
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/routes/agent.js 
b/modules/control-center-web/src/main/js/routes/agent.js
index c92c575..74462b7 100644
--- a/modules/control-center-web/src/main/js/routes/agent.js
+++ b/modules/control-center-web/src/main/js/routes/agent.js
@@ -21,7 +21,7 @@ var agentManager = require('../agents/agent-manager');
 var apacheIgnite = require('apache-ignite');
 var SqlFieldsQuery = apacheIgnite.SqlFieldsQuery;
 
-/* GET summary page. */
+/* Get grid topology. */
 router.post('/topology', function(req, res) {
     var client = 
agentManager.getAgentManager().findClient(req.currentUserId());
 
@@ -41,7 +41,7 @@ router.post('/topology', function(req, res) {
     });
 });
 
-/* GET summary page. */
+/* Execute query. */
 router.post('/query', function(req, res) {
     var client = 
agentManager.getAgentManager().findClient(req.currentUserId());
 
@@ -62,7 +62,7 @@ router.post('/query', function(req, res) {
     });
 });
 
-/* GET summary page. */
+/* Get next query page. */
 router.post('/next_page', function(req, res) {
     var client = 
agentManager.getAgentManager().findClient(req.currentUserId());
 
@@ -81,4 +81,26 @@ router.post('/next_page', function(req, res) {
     });
 });
 
+/* Get JDBC drivers list. */
+router.post('/drivers', function(req, res) {
+    res.json(['ojdbc6.jar', 'db2jcc4.jar', 'h2.jar']);
+
+    //var client = 
agentManager.getAgentManager().findClient(req.currentUserId());
+    //
+    //if (!client)
+    //    return res.status(500).send("Client not found");
+
+});
+
+/** Get database metadata. */
+router.post('/metadata', function(req, res) {
+    res.json(['TODO']);
+
+    //var client = 
agentManager.getAgentManager().findClient(req.currentUserId());
+    //
+    //if (!client)
+    //    return res.status(500).send("Client not found");
+
+});
+
 module.exports = router;

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/aea23ea7/modules/control-center-web/src/main/js/views/configuration/metadata-load.jade
----------------------------------------------------------------------
diff --git 
a/modules/control-center-web/src/main/js/views/configuration/metadata-load.jade 
b/modules/control-center-web/src/main/js/views/configuration/metadata-load.jade
index adecaef..78e5b2b 100644
--- 
a/modules/control-center-web/src/main/js/views/configuration/metadata-load.jade
+++ 
b/modules/control-center-web/src/main/js/views/configuration/metadata-load.jade
@@ -25,6 +25,6 @@ include ../includes/controls
             form.form-horizontal(name='loadForm' novalidate)
                 .modal-body
                     .settings-row(ng-repeat='field in metadataDb')
-                        +form-row-custom(['col-xs-4 col-sm-3 col-md-3'], 
['col-xs-8 col-sm-7 col-md-7'], db_info)
+                        +form-row-custom(['col-xs-4 col-sm-3 col-md-3'], 
['col-xs-8 col-sm-9 col-md-9'], 'preset')
             .modal-footer
-                button.btn.btn-primary(ng-disabled='loadForm.$invalid' 
ng-click='loadMetadataFromDb(db_info)') Load metadata
+                button.btn.btn-primary(ng-disabled='loadForm.$invalid' 
ng-click='saveMetadataLoadedFromDb()') Load metadata

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/aea23ea7/modules/control-center-web/src/main/js/views/includes/controls.jade
----------------------------------------------------------------------
diff --git 
a/modules/control-center-web/src/main/js/views/includes/controls.jade 
b/modules/control-center-web/src/main/js/views/includes/controls.jade
index a3bf869..7de016d 100644
--- a/modules/control-center-web/src/main/js/views/includes/controls.jade
+++ b/modules/control-center-web/src/main/js/views/includes/controls.jade
@@ -290,7 +290,7 @@ mixin form-row-custom(lblClasses, fieldClasses, dataSource)
             div(class=fieldClasses)
                 +tipField('field.tip')
                 .input-tip
-                    select.form-control(ng-options='item.value as item.label 
for item in {{field.items}}')&attributes(fieldCommon)
+                    select.form-control(id='{{::field.model}}' 
ng-options='item.value as item.label for item in 
{{field.items}}')&attributes(fieldCommon)
         div(ng-switch-when='dropdown' ng-hide=fieldHide)
             label(class=lblClasses ng-class=fieldRequiredClass) 
{{::field.label}}:
             div(class=fieldClasses)

Reply via email to