You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by ak...@apache.org on 2016/03/03 13:07:08 UTC

[01/28] ignite git commit: IGNITE-843 Fixed "JQuery is not a function" + added missing affix fix on Domains screen.

Repository: ignite
Updated Branches:
  refs/heads/ignite-843-rc3 daccaefad -> 35aa7eb1f


IGNITE-843 Fixed "JQuery is not a function" + added missing affix fix on Domains screen.


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

Branch: refs/heads/ignite-843-rc3
Commit: 1b214b0ef904474e9e1a58af4e365eece2757b8d
Parents: daccaef
Author: Dmitriyff <dm...@gmail.com>
Authored: Wed Feb 24 16:29:25 2016 +0700
Committer: Alexey Kuznetsov <ak...@apache.org>
Committed: Wed Feb 24 16:29:25 2016 +0700

----------------------------------------------------------------------
 .../app/directives/bs-affix-update/bs-affix-update.directive.js  | 4 ++--
 .../src/main/js/views/configuration/domains.jade                 | 2 +-
 2 files changed, 3 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/1b214b0e/modules/control-center-web/src/main/js/app/directives/bs-affix-update/bs-affix-update.directive.js
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/app/directives/bs-affix-update/bs-affix-update.directive.js b/modules/control-center-web/src/main/js/app/directives/bs-affix-update/bs-affix-update.directive.js
index 131089d..dbf78e5 100644
--- a/modules/control-center-web/src/main/js/app/directives/bs-affix-update/bs-affix-update.directive.js
+++ b/modules/control-center-web/src/main/js/app/directives/bs-affix-update/bs-affix-update.directive.js
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-import jQuery from 'jquery';
+import angular from 'angular';
 
 export default ['igniteBsAffixUpdate', ['$window', '$timeout', ($window, $timeout) => {
     let update = null;
@@ -23,7 +23,7 @@ export default ['igniteBsAffixUpdate', ['$window', '$timeout', ($window, $timeou
     const link = ({$last}) => {
         if ($last) {
             update && $timeout.cancel(update);
-            update = $timeout(() => jQuery($window).trigger('resize'), 1000);
+            update = $timeout(() => angular.element($window).triggerHandler('resize'), 1000);
         }
     };
 

http://git-wip-us.apache.org/repos/asf/ignite/blob/1b214b0e/modules/control-center-web/src/main/js/views/configuration/domains.jade
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/views/configuration/domains.jade b/modules/control-center-web/src/main/js/views/configuration/domains.jade
index 395ead1..0dd39a0 100644
--- a/modules/control-center-web/src/main/js/views/configuration/domains.jade
+++ b/modules/control-center-web/src/main/js/views/configuration/domains.jade
@@ -44,7 +44,7 @@ include ../includes/infos
                                     .scrollable-y(ng-show='(displayedRows | domainsValidation:ui.showValid:true).length > 0' style='max-height: 200px')
                                         table
                                             tbody
-                                                tr(ng-repeat='row in (displayedRows | domainsValidation:ui.showValid:true) track by row._id')
+                                                tr(ng-repeat='row in (displayedRows | domainsValidation:ui.showValid:true) track by row._id' ignite-bs-affix-update)
                                                     td
                                                         a(ng-class='{active: row._id == selectedItem._id}' ng-click='selectItem(row)') {{$index + 1}}) {{row.valueType}}
                                     label.placeholder(ng-show='(displayedRows | domainsValidation:ui.showValid:true).length == 0') No domain models found


[02/28] ignite git commit: IGNITE-2711 Stop refresh on paragraph remove.

Posted by ak...@apache.org.
IGNITE-2711 Stop refresh on paragraph remove.


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

Branch: refs/heads/ignite-843-rc3
Commit: 5e3b91912eda5dcb9f5a3afb2811f61cfad152a9
Parents: daccaef
Author: Andrey <an...@gridgain.com>
Authored: Wed Feb 24 16:38:25 2016 +0700
Committer: Andrey <an...@gridgain.com>
Committed: Wed Feb 24 16:38:25 2016 +0700

----------------------------------------------------------------------
 .../src/main/js/controllers/sql-controller.js   | 26 +++++++++++---------
 1 file changed, 14 insertions(+), 12 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/5e3b9191/modules/control-center-web/src/main/js/controllers/sql-controller.js
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/controllers/sql-controller.js b/modules/control-center-web/src/main/js/controllers/sql-controller.js
index a7abc82..84773b2 100644
--- a/modules/control-center-web/src/main/js/controllers/sql-controller.js
+++ b/modules/control-center-web/src/main/js/controllers/sql-controller.js
@@ -407,23 +407,25 @@ consoleModule.controller('sqlController', function ($http, $timeout, $interval,
     $scope.removeParagraph = function(paragraph) {
         $confirm.confirm('Are you sure you want to remove: "' + paragraph.name + '"?')
             .then(function () {
-                    var paragraph_idx = _.findIndex($scope.notebook.paragraphs, function (item) {
-                        return paragraph == item;
-                    });
+                $scope.stopRefresh(paragraph);
 
-                    var panel_idx = _.findIndex($scope.expandedParagraphs, function (item) {
-                        return paragraph_idx == item;
-                    });
+                var paragraph_idx = _.findIndex($scope.notebook.paragraphs, function (item) {
+                    return paragraph == item;
+                });
+
+                var panel_idx = _.findIndex($scope.expandedParagraphs, function (item) {
+                    return paragraph_idx == item;
+                });
 
-                    if (panel_idx >= 0)
-                        $scope.expandedParagraphs.splice(panel_idx, 1);
+                if (panel_idx >= 0)
+                    $scope.expandedParagraphs.splice(panel_idx, 1);
 
-                    $scope.notebook.paragraphs.splice(paragraph_idx, 1);
+                $scope.notebook.paragraphs.splice(paragraph_idx, 1);
 
-                    $scope.rebuildScrollParagraphs();
+                $scope.rebuildScrollParagraphs();
 
-                    QueryNotebooks.save($scope.demo, $scope.notebook)
-                        .catch(_handleException);
+                QueryNotebooks.save($scope.demo, $scope.notebook)
+                    .catch(_handleException);
             });
     };
 


[25/28] ignite git commit: IGNTIE-2723 fixed java class input - Fixes #532.

Posted by ak...@apache.org.
IGNTIE-2723 fixed java class input - Fixes #532.

Signed-off-by: Alexey Kuznetsov <ak...@apache.org>


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

Branch: refs/heads/ignite-843-rc3
Commit: 877f4a446abef7e0118f65095767d8855188afc4
Parents: 53804c7
Author: Dmitriyff <dm...@gmail.com>
Authored: Thu Mar 3 16:36:55 2016 +0700
Committer: Alexey Kuznetsov <ak...@apache.org>
Committed: Thu Mar 3 16:36:55 2016 +0700

----------------------------------------------------------------------
 .../form-field-java-class.directive.js          | 46 ++++++++++++++++----
 .../form-field-java-class.jade                  | 38 ++++++++--------
 2 files changed, 58 insertions(+), 26 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/877f4a44/modules/control-center-web/src/main/js/app/directives/form-field-java-class/form-field-java-class.directive.js
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/app/directives/form-field-java-class/form-field-java-class.directive.js b/modules/control-center-web/src/main/js/app/directives/form-field-java-class/form-field-java-class.directive.js
index d0f7254..659030e 100644
--- a/modules/control-center-web/src/main/js/app/directives/form-field-java-class/form-field-java-class.directive.js
+++ b/modules/control-center-web/src/main/js/app/directives/form-field-java-class/form-field-java-class.directive.js
@@ -18,19 +18,48 @@
 import template from './form-field-java-class.jade!';
 
 export default ['igniteFormFieldJavaClass', ['IgniteFormGUID', (guid) => {
-    const link = (scope, el, attrs, [form, label]) => {
+    const link = (scope, el, attrs, [ngModel, form, label]) => {
         const {id, name} = scope;
-        const field = form[name];
-
-        scope.form = form;
-        scope.field = field;
-        scope.label = label;
 
         label.for = scope.id = id || guid();
 
+        scope.form = form;
+        scope.label = label;
+        scope.ngModel = ngModel;
         scope.$watch('required', (required) => {
             label.required = required || false;
         });
+
+        form.$defaults = form.$defaults || {};
+        form.$defaults[name] = _.cloneDeep(scope.value);
+
+        const setAsDefault = () => {
+            if (!form.$pristine) return;
+
+            form.$defaults = form.$defaults || {};
+            form.$defaults[name] = _.cloneDeep(scope.value);
+        };
+
+        scope.$watch(() => form.$pristine, setAsDefault);
+        scope.$watch('value', setAsDefault);
+
+        scope.ngChange = function() {
+            ngModel.$setViewValue(scope.value);
+
+            if (JSON.stringify(scope.value) !== JSON.stringify(form.$defaults[name]))
+                ngModel.$setDirty();
+            else
+                ngModel.$setPristine();
+
+            if (ngModel.$valid)
+                el.find('input').addClass('ng-valid').removeClass('ng-invalid');
+            else
+                el.find('input').removeClass('ng-valid').addClass('ng-invalid');
+        };
+
+        ngModel.$render = function() {
+            scope.value = ngModel.$modelValue;
+        };
     };
 
     return {
@@ -38,11 +67,10 @@ export default ['igniteFormFieldJavaClass', ['IgniteFormGUID', (guid) => {
         scope: {
             id: '@',
             name: '@',
+            placeholder: '@',
             required: '=ngRequired',
             disabled: '=ngDisabled',
-            unique: '=igniteUnique',
 
-            ngModel: '=',
             ngBlur: '&',
 
             autofocus: '=igniteFormFieldInputAutofocus'
@@ -51,6 +79,6 @@ export default ['igniteFormFieldJavaClass', ['IgniteFormGUID', (guid) => {
         template,
         replace: true,
         transclude: true,
-        require: ['^form', '?^igniteFormField']
+        require: ['ngModel', '^form', '?^igniteFormField']
     };
 }]];

http://git-wip-us.apache.org/repos/asf/ignite/blob/877f4a44/modules/control-center-web/src/main/js/app/directives/form-field-java-class/form-field-java-class.jade
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/app/directives/form-field-java-class/form-field-java-class.jade b/modules/control-center-web/src/main/js/app/directives/form-field-java-class/form-field-java-class.jade
index d8e5162..ae75c27 100644
--- a/modules/control-center-web/src/main/js/app/directives/form-field-java-class/form-field-java-class.jade
+++ b/modules/control-center-web/src/main/js/app/directives/form-field-java-class/form-field-java-class.jade
@@ -16,38 +16,42 @@
 
 mixin feedback(error, message)
     i.fa.fa-exclamation-triangle.form-control-feedback(
-        ng-if='!form[name].$pristine && form[name].$error.#{error}'
+        ng-if='!form[name+"JavaClass"].$pristine && form[name+"JavaClass"].$error.#{error}'
         bs-tooltip='"{{ label.name }} #{message}"'
         ignite-error='#{error}'
         ignite-error-message='{{ label.name }} #{message}'
     )
 
-div
-    ignite-form-field-input-text(
-        data-id='{{ id }}'
-        data-name='{{ name }}'
-        data-placeholder='Enter fully qualified class name'
+.input-tip
+    input.form-control(
+        id='{{ id }}'
+        name='{{ name }}JavaClass'
+        placeholder='Enter fully qualified class name'
+        type='text'
 
-        data-ng-model='ngModel'
+        data-ng-model='value'
+        data-ng-blur='ngBlur()'
+        data-ng-change='ngChange()'
         data-ng-required='required || false'
         data-ng-disabled='disabled || false'
+        data-ng-model-options='{debounce: 150}'
 
         data-java-keywords='true'
         data-java-identifier='true'
         data-java-package-specified='true'
         data-java-built-in-class='true'
-        
-        data-ignite-unique='unique'
-        data-ignite-form-field-input-autofocus='autofocus || false '
+
+        data-ignite-form-field-input-autofocus='autofocus || false'
 
         on-enter='onEnter()'
         on-escape='onEscape()'
-        data-ng-blur='ngBlur()'
     )
-        span(ng-transclude)
 
-        +feedback('javaPackageSpecified', 'does not have package specified')
-        +feedback('javaBuiltInClass', 'should not be the Java built-in class')
-        +feedback('javaKeywords', 'could not contains reserved Java keyword')
-        +feedback('javaIdentifier', 'is invalid Java identifier')
-        +feedback('required', 'could not be empty')
+    span(ng-transclude='')
+
+    +feedback('javaPackageSpecified', 'does not have package specified')
+    +feedback('javaBuiltInClass', 'should not be the Java built-in class')
+    +feedback('javaKeywords', 'could not contains reserved Java keyword')
+    +feedback('javaIdentifier', 'is invalid Java identifier')
+
+    +feedback('required', 'could not be empty!')


[16/28] ignite git commit: IGNITE-2713 Added resource folder to project structure.

Posted by ak...@apache.org.
IGNITE-2713 Added resource folder to project structure.


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

Branch: refs/heads/ignite-843-rc3
Commit: f045f5386f9dc873a67cf8587921172a78c55b85
Parents: cb1d79d
Author: vsisko <vs...@gridgain.com>
Authored: Mon Feb 29 12:04:30 2016 +0700
Committer: AKuznetsov <ak...@gridgain.com>
Committed: Mon Feb 29 12:04:30 2016 +0700

----------------------------------------------------------------------
 .../configuration/summary/summary.controller.js | 26 ++++++++++++++------
 1 file changed, 19 insertions(+), 7 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/f045f538/modules/control-center-web/src/main/js/app/modules/states/configuration/summary/summary.controller.js
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/app/modules/states/configuration/summary/summary.controller.js b/modules/control-center-web/src/main/js/app/modules/states/configuration/summary/summary.controller.js
index 068a03c..d4e3e98 100644
--- a/modules/control-center-web/src/main/js/app/modules/states/configuration/summary/summary.controller.js
+++ b/modules/control-center-web/src/main/js/app/modules/states/configuration/summary/summary.controller.js
@@ -90,6 +90,14 @@ export default [
             ]
         };
 
+        const resourcesFolder = {
+            type: 'folder',
+            name: 'resources',
+            children: [
+                { type: 'file', name: 'secret.properties' }
+            ]
+        };
+
         const javaFolder = {
             type: 'folder',
             name: 'java',
@@ -109,6 +117,12 @@ export default [
 
         const srvCfg = { type: 'file', name: 'server.xml' };
 
+        const mainFolder = {
+            type: 'folder',
+            name: 'main',
+            children: [javaFolder]
+        };
+
         const projectStructureRoot = {
             type: 'folder',
             name: 'project.zip',
@@ -128,13 +142,7 @@ export default [
                 {
                     type: 'folder',
                     name: 'src',
-                    children: [
-                        {
-                            type: 'folder',
-                            name: 'main',
-                            children: [javaFolder]
-                        }
-                    ]
+                    children: [mainFolder]
                 },
                 { type: 'file', name: '.dockerignore' },
                 { type: 'file', name: 'Dockerfile' },
@@ -205,8 +213,12 @@ export default [
 
             sessionStorage.summarySelectedId = $scope.clusters.indexOf(cluster);
 
+            mainFolder.children = [javaFolder];
             javaFolder.children = [javaConfigFolder, javaStartupFolder];
 
+            if ($generatorCommon.secretPropertiesNeeded(cluster))
+                mainFolder.children.push(resourcesFolder);
+
             if ($generatorCommon.dataForExampleConfigured(cluster))
                 javaFolder.children.push(exampleFolder);
 


[18/28] ignite git commit: IGNITE-2724 Fixed defaults.

Posted by ak...@apache.org.
IGNITE-2724 Fixed defaults.


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

Branch: refs/heads/ignite-843-rc3
Commit: 06af6d2310eba672562857c83478f6a54c047c4b
Parents: 440aa00
Author: vsisko <vs...@gridgain.com>
Authored: Tue Mar 1 17:04:44 2016 +0700
Committer: AKuznetsov <ak...@gridgain.com>
Committed: Tue Mar 1 17:04:44 2016 +0700

----------------------------------------------------------------------
 .../clusters/general/discovery/zookeeper.jade   |  5 ++-
 .../bounded-exponential-backoff.jade            |  5 +--
 .../discovery/zookeeper/retrypolicy/custom.jade |  2 +-
 .../retrypolicy/exponential-backoff.jade        |  4 +--
 .../zookeeper/retrypolicy/forever.jade          |  1 -
 .../zookeeper/retrypolicy/n-times.jade          |  2 --
 .../zookeeper/retrypolicy/one-time.jade         |  1 -
 .../zookeeper/retrypolicy/until-elapsed.jade    |  2 --
 .../main/js/helpers/generator/generator-java.js | 34 ++++++++++----------
 .../main/js/helpers/generator/generator-xml.js  | 30 ++++++++---------
 10 files changed, 39 insertions(+), 47 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/06af6d23/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper.jade
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper.jade b/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper.jade
index 709d436..c1d3b0b 100644
--- a/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper.jade
+++ b/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper.jade
@@ -22,7 +22,9 @@ div
             ignite-form-field-label
                 | Curator:
             ignite-form-field-tooltip
-                | The Curator framework in use
+                | The Curator framework in use #[br]
+                | By default generates curator of org.apache.curator.framework.imps.CuratorFrameworkImpl.CuratorFrameworkImpl
+                | class with configured connect string, retry policy, and default session and connection timeouts
             ignite-form-field-java-class(
                 data-id='curator'
                 data-name='curator'
@@ -53,6 +55,7 @@ div
                     li Max number of times - retries a max number of times
                     li Only once - retries only once
                     li Always allow retry - retries infinitely
+                    li Default - exponential backoff retry policy with configured base sleep time equal to 1000ms and max retry count equal to 10
                     li Custom - custom retry policy implementation
             ignite-form-field-dropdown(
                 data-id='retryPolicy'

http://git-wip-us.apache.org/repos/asf/ignite/blob/06af6d23/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/bounded-exponential-backoff.jade
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/bounded-exponential-backoff.jade b/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/bounded-exponential-backoff.jade
index cc4920f..db6a9d6 100644
--- a/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/bounded-exponential-backoff.jade
+++ b/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/bounded-exponential-backoff.jade
@@ -22,12 +22,11 @@ div
             ignite-form-field-label
                 | Base interval:
             ignite-form-field-tooltip
-                | Initial amount of time to wait between retries
+                | Initial amount of time in ms to wait between retries
             ignite-form-field-input-number(
                 data-id='baseSleepTimeMs'
                 data-name='baseSleepTimeMs'
                 data-ng-model='#{model}.baseSleepTimeMs'
-                data-ng-required='true'
                 data-placeholder='1000'
             )
     .details-row
@@ -41,7 +40,6 @@ div
                 data-name='maxSleepTimeMs'
                 data-ng-model='#{model}.maxSleepTimeMs'
                 data-placeholder='Integer.MAX_VALUE'
-                data-ng-required='true'
             )
     .details-row
         ignite-form-field
@@ -53,7 +51,6 @@ div
                 data-id='maxRetries'
                 data-name='maxRetries'
                 data-ng-model='#{model}.maxRetries'
-                data-ng-required='true'
                 data-placeholder='10'
                 data-max='29'
             )

http://git-wip-us.apache.org/repos/asf/ignite/blob/06af6d23/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/custom.jade
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/custom.jade b/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/custom.jade
index e5663a8..337f2f8 100644
--- a/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/custom.jade
+++ b/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/custom.jade
@@ -26,5 +26,5 @@
             data-id='className'
             data-name='className'
             data-ng-model='#{model}.className'
-            data-required='true'
+            data-ng-required='true'
         )

http://git-wip-us.apache.org/repos/asf/ignite/blob/06af6d23/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/exponential-backoff.jade
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/exponential-backoff.jade b/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/exponential-backoff.jade
index b33622b..0e89242 100644
--- a/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/exponential-backoff.jade
+++ b/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/exponential-backoff.jade
@@ -22,12 +22,11 @@ div
             ignite-form-field-label
                 | Base interval:
             ignite-form-field-tooltip
-                | Initial amount of time to wait between retries
+                | Initial amount of time in ms to wait between retries
             ignite-form-field-input-number(
                 data-id='baseSleepTimeMs'
                 data-name='baseSleepTimeMs'
                 data-ng-model='#{model}.baseSleepTimeMs'
-                data-ng-required='true'
                 data-placeholder='1000'
             )
     .details-row
@@ -40,7 +39,6 @@ div
                 data-id='maxRetries'
                 data-name='maxRetries'
                 data-ng-model='#{model}.maxRetries'
-                data-ng-required='true'
                 data-placeholder='10'
                 data-max='29'
             )

http://git-wip-us.apache.org/repos/asf/ignite/blob/06af6d23/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/forever.jade
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/forever.jade b/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/forever.jade
index cde2869..d14ff21 100644
--- a/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/forever.jade
+++ b/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/forever.jade
@@ -26,6 +26,5 @@
             data-id='retryIntervalMs'
             data-name='retryIntervalMs'
             data-ng-model='#{model}.retryIntervalMs'
-            data-ng-required='true'
             data-placeholder='1000'
         )

http://git-wip-us.apache.org/repos/asf/ignite/blob/06af6d23/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/n-times.jade
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/n-times.jade b/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/n-times.jade
index 71a7acc..977a028 100644
--- a/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/n-times.jade
+++ b/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/n-times.jade
@@ -28,7 +28,6 @@ div
                 data-name='n'
                 data-ng-model='#{model}.n'
                 data-placeholder='10'
-                data-ng-required='true'
             )
     .details-row
         ignite-form-field
@@ -40,6 +39,5 @@ div
                 data-id='sleepMsBetweenRetries'
                 data-name='sleepMsBetweenRetries'
                 data-ng-model='#{model}.sleepMsBetweenRetries'
-                data-ng-required='true'
                 data-placeholder='1000'
             )

http://git-wip-us.apache.org/repos/asf/ignite/blob/06af6d23/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/one-time.jade
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/one-time.jade b/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/one-time.jade
index 39c7f13..f102f7e 100644
--- a/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/one-time.jade
+++ b/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/one-time.jade
@@ -27,6 +27,5 @@ div
                 data-id='sleepMsBetweenRetry'
                 data-name='sleepMsBetweenRetry'
                 data-ng-model='#{model}.sleepMsBetweenRetry'
-                data-ng-required='true'
                 data-placeholder='1000'
             )

http://git-wip-us.apache.org/repos/asf/ignite/blob/06af6d23/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/until-elapsed.jade
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/until-elapsed.jade b/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/until-elapsed.jade
index e834d55..b5cadc7 100644
--- a/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/until-elapsed.jade
+++ b/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/until-elapsed.jade
@@ -27,7 +27,6 @@ div
                 data-id='maxElapsedTimeMs'
                 data-name='maxElapsedTimeMs'
                 data-ng-model='#{model}.maxElapsedTimeMs'
-                data-ng-required='true'
                 data-placeholder='60000'
             )
     .details-row
@@ -40,6 +39,5 @@ div
                 data-id='sleepMsBetweenRetries'
                 data-name='sleepMsBetweenRetries'
                 data-ng-model='#{model}.sleepMsBetweenRetries'
-                data-ng-required='true'
                 data-placeholder='1000'
             )

http://git-wip-us.apache.org/repos/asf/ignite/blob/06af6d23/modules/control-center-web/src/main/js/helpers/generator/generator-java.js
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/helpers/generator/generator-java.js b/modules/control-center-web/src/main/js/helpers/generator/generator-java.js
index dfb7a64..4e94d73 100644
--- a/modules/control-center-web/src/main/js/helpers/generator/generator-java.js
+++ b/modules/control-center-web/src/main/js/helpers/generator/generator-java.js
@@ -63,8 +63,8 @@ $generatorJava.setterName = function (propName, setterName) {
 };
 
 // Add constructor argument
-$generatorJava.constructorArg = function (obj, propName, notFirst, opt) {
-    var v = obj ? obj[propName] : undefined;
+$generatorJava.constructorArg = function (obj, propName, dflt, notFirst, opt) {
+    var v = (obj ? obj[propName] : undefined) || dflt;
 
     if ($commonUtils.isDefinedAndNotEmpty(v))
         return (notFirst ? ', ' : '') + $generatorJava.toJavaCode(v);
@@ -555,43 +555,43 @@ $generatorJava.clusterGeneral = function (cluster, clientNearCfg, res) {
                         switch (kind) {
                             case 'ExponentialBackoff':
                                 res.line(finderVar + '.setRetryPolicy(new ' + res.importClass('org.apache.curator.retry.ExponentialBackoffRetry') + '(' +
-                                    $generatorJava.constructorArg(retryPolicy, 'baseSleepTimeMs') +
-                                    $generatorJava.constructorArg(retryPolicy, 'maxRetries', true) +
-                                    $generatorJava.constructorArg(retryPolicy, 'maxSleepMs', true, true) + '));');
+                                    $generatorJava.constructorArg(retryPolicy, 'baseSleepTimeMs', 1000) +
+                                    $generatorJava.constructorArg(retryPolicy, 'maxRetries', 10, true) +
+                                    $generatorJava.constructorArg(retryPolicy, 'maxSleepMs', undefined, true, true) + '));');
 
                                 break;
 
                             case 'BoundedExponentialBackoff':
                                 res.line(finderVar + '.setRetryPolicy(new ' + res.importClass('org.apache.curator.retry.BoundedExponentialBackoffRetry') + '(' +
-                                    $generatorJava.constructorArg(retryPolicy, 'baseSleepTimeMs') +
-                                    $generatorJava.constructorArg(retryPolicy, 'maxSleepTimeMs', true) +
-                                    $generatorJava.constructorArg(retryPolicy, 'maxRetries', true) + '));');
+                                    $generatorJava.constructorArg(retryPolicy, 'baseSleepTimeMs', 1000) +
+                                    $generatorJava.constructorArg(retryPolicy, 'maxSleepTimeMs', 2147483647, true) +
+                                    $generatorJava.constructorArg(retryPolicy, 'maxRetries', 10, true) + '));');
 
                                 break;
 
                             case 'UntilElapsed':
                                 res.line(finderVar + '.setRetryPolicy(new ' + res.importClass('org.apache.curator.retry.RetryUntilElapsed') + '(' +
-                                    $generatorJava.constructorArg(retryPolicy, 'maxElapsedTimeMs') +
-                                    $generatorJava.constructorArg(retryPolicy, 'sleepMsBetweenRetries', true) + '));');
+                                    $generatorJava.constructorArg(retryPolicy, 'maxElapsedTimeMs', 60000) +
+                                    $generatorJava.constructorArg(retryPolicy, 'sleepMsBetweenRetries', 1000, true) + '));');
 
                                 break;
 
                             case 'NTimes':
                                 res.line(finderVar + '.setRetryPolicy(new ' + res.importClass('org.apache.curator.retry.RetryNTimes') + '(' +
-                                    $generatorJava.constructorArg(retryPolicy, 'n') +
-                                    $generatorJava.constructorArg(retryPolicy, 'sleepMsBetweenRetries', true) + '));');
+                                    $generatorJava.constructorArg(retryPolicy, 'n', 10) +
+                                    $generatorJava.constructorArg(retryPolicy, 'sleepMsBetweenRetries', 1000, true) + '));');
 
                                 break;
 
                             case 'OneTime':
                                 res.line(finderVar + '.setRetryPolicy(new ' + res.importClass('org.apache.curator.retry.RetryOneTime') + '(' +
-                                    $generatorJava.constructorArg(retryPolicy, 'sleepMsBetweenRetry') + '));');
+                                    $generatorJava.constructorArg(retryPolicy, 'sleepMsBetweenRetry', 1000) + '));');
 
                                 break;
 
                             case 'Forever':
                                 res.line(finderVar + '.setRetryPolicy(new ' + res.importClass('org.apache.curator.retry.RetryForever') + '(' +
-                                    $generatorJava.constructorArg(retryPolicy, 'retryIntervalMs') + '));');
+                                    $generatorJava.constructorArg(retryPolicy, 'retryIntervalMs', 1000) + '));');
 
                                 break;
 
@@ -2383,9 +2383,9 @@ $generatorJava.igfsSecondFS = function(igfs, varName, res) {
 
         res.line(varName + '.setSecondaryFileSystem(new ' +
             res.importClass('org.apache.ignite.hadoop.fs.IgniteHadoopIgfsSecondaryFileSystem') + '(' +
-                $generatorJava.constructorArg(secondFs, 'uri') +
-                (cfgDefined || nameDefined ? $generatorJava.constructorArg(secondFs, 'cfgPath', true) : '') +
-                $generatorJava.constructorArg(secondFs, 'userName', true, true) +
+                $generatorJava.constructorArg(secondFs, 'uri', undefined) +
+                (cfgDefined || nameDefined ? $generatorJava.constructorArg(secondFs, 'cfgPath', undefined, true) : '') +
+                $generatorJava.constructorArg(secondFs, 'userName', undefined, true, true) +
             '));');
 
         res.needEmptyLine = true;

http://git-wip-us.apache.org/repos/asf/ignite/blob/06af6d23/modules/control-center-web/src/main/js/helpers/generator/generator-xml.js
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/helpers/generator/generator-xml.js b/modules/control-center-web/src/main/js/helpers/generator/generator-xml.js
index 0afe190..29c924e 100644
--- a/modules/control-center-web/src/main/js/helpers/generator/generator-xml.js
+++ b/modules/control-center-web/src/main/js/helpers/generator/generator-xml.js
@@ -27,8 +27,8 @@ $generatorXml.escape = function (s) {
 };
 
 // Add constructor argument
-$generatorXml.constructorArg = function (res, ix, obj, propName, opt) {
-    var v = obj ? obj[propName] : undefined;
+$generatorXml.constructorArg = function (res, ix, obj, propName, dflt, opt) {
+    var v = (obj ? obj[propName] : undefined) || dflt;
 
     if ($commonUtils.isDefinedAndNotEmpty(v))
         res.line('<constructor-arg ' + (ix >= 0 ? 'index="' + ix + '" ' : '') + 'value="' + v + '"/>');
@@ -401,48 +401,48 @@ $generatorXml.clusterGeneral = function (cluster, res) {
                         switch (kind) {
                             case 'ExponentialBackoff':
                                 res.startBlock('<bean class="org.apache.curator.retry.ExponentialBackoffRetry">');
-                                $generatorXml.constructorArg(res, 0, retryPolicy, 'baseSleepTimeMs');
-                                $generatorXml.constructorArg(res, 1, retryPolicy, 'maxRetries');
-                                $generatorXml.constructorArg(res, 2, retryPolicy, 'maxSleepMs', true);
+                                $generatorXml.constructorArg(res, 0, retryPolicy, 'baseSleepTimeMs', 1000);
+                                $generatorXml.constructorArg(res, 1, retryPolicy, 'maxRetries', 10);
+                                $generatorXml.constructorArg(res, 2, retryPolicy, 'maxSleepMs', undefined, true);
                                 res.endBlock('</bean>');
 
                                 break;
 
                             case 'BoundedExponentialBackoff':
                                 res.startBlock('<bean class="org.apache.curator.retry.BoundedExponentialBackoffRetry">');
-                                $generatorXml.constructorArg(res, 0, retryPolicy, 'baseSleepTimeMs');
-                                $generatorXml.constructorArg(res, 1, retryPolicy, 'maxSleepTimeMs');
-                                $generatorXml.constructorArg(res, 2, retryPolicy, 'maxRetries');
+                                $generatorXml.constructorArg(res, 0, retryPolicy, 'baseSleepTimeMs', 1000);
+                                $generatorXml.constructorArg(res, 1, retryPolicy, 'maxSleepTimeMs', 2147483647);
+                                $generatorXml.constructorArg(res, 2, retryPolicy, 'maxRetries', 10);
                                 res.endBlock('</bean>');
 
                                 break;
 
                             case 'UntilElapsed':
                                 res.startBlock('<bean class="org.apache.curator.retry.RetryUntilElapsed">');
-                                $generatorXml.constructorArg(res, 0, retryPolicy, 'maxElapsedTimeMs');
-                                $generatorXml.constructorArg(res, 1, retryPolicy, 'sleepMsBetweenRetries');
+                                $generatorXml.constructorArg(res, 0, retryPolicy, 'maxElapsedTimeMs', 60000);
+                                $generatorXml.constructorArg(res, 1, retryPolicy, 'sleepMsBetweenRetries', 1000);
                                 res.endBlock('</bean>');
 
                                 break;
 
                             case 'NTimes':
                                 res.startBlock('<bean class="org.apache.curator.retry.RetryNTimes">');
-                                $generatorXml.constructorArg(res, 0, retryPolicy, 'n');
-                                $generatorXml.constructorArg(res, 1, retryPolicy, 'sleepMsBetweenRetries');
+                                $generatorXml.constructorArg(res, 0, retryPolicy, 'n', 10);
+                                $generatorXml.constructorArg(res, 1, retryPolicy, 'sleepMsBetweenRetries', 1000);
                                 res.endBlock('</bean>');
 
                                 break;
 
                             case 'OneTime':
                                 res.startBlock('<bean class="org.apache.curator.retry.RetryOneTime">');
-                                $generatorXml.constructorArg(res, 0, retryPolicy, 'sleepMsBetweenRetry');
+                                $generatorXml.constructorArg(res, 0, retryPolicy, 'sleepMsBetweenRetry', 1000);
                                 res.endBlock('</bean>');
 
                                 break;
 
                             case 'Forever':
                                 res.startBlock('<bean class="org.apache.curator.retry.RetryForever">');
-                                $generatorXml.constructorArg(res, 0, retryPolicy, 'retryIntervalMs');
+                                $generatorXml.constructorArg(res, 0, retryPolicy, 'retryIntervalMs', 1000);
                                 res.endBlock('</bean>');
 
                                 break;
@@ -1530,7 +1530,7 @@ $generatorXml.igfsSecondFS = function(igfs, res) {
         if (cfgDefined || nameDefined)
             $generatorXml.constructorArg(res, 1, secondFs, 'cfgPath');
 
-        $generatorXml.constructorArg(res, 2, secondFs, 'userName', true);
+        $generatorXml.constructorArg(res, 2, secondFs, 'userName', undefined, true);
 
         res.endBlock('</bean>');
         res.endBlock('</property>');


[07/28] ignite git commit: IGNITE-843 Minor changes in comments.

Posted by ak...@apache.org.
IGNITE-843 Minor changes in comments.


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

Branch: refs/heads/ignite-843-rc3
Commit: c772d332cf4a975b8dc15d7ca48ca7556849ccbe
Parents: f189e84
Author: Alexey Kuznetsov <ak...@apache.org>
Authored: Thu Feb 25 17:09:08 2016 +0700
Committer: Alexey Kuznetsov <ak...@apache.org>
Committed: Thu Feb 25 17:09:08 2016 +0700

----------------------------------------------------------------------
 .../src/main/js/app/modules/ace.module.js       | 52 ++++++++++----------
 1 file changed, 26 insertions(+), 26 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/c772d332/modules/control-center-web/src/main/js/app/modules/ace.module.js
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/app/modules/ace.module.js b/modules/control-center-web/src/main/js/app/modules/ace.module.js
index 35d94e1..475cfa0 100644
--- a/modules/control-center-web/src/main/js/app/modules/ace.module.js
+++ b/modules/control-center-web/src/main/js/app/modules/ace.module.js
@@ -38,23 +38,22 @@ angular
          *   </ul>
          *
          * @param acee
-         * @param session ACE editor session
-         * @param {object} opts Options to be set
+         * @param session ACE editor session.
+         * @param {object} opts Options to be set.
          */
         const setOptions = (acee, session, opts) => {
-            // sets the ace worker path, if running from concatenated
-            // or minified source
+            // Sets the ace worker path, if running from concatenated or minified source.
             if (angular.isDefined(opts.workerPath)) {
                 const config = window.ace.require('ace/config');
 
                 config.set('workerPath', opts.workerPath);
             }
 
-            // ace requires loading
+            // Ace requires loading.
             if (angular.isDefined(opts.require))
                 opts.require.forEach((n) => window.ace.require(n));
 
-            // Boolean options
+            // Boolean options.
             if (angular.isDefined(opts.showGutter))
                 acee.renderer.setShowGutter(opts.showGutter);
 
@@ -73,7 +72,7 @@ angular
             if (angular.isDefined(opts.showPrintMargin))
                 acee.setShowPrintMargin(opts.showPrintMargin);
 
-            // commands
+            // Commands.
             if (angular.isDefined(opts.disableSearch) && opts.disableSearch) {
                 acee.commands.addCommands([{
                     name: 'unfind',
@@ -86,14 +85,13 @@ angular
                 }]);
             }
 
-            // Basic options
+            // Base options.
             if (angular.isString(opts.theme))
                 acee.setTheme('ace/theme/' + opts.theme);
 
             if (angular.isString(opts.mode))
                 session.setMode('ace/mode/' + opts.mode);
 
-            // Advanced options
             if (angular.isDefined(opts.firstLineNumber)) {
                 if (angular.isNumber(opts.firstLineNumber))
                     session.setOption('firstLineNumber', opts.firstLineNumber);
@@ -101,33 +99,33 @@ angular
                     session.setOption('firstLineNumber', opts.firstLineNumber());
             }
 
-            // advanced options
+            // Advanced options.
             if (angular.isDefined(opts.advanced)) {
                 for (const key in opts.advanced) {
                     if (opts.advanced.hasOwnProperty(key)) {
-                        // create a javascript object with the key and value
+                        // Create a javascript object with the key and value.
                         const obj = {name: key, value: opts.advanced[key]};
 
-                        // try to assign the option to the ace editor
+                        // Try to assign the option to the ace editor.
                         acee.setOption(obj.name, obj.value);
                     }
                 }
             }
 
-            // advanced options for the renderer
+            // Advanced options for the renderer.
             if (angular.isDefined(opts.rendererOptions)) {
                 for (const key in opts.rendererOptions) {
                     if (opts.rendererOptions.hasOwnProperty(key)) {
-                        // create a javascript object with the key and value
+                        // Create a javascript object with the key and value.
                         const obj = {name: key, value: opts.rendererOptions[key]};
 
-                        // try to assign the option to the ace editor
+                        // Try to assign the option to the ace editor.
                         acee.renderer.setOption(obj.name, obj.value);
                     }
                 }
             }
 
-            // onLoad callbacks
+            // onLoad callbacks.
             angular.forEach(opts.callbacks, (cb) => {
                 if (angular.isFunction(cb))
                     cb(acee);
@@ -141,24 +139,28 @@ angular
 
                 /**
                  * Corresponds the igniteAceConfig ACE configuration.
+                 *
                  * @type object
                  */
                 const options = aceConfig.ace || {};
 
                 /**
-                 * igniteAceConfig merged with user options via json in attribute or data binding
+                 * IgniteAceConfig merged with user options via json in attribute or data binding.
+                 *
                  * @type object
                  */
                 let opts = angular.extend({}, options, scope.$eval(attrs.igniteAce));
 
                 /**
-                 * ACE editor
+                 * ACE editor.
+                 *
                  * @type object
                  */
                 const acee = window.ace.edit(elm[0]);
 
                 /**
                  * ACE editor session.
+                 *
                  * @type object
                  * @see [EditSession]{@link http://ace.c9.io/#nav=api&api=edit_session}
                  */
@@ -166,18 +168,18 @@ angular
 
                 /**
                  * Reference to a change listener created by the listener factory.
+                 *
                  * @function
                  * @see listenerFactory.onChange
                  */
                 let onChangeListener;
 
                 /**
-                 * Creates a change listener which propagates the change event
-                 * and the editor session to the callback from the user option
-                 * onChange. It might be exchanged during runtime, if this
-                 * happens the old listener will be unbound.
+                 * Creates a change listener which propagates the change event and the editor session
+                 * to the callback from the user option onChange.
+                 * It might be exchanged during runtime, if this happens the old listener will be unbound.
                  *
-                 * @param callback callback function defined in the user options
+                 * @param callback Callback function defined in the user options.
                  * @see onChangeListener
                  */
                 const onChangeFactory = (callback) => {
@@ -196,7 +198,7 @@ angular
                                 if (angular.isFunction(callback))
                                     callback([e, acee]);
                                 else
-                                    throw new Error('ignite-ace use a function as callback.');
+                                    throw new Error('ignite-ace use a function as callback');
                             });
                         }
                     };
@@ -251,14 +253,12 @@ angular
 
                 elm.on('$destroy', () => {
                     acee.session.$stopWorker();
-
                     acee.destroy();
                 });
 
                 scope.$watch(() => [elm[0].offsetWidth, elm[0].offsetHeight],
                     () => {
                         acee.resize();
-
                         acee.renderer.updateFull();
                     }, true);
             }


[22/28] ignite git commit: IGNITE-843 Minor fix.

Posted by ak...@apache.org.
IGNITE-843 Minor fix.


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

Branch: refs/heads/ignite-843-rc3
Commit: 38ff57b6256a24b353452700d068894f1f7dcddc
Parents: 91698c2
Author: Andrey <an...@gridgain.com>
Authored: Thu Mar 3 13:36:26 2016 +0700
Committer: Andrey <an...@gridgain.com>
Committed: Thu Mar 3 13:36:26 2016 +0700

----------------------------------------------------------------------
 modules/control-center-web/src/main/js/views/index.jade | 2 ++
 1 file changed, 2 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/38ff57b6/modules/control-center-web/src/main/js/views/index.jade
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/views/index.jade b/modules/control-center-web/src/main/js/views/index.jade
index eebfd89..2d1c339 100644
--- a/modules/control-center-web/src/main/js/views/index.jade
+++ b/modules/control-center-web/src/main/js/views/index.jade
@@ -19,7 +19,9 @@ html(ng-app='ignite-web-console' id='app')
     head
         base(href='/')
         link(rel='shortcut icon' href='favicon.ico')
+
         meta(http-equiv='content-type' content='text/html; charset=UTF8')
+        meta(http-equiv='content-language' content='en')
 
         title(ng-bind='$meta.title')
 


[20/28] ignite git commit: IGNITE-843 Added suffix in title.

Posted by ak...@apache.org.
IGNITE-843 Added suffix in title.


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

Branch: refs/heads/ignite-843-rc3
Commit: 85b4b9fe14c2ec806a2743ee2eaf756f6cf1f1e1
Parents: 4c23c8e
Author: Andrey <an...@gridgain.com>
Authored: Thu Mar 3 11:06:08 2016 +0700
Committer: Andrey <an...@gridgain.com>
Committed: Thu Mar 3 11:06:08 2016 +0700

----------------------------------------------------------------------
 .../app/modules/branding/branding.provider.js   | 12 ++++++++
 .../main/js/app/modules/states/admin.state.js   |  6 ++--
 .../app/modules/states/configuration.state.js   | 30 ++++++++++----------
 .../main/js/app/modules/states/profile.state.js |  6 ++--
 .../main/js/app/modules/states/signin.state.js  |  6 ++--
 .../src/main/js/app/modules/states/sql.state.js | 12 ++++----
 6 files changed, 42 insertions(+), 30 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/85b4b9fe/modules/control-center-web/src/main/js/app/modules/branding/branding.provider.js
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/app/modules/branding/branding.provider.js b/modules/control-center-web/src/main/js/app/modules/branding/branding.provider.js
index d4c12a4..ce14b34 100644
--- a/modules/control-center-web/src/main/js/app/modules/branding/branding.provider.js
+++ b/modules/control-center-web/src/main/js/app/modules/branding/branding.provider.js
@@ -16,6 +16,8 @@
  */
 
 export default ['IgniteBranding', [function() {
+    let titleSuffix = ' – Apache Ignite Web Console';
+
     let headerLogo = '/images/ignite-logo.png';
 
     let headerText = 'Management console for Apache Ignite';
@@ -40,6 +42,15 @@ export default ['IgniteBranding', [function() {
     ];
 
     /**
+     * Change title suffix.
+     *
+     * @param {String} suffix.
+     */
+    this.titleSuffix = (suffix) => {
+        titleSuffix = suffix;
+    };
+
+    /**
      * Change logo in header.
      *
      * @param {String} url Logo path.
@@ -88,6 +99,7 @@ export default ['IgniteBranding', [function() {
 
     this.$get = [() => {
         return {
+            titleSuffix,
             headerLogo,
             headerText,
             featuresHtml: featuresHtml.join('\n'),

http://git-wip-us.apache.org/repos/asf/ignite/blob/85b4b9fe/modules/control-center-web/src/main/js/app/modules/states/admin.state.js
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/app/modules/states/admin.state.js b/modules/control-center-web/src/main/js/app/modules/states/admin.state.js
index c183807..0de646e 100644
--- a/modules/control-center-web/src/main/js/app/modules/states/admin.state.js
+++ b/modules/control-center-web/src/main/js/app/modules/states/admin.state.js
@@ -28,9 +28,9 @@ angular
         url: '/admin',
         templateUrl: '/settings/admin.html',
         resolve: {
-            $title: () => {
-                return 'List of registered users';
-            }
+            $title: ['IgniteBranding', (branding) => {
+                return 'List of registered users' + branding.titleSuffix;
+            }]
         }
     });
 }]);

http://git-wip-us.apache.org/repos/asf/ignite/blob/85b4b9fe/modules/control-center-web/src/main/js/app/modules/states/configuration.state.js
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/app/modules/states/configuration.state.js b/modules/control-center-web/src/main/js/app/modules/states/configuration.state.js
index edd7f9d..1071eb8 100644
--- a/modules/control-center-web/src/main/js/app/modules/states/configuration.state.js
+++ b/modules/control-center-web/src/main/js/app/modules/states/configuration.state.js
@@ -112,9 +112,9 @@ angular
             loading: 'Loading clusters screen...'
         },
         resolve: {
-            $title: () => {
-                return 'Configure Clusters';
-            }
+            $title: ['IgniteBranding', (branding) => {
+                return 'Configure Clusters' + branding.titleSuffix;
+            }]
         }
     })
     .state('base.configuration.caches', {
@@ -127,9 +127,9 @@ angular
             loading: 'Loading caches screen...'
         },
         resolve: {
-            $title: () => {
-                return 'Configure Caches';
-            }
+            $title: ['IgniteBranding', (branding) => {
+                return 'Configure Caches' + branding.titleSuffix;
+            }]
         }
     })
     .state('base.configuration.domains', {
@@ -142,9 +142,9 @@ angular
             loading: 'Loading domain models screen...'
         },
         resolve: {
-            $title: () => {
-                return 'Configure Domain Model';
-            }
+            $title: ['IgniteBranding', (branding) => {
+                return 'Configure Domain Model' + branding.titleSuffix;
+            }]
         }
     })
     .state('base.configuration.igfs', {
@@ -157,9 +157,9 @@ angular
             loading: 'Loading IGFS screen...'
         },
         resolve: {
-            $title: () => {
-                return 'Configure IGFS';
-            }
+            $title: ['IgniteBranding', (branding) => {
+                return 'Configure IGFS' + branding.titleSuffix;
+            }]
         }
     })
     .state('base.configuration.summary', {
@@ -171,9 +171,9 @@ angular
             loading: 'Loading summary screen...'
         },
         resolve: {
-            $title: () => {
-                return 'Configurations Summary';
-            }
+            $title: ['IgniteBranding', (branding) => {
+                return 'Configurations Summary' + branding.titleSuffix;
+            }]
         }
     });
 }]);

http://git-wip-us.apache.org/repos/asf/ignite/blob/85b4b9fe/modules/control-center-web/src/main/js/app/modules/states/profile.state.js
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/app/modules/states/profile.state.js b/modules/control-center-web/src/main/js/app/modules/states/profile.state.js
index 23d1bec..dc9cabd 100644
--- a/modules/control-center-web/src/main/js/app/modules/states/profile.state.js
+++ b/modules/control-center-web/src/main/js/app/modules/states/profile.state.js
@@ -28,9 +28,9 @@ angular
         url: '/profile',
         templateUrl: '/settings/profile.html',
         resolve: {
-            $title: () => {
-                return 'User profile';
-            }
+            $title: ['IgniteBranding', (branding) => {
+                return 'User profile' + branding.titleSuffix;
+            }]
         }
     });
 }]);

http://git-wip-us.apache.org/repos/asf/ignite/blob/85b4b9fe/modules/control-center-web/src/main/js/app/modules/states/signin.state.js
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/app/modules/states/signin.state.js b/modules/control-center-web/src/main/js/app/modules/states/signin.state.js
index bf5baa9..9855058 100644
--- a/modules/control-center-web/src/main/js/app/modules/states/signin.state.js
+++ b/modules/control-center-web/src/main/js/app/modules/states/signin.state.js
@@ -30,9 +30,9 @@ angular
         url: '/signin',
         templateUrl: '/signin.html',
         resolve: {
-            $title: () => {
-                return 'Sign In';
-            }
+            $title: ['IgniteBranding', (branding) => {
+                return 'Management Tool and Configuration Wizard for Apache Ignite' + branding.titleSuffix;
+            }]
         }
     });
 }])

http://git-wip-us.apache.org/repos/asf/ignite/blob/85b4b9fe/modules/control-center-web/src/main/js/app/modules/states/sql.state.js
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/app/modules/states/sql.state.js b/modules/control-center-web/src/main/js/app/modules/states/sql.state.js
index 672d829..0c53bb6 100644
--- a/modules/control-center-web/src/main/js/app/modules/states/sql.state.js
+++ b/modules/control-center-web/src/main/js/app/modules/states/sql.state.js
@@ -36,9 +36,9 @@ angular
             loading: 'Loading notebook screen...'
         },
         resolve: {
-            $title: () => {
-                return 'Query notebook';
-            }
+            $title: ['IgniteBranding', (branding) => {
+                return 'Query notebook' + branding.titleSuffix;
+            }]
         }
     })
     .state('base.sql.demo', {
@@ -48,9 +48,9 @@ angular
             loading: 'Enable SQL demo...'
         },
         resolve: {
-            $title: () => {
-                return 'SQL demo';
-            }
+            $title: ['IgniteBranding', (branding) => {
+                return 'SQL demo' + branding.titleSuffix;
+            }]
         }
     });
 }]);


[04/28] ignite git commit: IGNITE-2424 Discern columns with the same name.

Posted by ak...@apache.org.
IGNITE-2424 Discern columns with the same name.


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

Branch: refs/heads/ignite-843-rc3
Commit: d558cc4f39c4c9e028a5f13acf0ea8a0de29ff51
Parents: 1c72860
Author: Vasiliy Sisko <vs...@gridgain.com>
Authored: Wed Feb 24 18:11:32 2016 +0700
Committer: Andrey <an...@gridgain.com>
Committed: Wed Feb 24 18:11:32 2016 +0700

----------------------------------------------------------------------
 .../src/main/js/controllers/sql-controller.js           | 12 ++++++++++++
 1 file changed, 12 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/d558cc4f/modules/control-center-web/src/main/js/controllers/sql-controller.js
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/controllers/sql-controller.js b/modules/control-center-web/src/main/js/controllers/sql-controller.js
index 84773b2..55748cc 100644
--- a/modules/control-center-web/src/main/js/controllers/sql-controller.js
+++ b/modules/control-center-web/src/main/js/controllers/sql-controller.js
@@ -486,6 +486,18 @@ consoleModule.controller('sqlController', function ($http, $timeout, $interval,
     var _rebuildColumns = function (paragraph) {
         var columnDefs = [];
 
+        _.forEach(_.groupBy(paragraph.meta, 'fieldName'), function (colsByName, fieldName) {
+            var colsByTypes = _.groupBy(colsByName, 'typeName');
+
+            var needType = _.keys(colsByTypes).length > 1;
+
+            _.forEach(colsByTypes, function(colsByType, typeName) {
+                _.forEach(colsByType, function (col, ix) {
+                    col.fieldName = (needType && !$common.isEmptyString(typeName) ? typeName + '.' : '') + fieldName + (ix > 0 ? ix : '');
+                })
+            });
+        });
+
         _.forEach(paragraph.meta, function (col, idx) {
             if (paragraph.columnFilter(col)) {
                 if (_notObjectType(col.fieldTypeName))


[24/28] ignite git commit: IGNITE-2724 Fixed tooltips for ZooKeeper.

Posted by ak...@apache.org.
IGNITE-2724 Fixed tooltips for ZooKeeper.


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

Branch: refs/heads/ignite-843-rc3
Commit: 53804c74ef778269ef21b7990985536a0aca1360
Parents: 13bc0f5
Author: vsisko <vs...@gridgain.com>
Authored: Thu Mar 3 16:30:50 2016 +0700
Committer: Alexey Kuznetsov <ak...@apache.org>
Committed: Thu Mar 3 16:30:50 2016 +0700

----------------------------------------------------------------------
 .../configuration/clusters/general/discovery/zookeeper.jade      | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/53804c74/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper.jade
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper.jade b/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper.jade
index c1d3b0b..245df84 100644
--- a/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper.jade
+++ b/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper.jade
@@ -23,7 +23,7 @@ div
                 | Curator:
             ignite-form-field-tooltip
                 | The Curator framework in use #[br]
-                | By default generates curator of org.apache.curator.framework.imps.CuratorFrameworkImpl.CuratorFrameworkImpl
+                | By default generates curator of org.apache.curator. framework.imps.CuratorFrameworkImpl
                 | class with configured connect string, retry policy, and default session and connection timeouts
             ignite-form-field-java-class(
                 data-id='curator'
@@ -55,8 +55,8 @@ div
                     li Max number of times - retries a max number of times
                     li Only once - retries only once
                     li Always allow retry - retries infinitely
-                    li Default - exponential backoff retry policy with configured base sleep time equal to 1000ms and max retry count equal to 10
                     li Custom - custom retry policy implementation
+                    li Default - exponential backoff retry policy with configured base sleep time equal to 1000ms and max retry count equal to 10
             ignite-form-field-dropdown(
                 data-id='retryPolicy'
                 data-name='retryPolicy'


[28/28] ignite git commit: IGNITE-843 Minor fix.

Posted by ak...@apache.org.
IGNITE-843 Minor fix.


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

Branch: refs/heads/ignite-843-rc3
Commit: 35aa7eb1f04fd4c07f35f260f917811051260f03
Parents: e253f45
Author: AKuznetsov <ak...@gridgain.com>
Authored: Thu Mar 3 19:04:24 2016 +0700
Committer: AKuznetsov <ak...@gridgain.com>
Committed: Thu Mar 3 19:04:24 2016 +0700

----------------------------------------------------------------------
 modules/control-center-web/src/main/js/serve/routes/domains.js | 1 -
 1 file changed, 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/35aa7eb1/modules/control-center-web/src/main/js/serve/routes/domains.js
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/serve/routes/domains.js b/modules/control-center-web/src/main/js/serve/routes/domains.js
index 6963294..6aae98f 100644
--- a/modules/control-center-web/src/main/js/serve/routes/domains.js
+++ b/modules/control-center-web/src/main/js/serve/routes/domains.js
@@ -102,7 +102,6 @@ module.exports.factory = (_, express, mongo) => {
                         })
                         .then(() => _updateCacheStore(cacheStoreChanges));
                 })
-                .catch((err) => mongo.handleError(res, err));
         };
 
         const _save = (domains, res) => {


[13/28] ignite git commit: IGNITE-843 Fix for number inputs when input is pristine.

Posted by ak...@apache.org.
IGNITE-843 Fix for number inputs when input is pristine.


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

Branch: refs/heads/ignite-843-rc3
Commit: 4555bedfcd687aae00a745069f1bc6d5ba904c07
Parents: 6de273f
Author: vsisko <vs...@gridgain.com>
Authored: Fri Feb 26 13:41:32 2016 +0700
Committer: Alexey Kuznetsov <ak...@apache.org>
Committed: Fri Feb 26 13:41:32 2016 +0700

----------------------------------------------------------------------
 .../src/main/js/app/modules/form/field/input/number.jade           | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/4555bedf/modules/control-center-web/src/main/js/app/modules/form/field/input/number.jade
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/app/modules/form/field/input/number.jade b/modules/control-center-web/src/main/js/app/modules/form/field/input/number.jade
index 920a5eb..4429d30 100644
--- a/modules/control-center-web/src/main/js/app/modules/form/field/input/number.jade
+++ b/modules/control-center-web/src/main/js/app/modules/form/field/input/number.jade
@@ -16,7 +16,7 @@
 
 mixin feedback(error, message)
     i.fa.fa-exclamation-triangle.form-control-feedback(
-        ng-show='field.$error.#{error}'
+        ng-show='!field.$pristine && field.$error.#{error}'
         bs-tooltip='"#{message}"'
         ignite-error='#{error}'
         ignite-error-message='#{message}'


[11/28] ignite git commit: IGNITE-2724 WIP support for ZooKeeper.

Posted by ak...@apache.org.
IGNITE-2724 WIP support for ZooKeeper.


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

Branch: refs/heads/ignite-843-rc3
Commit: 37bc97741db7a08e7706aa529406017c01bba93c
Parents: 711086a
Author: vsisko <vs...@gridgain.com>
Authored: Thu Feb 25 19:20:37 2016 +0700
Committer: Alexey Kuznetsov <ak...@apache.org>
Committed: Thu Feb 25 19:20:37 2016 +0700

----------------------------------------------------------------------
 .../control-center-web/src/main/js/.eslintrc    |   2 +-
 .../app/modules/states/configuration.state.js   |  17 +++
 .../states/configuration/clusters/general.jade  |   2 +
 .../general/discovery/zookeeper.directive.js    |  27 +++++
 .../clusters/general/discovery/zookeeper.jade   | 113 +++++++++++++++++++
 .../bounded-exponential-backoff.directive.js    |  27 +++++
 .../bounded-exponential-backoff.jade            |  57 ++++++++++
 .../zookeeper/retrypolicy/custom.directive.js   |  27 +++++
 .../discovery/zookeeper/retrypolicy/custom.jade |  30 +++++
 .../exponential-backoff.directive.js            |  27 +++++
 .../retrypolicy/exponential-backoff.jade        |  56 +++++++++
 .../zookeeper/retrypolicy/forever.directive.js  |  27 +++++
 .../zookeeper/retrypolicy/forever.jade          |  30 +++++
 .../zookeeper/retrypolicy/n-times.directive.js  |  27 +++++
 .../zookeeper/retrypolicy/n-times.jade          |  43 +++++++
 .../zookeeper/retrypolicy/one-time.directive.js |  27 +++++
 .../zookeeper/retrypolicy/one-time.jade         |  31 +++++
 .../retrypolicy/until-elapsed.directive.js      |  27 +++++
 .../zookeeper/retrypolicy/until-elapsed.jade    |  43 +++++++
 .../main/js/controllers/clusters-controller.js  |   7 +-
 .../main/js/helpers/generator/generator-java.js |  87 ++++++++++++++
 .../main/js/helpers/generator/generator-pom.js  |   3 +
 .../main/js/helpers/generator/generator-xml.js  | 102 +++++++++++++++++
 .../src/main/js/serve/mongo.js                  |  40 ++++++-
 24 files changed, 874 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/37bc9774/modules/control-center-web/src/main/js/.eslintrc
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/.eslintrc b/modules/control-center-web/src/main/js/.eslintrc
index 000de6c..0341ed7 100644
--- a/modules/control-center-web/src/main/js/.eslintrc
+++ b/modules/control-center-web/src/main/js/.eslintrc
@@ -57,7 +57,7 @@ rules:
     generator-star-spacing: 0
     guard-for-in: 1
     handle-callback-err: 0
-    id-length: [2, {"min": 1, "max": 40}]
+    id-length: [2, {"min": 1, "max": 50}]
     indent: [2, 4, {"SwitchCase": 1}]
     key-spacing: [2, { "beforeColon": false, "afterColon": true }]
     lines-around-comment: 0

http://git-wip-us.apache.org/repos/asf/ignite/blob/37bc9774/modules/control-center-web/src/main/js/app/modules/states/configuration.state.js
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/app/modules/states/configuration.state.js b/modules/control-center-web/src/main/js/app/modules/states/configuration.state.js
index 57eb361..edd7f9d 100644
--- a/modules/control-center-web/src/main/js/app/modules/states/configuration.state.js
+++ b/modules/control-center-web/src/main/js/app/modules/states/configuration.state.js
@@ -46,6 +46,15 @@ import generalDiscoveryMulticast from './configuration/clusters/general/discover
 import generalDiscoveryS3 from './configuration/clusters/general/discovery/s3.directive';
 import generalDiscoveryShared from './configuration/clusters/general/discovery/shared.directive';
 import generalDiscoveryVm from './configuration/clusters/general/discovery/vm.directive';
+import generalDiscoveryZookeeper from './configuration/clusters/general/discovery/zookeeper.directive';
+
+import generalDiscoveryZookeeperRetryExponential from './configuration/clusters/general/discovery/zookeeper/retrypolicy/exponential-backoff.directive';
+import generalDiscoveryZookeeperRetryBoundedExponential from './configuration/clusters/general/discovery/zookeeper/retrypolicy/bounded-exponential-backoff.directive';
+import generalDiscoveryZookeeperRetryUntilElapsed from './configuration/clusters/general/discovery/zookeeper/retrypolicy/until-elapsed.directive';
+import generalDiscoveryZookeeperRetryNTimes from './configuration/clusters/general/discovery/zookeeper/retrypolicy/n-times.directive';
+import generalDiscoveryZookeeperRetryOneTime from './configuration/clusters/general/discovery/zookeeper/retrypolicy/one-time.directive';
+import generalDiscoveryZookeeperRetryForever from './configuration/clusters/general/discovery/zookeeper/retrypolicy/forever.directive';
+import generalDiscoveryZookeeperRetryCustom from './configuration/clusters/general/discovery/zookeeper/retrypolicy/custom.directive';
 
 angular
 .module('ignite-console.states.configuration', [
@@ -76,6 +85,14 @@ angular
 .directive(...generalDiscoveryS3)
 .directive(...generalDiscoveryShared)
 .directive(...generalDiscoveryVm)
+.directive(...generalDiscoveryZookeeper)
+.directive(...generalDiscoveryZookeeperRetryExponential)
+.directive(...generalDiscoveryZookeeperRetryBoundedExponential)
+.directive(...generalDiscoveryZookeeperRetryUntilElapsed)
+.directive(...generalDiscoveryZookeeperRetryNTimes)
+.directive(...generalDiscoveryZookeeperRetryOneTime)
+.directive(...generalDiscoveryZookeeperRetryForever)
+.directive(...generalDiscoveryZookeeperRetryCustom)
 // Services.
 .service(...ConfigurationSummaryResource)
 .config(['$stateProvider', function($stateProvider) {

http://git-wip-us.apache.org/repos/asf/ignite/blob/37bc9774/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/general.jade
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/general.jade b/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/general.jade
index 2f78db2..c750119 100644
--- a/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/general.jade
+++ b/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/general.jade
@@ -93,6 +93,8 @@ form.panel.panel-default(name='general' novalidate)
                             ng-if='#{model}.discovery.kind === "SharedFs"')
                         ignite-configuration-clusters-general-discovery-vm(
                             ng-if='#{model}.discovery.kind === "Vm"')
+                        ignite-configuration-clusters-general-discovery-zookeeper(
+                            ng-if='#{model}.discovery.kind === "ZooKeeper"')
             ignite-ui-ace-tabs.col-sm-6
                 .preview-panel(ng-init='mode = false')
                     .preview-legend

http://git-wip-us.apache.org/repos/asf/ignite/blob/37bc9774/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper.directive.js
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper.directive.js b/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper.directive.js
new file mode 100644
index 0000000..42925a9
--- /dev/null
+++ b/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper.directive.js
@@ -0,0 +1,27 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import template from './zookeeper.jade!';
+
+export default ['igniteConfigurationClustersGeneralDiscoveryZookeeper', [() => {
+    return {
+        scope: true,
+        restrict: 'E',
+        template,
+        replace: true
+    };
+}]];

http://git-wip-us.apache.org/repos/asf/ignite/blob/37bc9774/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper.jade
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper.jade b/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper.jade
new file mode 100644
index 0000000..d99a7a7
--- /dev/null
+++ b/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper.jade
@@ -0,0 +1,113 @@
+//-
+    Licensed to the Apache Software Foundation (ASF) under one or more
+    contributor license agreements.  See the NOTICE file distributed with
+    this work for additional information regarding copyright ownership.
+    The ASF licenses this file to You under the Apache License, Version 2.0
+    (the "License"); you may not use this file except in compliance with
+    the License.  You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+
+- var model = 'backupItem.discovery.ZooKeeper';
+
+div
+    .details-row
+        ignite-form-field
+            ignite-form-field-label
+                | Curator:
+            ignite-form-field-tooltip
+                | The Curator framework in use
+            ignite-form-field-java-class(
+                data-id='curator'
+                data-name='curator'
+                data-ng-model='#{model}.curator'
+            )
+    .details-row
+        ignite-form-field
+            ignite-form-field-label
+                | Connection string:
+            ignite-form-field-tooltip
+                | This property will be used when "IGNITE_ZK_CONNECTION_STRING" system property is not configured
+            ignite-form-field-input-text(
+                data-id='zkConnectionString'
+                data-name='zkConnectionString'
+                data-ng-model='#{model}.zkConnectionString'
+                data-placeholder='host:port[chroot][,host:port[chroot]]'
+                data-ng-required='true'
+            )
+    .details-row
+        ignite-form-field
+            ignite-form-field-label
+                | Retry policy:
+            ignite-form-field-tooltip
+                | Retry policy
+            ignite-form-field-dropdown(
+                data-id='retryPolicy'
+                data-name='retryPolicy'
+                data-options='[\
+                    {value: "ExponentialBackoff", label: "Exponential backoff"},\
+                    {value: "BoundedExponentialBackoff", label: "Bounded exponential backoff"},\
+                    {value: "UntilElapsed", label: "Until elapsed"},\
+                    {value: "NTimes", label: "Max number of times"},\
+                    {value: "OneTime", label: "Only once"},\
+                    {value: "Forever", label: "Always allowsRetry"},\
+                    {value: "Custom", label: "Custom"},\
+                    {value: undefined, label: "Default"}\
+                ]'
+                data-ng-model='#{model}.retryPolicy.kind'
+                data-multiple='false'
+            )
+    .details-row(ng-if='#{model}.retryPolicy.kind')
+        .col-sm-12.panel-details()
+            div(ng-switch='#{model}.retryPolicy.kind')
+                ignite-configuration-clusters-general-discovery-zookeeper-exponential(ng-switch-when='ExponentialBackoff')
+                ignite-configuration-clusters-general-discovery-zookeeper-bounded-exponential(ng-switch-when='BoundedExponentialBackoff')
+                ignite-configuration-clusters-general-discovery-zookeeper-until-elapsed(ng-switch-when='UntilElapsed')
+                ignite-configuration-clusters-general-discovery-zookeeper-n-times(ng-switch-when='NTimes')
+                ignite-configuration-clusters-general-discovery-zookeeper-one-time(ng-switch-when='OneTime')
+                ignite-configuration-clusters-general-discovery-zookeeper-forever(ng-switch-when='Forever')
+                ignite-configuration-clusters-general-discovery-zookeeper-custom(ng-switch-when='Custom')
+    .details-row
+        ignite-form-field
+            ignite-form-field-label
+                | Base path:
+            ignite-form-field-tooltip
+                | Base path for service registration
+            ignite-form-field-input-text(
+                data-id='basePath'
+                data-name='basePath'
+                data-ng-model='#{model}.basePath'
+                data-placeholder='/services'
+            )
+    .details-row
+        ignite-form-field
+            ignite-form-field-label
+                | Service name:
+            ignite-form-field-tooltip
+                | Service name to use, as defined by Curator's ServiceDiscovery recipe#[br]
+                | In physical ZooKeeper terms, it represents the node under basePath, under which services will be registered
+            ignite-form-field-input-text(
+                data-id='serviceName'
+                data-name='serviceName'
+                data-ng-model='#{model}.serviceName'
+                data-placeholder='ignite'
+            )
+    .details-row
+        ignite-form-field.checkbox
+            ignite-form-field-input-checkbox(
+                data-id='allowDuplicateRegistrations'
+                data-name='allowDuplicateRegistrations'
+                data-ng-model='#{model}.allowDuplicateRegistrations'
+            )
+            | Allow duplicate registrations
+            ignite-form-field-tooltip
+                | Whether to register each node only once, or if duplicate registrations are allowed#[br]
+                | Nodes will attempt to register themselves, plus those they know about #[br]
+                | By default, duplicate registrations are not allowed, but you might want to set this property to
+                | #[b true] if you have multiple network interfaces or if you are facing troubles

http://git-wip-us.apache.org/repos/asf/ignite/blob/37bc9774/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/bounded-exponential-backoff.directive.js
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/bounded-exponential-backoff.directive.js b/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/bounded-exponential-backoff.directive.js
new file mode 100644
index 0000000..68e338b
--- /dev/null
+++ b/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/bounded-exponential-backoff.directive.js
@@ -0,0 +1,27 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import template from './bounded-exponential-backoff.jade!';
+
+export default ['igniteConfigurationClustersGeneralDiscoveryZookeeperBoundedExponential', [() => {
+    return {
+        scope: true,
+        restrict: 'E',
+        template,
+        replace: true
+    };
+}]];

http://git-wip-us.apache.org/repos/asf/ignite/blob/37bc9774/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/bounded-exponential-backoff.jade
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/bounded-exponential-backoff.jade b/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/bounded-exponential-backoff.jade
new file mode 100644
index 0000000..06eb790
--- /dev/null
+++ b/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/bounded-exponential-backoff.jade
@@ -0,0 +1,57 @@
+//-
+    Licensed to the Apache Software Foundation (ASF) under one or more
+    contributor license agreements.  See the NOTICE file distributed with
+    this work for additional information regarding copyright ownership.
+    The ASF licenses this file to You under the Apache License, Version 2.0
+    (the "License"); you may not use this file except in compliance with
+    the License.  You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+
+- var model = 'backupItem.discovery.ZooKeeper.retryPolicy.BoundedExponentialBackoff';
+
+div
+    .details-row
+        ignite-form-field
+            ignite-form-field-label
+                | Base Sleep Time:
+            ignite-form-field-tooltip
+                | Initial amount of time to wait between retries
+            ignite-form-field-input-number(
+                data-id='baseSleepTimeMs'
+                data-name='baseSleepTimeMs'
+                data-ng-model='#{model}.baseSleepTimeMs'
+                data-ng-required='true'
+            )
+    .details-row
+        ignite-form-field
+            ignite-form-field-label
+                | Max sleep time:
+            ignite-form-field-tooltip
+                | Max time in ms to sleep on each retry
+            ignite-form-field-input-number(
+                data-id='maxSleepTimeMs'
+                data-name='maxSleepTimeMs'
+                data-ng-model='#{model}.maxSleepTimeMs'
+                data-placeholder='Integer.MAX_VALUE'
+                data-ng-required='true'
+            )
+    .details-row
+        ignite-form-field
+            ignite-form-field-label
+                | Max retries:
+            ignite-form-field-tooltip
+                | Max number of times to retry
+            ignite-form-field-input-number(
+                data-id='maxRetries'
+                data-name='maxRetries'
+                data-ng-model='#{model}.maxRetries'
+                data-ng-required='true'
+                data-max='29'
+            )

http://git-wip-us.apache.org/repos/asf/ignite/blob/37bc9774/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/custom.directive.js
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/custom.directive.js b/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/custom.directive.js
new file mode 100644
index 0000000..dfd9b08
--- /dev/null
+++ b/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/custom.directive.js
@@ -0,0 +1,27 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import template from './custom.jade!';
+
+export default ['igniteConfigurationClustersGeneralDiscoveryZookeeperCustom', [() => {
+    return {
+        scope: true,
+        restrict: 'E',
+        template,
+        replace: true
+    };
+}]];

http://git-wip-us.apache.org/repos/asf/ignite/blob/37bc9774/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/custom.jade
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/custom.jade b/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/custom.jade
new file mode 100644
index 0000000..e5663a8
--- /dev/null
+++ b/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/custom.jade
@@ -0,0 +1,30 @@
+//-
+    Licensed to the Apache Software Foundation (ASF) under one or more
+    contributor license agreements.  See the NOTICE file distributed with
+    this work for additional information regarding copyright ownership.
+    The ASF licenses this file to You under the Apache License, Version 2.0
+    (the "License"); you may not use this file except in compliance with
+    the License.  You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+
+- var model = 'backupItem.discovery.ZooKeeper.retryPolicy.Custom';
+
+.details-row
+    ignite-form-field
+        ignite-form-field-label
+            | Class name:
+        ignite-form-field-tooltip
+            | Custom retry policy implementation class name
+        ignite-form-field-java-class(
+            data-id='className'
+            data-name='className'
+            data-ng-model='#{model}.className'
+            data-required='true'
+        )

http://git-wip-us.apache.org/repos/asf/ignite/blob/37bc9774/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/exponential-backoff.directive.js
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/exponential-backoff.directive.js b/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/exponential-backoff.directive.js
new file mode 100644
index 0000000..29c968c
--- /dev/null
+++ b/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/exponential-backoff.directive.js
@@ -0,0 +1,27 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import template from './exponential-backoff.jade!';
+
+export default ['igniteConfigurationClustersGeneralDiscoveryZookeeperExponential', [() => {
+    return {
+        scope: true,
+        restrict: 'E',
+        template,
+        replace: true
+    };
+}]];

http://git-wip-us.apache.org/repos/asf/ignite/blob/37bc9774/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/exponential-backoff.jade
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/exponential-backoff.jade b/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/exponential-backoff.jade
new file mode 100644
index 0000000..79bcfa1
--- /dev/null
+++ b/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/exponential-backoff.jade
@@ -0,0 +1,56 @@
+//-
+    Licensed to the Apache Software Foundation (ASF) under one or more
+    contributor license agreements.  See the NOTICE file distributed with
+    this work for additional information regarding copyright ownership.
+    The ASF licenses this file to You under the Apache License, Version 2.0
+    (the "License"); you may not use this file except in compliance with
+    the License.  You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+
+- var model = 'backupItem.discovery.ZooKeeper.retryPolicy.ExponentialBackoff';
+
+div
+    .details-row
+        ignite-form-field
+            ignite-form-field-label
+                | Base sleep time:
+            ignite-form-field-tooltip
+                | Initial amount of time to wait between retries
+            ignite-form-field-input-number(
+                data-id='baseSleepTimeMs'
+                data-name='baseSleepTimeMs'
+                data-ng-model='#{model}.baseSleepTimeMs'
+                data-ng-required='true'
+            )
+    .details-row
+        ignite-form-field
+            ignite-form-field-label
+                | Max retries:
+            ignite-form-field-tooltip
+                | Max number of times to retry
+            ignite-form-field-input-number(
+                data-id='maxRetries'
+                data-name='maxRetries'
+                data-ng-model='#{model}.maxRetries'
+                data-ng-required='true'
+                data-max='29'
+            )
+    .details-row
+        ignite-form-field
+            ignite-form-field-label
+                | Max sleep time:
+            ignite-form-field-tooltip
+                | Max time in ms to sleep on each retry
+            ignite-form-field-input-number(
+                data-id='maxSleepMs'
+                data-name='maxSleepMs'
+                data-ng-model='#{model}.maxSleepMs'
+                data-placeholder='Integer.MAX_VALUE'
+            )

http://git-wip-us.apache.org/repos/asf/ignite/blob/37bc9774/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/forever.directive.js
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/forever.directive.js b/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/forever.directive.js
new file mode 100644
index 0000000..ec39f66
--- /dev/null
+++ b/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/forever.directive.js
@@ -0,0 +1,27 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import template from './forever.jade!';
+
+export default ['igniteConfigurationClustersGeneralDiscoveryZookeeperForever', [() => {
+    return {
+        scope: true,
+        restrict: 'E',
+        template,
+        replace: true
+    };
+}]];

http://git-wip-us.apache.org/repos/asf/ignite/blob/37bc9774/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/forever.jade
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/forever.jade b/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/forever.jade
new file mode 100644
index 0000000..705fa2a
--- /dev/null
+++ b/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/forever.jade
@@ -0,0 +1,30 @@
+//-
+    Licensed to the Apache Software Foundation (ASF) under one or more
+    contributor license agreements.  See the NOTICE file distributed with
+    this work for additional information regarding copyright ownership.
+    The ASF licenses this file to You under the Apache License, Version 2.0
+    (the "License"); you may not use this file except in compliance with
+    the License.  You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+
+- var model = 'backupItem.discovery.ZooKeeper.retryPolicy.Forever';
+
+.details-row
+    ignite-form-field
+        ignite-form-field-label
+            | Interval:
+        ignite-form-field-tooltip
+            | Time in ms between retry attempts
+        ignite-form-field-input-number(
+            data-id='retryIntervalMs'
+            data-name='retryIntervalMs'
+            data-ng-model='#{model}.retryIntervalMs'
+            data-ng-required='true'
+        )

http://git-wip-us.apache.org/repos/asf/ignite/blob/37bc9774/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/n-times.directive.js
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/n-times.directive.js b/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/n-times.directive.js
new file mode 100644
index 0000000..ce83da4
--- /dev/null
+++ b/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/n-times.directive.js
@@ -0,0 +1,27 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import template from './n-times.jade!';
+
+export default ['igniteConfigurationClustersGeneralDiscoveryZookeeperNTimes', [() => {
+    return {
+        scope: true,
+        restrict: 'E',
+        template,
+        replace: true
+    };
+}]];

http://git-wip-us.apache.org/repos/asf/ignite/blob/37bc9774/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/n-times.jade
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/n-times.jade b/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/n-times.jade
new file mode 100644
index 0000000..0c44709
--- /dev/null
+++ b/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/n-times.jade
@@ -0,0 +1,43 @@
+//-
+    Licensed to the Apache Software Foundation (ASF) under one or more
+    contributor license agreements.  See the NOTICE file distributed with
+    this work for additional information regarding copyright ownership.
+    The ASF licenses this file to You under the Apache License, Version 2.0
+    (the "License"); you may not use this file except in compliance with
+    the License.  You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+
+- var model = 'backupItem.discovery.ZooKeeper.retryPolicy.NTimes';
+
+div
+    .details-row
+        ignite-form-field
+            ignite-form-field-label
+                | Retries:
+            ignite-form-field-tooltip
+                | Number of times to retry
+            ignite-form-field-input-number(
+                data-id='n'
+                data-name='n'
+                data-ng-model='#{model}.n'
+                data-ng-required='true'
+            )
+    .details-row
+        ignite-form-field
+            ignite-form-field-label
+                | Interval:
+            ignite-form-field-tooltip
+                | Time in ms between retry attempts
+            ignite-form-field-input-number(
+                data-id='sleepMsBetweenRetries'
+                data-name='sleepMsBetweenRetries'
+                data-ng-model='#{model}.sleepMsBetweenRetries'
+                data-ng-required='true'
+            )

http://git-wip-us.apache.org/repos/asf/ignite/blob/37bc9774/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/one-time.directive.js
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/one-time.directive.js b/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/one-time.directive.js
new file mode 100644
index 0000000..7329cc2
--- /dev/null
+++ b/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/one-time.directive.js
@@ -0,0 +1,27 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import template from './one-time.jade!';
+
+export default ['igniteConfigurationClustersGeneralDiscoveryZookeeperOneTime', [() => {
+    return {
+        scope: true,
+        restrict: 'E',
+        template,
+        replace: true
+    };
+}]];

http://git-wip-us.apache.org/repos/asf/ignite/blob/37bc9774/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/one-time.jade
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/one-time.jade b/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/one-time.jade
new file mode 100644
index 0000000..24b3514
--- /dev/null
+++ b/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/one-time.jade
@@ -0,0 +1,31 @@
+//-
+    Licensed to the Apache Software Foundation (ASF) under one or more
+    contributor license agreements.  See the NOTICE file distributed with
+    this work for additional information regarding copyright ownership.
+    The ASF licenses this file to You under the Apache License, Version 2.0
+    (the "License"); you may not use this file except in compliance with
+    the License.  You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+
+- var model = 'backupItem.discovery.ZooKeeper.retryPolicy.OneTime';
+
+div
+    .details-row
+        ignite-form-field
+            ignite-form-field-label
+                | Interval:
+            ignite-form-field-tooltip
+                | Time in ms to retry attempt
+            ignite-form-field-input-number(
+                data-id='sleepMsBetweenRetry'
+                data-name='sleepMsBetweenRetry'
+                data-ng-model='#{model}.sleepMsBetweenRetry'
+                data-ng-required='true'
+            )

http://git-wip-us.apache.org/repos/asf/ignite/blob/37bc9774/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/until-elapsed.directive.js
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/until-elapsed.directive.js b/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/until-elapsed.directive.js
new file mode 100644
index 0000000..8997159
--- /dev/null
+++ b/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/until-elapsed.directive.js
@@ -0,0 +1,27 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import template from './until-elapsed.jade!';
+
+export default ['igniteConfigurationClustersGeneralDiscoveryZookeeperUntilElapsed', [() => {
+    return {
+        scope: true,
+        restrict: 'E',
+        template,
+        replace: true
+    };
+}]];

http://git-wip-us.apache.org/repos/asf/ignite/blob/37bc9774/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/until-elapsed.jade
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/until-elapsed.jade b/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/until-elapsed.jade
new file mode 100644
index 0000000..c4e701e
--- /dev/null
+++ b/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/until-elapsed.jade
@@ -0,0 +1,43 @@
+//-
+    Licensed to the Apache Software Foundation (ASF) under one or more
+    contributor license agreements.  See the NOTICE file distributed with
+    this work for additional information regarding copyright ownership.
+    The ASF licenses this file to You under the Apache License, Version 2.0
+    (the "License"); you may not use this file except in compliance with
+    the License.  You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+
+- var model = 'backupItem.discovery.ZooKeeper.retryPolicy.UntilElapsed';
+
+div
+    .details-row
+        ignite-form-field
+            ignite-form-field-label
+                | Total time:
+            ignite-form-field-tooltip
+                | Total time in ms for execution of retry attempt
+            ignite-form-field-input-number(
+                data-id='maxElapsedTimeMs'
+                data-name='maxElapsedTimeMs'
+                data-ng-model='#{model}.maxElapsedTimeMs'
+                data-ng-required='true'
+            )
+    .details-row
+        ignite-form-field
+            ignite-form-field-label
+                | Interval:
+            ignite-form-field-tooltip
+                | Time in ms between retry attempts
+            ignite-form-field-input-number(
+                data-id='sleepMsBetweenRetries'
+                data-name='sleepMsBetweenRetries'
+                data-ng-model='#{model}.sleepMsBetweenRetries'
+                data-ng-required='true'
+            )

http://git-wip-us.apache.org/repos/asf/ignite/blob/37bc9774/modules/control-center-web/src/main/js/controllers/clusters-controller.js
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/controllers/clusters-controller.js b/modules/control-center-web/src/main/js/controllers/clusters-controller.js
index 8f44788..7e49f81 100644
--- a/modules/control-center-web/src/main/js/controllers/clusters-controller.js
+++ b/modules/control-center-web/src/main/js/controllers/clusters-controller.js
@@ -65,10 +65,11 @@ consoleModule.controller('clustersController', function ($http, $timeout, $scope
             {value: 'Vm', label: 'static IPs'},
             {value: 'Multicast', label: 'multicast'},
             {value: 'S3', label: 'AWS S3'},
-            {value: 'Cloud', label: 'apache jclouds'},
-            {value: 'GoogleStorage', label: 'google cloud storage'},
+            {value: 'Cloud', label: 'Apache jclouds'},
+            {value: 'GoogleStorage', label: 'Google cloud storage'},
             {value: 'Jdbc', label: 'JDBC'},
-            {value: 'SharedFs', label: 'shared filesystem'}
+            {value: 'SharedFs', label: 'shared filesystem'},
+            {value: 'ZooKeeper', label: 'Apache ZooKeeper'}
         ];
 
         $scope.swapSpaceSpis = [

http://git-wip-us.apache.org/repos/asf/ignite/blob/37bc9774/modules/control-center-web/src/main/js/helpers/generator/generator-java.js
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/helpers/generator/generator-java.js b/modules/control-center-web/src/main/js/helpers/generator/generator-java.js
index 32023b9..732fe51 100644
--- a/modules/control-center-web/src/main/js/helpers/generator/generator-java.js
+++ b/modules/control-center-web/src/main/js/helpers/generator/generator-java.js
@@ -62,6 +62,18 @@ $generatorJava.setterName = function (propName, setterName) {
     return setterName ? setterName : $commonUtils.toJavaName('set', propName);
 };
 
+// Add constructor argument
+$generatorJava.constructorArg = function (obj, propName, notFirst, opt) {
+    var v = obj ? obj[propName] : undefined;
+
+    if ($commonUtils.isDefinedAndNotEmpty(v))
+        return (notFirst ? ', ' : '') + v;
+    else if (!opt)
+        return notFirst ? ', null' : 'null';
+    else
+        return '';
+};
+
 /**
  * Add variable declaration.
  *
@@ -525,6 +537,81 @@ $generatorJava.clusterGeneral = function (cluster, clientNearCfg, res) {
 
                 break;
 
+            case 'ZooKeeper':
+                var finderVar = 'ipFinder';
+
+                $generatorJava.declareVariable(res, 'ipFinder', 'org.apache.ignite.spi.discovery.tcp.ipfinder.zk.TcpDiscoveryZookeeperIpFinder');
+
+                if (d.ZooKeeper) {
+                    if ($commonUtils.isDefinedAndNotEmpty(d.ZooKeeper.curator))
+                        res.line(finderVar + '.setCurator(new ' + res.importClass(d.ZooKeeper.curator) + '());');
+
+                    $generatorJava.property(res, finderVar, d.ZooKeeper, 'zkConnectionString');
+
+                    if (d.ZooKeeper.retryPolicy && d.ZooKeeper.retryPolicy.kind) {
+                        var kind = d.ZooKeeper.retryPolicy.kind;
+                        var retryPolicy = d.ZooKeeper.retryPolicy[kind];
+
+                        switch (kind) {
+                            case 'ExponentialBackoff':
+                                res.line(finderVar + '.setRetryPolicy(new ' + res.importClass('org.apache.curator.retry.ExponentialBackoffRetry') + '(' +
+                                    $generatorJava.constructorArg(retryPolicy, 'baseSleepTimeMs') +
+                                    $generatorJava.constructorArg(retryPolicy, 'maxRetries', true) +
+                                    $generatorJava.constructorArg(retryPolicy, 'maxSleepMs', true, true) + '));');
+
+                                break;
+
+                            case 'BoundedExponentialBackoff':
+                                res.line(finderVar + '.setRetryPolicy(new ' + res.importClass('org.apache.curator.retry.BoundedExponentialBackoffRetry') + '(' +
+                                    $generatorJava.constructorArg(retryPolicy, 'baseSleepTimeMs') +
+                                    $generatorJava.constructorArg(retryPolicy, 'maxSleepTimeMs', true) +
+                                    $generatorJava.constructorArg(retryPolicy, 'maxRetries', true) + '));');
+
+                                break;
+
+                            case 'UntilElapsed':
+                                res.line(finderVar + '.setRetryPolicy(new ' + res.importClass('org.apache.curator.retry.RetryUntilElapsed') + '(' +
+                                    $generatorJava.constructorArg(retryPolicy, 'maxElapsedTimeMs') +
+                                    $generatorJava.constructorArg(retryPolicy, 'sleepMsBetweenRetries', true) + '));');
+
+                                break;
+
+                            case 'NTimes':
+                                res.line(finderVar + '.setRetryPolicy(new ' + res.importClass('org.apache.curator.retry.RetryNTimes') + '(' +
+                                    $generatorJava.constructorArg(retryPolicy, 'n') +
+                                    $generatorJava.constructorArg(retryPolicy, 'sleepMsBetweenRetries', true) + '));');
+
+                                break;
+
+                            case 'OneTime':
+                                res.line(finderVar + '.setRetryPolicy(new ' + res.importClass('org.apache.curator.retry.RetryOneTime') + '(' +
+                                    $generatorJava.constructorArg(retryPolicy, 'sleepMsBetweenRetry') + '));');
+
+                                break;
+
+                            case 'Forever':
+                                res.line(finderVar + '.setRetryPolicy(new ' + res.importClass('org.apache.curator.retry.RetryForever') + '(' +
+                                    $generatorJava.constructorArg(retryPolicy, 'retryIntervalMs') + '));');
+
+                                break;
+
+                            case 'Custom':
+                                if (retryPolicy && $commonUtils.isDefinedAndNotEmpty(retryPolicy.className))
+                                    res.line(finderVar + '.setRetryPolicy(new ' + res.importClass(retryPolicy.className) + '());');
+
+                                break;
+                        }
+                    }
+
+                    $generatorJava.property(res, finderVar, d.ZooKeeper, 'basePath', null, null, '/services');
+                    $generatorJava.property(res, finderVar, d.ZooKeeper, 'serviceName', null, null, 'ignite');
+                    $generatorJava.property(res, finderVar, d.ZooKeeper, 'allowDuplicateRegistrations', null, null, false);
+                }
+
+                res.line('discovery.setIpFinder(ipFinder);');
+
+                break;
+
             default:
                 res.line('Unknown discovery kind: ' + d.kind);
         }

http://git-wip-us.apache.org/repos/asf/ignite/blob/37bc9774/modules/control-center-web/src/main/js/helpers/generator/generator-pom.js
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/helpers/generator/generator-pom.js b/modules/control-center-web/src/main/js/helpers/generator/generator-pom.js
index 804b607..f7bcf92 100644
--- a/modules/control-center-web/src/main/js/helpers/generator/generator-pom.js
+++ b/modules/control-center-web/src/main/js/helpers/generator/generator-pom.js
@@ -176,6 +176,9 @@ $generatorPom.pom = function (cluster, igniteVersion, mvnRepositories, res) {
     addDependency('org.apache.ignite', 'ignite-indexing', igniteVersion);
     addDependency('org.apache.ignite', 'ignite-rest-http', igniteVersion);
 
+    if (cluster.discovery.kind === 'ZooKeeper')
+        addDependency('org.apache.ignite', 'ignite-zookeeper', igniteVersion);
+
     if (_.find(cluster.igfss, function (igfs) { return igfs.secondaryFileSystemEnabled; }))
         addDependency('org.apache.ignite', 'ignite-hadoop', igniteVersion);
 

http://git-wip-us.apache.org/repos/asf/ignite/blob/37bc9774/modules/control-center-web/src/main/js/helpers/generator/generator-xml.js
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/helpers/generator/generator-xml.js b/modules/control-center-web/src/main/js/helpers/generator/generator-xml.js
index 9fab39b..2d2c5c8 100644
--- a/modules/control-center-web/src/main/js/helpers/generator/generator-xml.js
+++ b/modules/control-center-web/src/main/js/helpers/generator/generator-xml.js
@@ -26,6 +26,19 @@ $generatorXml.escape = function (s) {
     return s.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;').replace(/"/g, '&quot;');
 };
 
+// Add constructor argument
+$generatorXml.constructorArg = function (res, ix, obj, propName, opt) {
+    var v = obj ? obj[propName] : undefined;
+
+    if ($commonUtils.isDefinedAndNotEmpty(v))
+        res.line('<constructor-arg ' + (ix >= 0 ? 'index="' + ix + '" ' : '') + 'value="' + v + '"/>');
+    else if (!opt) {
+        res.startBlock('<constructor-arg ' + (ix >= 0 ? 'index="' + ix + '"' : '') + '>');
+        res.line('<null/>');
+        res.endBlock('</constructor-arg>');
+    }
+};
+
 // Add XML element.
 $generatorXml.element = function (res, tag, attr1, val1, attr2, val2) {
     var elem = '<' + tag;
@@ -365,6 +378,95 @@ $generatorXml.clusterGeneral = function (cluster, res) {
 
                 break;
 
+            case 'ZooKeeper':
+                res.startBlock('<bean class="org.apache.ignite.spi.discovery.tcp.ipfinder.zk.TcpDiscoveryZookeeperIpFinder">');
+
+                if (d.ZooKeeper) {
+                    if ($commonUtils.isDefinedAndNotEmpty(d.ZooKeeper.curator)) {
+                        res.startBlock('<property name="curator">');
+                        res.line('<bean class="' + d.ZooKeeper.curator + '"/>');
+                        res.endBlock('</property>');
+                    }
+
+                    $generatorXml.property(res, d.ZooKeeper, 'zkConnectionString');
+
+                    if (d.ZooKeeper.retryPolicy && d.ZooKeeper.retryPolicy.kind) {
+                        var kind = d.ZooKeeper.retryPolicy.kind;
+                        var retryPolicy = d.ZooKeeper.retryPolicy[kind];
+                        var customClassDefined = retryPolicy && $commonUtils.isDefinedAndNotEmpty(retryPolicy.className);
+
+                        if (kind !== 'Custom' || customClassDefined)
+                            res.startBlock('<property name="retryPolicy">');
+
+                        switch (kind) {
+                            case 'ExponentialBackoff':
+                                res.startBlock('<bean class="org.apache.curator.retry.ExponentialBackoffRetry">');
+                                $generatorXml.constructorArg(res, 0, retryPolicy, 'baseSleepTimeMs');
+                                $generatorXml.constructorArg(res, 1, retryPolicy, 'maxRetries');
+                                $generatorXml.constructorArg(res, 2, retryPolicy, 'maxSleepMs', true);
+                                res.endBlock('</bean>');
+
+                                break;
+
+                            case 'BoundedExponentialBackoff':
+                                res.startBlock('<bean class="org.apache.curator.retry.BoundedExponentialBackoffRetry">');
+                                $generatorXml.constructorArg(res, 0, retryPolicy, 'baseSleepTimeMs');
+                                $generatorXml.constructorArg(res, 1, retryPolicy, 'maxSleepTimeMs');
+                                $generatorXml.constructorArg(res, 2, retryPolicy, 'maxRetries');
+                                res.endBlock('</bean>');
+
+                                break;
+
+                            case 'UntilElapsed':
+                                res.startBlock('<bean class="org.apache.curator.retry.RetryUntilElapsed">');
+                                $generatorXml.constructorArg(res, 0, retryPolicy, 'maxElapsedTimeMs');
+                                $generatorXml.constructorArg(res, 1, retryPolicy, 'sleepMsBetweenRetries');
+                                res.endBlock('</bean>');
+
+                                break;
+
+                            case 'NTimes':
+                                res.startBlock('<bean class="org.apache.curator.retry.RetryNTimes">');
+                                $generatorXml.constructorArg(res, 0, retryPolicy, 'n');
+                                $generatorXml.constructorArg(res, 1, retryPolicy, 'sleepMsBetweenRetries');
+                                res.endBlock('</bean>');
+
+                                break;
+
+                            case 'OneTime':
+                                res.startBlock('<bean class="org.apache.curator.retry.RetryOneTime">');
+                                $generatorXml.constructorArg(res, 0, retryPolicy, 'sleepMsBetweenRetry');
+                                res.endBlock('</bean>');
+
+                                break;
+
+                            case 'Forever':
+                                res.startBlock('<bean class="org.apache.curator.retry.RetryForever">');
+                                $generatorXml.constructorArg(res, 0, retryPolicy, 'retryIntervalMs');
+                                res.endBlock('</bean>');
+
+                                break;
+
+                            case 'Custom':
+                                if (customClassDefined)
+                                    res.line('<bean class="' + retryPolicy.className + '"/>');
+
+                                break;
+                        }
+
+                        if (kind !== 'Custom' || customClassDefined)
+                            res.endBlock('</property>');
+                    }
+
+                    $generatorXml.property(res, d.ZooKeeper, 'basePath', null, '/services');
+                    $generatorXml.property(res, d.ZooKeeper, 'serviceName', null, 'ignite');
+                    $generatorXml.property(res, d.ZooKeeper, 'allowDuplicateRegistrations', null, false);
+                }
+
+                res.endBlock('</bean>');
+
+                break;
+
             default:
                 res.line('Unknown discovery kind: ' + d.kind);
         }

http://git-wip-us.apache.org/repos/asf/ignite/blob/37bc9774/modules/control-center-web/src/main/js/serve/mongo.js
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/serve/mongo.js b/modules/control-center-web/src/main/js/serve/mongo.js
index cfb0040..46a9629 100644
--- a/modules/control-center-web/src/main/js/serve/mongo.js
+++ b/modules/control-center-web/src/main/js/serve/mongo.js
@@ -331,7 +331,7 @@ module.exports.factory = function(deepPopulatePlugin, passportMongo, settings, p
             authenticator: String,
             forceServerMode: Boolean,
             clientReconnectDisabled: Boolean,
-            kind: {type: String, enum: ['Vm', 'Multicast', 'S3', 'Cloud', 'GoogleStorage', 'Jdbc', 'SharedFs']},
+            kind: {type: String, enum: ['Vm', 'Multicast', 'S3', 'Cloud', 'GoogleStorage', 'Jdbc', 'SharedFs', 'ZooKeeper']},
             Vm: {
                 addresses: [String]
             },
@@ -366,6 +366,44 @@ module.exports.factory = function(deepPopulatePlugin, passportMongo, settings, p
             },
             SharedFs: {
                 path: String
+            },
+            ZooKeeper: {
+                curator: String,
+                zkConnectionString: String,
+                retryPolicy: {
+                    kind: {type: String, enum: ['ExponentialBackoff', 'BoundedExponentialBackoff', 'UntilElapsed',
+                        'NTimes', 'OneTime', 'Forever', 'Custom']},
+                    ExponentialBackoff: {
+                        baseSleepTimeMs: Number,
+                        maxRetries: Number,
+                        maxSleepMs: Number
+                    },
+                    BoundedExponentialBackoff: {
+                        baseSleepTimeMs: Number,
+                        maxSleepTimeMs: Number,
+                        maxRetries: Number
+                    },
+                    UntilElapsed: {
+                        maxElapsedTimeMs: Number,
+                        sleepMsBetweenRetries: Number
+                    },
+                    NTimes: {
+                        n: Number,
+                        sleepMsBetweenRetries: Number
+                    },
+                    OneTime: {
+                        sleepMsBetweenRetry: Number
+                    },
+                    Forever: {
+                        retryIntervalMs: Number
+                    },
+                    Custom: {
+                        className: String
+                    }
+                },
+                basePath: String,
+                serviceName: String,
+                allowDuplicateRegistrations: Boolean
             }
         },
         atomicConfiguration: {


[21/28] ignite git commit: IGNITE-843 Added suffix in title.

Posted by ak...@apache.org.
IGNITE-843 Added suffix in title.


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

Branch: refs/heads/ignite-843-rc3
Commit: 91698c2430e9d877d6a0619d7a85123104517a2d
Parents: 85b4b9f
Author: Andrey <an...@gridgain.com>
Authored: Thu Mar 3 13:26:42 2016 +0700
Committer: Andrey <an...@gridgain.com>
Committed: Thu Mar 3 13:26:42 2016 +0700

----------------------------------------------------------------------
 .../control-center-web/src/main/js/app/index.js | 15 +++++++---
 .../main/js/app/modules/states/admin.state.js   |  6 ++--
 .../app/modules/states/configuration.state.js   | 30 +++++++-------------
 .../main/js/app/modules/states/logout.state.js  |  5 +++-
 .../js/app/modules/states/password.state.js     | 10 +++++--
 .../main/js/app/modules/states/profile.state.js |  6 ++--
 .../main/js/app/modules/states/signin.state.js  |  6 ++--
 .../src/main/js/app/modules/states/sql.state.js | 12 +++-----
 .../control-center-web/src/main/js/config.js    |  1 +
 .../control-center-web/src/main/js/package.json |  2 +-
 .../src/main/js/views/index.jade                |  5 +++-
 11 files changed, 49 insertions(+), 49 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/91698c24/modules/control-center-web/src/main/js/app/index.js
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/app/index.js b/modules/control-center-web/src/main/js/app/index.js
index 25ea53f..a2473e8 100644
--- a/modules/control-center-web/src/main/js/app/index.js
+++ b/modules/control-center-web/src/main/js/app/index.js
@@ -29,7 +29,7 @@ window.angular = angular;
 window.pdfMake = pdfMake;
 
 import 'angular-ui-router';
-import 'angular-ui-router-title';
+import 'angular-ui-router-metatags';
 import 'angular-animate';
 import 'angular-sanitize';
 import 'angular-ui-grid';
@@ -107,7 +107,7 @@ import byName from './filters/byName/byName.filter';
 angular
 .module('ignite-console', [
     'ui.router',
-    'ui.router.title',
+    'ui.router.metatags',
     'ngRetina',
     // Base modules.
     'ignite-console.user',
@@ -151,7 +151,7 @@ angular
 // Filters.
 .filter(...hasPojo)
 .filter(...byName)
-.config(['$stateProvider', '$locationProvider', '$urlRouterProvider', function($stateProvider, $locationProvider, $urlRouterProvider) {
+.config(['$stateProvider', '$locationProvider', '$urlRouterProvider', ($stateProvider, $locationProvider, $urlRouterProvider) => {
     // Set up the states.
     $stateProvider
         .state('base', {
@@ -169,12 +169,19 @@ angular
 
     $locationProvider.html5Mode(true);
 }])
+.config(['UIRouterMetatagsProvider', (UIRouterMetatagsProvider) => {
+    UIRouterMetatagsProvider
+        .setTitleSuffix(' – Apache Ignite Web Console')
+        .setDefaultDescription('The Apache Ignite Web Console is an interactive management tool and configuration wizard for Apache Ignite which walks you through the creation of configuration files. Try the tool now.');
+}])
 .run(['$rootScope', ($root) => {
     $root._ = _;
 }])
-.run(['$rootScope', '$state', 'Auth', 'User', ($root, $state, Auth, User) => {
+.run(['$rootScope', '$state', 'MetaTags', 'Auth', 'User', ($root, $state, $meta, Auth, User) => {
     $root.$state = $state;
 
+    $root.$meta = $meta;
+
     if (Auth.authorized) {
         User.read()
             .then((user) => $root.$broadcast('user', user));

http://git-wip-us.apache.org/repos/asf/ignite/blob/91698c24/modules/control-center-web/src/main/js/app/modules/states/admin.state.js
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/app/modules/states/admin.state.js b/modules/control-center-web/src/main/js/app/modules/states/admin.state.js
index 0de646e..af1fbde 100644
--- a/modules/control-center-web/src/main/js/app/modules/states/admin.state.js
+++ b/modules/control-center-web/src/main/js/app/modules/states/admin.state.js
@@ -27,10 +27,8 @@ angular
     .state('settings.admin', {
         url: '/admin',
         templateUrl: '/settings/admin.html',
-        resolve: {
-            $title: ['IgniteBranding', (branding) => {
-                return 'List of registered users' + branding.titleSuffix;
-            }]
+        metaTags: {
+            title: 'List of registered users'
         }
     });
 }]);

http://git-wip-us.apache.org/repos/asf/ignite/blob/91698c24/modules/control-center-web/src/main/js/app/modules/states/configuration.state.js
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/app/modules/states/configuration.state.js b/modules/control-center-web/src/main/js/app/modules/states/configuration.state.js
index 1071eb8..f789175 100644
--- a/modules/control-center-web/src/main/js/app/modules/states/configuration.state.js
+++ b/modules/control-center-web/src/main/js/app/modules/states/configuration.state.js
@@ -111,10 +111,8 @@ angular
         data: {
             loading: 'Loading clusters screen...'
         },
-        resolve: {
-            $title: ['IgniteBranding', (branding) => {
-                return 'Configure Clusters' + branding.titleSuffix;
-            }]
+        metaTags: {
+            title: 'Configure Clusters'
         }
     })
     .state('base.configuration.caches', {
@@ -126,10 +124,8 @@ angular
         data: {
             loading: 'Loading caches screen...'
         },
-        resolve: {
-            $title: ['IgniteBranding', (branding) => {
-                return 'Configure Caches' + branding.titleSuffix;
-            }]
+        metaTags: {
+            title: 'Configure Caches'
         }
     })
     .state('base.configuration.domains', {
@@ -141,10 +137,8 @@ angular
         data: {
             loading: 'Loading domain models screen...'
         },
-        resolve: {
-            $title: ['IgniteBranding', (branding) => {
-                return 'Configure Domain Model' + branding.titleSuffix;
-            }]
+        metaTags: {
+            title: 'Configure Domain Model'
         }
     })
     .state('base.configuration.igfs', {
@@ -156,10 +150,8 @@ angular
         data: {
             loading: 'Loading IGFS screen...'
         },
-        resolve: {
-            $title: ['IgniteBranding', (branding) => {
-                return 'Configure IGFS' + branding.titleSuffix;
-            }]
+        metaTags: {
+            title: 'Configure IGFS'
         }
     })
     .state('base.configuration.summary', {
@@ -170,10 +162,8 @@ angular
         data: {
             loading: 'Loading summary screen...'
         },
-        resolve: {
-            $title: ['IgniteBranding', (branding) => {
-                return 'Configurations Summary' + branding.titleSuffix;
-            }]
+        metaTags: {
+            title: 'Configurations Summary'
         }
     });
 }]);

http://git-wip-us.apache.org/repos/asf/ignite/blob/91698c24/modules/control-center-web/src/main/js/app/modules/states/logout.state.js
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/app/modules/states/logout.state.js b/modules/control-center-web/src/main/js/app/modules/states/logout.state.js
index 7609f24..7f24a45 100644
--- a/modules/control-center-web/src/main/js/app/modules/states/logout.state.js
+++ b/modules/control-center-web/src/main/js/app/modules/states/logout.state.js
@@ -28,6 +28,9 @@ angular
         url: '/logout',
         controller: ['Auth', function(Auth) {
             Auth.logout();
-        }]
+        }],
+        metaTags: {
+            title: 'Logout'
+        }
     });
 }]);

http://git-wip-us.apache.org/repos/asf/ignite/blob/91698c24/modules/control-center-web/src/main/js/app/modules/states/password.state.js
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/app/modules/states/password.state.js b/modules/control-center-web/src/main/js/app/modules/states/password.state.js
index 6014cd2..48d01df 100644
--- a/modules/control-center-web/src/main/js/app/modules/states/password.state.js
+++ b/modules/control-center-web/src/main/js/app/modules/states/password.state.js
@@ -31,10 +31,16 @@ angular
     })
     .state('password.reset', {
         url: '/reset?{token}',
-        templateUrl: '/reset.html'
+        templateUrl: '/reset.html',
+        metaTags: {
+            title: 'Reset password'
+        }
     })
     .state('password.send', {
         url: '/send',
-        templateUrl: '/reset.html'
+        templateUrl: '/reset.html',
+        metaTags: {
+            title: 'Password Send'
+        }
     });
 }]);

http://git-wip-us.apache.org/repos/asf/ignite/blob/91698c24/modules/control-center-web/src/main/js/app/modules/states/profile.state.js
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/app/modules/states/profile.state.js b/modules/control-center-web/src/main/js/app/modules/states/profile.state.js
index dc9cabd..8b6cdfe 100644
--- a/modules/control-center-web/src/main/js/app/modules/states/profile.state.js
+++ b/modules/control-center-web/src/main/js/app/modules/states/profile.state.js
@@ -27,10 +27,8 @@ angular
     .state('settings.profile', {
         url: '/profile',
         templateUrl: '/settings/profile.html',
-        resolve: {
-            $title: ['IgniteBranding', (branding) => {
-                return 'User profile' + branding.titleSuffix;
-            }]
+        metaTags: {
+            title: 'User profile'
         }
     });
 }]);

http://git-wip-us.apache.org/repos/asf/ignite/blob/91698c24/modules/control-center-web/src/main/js/app/modules/states/signin.state.js
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/app/modules/states/signin.state.js b/modules/control-center-web/src/main/js/app/modules/states/signin.state.js
index 9855058..96ff967 100644
--- a/modules/control-center-web/src/main/js/app/modules/states/signin.state.js
+++ b/modules/control-center-web/src/main/js/app/modules/states/signin.state.js
@@ -29,10 +29,8 @@ angular
     .state('signin', {
         url: '/signin',
         templateUrl: '/signin.html',
-        resolve: {
-            $title: ['IgniteBranding', (branding) => {
-                return 'Management Tool and Configuration Wizard for Apache Ignite' + branding.titleSuffix;
-            }]
+        metaTags: {
+            title: 'Management Tool and Configuration Wizard for Apache Ignite'
         }
     });
 }])

http://git-wip-us.apache.org/repos/asf/ignite/blob/91698c24/modules/control-center-web/src/main/js/app/modules/states/sql.state.js
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/app/modules/states/sql.state.js b/modules/control-center-web/src/main/js/app/modules/states/sql.state.js
index 0c53bb6..a48842f 100644
--- a/modules/control-center-web/src/main/js/app/modules/states/sql.state.js
+++ b/modules/control-center-web/src/main/js/app/modules/states/sql.state.js
@@ -35,10 +35,8 @@ angular
         data: {
             loading: 'Loading notebook screen...'
         },
-        resolve: {
-            $title: ['IgniteBranding', (branding) => {
-                return 'Query notebook' + branding.titleSuffix;
-            }]
+        metaTags: {
+            title: 'Query notebook'
         }
     })
     .state('base.sql.demo', {
@@ -47,10 +45,8 @@ angular
         data: {
             loading: 'Enable SQL demo...'
         },
-        resolve: {
-            $title: ['IgniteBranding', (branding) => {
-                return 'SQL demo' + branding.titleSuffix;
-            }]
+        metaTags: {
+            title: 'SQL demo'
         }
     });
 }]);

http://git-wip-us.apache.org/repos/asf/ignite/blob/91698c24/modules/control-center-web/src/main/js/config.js
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/config.js b/modules/control-center-web/src/main/js/config.js
index 8000eac..1678d83 100644
--- a/modules/control-center-web/src/main/js/config.js
+++ b/modules/control-center-web/src/main/js/config.js
@@ -33,6 +33,7 @@ System.config({
     "angular-ui-ace": "github:angular-ui/ui-ace@0.2.3",
     "angular-ui-grid": "github:angular-ui/bower-ui-grid@3.1.1",
     "angular-ui-router": "github:angular-ui/ui-router@0.2.18",
+    "angular-ui-router-metatags": "github:tinusn/ui-router-metatags@1.0.3",
     "angular-ui-router-title": "github:nonplus/angular-ui-router-title@0.0.4",
     "babel": "npm:babel-core@5.8.35",
     "babel-runtime": "npm:babel-runtime@5.8.35",

http://git-wip-us.apache.org/repos/asf/ignite/blob/91698c24/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 69c3af9..4a1101c 100644
--- a/modules/control-center-web/src/main/js/package.json
+++ b/modules/control-center-web/src/main/js/package.json
@@ -83,7 +83,7 @@
       "angular-tree-control": "github:wix/angular-tree-control@^0.2.23",
       "angular-ui-grid": "github:angular-ui/bower-ui-grid@^3.0.7",
       "angular-ui-router": "github:angular-ui/ui-router@^0.2.15",
-      "angular-ui-router-title": "github:nonplus/angular-ui-router-title@^0.0.4",
+      "angular-ui-router-metatags": "github:tinusn/ui-router-metatags@^1.0.3",
       "blob": "github:eligrey/Blob.js@master",
       "bootstrap-carousel": "github:twbs/bootstrap@^3.3.6",
       "css": "github:systemjs/plugin-css@^0.1.20",

http://git-wip-us.apache.org/repos/asf/ignite/blob/91698c24/modules/control-center-web/src/main/js/views/index.jade
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/views/index.jade b/modules/control-center-web/src/main/js/views/index.jade
index b884db2..eebfd89 100644
--- a/modules/control-center-web/src/main/js/views/index.jade
+++ b/modules/control-center-web/src/main/js/views/index.jade
@@ -21,7 +21,10 @@ html(ng-app='ignite-web-console' id='app')
         link(rel='shortcut icon' href='favicon.ico')
         meta(http-equiv='content-type' content='text/html; charset=UTF8')
 
-        title(ng-bind='$title')
+        title(ng-bind='$meta.title')
+
+        meta(name='description' content='{{$meta.description}}')
+        meta(name='keywords' content='{{$meta.keywords}}')
 
         link(rel='stylesheet', href='/app.min.css')
 


[14/28] ignite git commit: IGNITE-843 Sort column on admin page.

Posted by ak...@apache.org.
IGNITE-843 Sort column on admin page.


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

Branch: refs/heads/ignite-843-rc3
Commit: aaf139bd596bb1f1b37421cfa7e48cf59588f506
Parents: 4555bed
Author: Andrey <an...@gridgain.com>
Authored: Fri Feb 26 13:56:37 2016 +0700
Committer: Andrey <an...@gridgain.com>
Committed: Fri Feb 26 13:56:37 2016 +0700

----------------------------------------------------------------------
 modules/control-center-web/src/main/js/views/settings/admin.jade | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/aaf139bd/modules/control-center-web/src/main/js/views/settings/admin.jade
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/views/settings/admin.jade b/modules/control-center-web/src/main/js/views/settings/admin.jade
index 69a2971..e72eae2 100644
--- a/modules/control-center-web/src/main/js/views/settings/admin.jade
+++ b/modules/control-center-web/src/main/js/views/settings/admin.jade
@@ -32,7 +32,7 @@
                             th(st-sort='email') Email
                             th(st-sort='company') Company
                             th(st-sort='country') Country
-                            th.col-xs-2(st-sort='lastLogin') Last login
+                            th.col-xs-2(st-sort='lastLogin' st-sort-default='reverse') Last login
                             th(width='1%'  st-sort='admin') Admin
                             th(width='1%') Actions
                     tbody


[12/28] ignite git commit: IGNITE-2724 WIP support for ZooKeeper.

Posted by ak...@apache.org.
IGNITE-2724 WIP support for ZooKeeper.


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

Branch: refs/heads/ignite-843-rc3
Commit: 6de273facf0489ebca2c944867882f805c76fbaf
Parents: 37bc977
Author: vsisko <vs...@gridgain.com>
Authored: Fri Feb 26 13:30:53 2016 +0700
Committer: Alexey Kuznetsov <ak...@apache.org>
Committed: Fri Feb 26 13:30:53 2016 +0700

----------------------------------------------------------------------
 .../states/configuration/clusters/general.jade  |  8 +++++++
 .../clusters/general/discovery/zookeeper.jade   | 21 +++++++++++------
 .../bounded-exponential-backoff.jade            |  6 +++--
 .../retrypolicy/exponential-backoff.jade        |  6 +++--
 .../zookeeper/retrypolicy/forever.jade          |  1 +
 .../zookeeper/retrypolicy/n-times.jade          |  2 ++
 .../zookeeper/retrypolicy/one-time.jade         |  1 +
 .../zookeeper/retrypolicy/until-elapsed.jade    |  2 ++
 .../main/js/controllers/clusters-controller.js  |  6 ++---
 .../main/js/helpers/generator/generator-java.js |  9 ++++----
 .../main/js/helpers/generator/generator-xml.js  | 24 ++++----------------
 .../src/main/js/public/stylesheets/style.scss   |  2 +-
 12 files changed, 49 insertions(+), 39 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/6de273fa/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/general.jade
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/general.jade b/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/general.jade
index c750119..8317b47 100644
--- a/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/general.jade
+++ b/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/general.jade
@@ -70,6 +70,14 @@ form.panel.panel-default(name='general' novalidate)
                             | Discovery:
                         ignite-form-field-tooltip
                             | Discovery allows to discover remote nodes in grid
+                            ul: li Static IPs - IP Finder which works only with pre configured list of IP addresses specified
+                                li Multicast - Multicast based IP finder
+                                li AWS S3 - AWS S3 based IP finder
+                                li Apache jclouds - Apache jclouds multi cloud toolkit based IP finder
+                                li Google cloud storage - Google Cloud Storage based IP finder
+                                li JDBC - JDBC based IP finder
+                                li Shared filesystem - Shared filesystem based IP finder
+                                li Apache ZooKeeper - Apache ZooKeeper based IP finder
                         ignite-form-field-dropdown(
                             data-id='discovery'
                             data-name='discovery'

http://git-wip-us.apache.org/repos/asf/ignite/blob/6de273fa/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper.jade
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper.jade b/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper.jade
index d99a7a7..709d436 100644
--- a/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper.jade
+++ b/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper.jade
@@ -31,9 +31,9 @@ div
     .details-row
         ignite-form-field
             ignite-form-field-label
-                | Connection string:
+                | Connect string:
             ignite-form-field-tooltip
-                | This property will be used when "IGNITE_ZK_CONNECTION_STRING" system property is not configured
+                | When "IGNITE_ZK_CONNECTION_STRING" system property is not configured this property will be used
             ignite-form-field-input-text(
                 data-id='zkConnectionString'
                 data-name='zkConnectionString'
@@ -46,7 +46,14 @@ div
             ignite-form-field-label
                 | Retry policy:
             ignite-form-field-tooltip
-                | Retry policy
+                | Available retry policies:
+                ul: li Exponential backoff - retries a set number of times with increasing sleep time between retries
+                   li Bounded exponential backoff - retries a set number of times with an increasing (up to a maximum bound) sleep time between retries
+                    li Until elapsed - retries until a given amount of time elapses
+                    li Max number of times - retries a max number of times
+                    li Only once - retries only once
+                    li Always allow retry - retries infinitely
+                    li Custom - custom retry policy implementation
             ignite-form-field-dropdown(
                 data-id='retryPolicy'
                 data-name='retryPolicy'
@@ -56,7 +63,7 @@ div
                     {value: "UntilElapsed", label: "Until elapsed"},\
                     {value: "NTimes", label: "Max number of times"},\
                     {value: "OneTime", label: "Only once"},\
-                    {value: "Forever", label: "Always allowsRetry"},\
+                    {value: "Forever", label: "Always allow retry"},\
                     {value: "Custom", label: "Custom"},\
                     {value: undefined, label: "Default"}\
                 ]'
@@ -108,6 +115,6 @@ div
             | Allow duplicate registrations
             ignite-form-field-tooltip
                 | Whether to register each node only once, or if duplicate registrations are allowed#[br]
-                | Nodes will attempt to register themselves, plus those they know about #[br]
-                | By default, duplicate registrations are not allowed, but you might want to set this property to
-                | #[b true] if you have multiple network interfaces or if you are facing troubles
+                | Nodes will attempt to register themselves, plus those they know about#[br]
+                | By default, duplicate registrations are not allowed, but you might want to set this property
+                | to #[b true] if you have multiple network interfaces or if you are facing troubles

http://git-wip-us.apache.org/repos/asf/ignite/blob/6de273fa/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/bounded-exponential-backoff.jade
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/bounded-exponential-backoff.jade b/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/bounded-exponential-backoff.jade
index 06eb790..cc4920f 100644
--- a/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/bounded-exponential-backoff.jade
+++ b/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/bounded-exponential-backoff.jade
@@ -20,7 +20,7 @@ div
     .details-row
         ignite-form-field
             ignite-form-field-label
-                | Base Sleep Time:
+                | Base interval:
             ignite-form-field-tooltip
                 | Initial amount of time to wait between retries
             ignite-form-field-input-number(
@@ -28,11 +28,12 @@ div
                 data-name='baseSleepTimeMs'
                 data-ng-model='#{model}.baseSleepTimeMs'
                 data-ng-required='true'
+                data-placeholder='1000'
             )
     .details-row
         ignite-form-field
             ignite-form-field-label
-                | Max sleep time:
+                | Max interval:
             ignite-form-field-tooltip
                 | Max time in ms to sleep on each retry
             ignite-form-field-input-number(
@@ -53,5 +54,6 @@ div
                 data-name='maxRetries'
                 data-ng-model='#{model}.maxRetries'
                 data-ng-required='true'
+                data-placeholder='10'
                 data-max='29'
             )

http://git-wip-us.apache.org/repos/asf/ignite/blob/6de273fa/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/exponential-backoff.jade
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/exponential-backoff.jade b/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/exponential-backoff.jade
index 79bcfa1..b33622b 100644
--- a/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/exponential-backoff.jade
+++ b/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/exponential-backoff.jade
@@ -20,7 +20,7 @@ div
     .details-row
         ignite-form-field
             ignite-form-field-label
-                | Base sleep time:
+                | Base interval:
             ignite-form-field-tooltip
                 | Initial amount of time to wait between retries
             ignite-form-field-input-number(
@@ -28,6 +28,7 @@ div
                 data-name='baseSleepTimeMs'
                 data-ng-model='#{model}.baseSleepTimeMs'
                 data-ng-required='true'
+                data-placeholder='1000'
             )
     .details-row
         ignite-form-field
@@ -40,12 +41,13 @@ div
                 data-name='maxRetries'
                 data-ng-model='#{model}.maxRetries'
                 data-ng-required='true'
+                data-placeholder='10'
                 data-max='29'
             )
     .details-row
         ignite-form-field
             ignite-form-field-label
-                | Max sleep time:
+                | Max interval:
             ignite-form-field-tooltip
                 | Max time in ms to sleep on each retry
             ignite-form-field-input-number(

http://git-wip-us.apache.org/repos/asf/ignite/blob/6de273fa/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/forever.jade
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/forever.jade b/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/forever.jade
index 705fa2a..cde2869 100644
--- a/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/forever.jade
+++ b/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/forever.jade
@@ -27,4 +27,5 @@
             data-name='retryIntervalMs'
             data-ng-model='#{model}.retryIntervalMs'
             data-ng-required='true'
+            data-placeholder='1000'
         )

http://git-wip-us.apache.org/repos/asf/ignite/blob/6de273fa/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/n-times.jade
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/n-times.jade b/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/n-times.jade
index 0c44709..71a7acc 100644
--- a/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/n-times.jade
+++ b/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/n-times.jade
@@ -27,6 +27,7 @@ div
                 data-id='n'
                 data-name='n'
                 data-ng-model='#{model}.n'
+                data-placeholder='10'
                 data-ng-required='true'
             )
     .details-row
@@ -40,4 +41,5 @@ div
                 data-name='sleepMsBetweenRetries'
                 data-ng-model='#{model}.sleepMsBetweenRetries'
                 data-ng-required='true'
+                data-placeholder='1000'
             )

http://git-wip-us.apache.org/repos/asf/ignite/blob/6de273fa/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/one-time.jade
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/one-time.jade b/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/one-time.jade
index 24b3514..39c7f13 100644
--- a/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/one-time.jade
+++ b/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/one-time.jade
@@ -28,4 +28,5 @@ div
                 data-name='sleepMsBetweenRetry'
                 data-ng-model='#{model}.sleepMsBetweenRetry'
                 data-ng-required='true'
+                data-placeholder='1000'
             )

http://git-wip-us.apache.org/repos/asf/ignite/blob/6de273fa/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/until-elapsed.jade
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/until-elapsed.jade b/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/until-elapsed.jade
index c4e701e..e834d55 100644
--- a/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/until-elapsed.jade
+++ b/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/until-elapsed.jade
@@ -28,6 +28,7 @@ div
                 data-name='maxElapsedTimeMs'
                 data-ng-model='#{model}.maxElapsedTimeMs'
                 data-ng-required='true'
+                data-placeholder='60000'
             )
     .details-row
         ignite-form-field
@@ -40,4 +41,5 @@ div
                 data-name='sleepMsBetweenRetries'
                 data-ng-model='#{model}.sleepMsBetweenRetries'
                 data-ng-required='true'
+                data-placeholder='1000'
             )

http://git-wip-us.apache.org/repos/asf/ignite/blob/6de273fa/modules/control-center-web/src/main/js/controllers/clusters-controller.js
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/controllers/clusters-controller.js b/modules/control-center-web/src/main/js/controllers/clusters-controller.js
index 7e49f81..12b1199 100644
--- a/modules/control-center-web/src/main/js/controllers/clusters-controller.js
+++ b/modules/control-center-web/src/main/js/controllers/clusters-controller.js
@@ -62,13 +62,13 @@ consoleModule.controller('clustersController', function ($http, $timeout, $scope
         var showPopoverMessage = $common.showPopoverMessage;
 
         $scope.discoveries = [
-            {value: 'Vm', label: 'static IPs'},
-            {value: 'Multicast', label: 'multicast'},
+            {value: 'Vm', label: 'Static IPs'},
+            {value: 'Multicast', label: 'Multicast'},
             {value: 'S3', label: 'AWS S3'},
             {value: 'Cloud', label: 'Apache jclouds'},
             {value: 'GoogleStorage', label: 'Google cloud storage'},
             {value: 'Jdbc', label: 'JDBC'},
-            {value: 'SharedFs', label: 'shared filesystem'},
+            {value: 'SharedFs', label: 'Shared filesystem'},
             {value: 'ZooKeeper', label: 'Apache ZooKeeper'}
         ];
 

http://git-wip-us.apache.org/repos/asf/ignite/blob/6de273fa/modules/control-center-web/src/main/js/helpers/generator/generator-java.js
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/helpers/generator/generator-java.js b/modules/control-center-web/src/main/js/helpers/generator/generator-java.js
index 732fe51..dfb7a64 100644
--- a/modules/control-center-web/src/main/js/helpers/generator/generator-java.js
+++ b/modules/control-center-web/src/main/js/helpers/generator/generator-java.js
@@ -67,7 +67,7 @@ $generatorJava.constructorArg = function (obj, propName, notFirst, opt) {
     var v = obj ? obj[propName] : undefined;
 
     if ($commonUtils.isDefinedAndNotEmpty(v))
-        return (notFirst ? ', ' : '') + v;
+        return (notFirst ? ', ' : '') + $generatorJava.toJavaCode(v);
     else if (!opt)
         return notFirst ? ', null' : 'null';
     else
@@ -2378,15 +2378,14 @@ $generatorJava.igfsSecondFS = function(igfs, varName, res) {
     if (igfs.secondaryFileSystemEnabled) {
         var secondFs = igfs.secondaryFileSystem || {};
 
-        var uriDefined = $commonUtils.isDefinedAndNotEmpty(secondFs.uri);
         var nameDefined = $commonUtils.isDefinedAndNotEmpty(secondFs.userName);
         var cfgDefined = $commonUtils.isDefinedAndNotEmpty(secondFs.cfgPath);
 
         res.line(varName + '.setSecondaryFileSystem(new ' +
             res.importClass('org.apache.ignite.hadoop.fs.IgniteHadoopIgfsSecondaryFileSystem') + '(' +
-                (uriDefined ? '"' + secondFs.uri + '"' : 'null') +
-                (cfgDefined || nameDefined ? (cfgDefined ? ', "' + secondFs.cfgPath + '"' : ', null') : '') +
-                (nameDefined ? ', "' + secondFs.userName + '"' : '') +
+                $generatorJava.constructorArg(secondFs, 'uri') +
+                (cfgDefined || nameDefined ? $generatorJava.constructorArg(secondFs, 'cfgPath', true) : '') +
+                $generatorJava.constructorArg(secondFs, 'userName', true, true) +
             '));');
 
         res.needEmptyLine = true;

http://git-wip-us.apache.org/repos/asf/ignite/blob/6de273fa/modules/control-center-web/src/main/js/helpers/generator/generator-xml.js
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/helpers/generator/generator-xml.js b/modules/control-center-web/src/main/js/helpers/generator/generator-xml.js
index 2d2c5c8..0afe190 100644
--- a/modules/control-center-web/src/main/js/helpers/generator/generator-xml.js
+++ b/modules/control-center-web/src/main/js/helpers/generator/generator-xml.js
@@ -1073,7 +1073,7 @@ $generatorXml.cacheRebalance = function(cache, res) {
     if (cache.igfsAffinnityGroupSize) {
         res.startBlock('<property name="affinityMapper">');
         res.startBlock('<bean class="org.apache.ignite.igfs.IgfsGroupDataBlocksKeyMapper">');
-        res.line('<constructor-arg value="' + cache.igfsAffinnityGroupSize + '"/>');
+        $generatorXml.constructorArg(res, -1, cache, 'igfsAffinnityGroupSize');
         res.endBlock('</bean>');
         res.endBlock('</property>');
     }
@@ -1525,26 +1525,12 @@ $generatorXml.igfsSecondFS = function(igfs, res) {
         var nameDefined = $commonUtils.isDefinedAndNotEmpty(secondFs.userName);
         var cfgDefined = $commonUtils.isDefinedAndNotEmpty(secondFs.cfgPath);
 
-        if ($commonUtils.isDefinedAndNotEmpty(secondFs.uri))
-            res.line('<constructor-arg index="0" value="' + secondFs.uri + '"/>');
-        else {
-            res.startBlock('<constructor-arg index="0">');
-            res.line('<null/>');
-            res.endBlock('</constructor-arg>');
-        }
+        $generatorXml.constructorArg(res, 0, secondFs, 'uri');
 
-        if (cfgDefined || nameDefined) {
-            if (cfgDefined)
-                res.line('<constructor-arg index="1" value="' + secondFs.cfgPath + '"/>');
-            else {
-                res.startBlock('<constructor-arg index="1">');
-                res.line('<null/>');
-                res.endBlock('</constructor-arg>');
-            }
-        }
+        if (cfgDefined || nameDefined)
+            $generatorXml.constructorArg(res, 1, secondFs, 'cfgPath');
 
-        if ($commonUtils.isDefinedAndNotEmpty(secondFs.userName))
-            res.line('<constructor-arg index="2" value="' + secondFs.userName + '"/>');
+        $generatorXml.constructorArg(res, 2, secondFs, 'userName', true);
 
         res.endBlock('</bean>');
         res.endBlock('</property>');

http://git-wip-us.apache.org/repos/asf/ignite/blob/6de273fa/modules/control-center-web/src/main/js/public/stylesheets/style.scss
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/public/stylesheets/style.scss b/modules/control-center-web/src/main/js/public/stylesheets/style.scss
index 024fba9..4f2cf28 100644
--- a/modules/control-center-web/src/main/js/public/stylesheets/style.scss
+++ b/modules/control-center-web/src/main/js/public/stylesheets/style.scss
@@ -393,7 +393,7 @@ h1, h2, h3, h4, h5, h6 {
 }
 
 .details-row {
-    padding: 0 10px;
+    padding: 0 5px;
 }
 
 .details-row, .settings-row {


[17/28] ignite git commit: IGNITE-843 Fixed download.

Posted by ak...@apache.org.
IGNITE-843 Fixed download.


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

Branch: refs/heads/ignite-843-rc3
Commit: 440aa002a9b550b154c0575ae6f9a8a86e6850fb
Parents: f045f53
Author: Andrey <an...@gridgain.com>
Authored: Mon Feb 29 13:50:25 2016 +0700
Committer: Andrey <an...@gridgain.com>
Committed: Mon Feb 29 13:50:25 2016 +0700

----------------------------------------------------------------------
 .../states/configuration/summary/summary.controller.js      | 9 +++++++++
 1 file changed, 9 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/440aa002/modules/control-center-web/src/main/js/app/modules/states/configuration/summary/summary.controller.js
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/app/modules/states/configuration/summary/summary.controller.js b/modules/control-center-web/src/main/js/app/modules/states/configuration/summary/summary.controller.js
index d4e3e98..c62dc82 100644
--- a/modules/control-center-web/src/main/js/app/modules/states/configuration/summary/summary.controller.js
+++ b/modules/control-center-web/src/main/js/app/modules/states/configuration/summary/summary.controller.js
@@ -265,6 +265,12 @@ export default [
 
             const zip = new JSZip();
 
+            if (!ctrl.data)
+                ctrl.data = {};
+
+            if (!ctrl.data.docker)
+                ctrl.data.docker = $generatorDocker.clusterDocker(cluster, 'latest');
+
             zip.file('Dockerfile', ctrl.data.docker);
             zip.file('.dockerignore', $generatorDocker.ignoreFile());
 
@@ -302,6 +308,9 @@ export default [
             zip.file('README.txt', $generatorReadme.readme().asString());
             zip.file('jdbc-drivers/README.txt', $generatorReadme.readmeJdbc().asString());
 
+            if (!ctrl.data.pojos)
+                ctrl.data.pojos = $generatorJava.pojos(cluster.caches);
+
             for (const pojo of ctrl.data.pojos) {
                 if (pojo.keyClass && JavaTypes.nonBuiltInClass(pojo.keyType))
                     zip.file(srcPath + pojo.keyType.replace(/\./g, '/') + '.java', pojo.keyClass);


[27/28] ignite git commit: IGNITE-843 Fixed missed catch() blocks.

Posted by ak...@apache.org.
IGNITE-843 Fixed missed catch() blocks.


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

Branch: refs/heads/ignite-843-rc3
Commit: e253f45b3186273c4331df1ef5303710efdf2b9d
Parents: d55c820
Author: vsisko <vs...@gridgain.com>
Authored: Thu Mar 3 16:58:41 2016 +0700
Committer: Alexey Kuznetsov <ak...@apache.org>
Committed: Thu Mar 3 16:58:41 2016 +0700

----------------------------------------------------------------------
 modules/control-center-web/src/main/js/serve/routes/caches.js   | 3 ++-
 modules/control-center-web/src/main/js/serve/routes/clusters.js | 3 ++-
 modules/control-center-web/src/main/js/serve/routes/domains.js  | 4 +++-
 modules/control-center-web/src/main/js/serve/routes/igfs.js     | 3 ++-
 4 files changed, 9 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/e253f45b/modules/control-center-web/src/main/js/serve/routes/caches.js
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/serve/routes/caches.js b/modules/control-center-web/src/main/js/serve/routes/caches.js
index 005fa53..21f6e6b 100644
--- a/modules/control-center-web/src/main/js/serve/routes/caches.js
+++ b/modules/control-center-web/src/main/js/serve/routes/caches.js
@@ -97,7 +97,8 @@ module.exports.factory = function(_, express, mongo) {
                         .then(() => mongo.DomainModel.update({_id: {$in: domains}}, {$addToSet: {caches: cacheId}}, {multi: true}).exec())
                         .then(() => res.send(cacheId))
                         .catch((err) => mongo.handleError(res, err));
-                });
+                })
+                .catch((err) => mongo.handleError(res, err));
         });
 
         /**

http://git-wip-us.apache.org/repos/asf/ignite/blob/e253f45b/modules/control-center-web/src/main/js/serve/routes/clusters.js
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/serve/routes/clusters.js b/modules/control-center-web/src/main/js/serve/routes/clusters.js
index 3fcfca4..5621028 100644
--- a/modules/control-center-web/src/main/js/serve/routes/clusters.js
+++ b/modules/control-center-web/src/main/js/serve/routes/clusters.js
@@ -112,7 +112,8 @@ module.exports.factory = function(_, express, mongo) {
                         .then(() => mongo.Igfs.update({_id: {$nin: igfss}}, {$pull: {clusters: clusterId}}, {multi: true}).exec())
                         .then(() => res.send(clusterId))
                         .catch((err) => mongo.handleError(res, err));
-                });
+                })
+                .catch((err) => mongo.handleError(res, err));
         });
 
         /**

http://git-wip-us.apache.org/repos/asf/ignite/blob/e253f45b/modules/control-center-web/src/main/js/serve/routes/domains.js
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/serve/routes/domains.js b/modules/control-center-web/src/main/js/serve/routes/domains.js
index 257c7fa..6963294 100644
--- a/modules/control-center-web/src/main/js/serve/routes/domains.js
+++ b/modules/control-center-web/src/main/js/serve/routes/domains.js
@@ -101,7 +101,8 @@ module.exports.factory = (_, express, mongo) => {
                             return mongo.Cache.update({_id: {$in: caches}}, {$addToSet: {domains: savedDomain._id}}, {multi: true}).exec();
                         })
                         .then(() => _updateCacheStore(cacheStoreChanges));
-                });
+                })
+                .catch((err) => mongo.handleError(res, err));
         };
 
         const _save = (domains, res) => {
@@ -135,6 +136,7 @@ module.exports.factory = (_, express, mongo) => {
 
                                     return _saveDomainModel(domain, savedDomains);
                                 })
+                                .catch((err) => mongo.handleError(res, err))
                         );
                     }
                     else

http://git-wip-us.apache.org/repos/asf/ignite/blob/e253f45b/modules/control-center-web/src/main/js/serve/routes/igfs.js
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/serve/routes/igfs.js b/modules/control-center-web/src/main/js/serve/routes/igfs.js
index c204079..7f03617 100644
--- a/modules/control-center-web/src/main/js/serve/routes/igfs.js
+++ b/modules/control-center-web/src/main/js/serve/routes/igfs.js
@@ -88,7 +88,8 @@ module.exports.factory = function(_, express, mongo) {
                         })
                         .then(() => res.send(igfsId))
                         .catch((err) => mongo.handleError(res, err));
-                });
+                })
+                .catch((err) => mongo.handleError(res, err));
         });
 
         /**


[09/28] ignite git commit: IGNITE-2711 Fixed insert in editor.

Posted by ak...@apache.org.
IGNITE-2711 Fixed insert in editor.


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

Branch: refs/heads/ignite-843-rc3
Commit: 2d178a56f84a84364da64c296c04e6bc64b0ca53
Parents: 9aa0a57
Author: Andrey <an...@gridgain.com>
Authored: Thu Feb 25 18:13:10 2016 +0700
Committer: Andrey <an...@gridgain.com>
Committed: Thu Feb 25 18:13:10 2016 +0700

----------------------------------------------------------------------
 .../control-center-web/src/main/js/views/includes/controls.jade    | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/2d178a56/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 557f121..1b607d8 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
@@ -566,7 +566,7 @@ mixin preview-content(preview, state, mode)
     -var previewMode = 'group.preview'
 
     .preview-content(ng-if='!preview[#{preview}].allDefaults && #{previewMode} == #{state}' id='#{id}'
-        ui-ace='{onLoad: previewInit, onChange: previewChanged, mode: "#{mode}", rendererOptions: {minLines: group.previewMinLines || 3}}' ng-model='preview[#{preview}].#{mode}')
+        ignite-ace='{onLoad: previewInit, onChange: previewChanged, mode: "#{mode}", rendererOptions: {minLines: group.previewMinLines || 3}}' ng-model='preview[#{preview}].#{mode}')
 
 mixin preview(preview, id)
     -var previewMode = 'group.preview'


[08/28] ignite git commit: IGNITE-843 Implemented support of "required" for number fields.

Posted by ak...@apache.org.
IGNITE-843 Implemented support of "required" for number fields.


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

Branch: refs/heads/ignite-843-rc3
Commit: 9aa0a573790c89ba0893d140160759d14f4a90fa
Parents: c772d33
Author: Alexey Kuznetsov <ak...@apache.org>
Authored: Thu Feb 25 17:16:16 2016 +0700
Committer: Alexey Kuznetsov <ak...@apache.org>
Committed: Thu Feb 25 17:16:16 2016 +0700

----------------------------------------------------------------------
 .../src/main/js/app/modules/form/field/input/number.directive.js | 4 ++++
 .../src/main/js/app/modules/form/field/input/number.jade         | 1 +
 2 files changed, 5 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/9aa0a573/modules/control-center-web/src/main/js/app/modules/form/field/input/number.directive.js
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/app/modules/form/field/input/number.directive.js b/modules/control-center-web/src/main/js/app/modules/form/field/input/number.directive.js
index b88425f..cc135b5 100644
--- a/modules/control-center-web/src/main/js/app/modules/form/field/input/number.directive.js
+++ b/modules/control-center-web/src/main/js/app/modules/form/field/input/number.directive.js
@@ -25,6 +25,10 @@ export default ['igniteFormFieldInputNumber', ['IgniteFormGUID', (guid) => {
         scope.field = field;
         label.for = scope.id = id || guid();
 
+        scope.$watch('required', (required) => {
+            label.required = required || false;
+        });
+
         form.$defaults = form.$defaults || {};
         form.$defaults[name] = _.cloneDeep(scope.value);
 

http://git-wip-us.apache.org/repos/asf/ignite/blob/9aa0a573/modules/control-center-web/src/main/js/app/modules/form/field/input/number.jade
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/app/modules/form/field/input/number.jade b/modules/control-center-web/src/main/js/app/modules/form/field/input/number.jade
index 6b31ebd..920a5eb 100644
--- a/modules/control-center-web/src/main/js/app/modules/form/field/input/number.jade
+++ b/modules/control-center-web/src/main/js/app/modules/form/field/input/number.jade
@@ -40,5 +40,6 @@ mixin feedback(error, message)
     +feedback('min', 'Value is less than allowable minimum: {{ min || 0 }}')
     +feedback('max', 'Value is more than allowable maximum: {{ max }}')
     +feedback('number', 'Only numbers allowed')
+    +feedback('required', 'This field could not be empty')
 
     span(ng-transclude='')


[03/28] ignite git commit: Merge remote-tracking branch 'origin/ignite-843-rc2' into ignite-843-rc2

Posted by ak...@apache.org.
Merge remote-tracking branch 'origin/ignite-843-rc2' into ignite-843-rc2


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

Branch: refs/heads/ignite-843-rc3
Commit: 1c7286063a1b8d83a9f9c6f6cbce836ad03bf7d8
Parents: 5e3b919 1b214b0
Author: Andrey <an...@gridgain.com>
Authored: Wed Feb 24 16:38:45 2016 +0700
Committer: Andrey <an...@gridgain.com>
Committed: Wed Feb 24 16:38:45 2016 +0700

----------------------------------------------------------------------
 .../app/directives/bs-affix-update/bs-affix-update.directive.js  | 4 ++--
 .../src/main/js/views/configuration/domains.jade                 | 2 +-
 2 files changed, 3 insertions(+), 3 deletions(-)
----------------------------------------------------------------------



[26/28] ignite git commit: IGNITE-843 Minor.

Posted by ak...@apache.org.
IGNITE-843 Minor.


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

Branch: refs/heads/ignite-843-rc3
Commit: d55c82023e54eec1b09e9f0b9277a93b58a61ef1
Parents: 877f4a4
Author: Alexey Kuznetsov <ak...@apache.org>
Authored: Thu Mar 3 16:56:35 2016 +0700
Committer: Alexey Kuznetsov <ak...@apache.org>
Committed: Thu Mar 3 16:56:35 2016 +0700

----------------------------------------------------------------------
 .../form-field-java-class/form-field-java-class.jade         | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/d55c8202/modules/control-center-web/src/main/js/app/directives/form-field-java-class/form-field-java-class.jade
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/app/directives/form-field-java-class/form-field-java-class.jade b/modules/control-center-web/src/main/js/app/directives/form-field-java-class/form-field-java-class.jade
index ae75c27..6b56e6a 100644
--- a/modules/control-center-web/src/main/js/app/directives/form-field-java-class/form-field-java-class.jade
+++ b/modules/control-center-web/src/main/js/app/directives/form-field-java-class/form-field-java-class.jade
@@ -49,9 +49,9 @@ mixin feedback(error, message)
 
     span(ng-transclude='')
 
-    +feedback('javaPackageSpecified', 'does not have package specified')
-    +feedback('javaBuiltInClass', 'should not be the Java built-in class')
-    +feedback('javaKeywords', 'could not contains reserved Java keyword')
-    +feedback('javaIdentifier', 'is invalid Java identifier')
+    +feedback('javaPackageSpecified', 'does not have package specified!')
+    +feedback('javaBuiltInClass', 'should not be the Java built-in class!')
+    +feedback('javaKeywords', 'could not contains reserved Java keyword!')
+    +feedback('javaIdentifier', 'is invalid Java identifier!')
 
     +feedback('required', 'could not be empty!')


[23/28] ignite git commit: IGNITE-843 Minor fix.

Posted by ak...@apache.org.
IGNITE-843 Minor fix.


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

Branch: refs/heads/ignite-843-rc3
Commit: 13bc0f5c1e9d6578cd6a73dcb169c9b0176f088e
Parents: 38ff57b
Author: Andrey <an...@gridgain.com>
Authored: Thu Mar 3 15:29:02 2016 +0700
Committer: Andrey <an...@gridgain.com>
Committed: Thu Mar 3 15:29:02 2016 +0700

----------------------------------------------------------------------
 .../src/main/js/app/filters/byName.filter.js    | 23 +++++++++++++++++
 .../main/js/app/filters/byName/byName.filter.js | 23 -----------------
 .../src/main/js/app/filters/hasPojo.filter.js   | 26 ++++++++++++++++++++
 .../js/app/filters/hasPojo/hasPojo.filter.js    | 26 --------------------
 .../control-center-web/src/main/js/app/index.js |  4 +--
 5 files changed, 51 insertions(+), 51 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/13bc0f5c/modules/control-center-web/src/main/js/app/filters/byName.filter.js
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/app/filters/byName.filter.js b/modules/control-center-web/src/main/js/app/filters/byName.filter.js
new file mode 100644
index 0000000..3b0746f
--- /dev/null
+++ b/modules/control-center-web/src/main/js/app/filters/byName.filter.js
@@ -0,0 +1,23 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+export default ['byName', [() => (arr, search) => {
+    if (!(arr && arr.length) || !search)
+        return arr;
+
+    return _.filter(arr, ({ name }) => name.indexOf(search) >= 0);
+}]];

http://git-wip-us.apache.org/repos/asf/ignite/blob/13bc0f5c/modules/control-center-web/src/main/js/app/filters/byName/byName.filter.js
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/app/filters/byName/byName.filter.js b/modules/control-center-web/src/main/js/app/filters/byName/byName.filter.js
deleted file mode 100644
index 3b0746f..0000000
--- a/modules/control-center-web/src/main/js/app/filters/byName/byName.filter.js
+++ /dev/null
@@ -1,23 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-export default ['byName', [() => (arr, search) => {
-    if (!(arr && arr.length) || !search)
-        return arr;
-
-    return _.filter(arr, ({ name }) => name.indexOf(search) >= 0);
-}]];

http://git-wip-us.apache.org/repos/asf/ignite/blob/13bc0f5c/modules/control-center-web/src/main/js/app/filters/hasPojo.filter.js
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/app/filters/hasPojo.filter.js b/modules/control-center-web/src/main/js/app/filters/hasPojo.filter.js
new file mode 100644
index 0000000..db47585
--- /dev/null
+++ b/modules/control-center-web/src/main/js/app/filters/hasPojo.filter.js
@@ -0,0 +1,26 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+export default ['hasPojo', [() => {
+    const filter = (cache) => {
+        return cache.domains && cache.domains.length;
+    };
+
+    return ({caches} = {}) => {
+        return caches && _.chain(caches).filter(filter).first().value();
+    };
+}]];

http://git-wip-us.apache.org/repos/asf/ignite/blob/13bc0f5c/modules/control-center-web/src/main/js/app/filters/hasPojo/hasPojo.filter.js
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/app/filters/hasPojo/hasPojo.filter.js b/modules/control-center-web/src/main/js/app/filters/hasPojo/hasPojo.filter.js
deleted file mode 100644
index db47585..0000000
--- a/modules/control-center-web/src/main/js/app/filters/hasPojo/hasPojo.filter.js
+++ /dev/null
@@ -1,26 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-export default ['hasPojo', [() => {
-    const filter = (cache) => {
-        return cache.domains && cache.domains.length;
-    };
-
-    return ({caches} = {}) => {
-        return caches && _.chain(caches).filter(filter).first().value();
-    };
-}]];

http://git-wip-us.apache.org/repos/asf/ignite/blob/13bc0f5c/modules/control-center-web/src/main/js/app/index.js
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/app/index.js b/modules/control-center-web/src/main/js/app/index.js
index a2473e8..333f0ef 100644
--- a/modules/control-center-web/src/main/js/app/index.js
+++ b/modules/control-center-web/src/main/js/app/index.js
@@ -101,8 +101,8 @@ import IgniteCountries from './services/Countries/Countries.service';
 // Providers
 
 // Filters.
-import hasPojo from './filters/hasPojo/hasPojo.filter';
-import byName from './filters/byName/byName.filter';
+import hasPojo from './filters/hasPojo.filter';
+import byName from './filters/byName.filter';
 
 angular
 .module('ignite-console', [


[15/28] ignite git commit: IGNITE-843 Fixed speed of very large data (more than 300 domains and caches) + lazy init.

Posted by ak...@apache.org.
IGNITE-843 Fixed speed of very large data (more than 300 domains and caches) + lazy init.


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

Branch: refs/heads/ignite-843-rc3
Commit: cb1d79dd52bfbc0153781c4d882d9b4aa33105e3
Parents: aaf139b
Author: Dmitriyff <dm...@gmail.com>
Authored: Fri Feb 26 17:30:29 2016 +0700
Committer: Alexey Kuznetsov <ak...@apache.org>
Committed: Fri Feb 26 17:30:29 2016 +0700

----------------------------------------------------------------------
 .../ui-ace-java/ui-ace-java.directive.js        |  4 ++-
 .../ui-ace-xml/ui-ace-xml.directive.js          |  4 ++-
 .../configuration/summary/summary.controller.js | 11 ++++++
 .../main/js/views/configuration/summary.jade    | 38 ++++++--------------
 4 files changed, 27 insertions(+), 30 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/cb1d79dd/modules/control-center-web/src/main/js/app/directives/ui-ace-java/ui-ace-java.directive.js
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/app/directives/ui-ace-java/ui-ace-java.directive.js b/modules/control-center-web/src/main/js/app/directives/ui-ace-java/ui-ace-java.directive.js
index 072ac8f..2ba0b15 100644
--- a/modules/control-center-web/src/main/js/app/directives/ui-ace-java/ui-ace-java.directive.js
+++ b/modules/control-center-web/src/main/js/app/directives/ui-ace-java/ui-ace-java.directive.js
@@ -101,8 +101,10 @@ export default ['igniteUiAceJava', ['GeneratorJava', (generator) => {
             scope.$watch('cfg', (data) => ctrl.data = render(data), true);
         }
 
+        const noDeepWatch = !(typeof attrs.noDeepWatch !== 'undefined');
+
         // Setup watchers.
-        scope.$watch('cluster', (data) => ctrl.data = render(data), true);
+        scope.$watch('cluster', (data) => ctrl.data = render(data), noDeepWatch);
     };
 
     return {

http://git-wip-us.apache.org/repos/asf/ignite/blob/cb1d79dd/modules/control-center-web/src/main/js/app/directives/ui-ace-xml/ui-ace-xml.directive.js
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/app/directives/ui-ace-xml/ui-ace-xml.directive.js b/modules/control-center-web/src/main/js/app/directives/ui-ace-xml/ui-ace-xml.directive.js
index 6b6e1df..e421135 100644
--- a/modules/control-center-web/src/main/js/app/directives/ui-ace-xml/ui-ace-xml.directive.js
+++ b/modules/control-center-web/src/main/js/app/directives/ui-ace-xml/ui-ace-xml.directive.js
@@ -101,8 +101,10 @@ export default ['igniteUiAceXml', ['GeneratorXml', (generator) => {
             scope.$watch('cfg', (data) => ctrl.data = render(data), true);
         }
 
+        const noDeepWatch = !(typeof attrs.noDeepWatch !== 'undefined');
+
         // Setup watchers.
-        scope.$watch('cluster', (data) => ctrl.data = render(data), true);
+        scope.$watch('cluster', (data) => ctrl.data = render(data), noDeepWatch);
     };
 
     return {

http://git-wip-us.apache.org/repos/asf/ignite/blob/cb1d79dd/modules/control-center-web/src/main/js/app/modules/states/configuration/summary/summary.controller.js
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/app/modules/states/configuration/summary/summary.controller.js b/modules/control-center-web/src/main/js/app/modules/states/configuration/summary/summary.controller.js
index 48d7b83..068a03c 100644
--- a/modules/control-center-web/src/main/js/app/modules/states/configuration/summary/summary.controller.js
+++ b/modules/control-center-web/src/main/js/app/modules/states/configuration/summary/summary.controller.js
@@ -15,6 +15,7 @@
  * limitations under the License.
  */
 
+import _ from 'lodash';
 import JSZip from 'jszip';
 
 export default [
@@ -26,6 +27,14 @@ export default [
 
         Resource.read().then(({clusters}) => {
             $scope.clusters = clusters;
+            $scope.clustersMap = {};
+            $scope.clustersView = _.map(clusters, (item) => {
+                const { _id, name } = item;
+
+                $scope.clustersMap[_id] = item;
+
+                return { _id, name };
+            });
 
             $loading.finish('loading');
 
@@ -186,6 +195,8 @@ export default [
             if (!cluster)
                 return;
 
+            cluster = $scope.clustersMap[cluster._id];
+
             ctrl.cluster = cluster;
 
             $scope.cluster = cluster;

http://git-wip-us.apache.org/repos/asf/ignite/blob/cb1d79dd/modules/control-center-web/src/main/js/views/configuration/summary.jade
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/views/configuration/summary.jade b/modules/control-center-web/src/main/js/views/configuration/summary.jade
index 176c483..538f7d9 100644
--- a/modules/control-center-web/src/main/js/views/configuration/summary.jade
+++ b/modules/control-center-web/src/main/js/views/configuration/summary.jade
@@ -33,26 +33,8 @@ mixin ignite-form-field-tooltip(message)
             | You have no clusters configured. Please configure them #[a(ui-sref='base.configuration.clusters') here].
 
         div(ng-show='clusters && clusters.length > 0')
-            .padding-bottom-dflt
-                table.links
-                    thead
-                        tr
-                            th
-                                lable.labelHeader.labelFormField clusters:
-                                .col-sm-3.pull-right(style='padding: 0')
-                                    input.form-control(type='text' ng-model='clusterName' placeholder='Filter clusters...' value='')
-                    tbody
-                        tr
-                            td
-                                .scrollable-y(ng-show='(clusters | byName:clusterName).length > 0' style='max-height: 200px')
-                                    table
-                                        tbody
-                                            tr(ng-repeat='row in (clusters | byName:clusterName) track by row._id' ignite-bs-affix-update)
-                                                td
-                                                    a(ng-class='{active: row._id == selectedItem._id}' on-click-focus='clusterName' ng-click='selectItem(row)') {{$index + 1}}) {{row.name}}
-                                label.placeholder(ng-show='(clusters | byName:clusterName).length == 0') No clusters found
-
-            div(ng-show='selectedItem && (clusters | byName:clusterName).length')
+            +main-table('clusters', 'clustersView', 'clusterName', 'selectItem(row)', '{{$index + 1}}) {{row.name}}', 'name')
+            div(ng-show='selectedItem && tableVisibleRow(displayedRows, selectedItem)')
                 .padding-top-dflt(bs-affix)
                     button.btn.btn-primary(id='download' ng-click='downloadConfiguration()' bs-tooltip='' data-title='Download project' data-placement='bottom') Download project
                     .btn.btn-primary(bs-tooltip='' data-title='Preview generated project structure' data-placement='bottom')
@@ -72,13 +54,13 @@ mixin ignite-form-field-tooltip(message)
                             ignite-ui-ace-tabs.summary-tabs
                                 div(bs-tabs data-bs-active-pane="tabsServer.activeTab" template='configuration/summary-tabs.html')
                                     div(bs-pane title='XML')
-                                        ignite-ui-ace-xml(ng-if='tabsServer.activeTab == 0 || tabsServer.init[0]' ng-init='tabsServer.init[0] = true' data-cluster='cluster')
+                                        ignite-ui-ace-xml(ng-if='tabsServer.activeTab == 0 || tabsServer.init[0]' ng-init='tabsServer.init[0] = true' data-cluster='cluster' data-no-deep-watch)
                                     div(bs-pane title='Java')
-                                        ignite-ui-ace-java(ng-if='tabsServer.activeTab == 1 || tabsServer.init[1]' ng-init='tabsServer.init[1] = true' data-cluster='cluster')
+                                        ignite-ui-ace-java(ng-if='tabsServer.activeTab == 1 || tabsServer.init[1]' ng-init='tabsServer.init[1] = true' data-cluster='cluster' data-no-deep-watch)
                                     div(bs-pane title='POM')
-                                        ignite-ui-ace-pom(ng-if='tabsServer.activeTab == 2 || tabsServer.init[2]' ng-init='tabsServer.init[2] = true' data-cluster='cluster')
+                                        ignite-ui-ace-pom(ng-if='tabsServer.activeTab == 2 || tabsServer.init[2]' ng-init='tabsServer.init[2] = true' data-cluster='cluster' data-no-deep-watch)
                                     div(bs-pane title='Dockerfile')
-                                        ignite-ui-ace-docker(ng-if='tabsServer.activeTab == 3 || tabsServer.init[3]' ng-init='tabsServer.init[3] = true' data-cluster='cluster' ng-model='ctrl.data.docker')
+                                        ignite-ui-ace-docker(ng-if='tabsServer.activeTab == 3 || tabsServer.init[3]' ng-init='tabsServer.init[3] = true' data-cluster='cluster'  data-no-deep-watch ng-model='ctrl.data.docker')
 
                     .panel.panel-default
                         .panel-heading(role='tab' bs-collapse-toggle)
@@ -152,10 +134,10 @@ mixin ignite-form-field-tooltip(message)
                             .summary-tabs(ignite-ui-ace-tabs)
                                 div(bs-tabs data-bs-active-pane="tabsClient.activeTab" template='configuration/summary-tabs.html')
                                     div(bs-pane title='XML')
-                                        ignite-ui-ace-xml(ng-if='tabsClient.activeTab == 0 || tabsClient.init[0]' ng-init='tabsClient.init[0] = true' data-cluster='cluster' data-cluster-cfg='#{nearCfg}')
+                                        ignite-ui-ace-xml(ng-if='tabsClient.activeTab == 0 || tabsClient.init[0]' ng-init='tabsClient.init[0] = true' data-cluster='cluster' data-no-deep-watch data-cluster-cfg='#{nearCfg}')
                                     div(bs-pane title='Java')
-                                        ignite-ui-ace-java(ng-if='tabsClient.activeTab == 1 || tabsClient.init[1]' ng-init='tabsClient.init[1] = true' data-cluster='cluster' data-cluster-cfg='#{nearCfg}')
+                                        ignite-ui-ace-java(ng-if='tabsClient.activeTab == 1 || tabsClient.init[1]' ng-init='tabsClient.init[1] = true' data-cluster='cluster' data-no-deep-watch data-cluster-cfg='#{nearCfg}')
                                     div(bs-pane title='POM')
-                                        ignite-ui-ace-pom(ng-if='tabsClient.activeTab == 2 || tabsClient.init[2]' ng-init='tabsClient.init[2] = true' data-cluster='cluster')
+                                        ignite-ui-ace-pom(ng-if='tabsClient.activeTab == 2 || tabsClient.init[2]' ng-init='tabsClient.init[2] = true' data-cluster='cluster' data-no-deep-watch)
                                     div(bs-pane title='POJO' ng-if='cluster | hasPojo')
-                                        ignite-ui-ace-pojos(ng-if='tabsClient.activeTab == 3 || tabsClient.init[3]' ng-init='tabsClient.init[3] = true' data-cluster='cluster' ng-model='ctrl.data.pojos')
+                                        ignite-ui-ace-pojos(ng-if='tabsClient.activeTab == 3 || tabsClient.init[3]' ng-init='tabsClient.init[3] = true' data-cluster='cluster' data-no-deep-watch ng-model='ctrl.data.pojos')


[06/28] ignite git commit: IGNITE-2711 Fixed insert in editor.

Posted by ak...@apache.org.
IGNITE-2711 Fixed insert in editor.


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

Branch: refs/heads/ignite-843-rc3
Commit: f189e84b46f406907d6f6ecdaa4e0e00b2763f48
Parents: 23b94aa
Author: Andrey <an...@gridgain.com>
Authored: Thu Feb 25 14:48:33 2016 +0700
Committer: Andrey <an...@gridgain.com>
Committed: Thu Feb 25 14:48:33 2016 +0700

----------------------------------------------------------------------
 .../app/directives/bs-affix-update.directive.js |  34 +++
 .../bs-affix-update.directive.js                |  34 ---
 .../ui-ace-docker/ui-ace-docker.directive.js    |  12 +-
 .../directives/ui-ace-docker/ui-ace-docker.jade |   2 +-
 .../ui-ace-java/ui-ace-java.directive.js        |  12 +-
 .../app/directives/ui-ace-java/ui-ace-java.jade |   2 +-
 .../ui-ace-pojos/ui-ace-pojos.directive.js      |  12 +-
 .../directives/ui-ace-pojos/ui-ace-pojos.jade   |   2 +-
 .../ui-ace-pom/ui-ace-pom.directive.js          |  12 +-
 .../app/directives/ui-ace-pom/ui-ace-pom.jade   |   2 +-
 .../js/app/directives/ui-ace-tabs.directive.js  |  25 ++
 .../ui-ace-xml/ui-ace-xml.directive.js          |  12 +-
 .../app/directives/ui-ace-xml/ui-ace-xml.jade   |   2 +-
 .../app/directives/ui-ace/ui-ace.directive.js   |  25 --
 .../control-center-web/src/main/js/app/index.js |   9 +-
 .../src/main/js/app/modules/ace.module.js       | 266 +++++++++++++++++++
 .../states/configuration/clusters/atomic.jade   |   2 +-
 .../states/configuration/clusters/binary.jade   |   2 +-
 .../configuration/clusters/communication.jade   |   2 +-
 .../configuration/clusters/connector.jade       |   2 +-
 .../configuration/clusters/deployment.jade      |   2 +-
 .../configuration/clusters/discovery.jade       |   2 +-
 .../states/configuration/clusters/events.jade   |   2 +-
 .../states/configuration/clusters/general.jade  |   2 +-
 .../states/configuration/clusters/igfs.jade     |   2 +-
 .../configuration/clusters/marshaller.jade      |   2 +-
 .../states/configuration/clusters/metrics.jade  |   2 +-
 .../clusters/preview-panel.directive.js         |  12 +-
 .../states/configuration/clusters/ssl.jade      |   2 +-
 .../states/configuration/clusters/swap.jade     |   2 +-
 .../states/configuration/clusters/thread.jade   |   2 +-
 .../states/configuration/clusters/time.jade     |   2 +-
 .../configuration/clusters/transactions.jade    |   4 +-
 .../summary/summary-tabs.directive.js           |  10 +-
 .../control-center-web/src/main/js/config.js    |  12 +-
 .../src/main/js/controllers/common-module.js    |   2 +-
 .../src/main/js/controllers/sql-controller.js   |   6 -
 .../control-center-web/src/main/js/package.json |   6 -
 .../main/js/views/configuration/summary.jade    |   4 +-
 .../src/main/js/views/sql/sql.jade              |   2 +-
 40 files changed, 403 insertions(+), 148 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/f189e84b/modules/control-center-web/src/main/js/app/directives/bs-affix-update.directive.js
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/app/directives/bs-affix-update.directive.js b/modules/control-center-web/src/main/js/app/directives/bs-affix-update.directive.js
new file mode 100644
index 0000000..dbf78e5
--- /dev/null
+++ b/modules/control-center-web/src/main/js/app/directives/bs-affix-update.directive.js
@@ -0,0 +1,34 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, aither express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import angular from 'angular';
+
+export default ['igniteBsAffixUpdate', ['$window', '$timeout', ($window, $timeout) => {
+    let update = null;
+
+    const link = ({$last}) => {
+        if ($last) {
+            update && $timeout.cancel(update);
+            update = $timeout(() => angular.element($window).triggerHandler('resize'), 1000);
+        }
+    };
+
+    return {
+        restrict: 'A',
+        link
+    };
+}]];

http://git-wip-us.apache.org/repos/asf/ignite/blob/f189e84b/modules/control-center-web/src/main/js/app/directives/bs-affix-update/bs-affix-update.directive.js
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/app/directives/bs-affix-update/bs-affix-update.directive.js b/modules/control-center-web/src/main/js/app/directives/bs-affix-update/bs-affix-update.directive.js
deleted file mode 100644
index dbf78e5..0000000
--- a/modules/control-center-web/src/main/js/app/directives/bs-affix-update/bs-affix-update.directive.js
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, aither express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-import angular from 'angular';
-
-export default ['igniteBsAffixUpdate', ['$window', '$timeout', ($window, $timeout) => {
-    let update = null;
-
-    const link = ({$last}) => {
-        if ($last) {
-            update && $timeout.cancel(update);
-            update = $timeout(() => angular.element($window).triggerHandler('resize'), 1000);
-        }
-    };
-
-    return {
-        restrict: 'A',
-        link
-    };
-}]];

http://git-wip-us.apache.org/repos/asf/ignite/blob/f189e84b/modules/control-center-web/src/main/js/app/directives/ui-ace-docker/ui-ace-docker.directive.js
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/app/directives/ui-ace-docker/ui-ace-docker.directive.js b/modules/control-center-web/src/main/js/app/directives/ui-ace-docker/ui-ace-docker.directive.js
index 2698e14..47a52df 100644
--- a/modules/control-center-web/src/main/js/app/directives/ui-ace-docker/ui-ace-docker.directive.js
+++ b/modules/control-center-web/src/main/js/app/directives/ui-ace-docker/ui-ace-docker.directive.js
@@ -19,12 +19,12 @@ import template from './ui-ace-docker.jade!';
 import controller from './ui-ace-docker.controller';
 
 export default ['igniteUiAceDocker', [() => {
-    const link = ($scope, $el, $attrs, [igniteUiAce]) => {
-        if (igniteUiAce.onLoad)
-            $scope.onLoad = igniteUiAce.onLoad;
+    const link = ($scope, $el, $attrs, [igniteUiAceTabs]) => {
+        if (igniteUiAceTabs.onLoad)
+            $scope.onLoad = igniteUiAceTabs.onLoad;
 
-        if (igniteUiAce.onChange)
-            $scope.onChange = igniteUiAce.onChange;
+        if (igniteUiAceTabs.onChange)
+            $scope.onChange = igniteUiAceTabs.onChange;
     };
 
     return {
@@ -41,6 +41,6 @@ export default ['igniteUiAceDocker', [() => {
         template,
         controller,
         controllerAs: 'ctrl',
-        require: ['?^igniteUiAce']
+        require: ['?^igniteUiAceTabs']
     };
 }]];

http://git-wip-us.apache.org/repos/asf/ignite/blob/f189e84b/modules/control-center-web/src/main/js/app/directives/ui-ace-docker/ui-ace-docker.jade
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/app/directives/ui-ace-docker/ui-ace-docker.jade b/modules/control-center-web/src/main/js/app/directives/ui-ace-docker/ui-ace-docker.jade
index 88ca37d..f634aed 100644
--- a/modules/control-center-web/src/main/js/app/directives/ui-ace-docker/ui-ace-docker.jade
+++ b/modules/control-center-web/src/main/js/app/directives/ui-ace-docker/ui-ace-docker.jade
@@ -28,4 +28,4 @@ div
             | . For more information about using Ignite with Docker please read&nbsp;
             +hard-link('http://apacheignite.readme.io/docs/docker-deployment', 'documentation')
             |.
-    div(ng-if='ctrl.data' ui-ace='{onLoad: onLoad, mode: "dockerfile"}' ng-model='ctrl.data')
+    div(ng-if='ctrl.data' ignite-ace='{onLoad: onLoad, mode: "dockerfile"}' ng-model='ctrl.data')

http://git-wip-us.apache.org/repos/asf/ignite/blob/f189e84b/modules/control-center-web/src/main/js/app/directives/ui-ace-java/ui-ace-java.directive.js
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/app/directives/ui-ace-java/ui-ace-java.directive.js b/modules/control-center-web/src/main/js/app/directives/ui-ace-java/ui-ace-java.directive.js
index 04d1810..072ac8f 100644
--- a/modules/control-center-web/src/main/js/app/directives/ui-ace-java/ui-ace-java.directive.js
+++ b/modules/control-center-web/src/main/js/app/directives/ui-ace-java/ui-ace-java.directive.js
@@ -19,20 +19,20 @@ import template from './ui-ace-java.jade!';
 import controller from './ui-ace-java.controller';
 
 export default ['igniteUiAceJava', ['GeneratorJava', (generator) => {
-    const link = (scope, $el, attrs, [ctrl, igniteUiAce, formCtrl, ngModelCtrl]) => {
+    const link = (scope, $el, attrs, [ctrl, igniteUiAceTabs, formCtrl, ngModelCtrl]) => {
         if (formCtrl && ngModelCtrl)
             formCtrl.$removeControl(ngModelCtrl);
 
-        if (igniteUiAce && igniteUiAce.onLoad) {
+        if (igniteUiAceTabs && igniteUiAceTabs.onLoad) {
             scope.onLoad = (editor) => {
-                igniteUiAce.onLoad(editor);
+                igniteUiAceTabs.onLoad(editor);
 
                 scope.$watch('cluster', () => editor.attractAttention = false);
             };
         }
 
-        if (igniteUiAce && igniteUiAce.onChange)
-            scope.onChange = igniteUiAce.onChange;
+        if (igniteUiAceTabs && igniteUiAceTabs.onChange)
+            scope.onChange = igniteUiAceTabs.onChange;
 
         const render = (data) => {
             delete ctrl.data;
@@ -123,6 +123,6 @@ export default ['igniteUiAceJava', ['GeneratorJava', (generator) => {
         template,
         controller,
         controllerAs: 'ctrl',
-        require: ['igniteUiAceJava', '?^igniteUiAce', '?^form', '?ngModel']
+        require: ['igniteUiAceJava', '?^igniteUiAceTabs', '?^form', '?ngModel']
     };
 }]];

http://git-wip-us.apache.org/repos/asf/ignite/blob/f189e84b/modules/control-center-web/src/main/js/app/directives/ui-ace-java/ui-ace-java.jade
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/app/directives/ui-ace-java/ui-ace-java.jade b/modules/control-center-web/src/main/js/app/directives/ui-ace-java/ui-ace-java.jade
index 6c027c8..5acffb8 100644
--- a/modules/control-center-web/src/main/js/app/directives/ui-ace-java/ui-ace-java.jade
+++ b/modules/control-center-web/src/main/js/app/directives/ui-ace-java/ui-ace-java.jade
@@ -15,7 +15,7 @@
     limitations under the License.
 
 div(ng-if='ctrl.data' 
-    ui-ace='{onLoad: onLoad, \
+    ignite-ace='{onLoad: onLoad, \
              onChange: onChange, \
              renderOptions: renderOptions, \
              mode: "java"}' 

http://git-wip-us.apache.org/repos/asf/ignite/blob/f189e84b/modules/control-center-web/src/main/js/app/directives/ui-ace-pojos/ui-ace-pojos.directive.js
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/app/directives/ui-ace-pojos/ui-ace-pojos.directive.js b/modules/control-center-web/src/main/js/app/directives/ui-ace-pojos/ui-ace-pojos.directive.js
index 9d437f0..6222dc0 100644
--- a/modules/control-center-web/src/main/js/app/directives/ui-ace-pojos/ui-ace-pojos.directive.js
+++ b/modules/control-center-web/src/main/js/app/directives/ui-ace-pojos/ui-ace-pojos.directive.js
@@ -19,12 +19,12 @@ import template from './ui-ace-pojos.jade!';
 import controller from './ui-ace-pojos.controller';
 
 export default ['igniteUiAcePojos', [() => {
-    const link = ($scope, $el, $attrs, [igniteUiAce]) => {
-        if (igniteUiAce.onLoad)
-            $scope.onLoad = igniteUiAce.onLoad;
+    const link = ($scope, $el, $attrs, [igniteUiAceTabs]) => {
+        if (igniteUiAceTabs.onLoad)
+            $scope.onLoad = igniteUiAceTabs.onLoad;
 
-        if (igniteUiAce.onChange)
-            $scope.onChange = igniteUiAce.onChange;
+        if (igniteUiAceTabs.onChange)
+            $scope.onChange = igniteUiAceTabs.onChange;
     };
 
     return {
@@ -41,6 +41,6 @@ export default ['igniteUiAcePojos', [() => {
         template,
         controller,
         controllerAs: 'ctrl',
-        require: ['?^igniteUiAce']
+        require: ['?^igniteUiAceTabs']
     };
 }]];

http://git-wip-us.apache.org/repos/asf/ignite/blob/f189e84b/modules/control-center-web/src/main/js/app/directives/ui-ace-pojos/ui-ace-pojos.jade
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/app/directives/ui-ace-pojos/ui-ace-pojos.jade b/modules/control-center-web/src/main/js/app/directives/ui-ace-pojos/ui-ace-pojos.jade
index f2f48b6..3e82f12 100644
--- a/modules/control-center-web/src/main/js/app/directives/ui-ace-pojos/ui-ace-pojos.jade
+++ b/modules/control-center-web/src/main/js/app/directives/ui-ace-pojos/ui-ace-pojos.jade
@@ -37,4 +37,4 @@ div
                 input(type='checkbox' ng-model='ctrl.includeKeyFields')
                 | Include key fields
             +check-tooltip("Generate key fields in POJO value class")
-    div(ng-if='ctrl.data' ui-ace='{onLoad: onLoad, mode: "java"}' ng-model='ctrl.data')
+    div(ng-if='ctrl.data' ignite-ace='{onLoad: onLoad, mode: "java"}' ng-model='ctrl.data')

http://git-wip-us.apache.org/repos/asf/ignite/blob/f189e84b/modules/control-center-web/src/main/js/app/directives/ui-ace-pom/ui-ace-pom.directive.js
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/app/directives/ui-ace-pom/ui-ace-pom.directive.js b/modules/control-center-web/src/main/js/app/directives/ui-ace-pom/ui-ace-pom.directive.js
index 7aa75ba..3d68ba9 100644
--- a/modules/control-center-web/src/main/js/app/directives/ui-ace-pom/ui-ace-pom.directive.js
+++ b/modules/control-center-web/src/main/js/app/directives/ui-ace-pom/ui-ace-pom.directive.js
@@ -19,12 +19,12 @@ import template from './ui-ace-pom.jade!';
 import controller from './ui-ace-pom.controller';
 
 export default ['igniteUiAcePom', [() => {
-    const link = ($scope, $el, $attrs, [igniteUiAce]) => {
-        if (igniteUiAce.onLoad)
-            $scope.onLoad = igniteUiAce.onLoad;
+    const link = ($scope, $el, $attrs, [igniteUiAceTabs]) => {
+        if (igniteUiAceTabs.onLoad)
+            $scope.onLoad = igniteUiAceTabs.onLoad;
 
-        if (igniteUiAce.onChange)
-            $scope.onChange = igniteUiAce.onChange;
+        if (igniteUiAceTabs.onChange)
+            $scope.onChange = igniteUiAceTabs.onChange;
     };
 
     return {
@@ -36,6 +36,6 @@ export default ['igniteUiAcePom', [() => {
         template,
         controller,
         controllerAs: 'ctrl',
-        require: ['?^igniteUiAce']
+        require: ['?^igniteUiAceTabs']
     };
 }]];

http://git-wip-us.apache.org/repos/asf/ignite/blob/f189e84b/modules/control-center-web/src/main/js/app/directives/ui-ace-pom/ui-ace-pom.jade
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/app/directives/ui-ace-pom/ui-ace-pom.jade b/modules/control-center-web/src/main/js/app/directives/ui-ace-pom/ui-ace-pom.jade
index 8e263ab..b973a74 100644
--- a/modules/control-center-web/src/main/js/app/directives/ui-ace-pom/ui-ace-pom.jade
+++ b/modules/control-center-web/src/main/js/app/directives/ui-ace-pom/ui-ace-pom.jade
@@ -14,4 +14,4 @@
     See the License for the specific language governing permissions and
     limitations under the License.
 
-div(ng-if='ctrl.data' ui-ace='{onLoad: onLoad, mode: "xml"}' ng-model='ctrl.data')
+div(ng-if='ctrl.data' ignite-ace='{onLoad: onLoad, mode: "xml"}' ng-model='ctrl.data')

http://git-wip-us.apache.org/repos/asf/ignite/blob/f189e84b/modules/control-center-web/src/main/js/app/directives/ui-ace-tabs.directive.js
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/app/directives/ui-ace-tabs.directive.js b/modules/control-center-web/src/main/js/app/directives/ui-ace-tabs.directive.js
new file mode 100644
index 0000000..dd13d83
--- /dev/null
+++ b/modules/control-center-web/src/main/js/app/directives/ui-ace-tabs.directive.js
@@ -0,0 +1,25 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+export default ['igniteUiAceTabs', [() => {
+    const controller = () => {};
+
+    return {
+        restrict: 'AE',
+        controller
+    };
+}]];

http://git-wip-us.apache.org/repos/asf/ignite/blob/f189e84b/modules/control-center-web/src/main/js/app/directives/ui-ace-xml/ui-ace-xml.directive.js
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/app/directives/ui-ace-xml/ui-ace-xml.directive.js b/modules/control-center-web/src/main/js/app/directives/ui-ace-xml/ui-ace-xml.directive.js
index c6c7879..6b6e1df 100644
--- a/modules/control-center-web/src/main/js/app/directives/ui-ace-xml/ui-ace-xml.directive.js
+++ b/modules/control-center-web/src/main/js/app/directives/ui-ace-xml/ui-ace-xml.directive.js
@@ -19,20 +19,20 @@ import template from './ui-ace-xml.jade!';
 import controller from './ui-ace-xml.controller';
 
 export default ['igniteUiAceXml', ['GeneratorXml', (generator) => {
-    const link = (scope, $el, attrs, [ctrl, igniteUiAce, formCtrl, ngModelCtrl]) => {
+    const link = (scope, $el, attrs, [ctrl, igniteUiAceTabs, formCtrl, ngModelCtrl]) => {
         if (formCtrl && ngModelCtrl)
             formCtrl.$removeControl(ngModelCtrl);
 
-        if (igniteUiAce && igniteUiAce.onLoad) {
+        if (igniteUiAceTabs && igniteUiAceTabs.onLoad) {
             scope.onLoad = (editor) => {
-                igniteUiAce.onLoad(editor);
+                igniteUiAceTabs.onLoad(editor);
 
                 scope.$watch('cluster', () => editor.attractAttention = false);
             };
         }
 
-        if (igniteUiAce && igniteUiAce.onChange)
-            scope.onChange = igniteUiAce.onChange;
+        if (igniteUiAceTabs && igniteUiAceTabs.onChange)
+            scope.onChange = igniteUiAceTabs.onChange;
 
         const render = (data) => {
             delete ctrl.data;
@@ -122,6 +122,6 @@ export default ['igniteUiAceXml', ['GeneratorXml', (generator) => {
         template,
         controller,
         controllerAs: 'ctrl',
-        require: ['igniteUiAceXml', '?^igniteUiAce', '?^form', '?ngModel']
+        require: ['igniteUiAceXml', '?^igniteUiAceTabs', '?^form', '?ngModel']
     };
 }]];

http://git-wip-us.apache.org/repos/asf/ignite/blob/f189e84b/modules/control-center-web/src/main/js/app/directives/ui-ace-xml/ui-ace-xml.jade
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/app/directives/ui-ace-xml/ui-ace-xml.jade b/modules/control-center-web/src/main/js/app/directives/ui-ace-xml/ui-ace-xml.jade
index 585cbdd..0dd627a 100644
--- a/modules/control-center-web/src/main/js/app/directives/ui-ace-xml/ui-ace-xml.jade
+++ b/modules/control-center-web/src/main/js/app/directives/ui-ace-xml/ui-ace-xml.jade
@@ -14,4 +14,4 @@
     See the License for the specific language governing permissions and
     limitations under the License.
 
-div(ng-if='ctrl.data' ui-ace='{onLoad: onLoad, onChange: onChange, mode: "xml"}' ng-model='ctrl.data')
+div(ng-if='ctrl.data' ignite-ace='{onLoad: onLoad, onChange: onChange, mode: "xml"}' ng-model='ctrl.data')

http://git-wip-us.apache.org/repos/asf/ignite/blob/f189e84b/modules/control-center-web/src/main/js/app/directives/ui-ace/ui-ace.directive.js
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/app/directives/ui-ace/ui-ace.directive.js b/modules/control-center-web/src/main/js/app/directives/ui-ace/ui-ace.directive.js
deleted file mode 100644
index 4873b94..0000000
--- a/modules/control-center-web/src/main/js/app/directives/ui-ace/ui-ace.directive.js
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-export default ['igniteUiAce', [() => {
-    const controller = () => {};
-
-    return {
-        restrict: 'AE',
-        controller
-    };
-}]];

http://git-wip-us.apache.org/repos/asf/ignite/blob/f189e84b/modules/control-center-web/src/main/js/app/index.js
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/app/index.js b/modules/control-center-web/src/main/js/app/index.js
index fca3027..eb76256 100644
--- a/modules/control-center-web/src/main/js/app/index.js
+++ b/modules/control-center-web/src/main/js/app/index.js
@@ -38,7 +38,6 @@ import 'angular-drag-and-drop-lists';
 import 'angular-nvd3';
 import 'angular-retina';
 import 'angular-strap';
-import 'angular-ui-ace';
 import 'angular-tree-control';
 import 'angular-smart-table';
 
@@ -78,19 +77,20 @@ import './modules/configuration/configuration.module';
 import './modules/getting-started/GettingStarted.provider';
 import './modules/dialog/dialog.module';
 import './modules/Version/Version.provider';
+import './modules/ace.module';
 // endignite
 
 // Directives.
 import igniteLoading from './directives/loading/loading.directive';
 import igniteInformation from './directives/information/information.directive';
-import igniteUiAce from './directives/ui-ace/ui-ace.directive';
+import igniteUiAceTabs from './directives/ui-ace-tabs.directive';
 import igniteUiAceXml from './directives/ui-ace-xml/ui-ace-xml.directive';
 import igniteUiAceJava from './directives/ui-ace-java/ui-ace-java.directive';
 import igniteUiAcePom from './directives/ui-ace-pom/ui-ace-pom.directive';
 import igniteUiAceDocker from './directives/ui-ace-docker/ui-ace-docker.directive';
 import igniteUiAcePojos from './directives/ui-ace-pojos/ui-ace-pojos.directive';
 import igniteFormFieldJavaClass from './directives/form-field-java-class/form-field-java-class.directive';
-import igniteBsAffixUpdate from './directives/bs-affix-update/bs-affix-update.directive';
+import igniteBsAffixUpdate from './directives/bs-affix-update.directive';
 
 // Services.
 import cleanup from './services/cleanup/cleanup.service';
@@ -114,6 +114,7 @@ angular
     'ignite-console.Form',
     'ignite-console.JavaTypes',
     'ignite-console.QueryNotebooks',
+    'ignite-console.ace',
     // States.
     'ignite-console.states.login',
     'ignite-console.states.logout',
@@ -132,7 +133,7 @@ angular
 // Directives.
 .directive(...igniteLoading)
 .directive(...igniteInformation)
-.directive(...igniteUiAce)
+.directive(...igniteUiAceTabs)
 .directive(...igniteUiAceXml)
 .directive(...igniteUiAceJava)
 .directive(...igniteUiAcePom)

http://git-wip-us.apache.org/repos/asf/ignite/blob/f189e84b/modules/control-center-web/src/main/js/app/modules/ace.module.js
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/app/modules/ace.module.js b/modules/control-center-web/src/main/js/app/modules/ace.module.js
new file mode 100644
index 0000000..35d94e1
--- /dev/null
+++ b/modules/control-center-web/src/main/js/app/modules/ace.module.js
@@ -0,0 +1,266 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import angular from 'angular';
+
+angular
+    .module('ignite-console.ace', [])
+    .constant('igniteAceConfig', {})
+    .directive('igniteAce', ['igniteAceConfig', (aceConfig) => {
+        if (angular.isUndefined(window.ace))
+            throw new Error('ignite-ace need ace to work... (o rly?)');
+
+        /**
+         * Sets editor options such as the wrapping mode or the syntax checker.
+         *
+         * The supported options are:
+         *
+         *   <ul>
+         *     <li>showGutter</li>
+         *     <li>useWrapMode</li>
+         *     <li>onLoad</li>
+         *     <li>theme</li>
+         *     <li>mode</li>
+         *   </ul>
+         *
+         * @param acee
+         * @param session ACE editor session
+         * @param {object} opts Options to be set
+         */
+        const setOptions = (acee, session, opts) => {
+            // sets the ace worker path, if running from concatenated
+            // or minified source
+            if (angular.isDefined(opts.workerPath)) {
+                const config = window.ace.require('ace/config');
+
+                config.set('workerPath', opts.workerPath);
+            }
+
+            // ace requires loading
+            if (angular.isDefined(opts.require))
+                opts.require.forEach((n) => window.ace.require(n));
+
+            // Boolean options
+            if (angular.isDefined(opts.showGutter))
+                acee.renderer.setShowGutter(opts.showGutter);
+
+            if (angular.isDefined(opts.useWrapMode))
+                session.setUseWrapMode(opts.useWrapMode);
+
+            if (angular.isDefined(opts.showInvisibles))
+                acee.renderer.setShowInvisibles(opts.showInvisibles);
+
+            if (angular.isDefined(opts.showIndentGuides))
+                acee.renderer.setDisplayIndentGuides(opts.showIndentGuides);
+
+            if (angular.isDefined(opts.useSoftTabs))
+                session.setUseSoftTabs(opts.useSoftTabs);
+
+            if (angular.isDefined(opts.showPrintMargin))
+                acee.setShowPrintMargin(opts.showPrintMargin);
+
+            // commands
+            if (angular.isDefined(opts.disableSearch) && opts.disableSearch) {
+                acee.commands.addCommands([{
+                    name: 'unfind',
+                    bindKey: {
+                        win: 'Ctrl-F',
+                        mac: 'Command-F'
+                    },
+                    exec: () => false,
+                    readOnly: true
+                }]);
+            }
+
+            // Basic options
+            if (angular.isString(opts.theme))
+                acee.setTheme('ace/theme/' + opts.theme);
+
+            if (angular.isString(opts.mode))
+                session.setMode('ace/mode/' + opts.mode);
+
+            // Advanced options
+            if (angular.isDefined(opts.firstLineNumber)) {
+                if (angular.isNumber(opts.firstLineNumber))
+                    session.setOption('firstLineNumber', opts.firstLineNumber);
+                else if (angular.isFunction(opts.firstLineNumber))
+                    session.setOption('firstLineNumber', opts.firstLineNumber());
+            }
+
+            // advanced options
+            if (angular.isDefined(opts.advanced)) {
+                for (const key in opts.advanced) {
+                    if (opts.advanced.hasOwnProperty(key)) {
+                        // create a javascript object with the key and value
+                        const obj = {name: key, value: opts.advanced[key]};
+
+                        // try to assign the option to the ace editor
+                        acee.setOption(obj.name, obj.value);
+                    }
+                }
+            }
+
+            // advanced options for the renderer
+            if (angular.isDefined(opts.rendererOptions)) {
+                for (const key in opts.rendererOptions) {
+                    if (opts.rendererOptions.hasOwnProperty(key)) {
+                        // create a javascript object with the key and value
+                        const obj = {name: key, value: opts.rendererOptions[key]};
+
+                        // try to assign the option to the ace editor
+                        acee.renderer.setOption(obj.name, obj.value);
+                    }
+                }
+            }
+
+            // onLoad callbacks
+            angular.forEach(opts.callbacks, (cb) => {
+                if (angular.isFunction(cb))
+                    cb(acee);
+            });
+        };
+
+        return {
+            restrict: 'EA',
+            require: '?ngModel',
+            link: (scope, elm, attrs, ngModel) => {
+
+                /**
+                 * Corresponds the igniteAceConfig ACE configuration.
+                 * @type object
+                 */
+                const options = aceConfig.ace || {};
+
+                /**
+                 * igniteAceConfig merged with user options via json in attribute or data binding
+                 * @type object
+                 */
+                let opts = angular.extend({}, options, scope.$eval(attrs.igniteAce));
+
+                /**
+                 * ACE editor
+                 * @type object
+                 */
+                const acee = window.ace.edit(elm[0]);
+
+                /**
+                 * ACE editor session.
+                 * @type object
+                 * @see [EditSession]{@link http://ace.c9.io/#nav=api&api=edit_session}
+                 */
+                const session = acee.getSession();
+
+                /**
+                 * Reference to a change listener created by the listener factory.
+                 * @function
+                 * @see listenerFactory.onChange
+                 */
+                let onChangeListener;
+
+                /**
+                 * Creates a change listener which propagates the change event
+                 * and the editor session to the callback from the user option
+                 * onChange. It might be exchanged during runtime, if this
+                 * happens the old listener will be unbound.
+                 *
+                 * @param callback callback function defined in the user options
+                 * @see onChangeListener
+                 */
+                const onChangeFactory = (callback) => {
+                    return (e) => {
+                        const newValue = session.getValue();
+
+                        if (ngModel && newValue !== ngModel.$viewValue &&
+                                // HACK make sure to only trigger the apply outside of the
+                                // digest loop 'cause ACE is actually using this callback
+                                // for any text transformation !
+                            !scope.$$phase && !scope.$root.$$phase)
+                            scope.$eval(() => ngModel.$setViewValue(newValue));
+
+                        if (angular.isDefined(callback)) {
+                            scope.$evalAsync(() => {
+                                if (angular.isFunction(callback))
+                                    callback([e, acee]);
+                                else
+                                    throw new Error('ignite-ace use a function as callback.');
+                            });
+                        }
+                    };
+                };
+
+                attrs.$observe('readonly', (value) => acee.setReadOnly(!!value || value === ''));
+
+                // Value Blind.
+                if (ngModel) {
+                    ngModel.$formatters.push((value) => {
+                        if (angular.isUndefined(value) || value === null)
+                            return '';
+
+                        if (angular.isObject(value) || angular.isArray(value))
+                            throw new Error('ignite-ace cannot use an object or an array as a model');
+
+                        return value;
+                    });
+
+                    ngModel.$render = () => session.setValue(ngModel.$viewValue);
+                }
+
+                // Listen for option updates.
+                const updateOptions = (current, previous) => {
+                    if (current === previous)
+                        return;
+
+                    opts = angular.extend({}, options, scope.$eval(attrs.igniteAce));
+
+                    opts.callbacks = [opts.onLoad];
+
+                    // Also call the global onLoad handler.
+                    if (opts.onLoad !== options.onLoad)
+                        opts.callbacks.unshift(options.onLoad);
+
+                    // Unbind old change listener.
+                    session.removeListener('change', onChangeListener);
+
+                    // Bind new change listener.
+                    onChangeListener = onChangeFactory(opts.onChange);
+
+                    session.on('change', onChangeListener);
+
+                    setOptions(acee, session, opts);
+                };
+
+                scope.$watch(attrs.igniteAce, updateOptions, /* deep watch */ true);
+
+                // Set the options here, even if we try to watch later,
+                // if this line is missing things go wrong (and the tests will also fail).
+                updateOptions(options);
+
+                elm.on('$destroy', () => {
+                    acee.session.$stopWorker();
+
+                    acee.destroy();
+                });
+
+                scope.$watch(() => [elm[0].offsetWidth, elm[0].offsetHeight],
+                    () => {
+                        acee.resize();
+
+                        acee.renderer.updateFull();
+                    }, true);
+            }
+        };
+    }]);

http://git-wip-us.apache.org/repos/asf/ignite/blob/f189e84b/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/atomic.jade
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/atomic.jade b/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/atomic.jade
index d442d5c..03921ba 100644
--- a/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/atomic.jade
+++ b/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/atomic.jade
@@ -72,7 +72,7 @@ form.panel.panel-default(name='atomics' novalidate)
                             data-ng-model='#{model}.backups'
                             data-placeholder='0'
                         )
-            ignite-ui-ace.col-sm-6
+            ignite-ui-ace-tabs.col-sm-6
                 .preview-panel(ng-init='mode = false')
                     .preview-legend
                         a(ng-class='{active: !mode, inactive: mode}' ng-click='mode = false') XML

http://git-wip-us.apache.org/repos/asf/ignite/blob/f189e84b/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/binary.jade
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/binary.jade b/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/binary.jade
index 6e78df3..301125b 100644
--- a/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/binary.jade
+++ b/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/binary.jade
@@ -145,7 +145,7 @@ form.panel.panel-default(name='binary' novalidate)
                         | Compact footer
                         ignite-form-field-tooltip
                             | When enabled, Ignite will not write fields metadata when serializing objects(this will increase serialization performance), because internally #[b BinaryMarshaller] already distribute metadata inside cluster
-            ignite-ui-ace.col-sm-6
+            ignite-ui-ace-tabs.col-sm-6
                 .preview-panel(ng-init='mode = false')
                     .preview-legend
                         a(ng-class='{active: !mode, inactive: mode}' ng-click='mode = false') XML

http://git-wip-us.apache.org/repos/asf/ignite/blob/f189e84b/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/communication.jade
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/communication.jade b/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/communication.jade
index f695714..9678ced 100644
--- a/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/communication.jade
+++ b/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/communication.jade
@@ -333,7 +333,7 @@ form.panel.panel-default(name='communication' novalidate)
                             data-name='comAddressResolver'
                             data-ng-model='#{model}.addressResolver'
                         )
-            ignite-ui-ace.col-sm-6
+            ignite-ui-ace-tabs.col-sm-6
                 .preview-panel(ng-init='mode = false')
                     .preview-legend
                         a(ng-class='{active: !mode, inactive: mode}' ng-click='mode = false') XML

http://git-wip-us.apache.org/repos/asf/ignite/blob/f189e84b/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/connector.jade
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/connector.jade b/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/connector.jade
index 3f1a17c..b4dd86c 100644
--- a/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/connector.jade
+++ b/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/connector.jade
@@ -294,7 +294,7 @@ form.panel.panel-default(name='connector' novalidate)
                             data-ng-required='#{model}.sslEnabled'
                             data-ng-disabled='!#{model}.enabled || !#{model}.sslEnabled'
                         )
-            ignite-ui-ace.col-sm-6
+            ignite-ui-ace-tabs.col-sm-6
                 .preview-panel(ng-init='mode = false')
                     .preview-legend
                         a(ng-class='{active: !mode, inactive: mode}' ng-click='mode = false') XML

http://git-wip-us.apache.org/repos/asf/ignite/blob/f189e84b/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/deployment.jade
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/deployment.jade b/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/deployment.jade
index adf7fb7..b3e8287 100644
--- a/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/deployment.jade
+++ b/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/deployment.jade
@@ -182,7 +182,7 @@ form.panel.panel-default(name='#{form}' novalidate)
             
                         .group-content-empty(ng-if='!(#{exclude}.length) && !group.add.length')
                             | Not defined
-            ignite-ui-ace.col-sm-6
+            ignite-ui-ace-tabs.col-sm-6
                 .preview-panel(ng-init='mode = false')
                     .preview-legend
                         a(ng-class='{active: !mode, inactive: mode}' ng-click='mode = false') XML

http://git-wip-us.apache.org/repos/asf/ignite/blob/f189e84b/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/discovery.jade
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/discovery.jade b/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/discovery.jade
index 261e36a..b404464 100644
--- a/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/discovery.jade
+++ b/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/discovery.jade
@@ -304,7 +304,7 @@ form.panel.panel-default(name='discovery' novalidate)
                         | Client reconnect disabled
                         ignite-form-field-tooltip
                             | Client reconnect disabled
-            ignite-ui-ace.col-sm-6
+            ignite-ui-ace-tabs.col-sm-6
                 .preview-panel(ng-init='mode = false')
                     .preview-legend
                         a(ng-class='{active: !mode, inactive: mode}' ng-click='mode = false') XML

http://git-wip-us.apache.org/repos/asf/ignite/blob/f189e84b/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/events.jade
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/events.jade b/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/events.jade
index 6db5113..c4a5484 100644
--- a/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/events.jade
+++ b/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/events.jade
@@ -41,7 +41,7 @@ form.panel.panel-default(name='events' novalidate)
                             data-ng-model='#{model}.includeEventTypes'
                             data-placeholder='Choose recorded event types'
                         )
-            ignite-ui-ace.col-sm-6
+            ignite-ui-ace-tabs.col-sm-6
                 .preview-panel(ng-init='mode = false')
                     .preview-legend
                         a(ng-class='{active: !mode, inactive: mode}' ng-click='mode = false') XML

http://git-wip-us.apache.org/repos/asf/ignite/blob/f189e84b/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/general.jade
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/general.jade b/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/general.jade
index 8958cbd..2f78db2 100644
--- a/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/general.jade
+++ b/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/general.jade
@@ -93,7 +93,7 @@ form.panel.panel-default(name='general' novalidate)
                             ng-if='#{model}.discovery.kind === "SharedFs"')
                         ignite-configuration-clusters-general-discovery-vm(
                             ng-if='#{model}.discovery.kind === "Vm"')
-            ignite-ui-ace.col-sm-6
+            ignite-ui-ace-tabs.col-sm-6
                 .preview-panel(ng-init='mode = false')
                     .preview-legend
                         a(ng-class='{active: !mode, inactive: mode}' ng-click='mode = false') XML

http://git-wip-us.apache.org/repos/asf/ignite/blob/f189e84b/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/igfs.jade
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/igfs.jade b/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/igfs.jade
index e0db188..7b63358 100644
--- a/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/igfs.jade
+++ b/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/igfs.jade
@@ -41,7 +41,7 @@ form.panel.panel-default(name='igfs' novalidate)
                             data-ng-disabled='!igfss.length'
                             data-placeholder='{{ igfss.length ? "Choose IGFS": "No IGFS configured" }}'
                         )
-            ignite-ui-ace.col-sm-6
+            ignite-ui-ace-tabs.col-sm-6
                 .preview-panel(ng-init='mode = false')
                     .preview-legend
                         a(ng-class='{active: !mode, inactive: mode}' ng-click='mode = false') XML

http://git-wip-us.apache.org/repos/asf/ignite/blob/f189e84b/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/marshaller.jade
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/marshaller.jade b/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/marshaller.jade
index b181fee..f8219e6 100644
--- a/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/marshaller.jade
+++ b/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/marshaller.jade
@@ -119,7 +119,7 @@ form.panel.panel-default(name='marshaller' novalidate)
                             data-placeholder='max(8, availableProcessors) * 2'
                         )
 
-            ignite-ui-ace.col-sm-6
+            ignite-ui-ace-tabs.col-sm-6
                 .preview-panel(ng-init='mode = false')
                     .preview-legend
                         a(ng-class='{active: !mode, inactive: mode}' ng-click='mode = false') XML

http://git-wip-us.apache.org/repos/asf/ignite/blob/f189e84b/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/metrics.jade
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/metrics.jade b/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/metrics.jade
index 7ced27d..b40ea2a 100644
--- a/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/metrics.jade
+++ b/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/metrics.jade
@@ -75,7 +75,7 @@ form.panel.panel-default(name='metrics' novalidate)
                             data-ng-model='#{model}.metricsUpdateFrequency'
                             data-placeholder='2000'
                         )
-            ignite-ui-ace.col-sm-6
+            ignite-ui-ace-tabs.col-sm-6
                 .preview-panel(ng-init='mode = false')
                     .preview-legend
                         a(ng-class='{active: !mode, inactive: mode}' ng-click='mode = false') XML

http://git-wip-us.apache.org/repos/asf/ignite/blob/f189e84b/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/preview-panel.directive.js
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/preview-panel.directive.js b/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/preview-panel.directive.js
index 61407fe..fb67326 100644
--- a/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/preview-panel.directive.js
+++ b/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/preview-panel.directive.js
@@ -205,13 +205,13 @@ export default ['previewPanel', ['$interval', '$timeout', ($interval, $timeout)
     };
 
 
-    const link = (scope, $element, $attrs, [igniteUiAce1, igniteUiAce2]) => {
-        const igniteUiAce = igniteUiAce1 || igniteUiAce2;
+    const link = (scope, $element, $attrs, [igniteUiAceTabs1, igniteUiAceTabs2]) => {
+        const igniteUiAceTabs = igniteUiAceTabs1 || igniteUiAceTabs2;
 
-        if (!igniteUiAce)
+        if (!igniteUiAceTabs)
             return;
 
-        igniteUiAce.onLoad = (editor) => {
+        igniteUiAceTabs.onLoad = (editor) => {
             editor.setReadOnly(true);
             editor.setOption('highlightActiveLine', false);
             editor.setAutoScrollEditorIntoView(true);
@@ -228,12 +228,12 @@ export default ['previewPanel', ['$interval', '$timeout', ($interval, $timeout)
             editor.setTheme('ace/theme/chrome');
         };
 
-        igniteUiAce.onChange = onChange;
+        igniteUiAceTabs.onChange = onChange;
     };
 
     return {
         restrict: 'C',
         link,
-        require: ['?igniteUiAce', '?^igniteUiAce']
+        require: ['?igniteUiAceTabs', '?^igniteUiAceTabs']
     };
 }]];

http://git-wip-us.apache.org/repos/asf/ignite/blob/f189e84b/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/ssl.jade
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/ssl.jade b/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/ssl.jade
index 7ef96e7..2a91f83 100644
--- a/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/ssl.jade
+++ b/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/ssl.jade
@@ -220,7 +220,7 @@ form.panel.panel-default(name='#{form}' novalidate)
                             data-ng-disabled='!#{enabled}'
                         )                        
  
-            ignite-ui-ace.col-sm-6
+            ignite-ui-ace-tabs.col-sm-6
                 .preview-panel(ng-init='mode = false')
                     .preview-legend
                         a(ng-class='{active: !mode, inactive: mode}' ng-click='mode = false') XML

http://git-wip-us.apache.org/repos/asf/ignite/blob/f189e84b/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/swap.jade
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/swap.jade b/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/swap.jade
index 83698ce..9676c94 100644
--- a/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/swap.jade
+++ b/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/swap.jade
@@ -118,7 +118,7 @@ form.panel.panel-default(name='swapSpaceSpi' novalidate)
                                 )
 
 
-            ignite-ui-ace.col-sm-6
+            ignite-ui-ace-tabs.col-sm-6
                 .preview-panel(ng-init='mode = false')
                     .preview-legend
                         a(ng-class='{active: !mode, inactive: mode}' ng-click='mode = false') XML

http://git-wip-us.apache.org/repos/asf/ignite/blob/f189e84b/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/thread.jade
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/thread.jade b/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/thread.jade
index 0e49742..1a5f780 100644
--- a/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/thread.jade
+++ b/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/thread.jade
@@ -81,7 +81,7 @@ form.panel.panel-default(name='thread' novalidate)
                             data-placeholder='1'
                             data-min='1'
                         )
-            ignite-ui-ace.col-sm-6
+            ignite-ui-ace-tabs.col-sm-6
                 .preview-panel(ng-init='mode = false')
                     .preview-legend
                         a(ng-class='{active: !mode, inactive: mode}' ng-click='mode = false') XML

http://git-wip-us.apache.org/repos/asf/ignite/blob/f189e84b/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/time.jade
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/time.jade b/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/time.jade
index 63badbd..a6eac16 100644
--- a/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/time.jade
+++ b/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/time.jade
@@ -79,7 +79,7 @@ form.panel.panel-default(name='time' novalidate)
                             data-placeholder='100'
                             data-min='1'
                         )
-            ignite-ui-ace.col-sm-6
+            ignite-ui-ace-tabs.col-sm-6
                 .preview-panel(ng-init='mode = false')
                     .preview-legend
                         a(ng-class='{active: !mode, inactive: mode}' ng-click='mode = false') XML

http://git-wip-us.apache.org/repos/asf/ignite/blob/f189e84b/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/transactions.jade
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/transactions.jade b/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/transactions.jade
index a4b4971..ff5166a 100644
--- a/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/transactions.jade
+++ b/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/transactions.jade
@@ -107,7 +107,7 @@ form.panel.panel-default(name='transactionConfiguration' novalidate)
                             data-ng-model='#{model}.txManagerFactory'
                             data-placeholder='Enter fully qualified class name'
                         )
-            ignite-ui-ace.col-sm-6
+            ignite-ui-ace-tabs.col-sm-6
                 .preview-panel(ng-init='mode = false')
                     .preview-legend
                         a(ng-class='{active: !mode, inactive: mode}' ng-click='mode = false') XML
@@ -118,4 +118,4 @@ form.panel.panel-default(name='transactionConfiguration' novalidate)
                     .preview-content(ng-if='!mode')
                         ignite-ui-ace-xml(data-cluster='backupItem' data-generator='clusterTransactions' ng-model='$parent.data')
                     .preview-content-empty(ng-if='!data')
-                        label All Defaults
\ No newline at end of file
+                        label All Defaults

http://git-wip-us.apache.org/repos/asf/ignite/blob/f189e84b/modules/control-center-web/src/main/js/app/modules/states/configuration/summary/summary-tabs.directive.js
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/app/modules/states/configuration/summary/summary-tabs.directive.js b/modules/control-center-web/src/main/js/app/modules/states/configuration/summary/summary-tabs.directive.js
index e38b6fd..f8094af 100644
--- a/modules/control-center-web/src/main/js/app/modules/states/configuration/summary/summary-tabs.directive.js
+++ b/modules/control-center-web/src/main/js/app/modules/states/configuration/summary/summary-tabs.directive.js
@@ -16,13 +16,13 @@
  */
 
 export default ['summaryTabs', [() => {
-    const link = (scope, $element, $attrs, [igniteUiAce1, igniteUiAce2]) => {
-        const igniteUiAce = igniteUiAce1 || igniteUiAce2;
+    const link = (scope, $element, $attrs, [igniteUiAceTabs1, igniteUiAceTabs2]) => {
+        const igniteUiAceTabs = igniteUiAceTabs1 || igniteUiAceTabs2;
 
-        if (!igniteUiAce)
+        if (!igniteUiAceTabs)
             return;
 
-        igniteUiAce.onLoad = (editor) => {
+        igniteUiAceTabs.onLoad = (editor) => {
             editor.setReadOnly(true);
             editor.setOption('highlightActiveLine', false);
             editor.setAutoScrollEditorIntoView(true);
@@ -45,6 +45,6 @@ export default ['summaryTabs', [() => {
         priority: 1000,
         restrict: 'C',
         link,
-        require: ['?igniteUiAce', '?^igniteUiAce']
+        require: ['?igniteUiAceTabs', '?^igniteUiAceTabs']
     };
 }]];

http://git-wip-us.apache.org/repos/asf/ignite/blob/f189e84b/modules/control-center-web/src/main/js/config.js
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/config.js b/modules/control-center-web/src/main/js/config.js
index d5be50e..8000eac 100644
--- a/modules/control-center-web/src/main/js/config.js
+++ b/modules/control-center-web/src/main/js/config.js
@@ -45,7 +45,7 @@ System.config({
     "file-saver": "github:eligrey/FileSaver.js@master",
     "font-awesome": "npm:font-awesome@4.5.0",
     "jade": "github:johnsoftek/plugin-jade@0.5.1",
-    "jquery": "github:components/jquery@2.2.0",
+    "jquery": "github:components/jquery@2.2.1",
     "json": "github:systemjs/plugin-json@0.1.0",
     "jszip": "github:Stuk/jszip@2.5.0",
     "lodash": "npm:lodash@3.10.1",
@@ -75,7 +75,7 @@ System.config({
       "angular": "github:angular/bower-angular@1.5.0"
     },
     "github:angular/bower-angular@1.5.0": {
-      "jquery": "github:components/jquery@2.2.0"
+      "jquery": "github:components/jquery@2.2.1"
     },
     "github:darthwade/angular-loading@0.1.4": {
       "spinjs": "github:fgnass/spin.js@2.3.2"
@@ -140,7 +140,7 @@ System.config({
       "css": "github:systemjs/plugin-css@0.1.20"
     },
     "github:twbs/bootstrap@3.3.6": {
-      "jquery": "github:components/jquery@2.2.0"
+      "jquery": "github:components/jquery@2.2.1"
     },
     "github:wix/angular-tree-control@0.2.23": {
       "angular": "github:angular/bower-angular@1.5.0"
@@ -247,7 +247,7 @@ System.config({
       "process": "github:jspm/nodelibs-process@0.1.2"
     },
     "npm:decamelize@1.1.2": {
-      "escape-string-regexp": "npm:escape-string-regexp@1.0.4"
+      "escape-string-regexp": "npm:escape-string-regexp@1.0.5"
     },
     "npm:font-awesome@4.5.0": {
       "css": "github:systemjs/plugin-css@0.1.20"
@@ -276,7 +276,7 @@ System.config({
       "process": "github:jspm/nodelibs-process@0.1.2",
       "systemjs-json": "github:systemjs/plugin-json@0.1.0",
       "transformers": "npm:transformers@2.1.0",
-      "uglify-js": "npm:uglify-js@2.6.1",
+      "uglify-js": "npm:uglify-js@2.6.2",
       "void-elements": "npm:void-elements@2.0.1",
       "with": "npm:with@4.0.3"
     },
@@ -381,7 +381,7 @@ System.config({
       "util": "github:jspm/nodelibs-util@0.1.0",
       "vm": "github:jspm/nodelibs-vm@0.1.0"
     },
-    "npm:uglify-js@2.6.1": {
+    "npm:uglify-js@2.6.2": {
       "async": "npm:async@0.2.10",
       "fs": "github:jspm/nodelibs-fs@0.1.2",
       "path": "github:jspm/nodelibs-path@0.1.0",

http://git-wip-us.apache.org/repos/asf/ignite/blob/f189e84b/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 1de5433..b0c817d 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
@@ -17,7 +17,7 @@
 
 var consoleModule = angular.module('ignite-web-console',
     [
-        'ngAnimate', 'ngSanitize', 'mgcrea.ngStrap', 'smart-table', 'ui.ace', 'treeControl', 'darthwade.dwLoading', 'ui.grid', 'ui.grid.autoResize', 'ui.grid.exporter', 'nvd3', 'dndLists'
+        'ngAnimate', 'ngSanitize', 'mgcrea.ngStrap', 'smart-table', 'treeControl', 'darthwade.dwLoading', 'ui.grid', 'ui.grid.autoResize', 'ui.grid.exporter', 'nvd3', 'dndLists'
         /* ignite:modules */
         , 'ignite-console'
         /* endignite */

http://git-wip-us.apache.org/repos/asf/ignite/blob/f189e84b/modules/control-center-web/src/main/js/controllers/sql-controller.js
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/controllers/sql-controller.js b/modules/control-center-web/src/main/js/controllers/sql-controller.js
index 55748cc..a806abb 100644
--- a/modules/control-center-web/src/main/js/controllers/sql-controller.js
+++ b/modules/control-center-web/src/main/js/controllers/sql-controller.js
@@ -1477,13 +1477,7 @@ consoleModule.controller('sqlController', function ($http, $timeout, $interval,
     $scope.dblclickMetadata = function (paragraph, node) {
         paragraph.ace.insert(node.name);
 
-        var position = paragraph.ace.selection.getCursor();
-
-        paragraph.query = paragraph.ace.getValue();
-
         setTimeout(function () {
-            paragraph.ace.selection.moveCursorToPosition(position);
-
             paragraph.ace.focus();
         }, 1);
     };

http://git-wip-us.apache.org/repos/asf/ignite/blob/f189e84b/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 a4f820e..69c3af9 100644
--- a/modules/control-center-web/src/main/js/package.json
+++ b/modules/control-center-web/src/main/js/package.json
@@ -81,7 +81,6 @@
       "angular-smart-table": "github:lorenzofox3/Smart-Table@^2.1.4",
       "angular-strap": "github:akuznetsov-gridgain/angular-strap@fix-1852-2.3.6",
       "angular-tree-control": "github:wix/angular-tree-control@^0.2.23",
-      "angular-ui-ace": "github:angular-ui/ui-ace@^0.2.3",
       "angular-ui-grid": "github:angular-ui/bower-ui-grid@^3.0.7",
       "angular-ui-router": "github:angular-ui/ui-router@^0.2.15",
       "angular-ui-router-title": "github:nonplus/angular-ui-router-title@^0.0.4",
@@ -233,11 +232,6 @@
           }
         }
       },
-      "github:angular-ui/ui-ace@0.2.3": {
-        "dependencies": {
-          "ace": "github:ajaxorg/ace-builds@^1.2.2"
-        }
-      },
       "github:eligrey/FileSaver.js@master": {
         "format": "global",
         "dependencies": {

http://git-wip-us.apache.org/repos/asf/ignite/blob/f189e84b/modules/control-center-web/src/main/js/views/configuration/summary.jade
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/views/configuration/summary.jade b/modules/control-center-web/src/main/js/views/configuration/summary.jade
index e280f2b..efff15c 100644
--- a/modules/control-center-web/src/main/js/views/configuration/summary.jade
+++ b/modules/control-center-web/src/main/js/views/configuration/summary.jade
@@ -52,7 +52,7 @@ mixin ignite-form-field-tooltip(message)
                             label Server
 
                         .panel-collapse(id='server' role='tabpanel' bs-collapse-target)
-                            .summary-tabs(ignite-ui-ace)
+                            ignite-ui-ace-tabs.summary-tabs
                                 div(bs-tabs data-bs-active-pane="tabsServer.activeTab" template='configuration/summary-tabs.html')
                                     div(bs-pane title='XML')
                                         ignite-ui-ace-xml(data-cluster='cluster')
@@ -132,7 +132,7 @@ mixin ignite-form-field-tooltip(message)
                                                     data-placeholder='100000'
                                                 )
 
-                            .summary-tabs(ignite-ui-ace)
+                            .summary-tabs(ignite-ui-ace-tabs)
                                 div(bs-tabs data-bs-active-pane="tabsClient.activeTab" template='configuration/summary-tabs.html')
                                     div(bs-pane title='XML')
                                         ignite-ui-ace-xml(data-cluster='cluster' data-cluster-cfg='#{nearCfg}')

http://git-wip-us.apache.org/repos/asf/ignite/blob/f189e84b/modules/control-center-web/src/main/js/views/sql/sql.jade
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/views/sql/sql.jade b/modules/control-center-web/src/main/js/views/sql/sql.jade
index ac7db65..bafe1d2 100644
--- a/modules/control-center-web/src/main/js/views/sql/sql.jade
+++ b/modules/control-center-web/src/main/js/views/sql/sql.jade
@@ -98,7 +98,7 @@ mixin chart-settings(mdl)
                             .panel-collapse(role='tabpanel' bs-collapse-target)
                                 .col-sm-12
                                     .col-xs-8.col-sm-9(style='border-right: 1px solid #eee')
-                                        .sql-editor(ui-ace='{onLoad: aceInit(paragraph), theme: "chrome", mode: "sql", require: ["ace/ext/language_tools"],' +
+                                        .sql-editor(ignite-ace='{onLoad: aceInit(paragraph), theme: "chrome", mode: "sql", require: ["ace/ext/language_tools"],' +
                                         'advanced: {enableSnippets: false, enableBasicAutocompletion: true, enableLiveAutocompletion: true}}'
                                         ng-model='paragraph.query')
                                     .col-xs-4.col-sm-3


[19/28] ignite git commit: IGNITE-843 Refactored branding module.

Posted by ak...@apache.org.
IGNITE-843 Refactored branding module.


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

Branch: refs/heads/ignite-843-rc3
Commit: 4c23c8e8303d61a4995530365cbdad5fb2b9b574
Parents: 06af6d2
Author: Andrey <an...@gridgain.com>
Authored: Wed Mar 2 17:42:11 2016 +0700
Committer: Andrey <an...@gridgain.com>
Committed: Wed Mar 2 17:42:11 2016 +0700

----------------------------------------------------------------------
 .../js/app/modules/branding/Logo.provider.js    | 42 ---------
 .../js/app/modules/branding/Terms.provider.js   | 41 --------
 .../js/app/modules/branding/branding.module.js  | 22 +++--
 .../app/modules/branding/branding.provider.js   | 99 ++++++++++++++++++++
 .../app/modules/branding/features.directive.js  | 35 +++++++
 .../js/app/modules/branding/footer.directive.js | 34 +++++++
 .../modules/branding/header-logo.directive.js   | 34 +++++++
 .../js/app/modules/branding/header-logo.jade    | 18 ++++
 .../modules/branding/header-title.directive.js  | 35 +++++++
 .../js/app/modules/branding/logo.directive.js   | 34 -------
 .../src/main/js/app/modules/branding/logo.jade  | 18 ----
 .../branding/powered-by-apache.directive.js     |  4 +-
 .../js/app/modules/branding/terms.directive.js  |  5 +-
 .../js/app/modules/branding/title.directive.js  | 35 -------
 .../main/js/app/modules/states/signin.state.js  |  4 +-
 .../src/main/js/public/stylesheets/style.scss   |  4 +
 .../src/main/js/views/includes/footer.jade      |  3 +-
 .../src/main/js/views/includes/header.jade      |  2 +-
 .../src/main/js/views/reset.jade                |  4 +-
 .../src/main/js/views/signin.jade               | 12 +--
 20 files changed, 285 insertions(+), 200 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/4c23c8e8/modules/control-center-web/src/main/js/app/modules/branding/Logo.provider.js
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/app/modules/branding/Logo.provider.js b/modules/control-center-web/src/main/js/app/modules/branding/Logo.provider.js
deleted file mode 100644
index fcefc7c..0000000
--- a/modules/control-center-web/src/main/js/app/modules/branding/Logo.provider.js
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-export default ['IgniteLogo', [function() {
-    let poweredBy = false;
-
-    let url = '/images/ignite-logo.png';
-
-    let title = 'Management console for Apache Ignite';
-
-    this.url = (_url) => {
-        url = _url;
-
-        poweredBy = true;
-    };
-
-    this.title = (_title) => {
-        title = _title;
-    };
-
-    this.$get = [() => {
-        return {
-            url,
-            poweredBy,
-            title
-        };
-    }];
-}]];

http://git-wip-us.apache.org/repos/asf/ignite/blob/4c23c8e8/modules/control-center-web/src/main/js/app/modules/branding/Terms.provider.js
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/app/modules/branding/Terms.provider.js b/modules/control-center-web/src/main/js/app/modules/branding/Terms.provider.js
deleted file mode 100644
index c9c6009..0000000
--- a/modules/control-center-web/src/main/js/app/modules/branding/Terms.provider.js
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-export default ['IgniteTerms', [function() {
-    let _rows = [
-        'Apache Ignite Web Console',
-        '© 2016 The Apache Software Foundation.',
-        'Apache, Apache Ignite, the Apache feather and the Apache Ignite logo are trademarks of The Apache Software Foundation.'
-    ];
-
-    let _state;
-
-    this.footerRows = function(rows) {
-        _rows = rows;
-    };
-
-    this.termsState = function(state) {
-        _state = state;
-    };
-
-    this.$get = [function() {
-        return {
-            footerRows: _rows,
-            termsState: _state
-        };
-    }];
-}]];

http://git-wip-us.apache.org/repos/asf/ignite/blob/4c23c8e8/modules/control-center-web/src/main/js/app/modules/branding/branding.module.js
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/app/modules/branding/branding.module.js b/modules/control-center-web/src/main/js/app/modules/branding/branding.module.js
index dc65efc..5a3e843 100644
--- a/modules/control-center-web/src/main/js/app/modules/branding/branding.module.js
+++ b/modules/control-center-web/src/main/js/app/modules/branding/branding.module.js
@@ -17,22 +17,24 @@
 
 import angular from 'angular';
 
-import IgniteLogo from './Logo.provider';
-import IgniteTerms from './Terms.provider';
+import IgniteBranding from './branding.provider';
 
-import ignitePoweredByApache from './powered-by-apache.directive';
-import igniteLogo from './logo.directive';
-import igniteTitle from './title.directive';
+import igniteHeaderLogo from './header-logo.directive';
+import igniteHeaderTitle from './header-title.directive';
 import igniteTerms from './terms.directive';
+import igniteFeatures from './features.directive';
+import igniteFooter from './footer.directive';
+import ignitePoweredByApache from './powered-by-apache.directive';
 
 angular
 .module('ignite-console.branding', [
 
 ])
-.provider(...IgniteLogo)
-.provider(...IgniteTerms)
+.provider(...IgniteBranding)
 .directive(...ignitePoweredByApache)
-.directive(...igniteLogo)
-.directive(...igniteTitle)
-.directive(...igniteTerms);
+.directive(...igniteHeaderLogo)
+.directive(...igniteHeaderTitle)
+.directive(...igniteTerms)
+.directive(...igniteFeatures)
+.directive(...igniteFooter);
 

http://git-wip-us.apache.org/repos/asf/ignite/blob/4c23c8e8/modules/control-center-web/src/main/js/app/modules/branding/branding.provider.js
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/app/modules/branding/branding.provider.js b/modules/control-center-web/src/main/js/app/modules/branding/branding.provider.js
new file mode 100644
index 0000000..d4c12a4
--- /dev/null
+++ b/modules/control-center-web/src/main/js/app/modules/branding/branding.provider.js
@@ -0,0 +1,99 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+export default ['IgniteBranding', [function() {
+    let headerLogo = '/images/ignite-logo.png';
+
+    let headerText = 'Management console for Apache Ignite';
+
+    let showIgniteLogo = false;
+
+    let footerHtml = [
+        '<p>Apache Ignite Web Console</p>',
+        '<p>© 2016 The Apache Software Foundation.</p>',
+        '<p>Apache, Apache Ignite, the Apache feather and the Apache Ignite logo are trademarks of The Apache Software Foundation.</p>'
+    ];
+
+    let termsState;
+
+    let featuresHtml = [
+        '<p>Web Console is an interactive management tool which allows to:</p>',
+        '<ul>',
+        '   <li>Create and download cluster configurations</li>',
+        '   <li>Automatically import domain model from any RDBMS</li>',
+        '   <li>Connect to cluster and run SQL analytics on it</li>',
+        '</ul>'
+    ];
+
+    /**
+     * Change logo in header.
+     *
+     * @param {String} url Logo path.
+     */
+    this.headerLogo = (url) => {
+        headerLogo = url;
+
+        showIgniteLogo = true;
+    };
+
+    /**
+     * Change text in header.
+     *
+     * @param {String} text Header text.
+     */
+    this.headerText = (text) => {
+        headerText = text;
+    };
+
+    /**
+     * Change text in features.
+     *
+     * @param {Array.<String>} rows Features text.
+     */
+    this.featuresHtml = (rows) => {
+        featuresHtml = rows;
+    };
+
+    /**
+     * Change text in footer.
+     *
+     * @param {Array.<String>} rows Footer text.
+     */
+    this.footerHtml = (rows) => {
+        footerHtml = rows;
+    };
+
+    /**
+     * Set terms and conditions stage.
+     *
+     * @param {String} state
+     */
+    this.termsState = (state) => {
+        termsState = state;
+    };
+
+    this.$get = [() => {
+        return {
+            headerLogo,
+            headerText,
+            featuresHtml: featuresHtml.join('\n'),
+            footerHtml: footerHtml.join('\n'),
+            showIgniteLogo,
+            termsState
+        };
+    }];
+}]];

http://git-wip-us.apache.org/repos/asf/ignite/blob/4c23c8e8/modules/control-center-web/src/main/js/app/modules/branding/features.directive.js
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/app/modules/branding/features.directive.js b/modules/control-center-web/src/main/js/app/modules/branding/features.directive.js
new file mode 100644
index 0000000..0477be6
--- /dev/null
+++ b/modules/control-center-web/src/main/js/app/modules/branding/features.directive.js
@@ -0,0 +1,35 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+const template = `<div class='features' ng-bind-html='features.html'></div>`;
+
+export default ['igniteFeatures', ['IgniteBranding', (branding) => {
+    function controller() {
+        const ctrl = this;
+
+        ctrl.html = branding.featuresHtml;
+    }
+
+    return {
+        restrict: 'E',
+        template,
+        controller,
+        controllerAs: 'features',
+        replace: true
+    };
+}]];
+

http://git-wip-us.apache.org/repos/asf/ignite/blob/4c23c8e8/modules/control-center-web/src/main/js/app/modules/branding/footer.directive.js
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/app/modules/branding/footer.directive.js b/modules/control-center-web/src/main/js/app/modules/branding/footer.directive.js
new file mode 100644
index 0000000..1312f98
--- /dev/null
+++ b/modules/control-center-web/src/main/js/app/modules/branding/footer.directive.js
@@ -0,0 +1,34 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+const template = `<div class='footer' ng-bind-html='footer.html'></div>`;
+
+export default ['igniteFooter', ['IgniteBranding', (branding) => {
+    function controller() {
+        const ctrl = this;
+
+        ctrl.html = branding.footerHtml;
+    }
+
+    return {
+        restrict: 'E',
+        template,
+        controller,
+        controllerAs: 'footer',
+        replace: true
+    };
+}]];

http://git-wip-us.apache.org/repos/asf/ignite/blob/4c23c8e8/modules/control-center-web/src/main/js/app/modules/branding/header-logo.directive.js
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/app/modules/branding/header-logo.directive.js b/modules/control-center-web/src/main/js/app/modules/branding/header-logo.directive.js
new file mode 100644
index 0000000..1bfbc45
--- /dev/null
+++ b/modules/control-center-web/src/main/js/app/modules/branding/header-logo.directive.js
@@ -0,0 +1,34 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import template from './header-logo.jade!';
+
+export default ['igniteHeaderLogo', ['IgniteBranding', (branding) => {
+    function controller() {
+        const ctrl = this;
+
+        ctrl.url = branding.headerLogo;
+    }
+
+    return {
+        restrict: 'E',
+        template,
+        controller,
+        controllerAs: 'logo',
+        replace: true
+    };
+}]];

http://git-wip-us.apache.org/repos/asf/ignite/blob/4c23c8e8/modules/control-center-web/src/main/js/app/modules/branding/header-logo.jade
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/app/modules/branding/header-logo.jade b/modules/control-center-web/src/main/js/app/modules/branding/header-logo.jade
new file mode 100644
index 0000000..b807921
--- /dev/null
+++ b/modules/control-center-web/src/main/js/app/modules/branding/header-logo.jade
@@ -0,0 +1,18 @@
+//-
+    Licensed to the Apache Software Foundation (ASF) under one or more
+    contributor license agreements.  See the NOTICE file distributed with
+    this work for additional information regarding copyright ownership.
+    The ASF licenses this file to You under the Apache License, Version 2.0
+    (the "License"); you may not use this file except in compliance with
+    the License.  You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+
+a(href='/')
+    img.navbar-brand(ng-src='{{logo.url}}' height='40')

http://git-wip-us.apache.org/repos/asf/ignite/blob/4c23c8e8/modules/control-center-web/src/main/js/app/modules/branding/header-title.directive.js
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/app/modules/branding/header-title.directive.js b/modules/control-center-web/src/main/js/app/modules/branding/header-title.directive.js
new file mode 100644
index 0000000..60b9f2f
--- /dev/null
+++ b/modules/control-center-web/src/main/js/app/modules/branding/header-title.directive.js
@@ -0,0 +1,35 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+const template = `<label class='title'>{{::title.text}}</label>`;
+
+export default ['igniteHeaderTitle', ['IgniteBranding', (branding) => {
+    function controller() {
+        const ctrl = this;
+
+        ctrl.text = branding.headerText;
+    }
+
+    return {
+        restrict: 'E',
+        template,
+        controller,
+        controllerAs: 'title',
+        replace: true
+    };
+}]];
+

http://git-wip-us.apache.org/repos/asf/ignite/blob/4c23c8e8/modules/control-center-web/src/main/js/app/modules/branding/logo.directive.js
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/app/modules/branding/logo.directive.js b/modules/control-center-web/src/main/js/app/modules/branding/logo.directive.js
deleted file mode 100644
index ff46945..0000000
--- a/modules/control-center-web/src/main/js/app/modules/branding/logo.directive.js
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-import templateLogo from './logo.jade!';
-
-export default ['igniteLogo', ['IgniteLogo', (IgniteLogo) => {
-    function controller() {
-        const ctrl = this;
-
-        ctrl.url = IgniteLogo.url;
-    }
-
-    return {
-        restrict: 'E',
-        template: templateLogo,
-        controller,
-        controllerAs: 'logo',
-        replace: true
-    };
-}]];

http://git-wip-us.apache.org/repos/asf/ignite/blob/4c23c8e8/modules/control-center-web/src/main/js/app/modules/branding/logo.jade
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/app/modules/branding/logo.jade b/modules/control-center-web/src/main/js/app/modules/branding/logo.jade
deleted file mode 100644
index b807921..0000000
--- a/modules/control-center-web/src/main/js/app/modules/branding/logo.jade
+++ /dev/null
@@ -1,18 +0,0 @@
-//-
-    Licensed to the Apache Software Foundation (ASF) under one or more
-    contributor license agreements.  See the NOTICE file distributed with
-    this work for additional information regarding copyright ownership.
-    The ASF licenses this file to You under the Apache License, Version 2.0
-    (the "License"); you may not use this file except in compliance with
-    the License.  You may obtain a copy of the License at
-
-         http://www.apache.org/licenses/LICENSE-2.0
-
-    Unless required by applicable law or agreed to in writing, software
-    distributed under the License is distributed on an "AS IS" BASIS,
-    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-    See the License for the specific language governing permissions and
-    limitations under the License.
-
-a(href='/')
-    img.navbar-brand(ng-src='{{logo.url}}' height='40')

http://git-wip-us.apache.org/repos/asf/ignite/blob/4c23c8e8/modules/control-center-web/src/main/js/app/modules/branding/powered-by-apache.directive.js
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/app/modules/branding/powered-by-apache.directive.js b/modules/control-center-web/src/main/js/app/modules/branding/powered-by-apache.directive.js
index fd2ab98..37f1dec 100644
--- a/modules/control-center-web/src/main/js/app/modules/branding/powered-by-apache.directive.js
+++ b/modules/control-center-web/src/main/js/app/modules/branding/powered-by-apache.directive.js
@@ -17,11 +17,11 @@
 
 import templatePoweredByApache from './powered-by-apache.jade!';
 
-export default ['ignitePoweredByApache', ['IgniteLogo', (IgniteLogo) => {
+export default ['ignitePoweredByApache', ['IgniteBranding', (branding) => {
     function controller() {
         const ctrl = this;
 
-        ctrl.show = IgniteLogo.poweredBy;
+        ctrl.show = branding.showIgniteLogo;
     }
 
     return {

http://git-wip-us.apache.org/repos/asf/ignite/blob/4c23c8e8/modules/control-center-web/src/main/js/app/modules/branding/terms.directive.js
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/app/modules/branding/terms.directive.js b/modules/control-center-web/src/main/js/app/modules/branding/terms.directive.js
index 22f2977..0207745 100644
--- a/modules/control-center-web/src/main/js/app/modules/branding/terms.directive.js
+++ b/modules/control-center-web/src/main/js/app/modules/branding/terms.directive.js
@@ -15,12 +15,11 @@
  * limitations under the License.
  */
 
-export default ['igniteTerms', ['IgniteTerms', (IgniteTerms) => {
+export default ['igniteTerms', ['IgniteBranding', (branding) => {
     function controller() {
         const ctrl = this;
 
-        ctrl.footerRows = IgniteTerms.footerRows;
-        ctrl.termsState = IgniteTerms.termsState;
+        ctrl.termsState = branding.termsState;
     }
 
     return {

http://git-wip-us.apache.org/repos/asf/ignite/blob/4c23c8e8/modules/control-center-web/src/main/js/app/modules/branding/title.directive.js
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/app/modules/branding/title.directive.js b/modules/control-center-web/src/main/js/app/modules/branding/title.directive.js
deleted file mode 100644
index 83b8a7b..0000000
--- a/modules/control-center-web/src/main/js/app/modules/branding/title.directive.js
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-const templateTitle = `<label class= 'title'>{{::title.text}}</label>`;
-
-export default ['igniteTitle', ['IgniteLogo', (IgniteLogo) => {
-    function controller() {
-        const ctrl = this;
-
-        ctrl.text = IgniteLogo.title;
-    }
-
-    return {
-        restrict: 'E',
-        template: templateTitle,
-        controller,
-        controllerAs: 'title',
-        replace: true
-    };
-}]];
-

http://git-wip-us.apache.org/repos/asf/ignite/blob/4c23c8e8/modules/control-center-web/src/main/js/app/modules/states/signin.state.js
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/app/modules/states/signin.state.js b/modules/control-center-web/src/main/js/app/modules/states/signin.state.js
index feaf76a..bf5baa9 100644
--- a/modules/control-center-web/src/main/js/app/modules/states/signin.state.js
+++ b/modules/control-center-web/src/main/js/app/modules/states/signin.state.js
@@ -36,9 +36,9 @@ angular
         }
     });
 }])
-.run(['$rootScope', '$state', 'Auth', 'IgniteTerms', function($root, $state, Auth, IgniteTerms) {
+.run(['$rootScope', '$state', 'Auth', 'IgniteBranding', function($root, $state, Auth, branding) {
     $root.$on('$stateChangeStart', function(event, toState) {
-        if (toState.name === IgniteTerms.termsState)
+        if (toState.name === branding.termsState)
             return;
 
         if (!Auth.authorized && (toState.name !== 'signin' && !_.startsWith(toState.name, 'password.'))) {

http://git-wip-us.apache.org/repos/asf/ignite/blob/4c23c8e8/modules/control-center-web/src/main/js/public/stylesheets/style.scss
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/public/stylesheets/style.scss b/modules/control-center-web/src/main/js/public/stylesheets/style.scss
index 4f2cf28..500d60c 100644
--- a/modules/control-center-web/src/main/js/public/stylesheets/style.scss
+++ b/modules/control-center-web/src/main/js/public/stylesheets/style.scss
@@ -95,6 +95,10 @@ hr {
     font-size: 22px;
 }
 
+.theme-line .footer {
+    text-align: center;
+}
+
 ul.navbar-nav, .sidebar-nav {
     li.active > a {
         color: $link-color;

http://git-wip-us.apache.org/repos/asf/ignite/blob/4c23c8e8/modules/control-center-web/src/main/js/views/includes/footer.jade
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/views/includes/footer.jade b/modules/control-center-web/src/main/js/views/includes/footer.jade
index d057835..4ef3bf6 100644
--- a/modules/control-center-web/src/main/js/views/includes/footer.jade
+++ b/modules/control-center-web/src/main/js/views/includes/footer.jade
@@ -17,8 +17,7 @@
 .container.container-footer
     footer
         .col-md-offset-1.col-md-10
-            center(ignite-terms)
-                p(ng-repeat='item in terms.footerRows' ng-bind-html='item')
+            ignite-footer
         .col-md-1
             .pull-right
                 ignite-powered-by-apache

http://git-wip-us.apache.org/repos/asf/ignite/blob/4c23c8e8/modules/control-center-web/src/main/js/views/includes/header.jade
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/views/includes/header.jade b/modules/control-center-web/src/main/js/views/includes/header.jade
index 3ed39b3..b4e095a 100644
--- a/modules/control-center-web/src/main/js/views/includes/header.jade
+++ b/modules/control-center-web/src/main/js/views/includes/header.jade
@@ -20,7 +20,7 @@ header#header.header
     table.container
         tr
             td.col-xs-3.col-sm-3.col-md-2
-                ignite-logo
+                ignite-header-logo
             td(ng-if='$root.user' style='padding-top: 20px')
                 ul.nav.navbar-nav(ignite-sidebar ignite-navbar)
                     li(ng-class='{active: $state.includes("base.configuration")}')

http://git-wip-us.apache.org/repos/asf/ignite/blob/4c23c8e8/modules/control-center-web/src/main/js/views/reset.jade
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/views/reset.jade b/modules/control-center-web/src/main/js/views/reset.jade
index 468a493..e5b8f12 100644
--- a/modules/control-center-web/src/main/js/views/reset.jade
+++ b/modules/control-center-web/src/main/js/views/reset.jade
@@ -18,9 +18,9 @@ header#header.header
     table.container
         tr
             td.col-xs-3.col-sm-3.col-md-2
-                ignite-logo
+                ignite-header-logo
             td
-                ignite-title
+                ignite-header-title
 
 .container.body-container
     .main-content(ng-controller='resetPassword')

http://git-wip-us.apache.org/repos/asf/ignite/blob/4c23c8e8/modules/control-center-web/src/main/js/views/signin.jade
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/views/signin.jade b/modules/control-center-web/src/main/js/views/signin.jade
index 663b77b..9ec8dfd 100644
--- a/modules/control-center-web/src/main/js/views/signin.jade
+++ b/modules/control-center-web/src/main/js/views/signin.jade
@@ -24,9 +24,9 @@ header#header.header
     table.container
         tr
             td.col-xs-3.col-sm-3.col-md-2
-                ignite-logo
+                ignite-header-logo
             td
-                ignite-title
+                ignite-header-title
 
 .container.body-container
     .main-content(ng-controller='auth')
@@ -34,7 +34,7 @@ header#header.header
             .signin-greedy
                 .col-xs-12.col-md-6
                     form(name='form' novalidate)
-                        .modal-body.row(style='padding-bottom: 10px; margin: 0')
+                        .modal-body.row(style='padding: 0 0 10px 0; margin: 0')
                             .settings-row(ng-if='action == "signup"')
                                 h3.login-header Sign Up
                             .settings-row(ng-if='action == "signin"')
@@ -89,11 +89,7 @@ header#header.header
                                 button#login.btn.btn-primary(ng-click='auth(action, user_info)' ng-disabled='form.$invalid') Sign In
 
                     .col-xs-12.col-md-11.home-panel
-                        p Web Console is an interactive management tool which allows to:
-                        ul
-                            li Create and download cluster configurations
-                            li Automatically import domain model from any RDBMS
-                            li Connect to cluster and run SQL analytics on it
+                        ignite-features
                 .col-xs-12.col-md-6
                     #carousel.carousel.slide
                         // Indicators


[05/28] ignite git commit: IGNITE-843 Fixed sql ui.

Posted by ak...@apache.org.
IGNITE-843 Fixed sql ui.


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

Branch: refs/heads/ignite-843-rc3
Commit: 23b94aa02a9c87350d9e327fd29ab111af34d777
Parents: d558cc4
Author: Andrey <an...@gridgain.com>
Authored: Thu Feb 25 11:10:45 2016 +0700
Committer: Andrey <an...@gridgain.com>
Committed: Thu Feb 25 11:10:45 2016 +0700

----------------------------------------------------------------------
 .../src/main/js/views/sql/sql.jade              | 53 ++++++++++----------
 1 file changed, 27 insertions(+), 26 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/23b94aa0/modules/control-center-web/src/main/js/views/sql/sql.jade
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/views/sql/sql.jade b/modules/control-center-web/src/main/js/views/sql/sql.jade
index 8627118..ac7db65 100644
--- a/modules/control-center-web/src/main/js/views/sql/sql.jade
+++ b/modules/control-center-web/src/main/js/views/sql/sql.jade
@@ -42,37 +42,38 @@ mixin chart-settings(mdl)
         .col-xs-4
             +result-toolbar
 
-.row
-    ignite-information(data-title='With SQL notebook you can')
-        ul
-            li Create any number of queries
-            li Execute and explain SQL queries
-            li Execute scan queries
-            li View data in tabular form and as charts
-    ignite-loading
-        .docs-content(ng-controller='sqlController')
-            hr
+.row(ng-controller='sqlController')
+    .docs-content
+        .row(ng-if='notebook' bs-affix style='margin-bottom: 20px;')
+            .docs-header.notebook-header
+                h1.col-sm-6(ng-hide='notebook.edit')
+                    label(style='max-width: calc(100% - 60px)') {{notebook.name}}
+                    .btn-group(ng-if='!demo')
+                        +btn-toolbar('fa-pencil', 'notebook.edit = true;notebook.editName = notebook.name', 'Rename notebook')
+                        +btn-toolbar('fa-trash', 'removeNotebook()', 'Remove notebook')
+                h1.col-sm-6(ng-show='notebook.edit')
+                    i.btn.fa.fa-floppy-o(ng-show='notebook.editName' ng-click='renameNotebook(notebook.editName)' bs-tooltip data-title='Save notebook name' data-trigger='hover')
+                    .input-tip
+                        input.form-control(ng-model='notebook.editName' required on-enter='renameNotebook(notebook.editName)' on-escape='notebook.edit = false;')
+                h1.pull-right
+                    a.dropdown-toggle(data-toggle='dropdown' bs-dropdown='scrollParagraphs' data-placement='bottom-right') Scroll to query
+                        span.caret
+                    .btn-group(style='margin-top: 2px')
+                        +btn-toolbar('fa-plus', 'addParagraph()', 'Add new query')
+
+        ignite-information(data-title='With SQL notebook you can' style='margin-top: 0; margin-bottom: 30px')
+            ul
+                li Create any number of queries
+                li Execute and explain SQL queries
+                li Execute scan queries
+                li View data in tabular form and as charts
+
+        ignite-loading
             div(ng-if='notebookLoadFailed' style='text-align: center')
                 h2 Failed to load notebook
                 label.col-sm-12 Notebook not accessible any more. Go back to configuration or open to another notebook.
                 button.h3.btn.btn-primary(ui-sref='base.configuration.clusters') Back to configuration
             div(ng-if='notebook')
-                .row(bs-affix style='margin-bottom: 10px')
-                    .docs-header.notebook-header
-                        h1.col-sm-6(ng-hide='notebook.edit')
-                            label(style='max-width: calc(100% - 60px)') {{notebook.name}}
-                            .btn-group(ng-if='!demo')
-                                +btn-toolbar('fa-pencil', 'notebook.edit = true;notebook.editName = notebook.name', 'Rename notebook')
-                                +btn-toolbar('fa-trash', 'removeNotebook()', 'Remove notebook')
-                        h1.col-sm-6(ng-show='notebook.edit')
-                            i.btn.fa.fa-floppy-o(ng-show='notebook.editName' ng-click='renameNotebook(notebook.editName)' bs-tooltip data-title='Save notebook name' data-trigger='hover')
-                            .input-tip
-                                input.form-control(ng-model='notebook.editName' required on-enter='renameNotebook(notebook.editName)' on-escape='notebook.edit = false;')
-                        h1.pull-right
-                            a.dropdown-toggle(data-toggle='dropdown' bs-dropdown='scrollParagraphs' data-placement='bottom-right') Scroll to query
-                                span.caret
-                            .btn-group(style='margin-top: 2px')
-                                +btn-toolbar('fa-plus', 'addParagraph()', 'Add new query')
                 .docs-body.paragraphs
                     .panel-group(bs-collapse ng-model='notebook.expandedParagraphs' data-allow-multiple='true' data-start-collapsed='false')
                         .panel.panel-default(ng-repeat='paragraph in notebook.paragraphs')


[10/28] ignite git commit: IGNITE-843 Fixed speed of very large data (more than 300 domains and caches) + lazy init.

Posted by ak...@apache.org.
IGNITE-843 Fixed speed of very large data (more than 300 domains and caches) + lazy init.


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

Branch: refs/heads/ignite-843-rc3
Commit: 711086a4e517526f0cb7d82d3e73d69dcda2a7c0
Parents: 2d178a5
Author: Dmitriyff <dm...@gmail.com>
Authored: Thu Feb 25 18:59:40 2016 +0700
Committer: Alexey Kuznetsov <ak...@apache.org>
Committed: Thu Feb 25 18:59:40 2016 +0700

----------------------------------------------------------------------
 .../main/js/app/filters/byName/byName.filter.js | 23 +++++++++++
 .../control-center-web/src/main/js/app/index.js |  2 +
 .../configuration/summary/summary.controller.js |  9 +++--
 .../main/js/views/configuration/summary.jade    | 41 ++++++++++++++------
 4 files changed, 60 insertions(+), 15 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/711086a4/modules/control-center-web/src/main/js/app/filters/byName/byName.filter.js
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/app/filters/byName/byName.filter.js b/modules/control-center-web/src/main/js/app/filters/byName/byName.filter.js
new file mode 100644
index 0000000..3b0746f
--- /dev/null
+++ b/modules/control-center-web/src/main/js/app/filters/byName/byName.filter.js
@@ -0,0 +1,23 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+export default ['byName', [() => (arr, search) => {
+    if (!(arr && arr.length) || !search)
+        return arr;
+
+    return _.filter(arr, ({ name }) => name.indexOf(search) >= 0);
+}]];

http://git-wip-us.apache.org/repos/asf/ignite/blob/711086a4/modules/control-center-web/src/main/js/app/index.js
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/app/index.js b/modules/control-center-web/src/main/js/app/index.js
index eb76256..25ea53f 100644
--- a/modules/control-center-web/src/main/js/app/index.js
+++ b/modules/control-center-web/src/main/js/app/index.js
@@ -102,6 +102,7 @@ import IgniteCountries from './services/Countries/Countries.service';
 
 // Filters.
 import hasPojo from './filters/hasPojo/hasPojo.filter';
+import byName from './filters/byName/byName.filter';
 
 angular
 .module('ignite-console', [
@@ -149,6 +150,7 @@ angular
 // Providers.
 // Filters.
 .filter(...hasPojo)
+.filter(...byName)
 .config(['$stateProvider', '$locationProvider', '$urlRouterProvider', function($stateProvider, $locationProvider, $urlRouterProvider) {
     // Set up the states.
     $stateProvider

http://git-wip-us.apache.org/repos/asf/ignite/blob/711086a4/modules/control-center-web/src/main/js/app/modules/states/configuration/summary/summary.controller.js
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/app/modules/states/configuration/summary/summary.controller.js b/modules/control-center-web/src/main/js/app/modules/states/configuration/summary/summary.controller.js
index adcc467..48d7b83 100644
--- a/modules/control-center-web/src/main/js/app/modules/states/configuration/summary/summary.controller.js
+++ b/modules/control-center-web/src/main/js/app/modules/states/configuration/summary/summary.controller.js
@@ -222,15 +222,18 @@ export default [
             srvCfg.name = cluster.name + '-server.xml';
         };
 
-        const updateTab = (cluster) => {
+        $scope.$watch('cluster', (cluster) => {
             if (!cluster)
                 return;
 
             if (!$filter('hasPojo')(cluster) && $scope.tabsClient.activeTab === 3)
                 $scope.tabsClient.activeTab = 0;
-        };
+        });
 
-        $scope.$watch('cluster', updateTab);
+        $scope.$watch('cluster._id', () => {
+            $scope.tabsClient.init = [];
+            $scope.tabsServer.init = [];
+        });
 
         // TODO IGNITE-2114: implemented as independent logic for download.
         $scope.downloadConfiguration = function() {

http://git-wip-us.apache.org/repos/asf/ignite/blob/711086a4/modules/control-center-web/src/main/js/views/configuration/summary.jade
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/views/configuration/summary.jade b/modules/control-center-web/src/main/js/views/configuration/summary.jade
index efff15c..176c483 100644
--- a/modules/control-center-web/src/main/js/views/configuration/summary.jade
+++ b/modules/control-center-web/src/main/js/views/configuration/summary.jade
@@ -32,10 +32,27 @@ mixin ignite-form-field-tooltip(message)
         .padding-dflt(ng-if='!clusters || clusters.length == 0')
             | You have no clusters configured. Please configure them #[a(ui-sref='base.configuration.clusters') here].
 
-        div(ng-show='clusters || clusters.length > 0')
-            +main-table('clusters', 'clusters', 'clusterName', 'selectItem(row)', '{{$index + 1}}) {{row.name}}', 'name')
+        div(ng-show='clusters && clusters.length > 0')
+            .padding-bottom-dflt
+                table.links
+                    thead
+                        tr
+                            th
+                                lable.labelHeader.labelFormField clusters:
+                                .col-sm-3.pull-right(style='padding: 0')
+                                    input.form-control(type='text' ng-model='clusterName' placeholder='Filter clusters...' value='')
+                    tbody
+                        tr
+                            td
+                                .scrollable-y(ng-show='(clusters | byName:clusterName).length > 0' style='max-height: 200px')
+                                    table
+                                        tbody
+                                            tr(ng-repeat='row in (clusters | byName:clusterName) track by row._id' ignite-bs-affix-update)
+                                                td
+                                                    a(ng-class='{active: row._id == selectedItem._id}' on-click-focus='clusterName' ng-click='selectItem(row)') {{$index + 1}}) {{row.name}}
+                                label.placeholder(ng-show='(clusters | byName:clusterName).length == 0') No clusters found
 
-            div(ng-show='selectedItem && tableVisibleRow(displayedRows, selectedItem)')
+            div(ng-show='selectedItem && (clusters | byName:clusterName).length')
                 .padding-top-dflt(bs-affix)
                     button.btn.btn-primary(id='download' ng-click='downloadConfiguration()' bs-tooltip='' data-title='Download project' data-placement='bottom') Download project
                     .btn.btn-primary(bs-tooltip='' data-title='Preview generated project structure' data-placement='bottom')
@@ -55,13 +72,13 @@ mixin ignite-form-field-tooltip(message)
                             ignite-ui-ace-tabs.summary-tabs
                                 div(bs-tabs data-bs-active-pane="tabsServer.activeTab" template='configuration/summary-tabs.html')
                                     div(bs-pane title='XML')
-                                        ignite-ui-ace-xml(data-cluster='cluster')
+                                        ignite-ui-ace-xml(ng-if='tabsServer.activeTab == 0 || tabsServer.init[0]' ng-init='tabsServer.init[0] = true' data-cluster='cluster')
                                     div(bs-pane title='Java')
-                                        ignite-ui-ace-java(data-cluster='cluster')
+                                        ignite-ui-ace-java(ng-if='tabsServer.activeTab == 1 || tabsServer.init[1]' ng-init='tabsServer.init[1] = true' data-cluster='cluster')
                                     div(bs-pane title='POM')
-                                        ignite-ui-ace-pom(data-cluster='cluster')
+                                        ignite-ui-ace-pom(ng-if='tabsServer.activeTab == 2 || tabsServer.init[2]' ng-init='tabsServer.init[2] = true' data-cluster='cluster')
                                     div(bs-pane title='Dockerfile')
-                                        ignite-ui-ace-docker(data-cluster='cluster' ng-model='ctrl.data.docker')
+                                        ignite-ui-ace-docker(ng-if='tabsServer.activeTab == 3 || tabsServer.init[3]' ng-init='tabsServer.init[3] = true' data-cluster='cluster' ng-model='ctrl.data.docker')
 
                     .panel.panel-default
                         .panel-heading(role='tab' bs-collapse-toggle)
@@ -135,10 +152,10 @@ mixin ignite-form-field-tooltip(message)
                             .summary-tabs(ignite-ui-ace-tabs)
                                 div(bs-tabs data-bs-active-pane="tabsClient.activeTab" template='configuration/summary-tabs.html')
                                     div(bs-pane title='XML')
-                                        ignite-ui-ace-xml(data-cluster='cluster' data-cluster-cfg='#{nearCfg}')
+                                        ignite-ui-ace-xml(ng-if='tabsClient.activeTab == 0 || tabsClient.init[0]' ng-init='tabsClient.init[0] = true' data-cluster='cluster' data-cluster-cfg='#{nearCfg}')
                                     div(bs-pane title='Java')
-                                        ignite-ui-ace-java(data-cluster='cluster' data-cluster-cfg='#{nearCfg}')
+                                        ignite-ui-ace-java(ng-if='tabsClient.activeTab == 1 || tabsClient.init[1]' ng-init='tabsClient.init[1] = true' data-cluster='cluster' data-cluster-cfg='#{nearCfg}')
                                     div(bs-pane title='POM')
-                                        ignite-ui-ace-pom(data-cluster='cluster')
-                                    div(bs-pane title='POJO' ng-show='cluster | hasPojo')
-                                        ignite-ui-ace-pojos(data-cluster='cluster' ng-model='ctrl.data.pojos')
+                                        ignite-ui-ace-pom(ng-if='tabsClient.activeTab == 2 || tabsClient.init[2]' ng-init='tabsClient.init[2] = true' data-cluster='cluster')
+                                    div(bs-pane title='POJO' ng-if='cluster | hasPojo')
+                                        ignite-ui-ace-pojos(ng-if='tabsClient.activeTab == 3 || tabsClient.init[3]' ng-init='tabsClient.init[3] = true' data-cluster='cluster' ng-model='ctrl.data.pojos')