You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by an...@apache.org on 2016/01/26 09:37:36 UTC

ignite git commit: IGNITE-843 Fixed import model

Repository: ignite
Updated Branches:
  refs/heads/ignite-843-rc2 8bc460b4f -> cbea5f554


IGNITE-843 Fixed import model


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

Branch: refs/heads/ignite-843-rc2
Commit: cbea5f554a1f686744c8ced75fa0ef29a6e51296
Parents: 8bc460b
Author: Andrey <an...@gridgain.com>
Authored: Tue Jan 26 15:38:17 2016 +0700
Committer: Andrey <an...@gridgain.com>
Committed: Tue Jan 26 15:38:17 2016 +0700

----------------------------------------------------------------------
 .../main/js/controllers/domains-controller.js   | 170 +++++++++----------
 .../js/views/configuration/domains-import.jade  |  10 +-
 2 files changed, 83 insertions(+), 97 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/cbea5f55/modules/control-center-web/src/main/js/controllers/domains-controller.js
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/controllers/domains-controller.js b/modules/control-center-web/src/main/js/controllers/domains-controller.js
index a1f0e3d..300735c 100644
--- a/modules/control-center-web/src/main/js/controllers/domains-controller.js
+++ b/modules/control-center-web/src/main/js/controllers/domains-controller.js
@@ -28,7 +28,6 @@ consoleModule.controller('domainsController', function ($filter, $http, $timeout
         var IMPORT_DM_NEW_CACHE = 1;
         var IMPORT_DM_ASSOCIATE_CACHE = 2;
 
-        $scope.ui.importCommonAction = IMPORT_DM_NEW_CACHE;
         $scope.ui.packageName = $commonUtils.toJavaPackageName($scope.$root.user.email.replace('@', '.')
             .split('.').reverse().join('.') + '.model');
         $scope.ui.builtinKeys = true;
@@ -597,53 +596,13 @@ consoleModule.controller('domainsController', function ($filter, $http, $timeout
             }
         };
 
-        $scope.importCommonActions = [];
-        $scope.importCommonCachesOrTemplates = [];
-
-        $scope.importCurrentActions = [];
-        $scope.importCurrentTemplates = [];
-        $scope.importCurrentCaches = [];
-
-        function _fillCommonCachesOrTemplates() {
-            $scope.importCommonCachesOrTemplates.length = 0;
-
-            if ($scope.ui.importCommonAction == IMPORT_DM_NEW_CACHE) {
-                $scope.importCommonCachesOrTemplates.push(DFLT_PARTITIONED_CACHE);
-                $scope.importCommonCachesOrTemplates.push(DFLT_REPLICATED_CACHE);
-            }
-
-            if (!$common.isEmptyArray($scope.caches)) {
-                if ($scope.importCommonCachesOrTemplates.length > 0)
-                    $scope.importCommonCachesOrTemplates.push(null);
-
-                _.forEach($scope.caches, function (cache) {
-                    $scope.importCommonCachesOrTemplates.push(cache);
-                });
-
-                $scope.ui.importCommonCacheOrTemplate = $scope.importCommonCachesOrTemplates.length > 0 ? $scope.importCommonCachesOrTemplates[0].value : null;
-            }
-        }
-
-        $scope.$watch('ui.importCommonAction', function () {
-            _fillCommonCachesOrTemplates();
-        });
-
         $scope.tableActionView = function(tbl) {
-            if (tbl.action === IMPORT_DM_NEW_CACHE) {
-                var template = _.find($scope.importCurrentTemplates, function (t) {
-                    return t && tbl.template === t.value;
-                });
-
-                return 'Create ' + tbl.generatedCacheName + ' (' + template.label + ')';
-            }
-            else {
-                var cache = _.find($scope.importCurrentCaches, function (c) {
-                    return tbl.cache === c.value;
-                });
+            var cacheName = _.find(_importCachesOrTemplates, {value: tbl.cacheOrTemplate}).label;
 
+            if (tbl.action === IMPORT_DM_NEW_CACHE)
+                return 'Create ' + tbl.generatedCacheName + ' (' + cacheName + ')';
 
-                return cache ? ('Associate with ' + cache.label) : 'No caches to associate with';
-            }
+            return 'Associate with ' + cacheName;
         };
 
         /**
@@ -665,41 +624,11 @@ consoleModule.controller('domainsController', function ($filter, $http, $timeout
 
             $http.post('/api/v1/agent/tables', preset)
                 .success(function (tables) {
-                    var hasCaches = !$common.isEmptyArray($scope.caches);
-
-                    $scope.importCommonActions.length = 0;
-                    $scope.importCommonActions.push({label: 'Create new cache by template', value: IMPORT_DM_NEW_CACHE});
-                    if (hasCaches)
-                        $scope.importCommonActions.push({label: 'Associate with existing cache', value: IMPORT_DM_ASSOCIATE_CACHE});
-
-                    $scope.importCurrentActions.length = 0;
-                    $scope.importCurrentActions.push({label: 'Create', value: IMPORT_DM_NEW_CACHE});
-                    if (hasCaches)
-                        $scope.importCurrentActions.push({label: 'Associate', value: IMPORT_DM_ASSOCIATE_CACHE});
-
-                    $scope.importCurrentTemplates.length = 0;
-                    $scope.importCurrentCaches.length = 0;
-
-                    $scope.importCurrentTemplates.push(DFLT_PARTITIONED_CACHE);
-                    $scope.importCurrentTemplates.push(DFLT_REPLICATED_CACHE);
-
-                    if (hasCaches) {
-                        $scope.importCurrentTemplates.push(null);
-
-                        _.forEach($scope.caches, function (cache) {
-                            $scope.importCurrentTemplates.push(cache);
-                            $scope.importCurrentCaches.push(cache);
-                        });
-                    }
-
-                    var dfltCache = $scope.importCurrentCaches.length > 0 ? $scope.importCurrentCaches[0] : null;
-
                     _.forEach(tables, function (tbl, idx) {
                         tbl.id = idx;
                         tbl.action = IMPORT_DM_NEW_CACHE;
                         tbl.generatedCacheName = toJavaClassName(tbl.tbl) + 'Cache';
-                        tbl.сache = dfltCache ? dfltCache.value : null;
-                        tbl.template = DFLT_PARTITIONED_CACHE.value;
+                        tbl.cacheOrTemplate = DFLT_PARTITIONED_CACHE.value;
                         tbl.label = tbl.schema + '.' + tbl.tbl;
                         tbl.edit = false;
                         tbl.use = $common.isDefined(_.find(tbl.cols, function (col) {
@@ -710,8 +639,6 @@ consoleModule.controller('domainsController', function ($filter, $http, $timeout
                     $scope.importDomain.action = 'tables';
                     $scope.importDomain.tables = tables;
                     $scope.importDomain.info = INFO_SELECT_TABLES;
-
-                    _fillCommonCachesOrTemplates();
                 })
                 .error(function (errMsg) {
                     $common.showError(errMsg);
@@ -724,23 +651,33 @@ consoleModule.controller('domainsController', function ($filter, $http, $timeout
         $scope.applyDefaults = function () {
             _.forEach($scope.importDomain.displayedTables, function (table) {
                 table.edit = false;
-                table.action = $scope.ui.importCommonAction;
-
-                if (table.action === IMPORT_DM_NEW_CACHE)
-                    table.template = $scope.ui.importCommonCacheOrTemplate;
-                else
-                    table.cache = $scope.ui.importCommonCacheOrTemplate;
+                table.action = $scope.importCommon.action;
+                table.cacheOrTemplate = $scope.importCommon.cacheOrTemplate;
             });
         };
 
-        $scope.curDbTable = null;
+        $scope._curDbTable = null;
 
         $scope.startEditDbTableCache = function (tbl) {
-            if ($scope.curDbTable)
-                $scope.curDbTable.edit = false;
+            if ($scope._curDbTable) {
+                $scope._curDbTable.edit = false;
+
+                if ($scope._curDbTable.actionWatch) {
+                    $scope._curDbTable.actionWatch();
+
+                    $scope._curDbTable.actionWatch = null;
+                }
+            }
+
+            $scope._curDbTable = tbl;
+
+            var _fillFn = _fillCommonCachesOrTemplates($scope._curDbTable);
+
+            _fillFn($scope._curDbTable.action);
 
-            tbl.edit = true;
-            $scope.curDbTable = tbl;
+            $scope._curDbTable.actionWatch = $scope.$watch('_curDbTable.action', _fillFn, true);
+
+            $scope._curDbTable.edit = true;
         };
 
         /**
@@ -955,9 +892,9 @@ consoleModule.controller('domainsController', function ($filter, $http, $timeout
 
                     // Prepare caches for generation.
                     if (table.action === IMPORT_DM_NEW_CACHE) {
-                        var template = _.find($scope.importCurrentTemplates, {value: table.template});
+                        var template = _.find(_importCachesOrTemplates, {value: table.cacheOrTemplate});
 
-                        newDomain.newCache = angular.copy(template ? template.cache : DFLT_PARTITIONED_CACHE.cache);
+                        newDomain.newCache = angular.copy(template.cache);
 
                         delete newDomain.newCache._id;
                         newDomain.newCache.name = typeName + 'Cache';
@@ -979,7 +916,7 @@ consoleModule.controller('domainsController', function ($filter, $http, $timeout
                         }
                     }
                     else {
-                        var cacheId = table.cache;
+                        var cacheId = table.cacheOrTemplate;
 
                         newDomain.caches = [cacheId];
 
@@ -1150,9 +1087,45 @@ consoleModule.controller('domainsController', function ($filter, $http, $timeout
                 $scope.selectItem($scope.domains[0]);
         }
 
+        $scope.importActions = [{
+            label: 'Create new cache by template',
+            shortLabel: 'Create',
+            value: IMPORT_DM_NEW_CACHE
+        }];
+
+        $scope.importCommon = {};
+
+    function _fillCommonCachesOrTemplates(item) {
+            return function (action) {
+                if (item.cachesOrTemplates)
+                    item.cachesOrTemplates.length = 0;
+                else
+                    item.cachesOrTemplates = [];
+
+                if (action == IMPORT_DM_NEW_CACHE) {
+                    item.cachesOrTemplates.push(DFLT_PARTITIONED_CACHE);
+                    item.cachesOrTemplates.push(DFLT_REPLICATED_CACHE);
+                }
+
+                if (!$common.isEmptyArray($scope.caches)) {
+                    if (item.cachesOrTemplates.length > 0)
+                        item.cachesOrTemplates.push(null);
+
+                    _.forEach($scope.caches, function (cache) {
+                        item.cachesOrTemplates.push(cache);
+                    });
+                }
+
+                if (!_.find(item.cachesOrTemplates, {value: item.cacheOrTemplate}))
+                    item.cacheOrTemplate = item.cachesOrTemplates[0].value;
+            }
+        }
+
         // When landing on the page, get domain models and show them.
         $loading.start('loadingDomainModelsScreen');
 
+        var _importCachesOrTemplates = [];
+
         $http.post('/api/v1/configuration/domains/list')
             .success(function (data) {
                 $scope.spaces = data.spaces;
@@ -1160,10 +1133,23 @@ consoleModule.controller('domainsController', function ($filter, $http, $timeout
                 $scope.caches = _mapCaches(data.caches);
                 $scope.domains = data.domains;
 
+                _importCachesOrTemplates = [DFLT_PARTITIONED_CACHE, DFLT_REPLICATED_CACHE].concat($scope.caches);
+
                 _.forEach($scope.clusters, function (cluster) {
                     $scope.ui.generatedCachesClusters.push(cluster.value);
                 });
 
+                if (!$common.isEmptyArray($scope.caches))
+                    $scope.importActions.push({
+                        label: 'Associate with existing cache',
+                        shortLabel: 'Associate',
+                        value: IMPORT_DM_ASSOCIATE_CACHE
+                    });
+
+                $scope.$watch('importCommon.action', _fillCommonCachesOrTemplates($scope.importCommon), true);
+
+                $scope.importCommon.action = IMPORT_DM_NEW_CACHE;
+
                 // Load page descriptor.
                 $http.get('/models/domains.json')
                     .success(function (data) {

http://git-wip-us.apache.org/repos/asf/ignite/blob/cbea5f55/modules/control-center-web/src/main/js/views/configuration/domains-import.jade
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/views/configuration/domains-import.jade b/modules/control-center-web/src/main/js/views/configuration/domains-import.jade
index 4a03f88..73df0c0 100644
--- a/modules/control-center-web/src/main/js/views/configuration/domains-import.jade
+++ b/modules/control-center-web/src/main/js/views/configuration/domains-import.jade
@@ -144,9 +144,9 @@ mixin td-ellipses-lbl(w, lbl)
                                                     div.td-ellipsis
                                                         a(ng-if='!table.edit' ng-click='startEditDbTableCache(table)') {{tableActionView(table)}}
                                                         div(style='display: flex' ng-if='table.edit')
-                                                            button.select-toggle.form-control(style='width: 35%; margin-right: 5px' bs-select ng-model='table.action' data-container='false' bs-options='item.value as item.label for item in importCurrentActions')
-                                                            button.select-toggle.form-control(ng-if='table.action==1' style='width: 65%; margin-right: 0' bs-select ng-model='table.template' data-container='false' bs-options='item.value as item.label for item in importCurrentTemplates')
-                                                            button.select-toggle.form-control(ng-if='table.action==2' style='width: 65%; margin-right: 0' bs-select ng-model='table.cache' data-container='false' bs-options='item.value as item.label for item in importCurrentCaches')
+                                                            button.select-toggle.form-control(style='width: 35%; margin-right: 5px' bs-select ng-model='table.action' data-container='false' bs-options='item.value as item.shortLabel for item in importActions')
+                                                            button.select-toggle.form-control(style='width: 65%; margin-right: 0' bs-select ng-model='table.cacheOrTemplate' data-container='false' bs-options='item.value as item.label for item in table.cachesOrTemplates')
+                                                            //- button.select-toggle.form-control(ng-if='table.action==2' style='width: 65%; margin-right: 0' bs-select ng-model='table.cache' data-container='false' bs-options='item.value as item.label for item in importCurrentCaches')
                                                 td
                 .settings-row
                     label Defaults to be applied for filtered tables
@@ -154,9 +154,9 @@ mixin td-ellipses-lbl(w, lbl)
                 .settings-row
                     .col-sm-11
                         .col-sm-6(style='padding-right: 5px')
-                            button.select-toggle.form-control(bs-select ng-model='ui.importCommonAction' data-container='false' bs-options='item.value as item.label for item in importCommonActions')
+                            button.select-toggle.form-control(bs-select ng-model='importCommon.action' data-container='false' bs-options='item.value as item.label for item in importActions')
                         .col-sm-6(style='padding-left: 5px; padding-right: 5px')
-                            button.select-toggle.form-control(bs-select ng-model='ui.importCommonCacheOrTemplate' data-container='false' bs-options='item.value as item.label for item in importCommonCachesOrTemplates')
+                            button.select-toggle.form-control(bs-select ng-model='importCommon.cacheOrTemplate' data-container='false' bs-options='item.value as item.label for item in importCommon.cachesOrTemplates')
                     .col-sm-1(style='padding-left: 5px')
                         button.btn.btn-primary(ng-click='applyDefaults()') Apply
             .import-domain-model-wizard-page(ng-show='importDomain.action == "options"' style='margin-bottom: 176px')