Repository: incubator-ignite Updated Branches: refs/heads/ignite-843 5b1643df9 -> d119b714b
IGNITE-843 WIP on load metadata. Project: http://git-wip-us.apache.org/repos/asf/incubator-ignite/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-ignite/commit/d119b714 Tree: http://git-wip-us.apache.org/repos/asf/incubator-ignite/tree/d119b714 Diff: http://git-wip-us.apache.org/repos/asf/incubator-ignite/diff/d119b714 Branch: refs/heads/ignite-843 Commit: d119b714bbfd90f6548d7d62147574e233271a31 Parents: 5b1643d Author: AKuznetsov <akuznet...@gridgain.com> Authored: Tue Aug 11 23:29:21 2015 +0700 Committer: AKuznetsov <akuznet...@gridgain.com> Committed: Tue Aug 11 23:29:21 2015 +0700 ---------------------------------------------------------------------- .../main/js/controllers/metadata-controller.js | 173 ++++--------------- .../src/main/js/routes/agent.js | 30 +++- .../js/views/configuration/metadata-load.jade | 36 +++- .../main/js/views/configuration/metadata.jade | 2 +- .../src/main/js/views/templates/layout.jade | 2 +- 5 files changed, 87 insertions(+), 156 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/d119b714/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 bd27777..1e146ef 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 @@ -109,143 +109,6 @@ controlCenterModule.controller('metadataController', [ {value: true, label: 'DESC'} ]; - $scope.tables = [ - { - schemaName: 'Schema1', - use: true, - tableName: 'Table1', - keyClass: 'KeyClass1', - valueClass: 'ValueClass1', - fields: [ - { - use: true, - key: true, - ak: true, - databaseName: 'name1', - databaseType: 'dbType1', - javaName: 'javaName1', - javaType: 'javaType1' - }, - { - use: true, - key: false, - ak: false, - databaseName: 'name2', - databaseType: 'dbType2', - javaName: 'javaName2', - javaType: 'javaType2' - }, - { - use: false, - key: false, - ak: false, - databaseName: 'name3', - databaseType: 'dbType3', - javaName: 'javaName3', - javaType: 'javaType3' - } - ] - }, - { - schemaName: 'Schema with very long name', - use: false, - tableName: 'Table2', - keyClass: 'KeyClass2', - valueClass: 'ValueClass2', - fields: [ - { - use: true, - key: true, - ak: true, - databaseName: 'name4', - databaseType: 'dbType4', - javaName: 'javaName4', - javaType: 'javaType4' - }, - { - use: true, - key: false, - ak: false, - databaseName: 'name5', - databaseType: 'dbType5', - javaName: 'javaName5', - javaType: 'javaType5' - }, - { - use: false, - key: false, - ak: false, - databaseName: 'name6', - databaseType: 'dbType6', - javaName: 'javaName6', - javaType: 'javaType6' - } - ] - }, - { - schemaName: 'Schema3', - use: false, - tableName: 'Table3', - keyClass: 'KeyClass3', - valueClass: 'ValueClass3', - fields: [ - { - use: true, - key: true, - ak: true, - databaseName: 'name7', - databaseType: 'dbType7', - javaName: 'javaName7', - javaType: 'javaType7' - }, - { - use: true, - key: false, - ak: false, - databaseName: 'name8', - databaseType: 'dbType8', - javaName: 'javaName8', - javaType: 'javaType8' - }, - { - use: false, - key: false, - ak: false, - databaseName: 'name9', - databaseType: 'dbType9', - javaName: 'javaName9', - javaType: 'javaType9' - }, - { - use: false, - key: false, - ak: false, - databaseName: 'name10', - databaseType: 'dbType10', - javaName: 'javaName10', - javaType: 'javaType10' - }, - { - use: false, - key: false, - ak: false, - databaseName: 'name11', - databaseType: 'dbType11', - javaName: 'javaName11', - javaType: 'javaType11' - }, - { - use: false, - key: false, - ak: false, - databaseName: 'name12', - databaseType: 'dbType12', - javaName: 'javaName12', - javaType: 'javaType12' - } - ] - }]; - $scope.panels = {activePanels: [0, 1]}; $scope.metadatas = []; @@ -282,11 +145,27 @@ controlCenterModule.controller('metadataController', [ $scope.backupItem = bak; } + $scope.loadMeta = {action: 'connect'}; + $scope.loadMeta.tables = []; + + $scope.loadMeta.selectAll = function() { + var allSelected = $scope.loadMeta.allSelected; + + _.forEach($scope.loadMeta.tables, function (table) { + table.use = allSelected; + }); + }; + + $scope.loadMeta.select = function () { + $scope.loadMeta.allSelected = _.every($scope.loadMeta.tables, 'use', true); + }; + + // Pre-fetch modal dialogs. var loadMetaModal = $modal({scope: $scope, templateUrl: 'metadata/metadata-load', show: false}); // Show load metadata modal. - $scope.loadFromDb = function () { + $scope.showLoadMetadataModal = function () { $http.post('/agent/drivers') .success(function (drivers) { if (drivers && drivers.length > 0) { @@ -297,6 +176,9 @@ controlCenterModule.controller('metadataController', [ $scope.preset.drvJar = drivers[0]; loadMetaModal.$promise.then(function () { + $scope.loadMeta.action = 'connect'; + $scope.loadMeta.tables = []; + loadMetaModal.show(); $focus('db'); @@ -310,10 +192,21 @@ controlCenterModule.controller('metadataController', [ }); }; - $scope.saveMetadataLoadedFromDb = function (preset) { + $scope.loadMetadataFromDb = function () { + $http.post('/agent/metadata') + .success(function (tables) { + $scope.loadMeta.tables = tables; + $scope.loadMeta.action = 'tables'; + }) + .error(function (errMsg) { + $common.showError(errMsg); + }); + }; + + $scope.saveSelectedMetadata = function (preset) { loadMetaModal.hide(); - $common.showError("Load metadata from DB not ready yet!"); + $common.showError("Saving selected metadatanot ready yet!"); }; // When landing on the page, get metadatas and show them. http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/d119b714/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 74462b7..ddc0280 100644 --- a/modules/control-center-web/src/main/js/routes/agent.js +++ b/modules/control-center-web/src/main/js/routes/agent.js @@ -22,7 +22,7 @@ var apacheIgnite = require('apache-ignite'); var SqlFieldsQuery = apacheIgnite.SqlFieldsQuery; /* Get grid topology. */ -router.post('/topology', function(req, res) { +router.post('/topology', function (req, res) { var client = agentManager.getAgentManager().findClient(req.currentUserId()); if (!client) @@ -30,11 +30,11 @@ router.post('/topology', function(req, res) { client.ignite().cluster().then(function (clusters) { res.json(clusters.map(function (cluster) { - var caches = Object.keys(cluster._caches).map(function(key) { - return {"name" : key, "mode" : cluster._caches[key] } + var caches = Object.keys(cluster._caches).map(function (key) { + return {"name": key, "mode": cluster._caches[key]} }); - return { nodeId: cluster._nodeId, caches: caches }; + return {nodeId: cluster._nodeId, caches: caches}; })); }, function (err) { res.status(500).send(err); @@ -42,7 +42,7 @@ router.post('/topology', function(req, res) { }); /* Execute query. */ -router.post('/query', function(req, res) { +router.post('/query', function (req, res) { var client = agentManager.getAgentManager().findClient(req.currentUserId()); if (!client) @@ -63,7 +63,7 @@ router.post('/query', function(req, res) { }); /* Get next query page. */ -router.post('/next_page', function(req, res) { +router.post('/next_page', function (req, res) { var client = agentManager.getAgentManager().findClient(req.currentUserId()); if (!client) @@ -82,7 +82,7 @@ router.post('/next_page', function(req, res) { }); /* Get JDBC drivers list. */ -router.post('/drivers', function(req, res) { +router.post('/drivers', function (req, res) { res.json(['ojdbc6.jar', 'db2jcc4.jar', 'h2.jar']); //var client = agentManager.getAgentManager().findClient(req.currentUserId()); @@ -93,8 +93,20 @@ router.post('/drivers', function(req, res) { }); /** Get database metadata. */ -router.post('/metadata', function(req, res) { - res.json(['TODO']); +router.post('/metadata', function (req, res) { + var tables = []; + + for (var i = 1; i < 17; i++) { + tables.push({ + schemaName: 'Schema' + ((i / 5) + 1), + use: true, + tableName: 'Table' + i, + keyClass: 'KeyClass' + i, + valueClass: 'ValueClass' + i + }) + } + + res.json(tables); //var client = agentManager.getAgentManager().findClient(req.currentUserId()); // http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/d119b714/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 78e5b2b..9eaeba6 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 @@ -22,9 +22,35 @@ include ../includes/controls #errors-container.modal-header.header button.close(type='button' ng-click='$hide()' aria-hidden='true') × h4.modal-title Load metadata from database - 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-9 col-md-9'], 'preset') + div(ng-show='loadMeta.action == "connect"') + 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-9 col-md-9'], 'preset') + div(ng-show='loadMeta.action == "tables"' style='margin: 15px') + table.table.table-condensed.table-stripped.admin(st-table='displayedTables' st-safe-src='loadMeta.tables') + thead + tr + th.header(colspan='5') + .col-sm-5 + input.form-control(type='text' st-search='' placeholder='Filter tables...') + tr + th + input(type='checkbox' ng-model='loadMeta.allSelected' ng-change='loadMeta.selectAll()') + th + label Tables + tbody + tr(ng-repeat='table in displayedTables') + td + input(type='checkbox' ng-model='table.use' ng-change='loadMeta.select()') + td + label {{::table.schemaName}} / {{::table.tableName}} + tfoot + tr + td.text-right(colspan='2') + div(st-pagination st-items-by-page='10' st-displayed-pages='5') + .modal-footer - button.btn.btn-primary(ng-disabled='loadForm.$invalid' ng-click='saveMetadataLoadedFromDb()') Load metadata + button.btn.btn-primary(ng-show='loadMeta.action == "connect"' ng-disabled='loadForm.$invalid' ng-click='loadMetadataFromDb()') Load metadata + button.btn.btn-primary(ng-show='loadMeta.action == "tables"' ng-click='loadMeta.action = "connect"') Prev + button.btn.btn-primary(ng-show='loadMeta.action == "tables"' ng-click='saveSelectedMetadata()') Save http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/d119b714/modules/control-center-web/src/main/js/views/configuration/metadata.jade ---------------------------------------------------------------------- diff --git a/modules/control-center-web/src/main/js/views/configuration/metadata.jade b/modules/control-center-web/src/main/js/views/configuration/metadata.jade index 738083f..a5ad39a 100644 --- a/modules/control-center-web/src/main/js/views/configuration/metadata.jade +++ b/modules/control-center-web/src/main/js/views/configuration/metadata.jade @@ -37,7 +37,7 @@ block content a(event-focus='defaultFocusId' ng-click='selectItem(row)') {{$index + 1}}) {{row.name}} .padding-top-dflt button.btn.btn-primary(ng-click='createItem()' event-focus='defaultFocusId') Add metadata - button.btn.btn-primary(ng-click='loadFromDb()') Load from database + button.btn.btn-primary(ng-click='showLoadMetadataModal()') Load from database hr form.form-horizontal(name='inputForm' ng-if='backupItem' novalidate) .panel-group(bs-collapse ng-model='panels.activePanels' data-allow-multiple='true' ng-click='triggerDigest = true') http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/d119b714/modules/control-center-web/src/main/js/views/templates/layout.jade ---------------------------------------------------------------------- diff --git a/modules/control-center-web/src/main/js/views/templates/layout.jade b/modules/control-center-web/src/main/js/views/templates/layout.jade index 91062ba..6a624b8 100644 --- a/modules/control-center-web/src/main/js/views/templates/layout.jade +++ b/modules/control-center-web/src/main/js/views/templates/layout.jade @@ -42,7 +42,7 @@ html(ng-app='ignite-web-control-center' ng-init='user = #{JSON.stringify(user)}; script(src='//cdnjs.cloudflare.com/ajax/libs/angular-strap/2.3.1/angular-strap.js') script(src='//cdnjs.cloudflare.com/ajax/libs/angular-strap/2.3.1/angular-strap.tpl.min.js') - script(src='//cdnjs.cloudflare.com/ajax/libs/angular-smart-table/2.1.1/smart-table.js') + script(src='//cdnjs.cloudflare.com/ajax/libs/angular-smart-table/2.1.2/smart-table.js') script(src='//cdnjs.cloudflare.com/ajax/libs/ace/1.2.0/ace.js') script(src='//angular-ui.github.io/ui-ace/dist/ui-ace.min.js')