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)