Repository: ignite Updated Branches: refs/heads/ignite-843 9882bc57c -> 0a978129e
IGNITE-843 Load metadata minor fixes. Project: http://git-wip-us.apache.org/repos/asf/ignite/repo Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/0a978129 Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/0a978129 Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/0a978129 Branch: refs/heads/ignite-843 Commit: 0a978129eac8319ecaad6e009a05937a4c9b6128 Parents: 9882bc5 Author: AKuznetsov <[email protected]> Authored: Mon Sep 7 18:34:31 2015 +0700 Committer: AKuznetsov <[email protected]> Committed: Mon Sep 7 18:34:31 2015 +0700 ---------------------------------------------------------------------- .../main/js/controllers/metadata-controller.js | 199 +++++++++++-------- .../control-center-web/src/main/js/package.json | 2 +- .../js/views/configuration/metadata-load.jade | 8 +- 3 files changed, 122 insertions(+), 87 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ignite/blob/0a978129/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 f0173c9..5a9c3f7 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 @@ -282,7 +282,7 @@ controlCenterModule.controller('metadataController', [ $scope.loadMeta.action = 'connect'; $scope.loadMeta.tables = []; - loadMetaModal.show(); + $common.confirmUnsavedChanges($confirm, $scope.ui.inputForm, loadMetaModal.show); $focus('jdbcUrl'); }); @@ -364,7 +364,7 @@ controlCenterModule.controller('metadataController', [ return javaName.charAt(0).toLocaleLowerCase() + javaName.slice(1); } - $scope.packageName = 'org.apache.ignite'; + $scope.ui.packageName = 'org.apache.ignite'; function _saveMetadata() { $scope.preset.space = $scope.spaces[0]; @@ -374,104 +374,136 @@ controlCenterModule.controller('metadataController', [ $common.showError(errMsg); }); - loadMetaModal.hide(); + var tables = []; + var isIntersections = false; _.forEach($scope.loadMeta.tables, function (table) { - if (table.use) { - var qryFields = []; - var ascFields = []; - var descFields = []; - var groups = []; - var keyFields = []; - var valFields = []; + if (table.use) + if (tables.indexOf(table.tbl) >= 0) + isIntersections = true; + else + tables.push(table.tbl) + }); - var tableName = table.tbl; + tables = []; - var valType = $scope.packageName + '.' + toJavaClassName(tableName); + function saveImported() { + loadMetaModal.hide(); - function queryField(name, jdbcType) { - return {name: toJavaName(name), className: jdbcType.javaType} - } + _.forEach($scope.loadMeta.tables, function (table) { + if (table.use) { + if (tables.indexOf(table.tbl) == -1) { + var qryFields = []; + var ascFields = []; + var descFields = []; + var groups = []; + var keyFields = []; + var valFields = []; - function dbField(name, jdbcType) { - return {databaseName: name, databaseType: jdbcType.dbName, - javaName: toJavaName(name), javaType: jdbcType.javaType} - } + var tableName = table.tbl; - function colType(colName) { - var col = _.find(table.cols, function(col) { - return col.name == colName; - }); + var valType = $scope.ui.packageName + '.' + toJavaClassName(tableName); - if (col) - return $common.findJdbcType(col.type).javaType; + function queryField(name, jdbcType) { + return {name: toJavaName(name), className: jdbcType.javaType} + } - return 'Unknown'; - } + function dbField(name, jdbcType) { + return {databaseName: name, databaseType: jdbcType.dbName, + javaName: toJavaName(name), javaType: jdbcType.javaType} + } + + function colType(colName) { + var col = _.find(table.cols, function (col) { + return col.name == colName; + }); - _.forEach(table.cols, function(col) { - var colName = col.name; - var jdbcType = $common.findJdbcType(col.type); + if (col) + return $common.findJdbcType(col.type).javaType; - qryFields.push(queryField(colName, jdbcType)); + return 'Unknown'; + } - if (_.includes(table.ascCols, colName)) - ascFields.push(queryField(colName, jdbcType)); + _.forEach(table.cols, function (col) { + var colName = col.name; + var jdbcType = $common.findJdbcType(col.type); - if (_.includes(table.descCols, colName)) - descFields.push(queryField(colName, jdbcType)); + qryFields.push(queryField(colName, jdbcType)); - if (col.key) - keyFields.push(dbField(colName, jdbcType)); - else - valFields.push(dbField(colName, jdbcType)); - }); + if (_.includes(table.ascCols, colName)) + ascFields.push(queryField(colName, jdbcType)); - var idxs = table.idxs; + if (_.includes(table.descCols, colName)) + descFields.push(queryField(colName, jdbcType)); - if (table.idxs) { - var indexes = Object.keys(idxs); + if (col.key) + keyFields.push(dbField(colName, jdbcType)); + else + valFields.push(dbField(colName, jdbcType)); + }); - _.forEach(indexes, function (indexName) { - var index = idxs[indexName]; + var idxs = table.idxs; - var fields = Object.keys(index); + if (table.idxs) { + var indexes = Object.keys(idxs); - if (fields.length > 1) - groups.push( - {name: indexName, fields: _.map(fields, function (fieldName) { - return { - name: fieldName, - className: colType(fieldName), - direction: index[fieldName] - }; - })}); - }); - } + _.forEach(indexes, function (indexName) { + var index = idxs[indexName]; - var metaName = toProperCase(tableName); + var fields = Object.keys(index); - var meta = _.find($scope.metadatas, function (meta) { - return meta.name == metaName; - }); + if (fields.length > 1) + groups.push( + {name: indexName, fields: _.map(fields, function (fieldName) { + return { + name: fieldName, + className: colType(fieldName), + direction: index[fieldName] + }; + })}); + }); + } - if (!meta) - meta = {space: $scope.spaces[0], name: metaName}; - - meta.databaseSchema = table.schema; - meta.databaseTable = tableName; - meta.keyType = valType + 'Key'; - meta.valueType = valType; - meta.queryFields = qryFields; - meta.ascendingFields = ascFields; - meta.descendingFields = descFields; - meta.groups = groups; - meta.keyFields = keyFields; - meta.valueFields = valFields; - - save(meta); - } - }); + var metaName = toProperCase(tableName); + + var meta = _.find($scope.metadatas, function (meta) { + return meta.name == metaName; + }); + + if (!meta) + meta = {space: $scope.spaces[0], name: metaName}; + + meta.databaseSchema = table.schema; + meta.databaseTable = tableName; + meta.keyType = valType + 'Key'; + meta.valueType = valType; + meta.queryFields = qryFields; + meta.ascendingFields = ascFields; + meta.descendingFields = descFields; + meta.groups = groups; + meta.keyFields = keyFields; + meta.valueFields = valFields; + + save(meta, true); + + tables.push(table.tbl) + } + } + }); + + $common.showInfo('Cache type metadata loaded from database.'); + } + + if (isIntersections) + $confirm.show('<span>' + + 'Loaded metadata has intersections in schemas by table names.<br/>' + + 'Will be loaded only first table for every name.<br/><br/>' + + 'Continue to load metadata with skipping of repeat table names?' + + '</span>').then(function () { + saveImported(); + }); + else + saveImported(); } $scope.loadMetadataNext = function () { @@ -483,6 +515,10 @@ controlCenterModule.controller('metadataController', [ _saveMetadata(); }; + $scope.nextAvailable = function () { + return $scope.loadMeta.action != 'tables' || $('#metadataTableData').find(':checked').length > 0; + }; + $scope.loadMetadataPrev = function () { if ($scope.loadMeta.action == 'tables') { $scope.loadMeta.action = 'schemas'; @@ -674,7 +710,7 @@ controlCenterModule.controller('metadataController', [ } // Save cache type metadata into database. - function save(item) { + function save(item, quiet) { var qry = queryConfigured(item); var str = storeConfigured(item); @@ -689,8 +725,6 @@ controlCenterModule.controller('metadataController', [ .success(function (_id) { $common.markPristine($scope.ui.inputForm, 'metadataBackupItemChanged'); - $common.showInfo('Metadata "' + item.name + '" saved.'); - var idx = _.findIndex($scope.metadatas, function (metadata) { return metadata._id == _id; }); @@ -705,7 +739,8 @@ controlCenterModule.controller('metadataController', [ $scope.selectItem(item); - $common.showInfo('Cache type metadata"' + item.name + '" saved.'); + if (!quiet) + $common.showInfo('Cache type metadata"' + item.name + '" saved.'); }) .error(function (errMsg) { $common.showError(errMsg); http://git-wip-us.apache.org/repos/asf/ignite/blob/0a978129/modules/control-center-web/src/main/js/package.json ---------------------------------------------------------------------- diff --git a/modules/control-center-web/src/main/js/package.json b/modules/control-center-web/src/main/js/package.json index 2efdf65..501ef55 100644 --- a/modules/control-center-web/src/main/js/package.json +++ b/modules/control-center-web/src/main/js/package.json @@ -46,7 +46,7 @@ "devDependencies": { "morgan": "~1.6.1", "supertest": "^1.1.0", - "mocha": "~2.3.0", + "mocha": "~2.3.1", "should": "~7.1.0" } } http://git-wip-us.apache.org/repos/asf/ignite/blob/0a978129/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 abac308..756fdee 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 @@ -42,7 +42,7 @@ include ../includes/controls tr td(colspan='2') .metadata-scrollable(style='height: 184px') - table + table(id='metadataSchemaData') tbody tr(ng-repeat='schema in displayedSchemas') td(width='50px') @@ -53,7 +53,7 @@ include ../includes/controls .settings-row label.col-sm-2.required Package: .col-sm-10 - input.form-control(type="text" ng-model='packageName') + input.form-control(type="text" ng-model='ui.packageName') table.table.table-condensed.table-stripped.metadata(st-table='displayedTables' st-safe-src='loadMeta.tables') thead tr @@ -70,7 +70,7 @@ include ../includes/controls tr td(colspan='3') .metadata-scrollable(style='height: 146px') - table + table(id='metadataTableData') tbody tr(ng-repeat='table in displayedTables') td(width='50px') @@ -81,4 +81,4 @@ include ../includes/controls label {{::table.tbl}} .modal-footer button.btn.btn-primary(ng-show='loadMeta.action != "connect"' ng-click='loadMetadataPrev()') Prev - button.btn.btn-primary(ng-click='loadMetadataNext()') {{loadMeta.button}} + button.btn.btn-primary(ng-click='loadMetadataNext()' ng-disabled='!nextAvailable()') {{loadMeta.button}}
