You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by se...@apache.org on 2015/07/24 15:46:12 UTC

[01/16] incubator-ignite git commit: IGNITE-843: Updated screen tips.

Repository: incubator-ignite
Updated Branches:
  refs/heads/ignite-1121 8e050e9fa -> 3e8a935d8


IGNITE-843: Updated screen tips.


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

Branch: refs/heads/ignite-1121
Commit: e4c047051abd838d841373c553e34e425bbc7ac7
Parents: 14fa6f6
Author: AKuznetsov <ak...@gridgain.com>
Authored: Thu Jul 23 15:42:42 2015 +0700
Committer: AKuznetsov <ak...@gridgain.com>
Committed: Thu Jul 23 15:42:42 2015 +0700

----------------------------------------------------------------------
 .../src/main/js/controllers/models/caches.json               | 2 +-
 .../src/main/js/controllers/models/clusters.json             | 2 +-
 .../src/main/js/controllers/models/metadata.json             | 8 ++++----
 .../src/main/js/controllers/models/summary.json              | 2 +-
 4 files changed, 7 insertions(+), 7 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/e4c04705/modules/web-control-center/src/main/js/controllers/models/caches.json
----------------------------------------------------------------------
diff --git a/modules/web-control-center/src/main/js/controllers/models/caches.json b/modules/web-control-center/src/main/js/controllers/models/caches.json
index 0ffc9d4..13c5985 100644
--- a/modules/web-control-center/src/main/js/controllers/models/caches.json
+++ b/modules/web-control-center/src/main/js/controllers/models/caches.json
@@ -1,6 +1,6 @@
 {
   "screenTip": {
-    "workflowTitle": "Use Caches view to:",
+    "workflowTitle": "Use caches view to:",
     "workflowContent": [
       "<ul>",
       "  <li>Configure caches.</li>",

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/e4c04705/modules/web-control-center/src/main/js/controllers/models/clusters.json
----------------------------------------------------------------------
diff --git a/modules/web-control-center/src/main/js/controllers/models/clusters.json b/modules/web-control-center/src/main/js/controllers/models/clusters.json
index d6d7d23..e90094e 100644
--- a/modules/web-control-center/src/main/js/controllers/models/clusters.json
+++ b/modules/web-control-center/src/main/js/controllers/models/clusters.json
@@ -1,6 +1,6 @@
 {
   "screenTip": {
-    "workflowTitle": "Use Clusters view to:",
+    "workflowTitle": "Use clusters view to:",
     "workflowContent": [
       "<ul>",
       "  <li>Configure clusters.</li>",

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/e4c04705/modules/web-control-center/src/main/js/controllers/models/metadata.json
----------------------------------------------------------------------
diff --git a/modules/web-control-center/src/main/js/controllers/models/metadata.json b/modules/web-control-center/src/main/js/controllers/models/metadata.json
index 3248f7a..516fb6e 100644
--- a/modules/web-control-center/src/main/js/controllers/models/metadata.json
+++ b/modules/web-control-center/src/main/js/controllers/models/metadata.json
@@ -1,16 +1,16 @@
 {
   "screenTip": {
-    "workflowTitle": "Use Cache Type Metadata view to:",
+    "workflowTitle": "Use metadata view to:",
     "workflowContent": [
       "<ul>",
-      "  <li>Manually configure metadata for queries and/or store.</li>",
-      "  <li>Configure metadata from database tables metadata.</li>",
+      "  <li>Manually configure metadata for queries and persistence.</li>",
+      "Or",
+      "  <li>Automatically configure metadata from database schema.</li>",
       "</ul>"
     ],
     "whatsNextTitle": "What's next:",
     "whatsNextContent": [
       "<ul>",
-      "  <li>Configure clusters.</li>",
       "  <li>Associate caches with metadata.</li>",
       "  <li>Generate XML and java code on Summary view.</li>",
       "</ul>"

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/e4c04705/modules/web-control-center/src/main/js/controllers/models/summary.json
----------------------------------------------------------------------
diff --git a/modules/web-control-center/src/main/js/controllers/models/summary.json b/modules/web-control-center/src/main/js/controllers/models/summary.json
index 056291c..29edb3d 100644
--- a/modules/web-control-center/src/main/js/controllers/models/summary.json
+++ b/modules/web-control-center/src/main/js/controllers/models/summary.json
@@ -1,6 +1,6 @@
 {
   "screenTip": {
-    "workflowTitle": "Use Summary view to:",
+    "workflowTitle": "Use summary view to:",
     "workflowContent": [
       "<ul>",
       "  <li>See XML and java code for server nodes configurations.</li>",


[02/16] incubator-ignite git commit: IGNITE-843: Fixed remove items from groups.

Posted by se...@apache.org.
IGNITE-843: Fixed remove items from groups.


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

Branch: refs/heads/ignite-1121
Commit: bbee7131543c8f66be954fe8d313aca2e41110a7
Parents: e4c0470
Author: AKuznetsov <ak...@gridgain.com>
Authored: Thu Jul 23 15:43:23 2015 +0700
Committer: AKuznetsov <ak...@gridgain.com>
Committed: Thu Jul 23 15:43:23 2015 +0700

----------------------------------------------------------------------
 .../main/js/controllers/metadata-controller.js  | 22 ++++++++++++++++----
 1 file changed, 18 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/bbee7131/modules/web-control-center/src/main/js/controllers/metadata-controller.js
----------------------------------------------------------------------
diff --git a/modules/web-control-center/src/main/js/controllers/metadata-controller.js b/modules/web-control-center/src/main/js/controllers/metadata-controller.js
index 74ece5c..bf58fe2 100644
--- a/modules/web-control-center/src/main/js/controllers/metadata-controller.js
+++ b/modules/web-control-center/src/main/js/controllers/metadata-controller.js
@@ -552,16 +552,30 @@ controlCenterModule.controller('metadataController', ['$scope', '$http', '$commo
         };
 
         $scope.tableGroupNewItemActive = function (groupIndex) {
-            var groupName = $scope.backupItem.groups[groupIndex].name;
+            var groups = $scope.backupItem.groups;
+
+            if (groups) {
+                var group = groups[groupIndex];
+
+                if (group) {
+                    var groupName = group.name;
+
+                    return $table.tableNewItemActive({model: groupName});
+                }
+            }
 
-            return $table.tableNewItemActive({model: groupName});
+            return false;
         };
 
         $scope.tableGroupItemEditing = function (groupIndex, index) {
             var groups = $scope.backupItem.groups;
 
-            if (groups)
-                return $table.tableEditing({model: groups[groupIndex].name}, index);
+            if (groups) {
+                var group = groups[groupIndex];
+
+                if (group)
+                    return $table.tableEditing({model: group.name}, index);
+            }
 
             return false;
         };


[12/16] incubator-ignite git commit: #ignite-843 Minor fix.

Posted by se...@apache.org.
#ignite-843 Minor fix.


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

Branch: refs/heads/ignite-1121
Commit: 95f54db083cec2429129f79b9de6d180233979ec
Parents: 3c6f5383
Author: Andrey <an...@gridgain.com>
Authored: Fri Jul 24 10:01:10 2015 +0700
Committer: Andrey <an...@gridgain.com>
Committed: Fri Jul 24 10:01:10 2015 +0700

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


http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/95f54db0/modules/web-control-center/src/main/js/views/sql/sql.jade
----------------------------------------------------------------------
diff --git a/modules/web-control-center/src/main/js/views/sql/sql.jade b/modules/web-control-center/src/main/js/views/sql/sql.jade
index 6957be1..864b0d5 100644
--- a/modules/web-control-center/src/main/js/views/sql/sql.jade
+++ b/modules/web-control-center/src/main/js/views/sql/sql.jade
@@ -66,11 +66,9 @@ block container
                                     tr(style='border-size: 0')
                                         td(colspan='{{#{tab}.cols.length}}')
                                             .col-sm-8
-                                                lable Page results:&nbsp;
-                                                b {{#{tab}.rows.length}}&nbsp;&nbsp;&nbsp;
-                                                | Page #:&nbsp;
+                                                lable Page #:&nbsp;
                                                 b {{#{tab}.page}}&nbsp;&nbsp;&nbsp;
-                                                | Total results:&nbsp;
+                                                | Results:&nbsp;
                                                 b {{#{tab}.rows.length + #{tab}.total}}
                                             .col-sm-4
                                                 button.btn.btn-primary.fieldButton(ng-click='') Next page


[06/16] incubator-ignite git commit: Merge remote-tracking branch 'origin/ignite-843' into ignite-843

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


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

Branch: refs/heads/ignite-1121
Commit: f4e3a14f78258561964063a7d097cbc7b14c7937
Parents: c4a6ad5 0631417
Author: AKuznetsov <ak...@gridgain.com>
Authored: Thu Jul 23 16:39:28 2015 +0700
Committer: AKuznetsov <ak...@gridgain.com>
Committed: Thu Jul 23 16:39:28 2015 +0700

----------------------------------------------------------------------
 modules/web-control-center/src/main/js/package.json              | 4 +---
 .../web-control-center/src/main/js/public/stylesheets/style.less | 3 +--
 2 files changed, 2 insertions(+), 5 deletions(-)
----------------------------------------------------------------------



[09/16] incubator-ignite git commit: Merge remote-tracking branch 'origin/ignite-843' into ignite-843

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


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

Branch: refs/heads/ignite-1121
Commit: 698d7792ce6ed7a4626e5a85739fbee81300c973
Parents: 9101d1f e795ef4
Author: Andrey <an...@gridgain.com>
Authored: Thu Jul 23 18:11:37 2015 +0700
Committer: Andrey <an...@gridgain.com>
Committed: Thu Jul 23 18:11:37 2015 +0700

----------------------------------------------------------------------
 .../src/main/js/controllers/models/caches.json  |  6 ++
 .../main/js/controllers/models/clusters.json    |  6 ++
 .../main/js/controllers/models/metadata.json    | 10 ++
 .../src/main/js/views/includes/controls.jade    | 98 ++++++++++----------
 4 files changed, 71 insertions(+), 49 deletions(-)
----------------------------------------------------------------------



[14/16] incubator-ignite git commit: # ignite-843 Minor fix.

Posted by se...@apache.org.
# ignite-843 Minor fix.


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

Branch: refs/heads/ignite-1121
Commit: b6911afe62b4b014c84b811081b4def6cd6e3a2e
Parents: 6b58c47
Author: Andrey <an...@gridgain.com>
Authored: Fri Jul 24 13:45:22 2015 +0700
Committer: Andrey <an...@gridgain.com>
Committed: Fri Jul 24 13:45:22 2015 +0700

----------------------------------------------------------------------
 .../src/main/js/views/configuration/summary.jade          | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/b6911afe/modules/web-control-center/src/main/js/views/configuration/summary.jade
----------------------------------------------------------------------
diff --git a/modules/web-control-center/src/main/js/views/configuration/summary.jade b/modules/web-control-center/src/main/js/views/configuration/summary.jade
index 688f85e..8e19b7c 100644
--- a/modules/web-control-center/src/main/js/views/configuration/summary.jade
+++ b/modules/web-control-center/src/main/js/views/configuration/summary.jade
@@ -46,11 +46,11 @@ block content
             | &nbsp;it.
         .padding-dflt(ng-if='clusters.length > 0')
             lable.labelHeader Clusters:
-                table.links(st-table='clusters')
-                    tbody
-                        tr(ng-repeat='row in clusters track by row._id')
-                            td.col-sm-6(ng-class='{active: row._id == selectedItem._id}')
-                                a(ng-click='selectItem(row)') {{$index + 1}}) {{row.name}}
+            table.links(st-table='clusters')
+                tbody
+                    tr(ng-repeat='row in clusters track by row._id')
+                        td.col-sm-6(ng-class='{active: row._id == selectedItem._id}')
+                            a(ng-click='selectItem(row)') {{$index + 1}}) {{row.name}}
         div(ng-show='selectedItem' role="tab" method='post' action='summary/download')
             .padding-dflt(bs-collapse data-start-collapsed='false')
                 .panel.panel-default


[03/16] incubator-ignite git commit: IGNITE-843: Fixed tooltip trigger for remove button.

Posted by se...@apache.org.
IGNITE-843: Fixed tooltip trigger for remove button.


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

Branch: refs/heads/ignite-1121
Commit: 419dde3a61dc9fcee1a53d62a8f4d510212e0a94
Parents: bbee713
Author: AKuznetsov <ak...@gridgain.com>
Authored: Thu Jul 23 15:43:51 2015 +0700
Committer: AKuznetsov <ak...@gridgain.com>
Committed: Thu Jul 23 15:43:51 2015 +0700

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


http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/419dde3a/modules/web-control-center/src/main/js/views/includes/controls.jade
----------------------------------------------------------------------
diff --git a/modules/web-control-center/src/main/js/views/includes/controls.jade b/modules/web-control-center/src/main/js/views/includes/controls.jade
index d8bf89e..2318370 100644
--- a/modules/web-control-center/src/main/js/views/includes/controls.jade
+++ b/modules/web-control-center/src/main/js/views/includes/controls.jade
@@ -44,7 +44,7 @@ mixin btn-add(click)
     i.tipField.fa.fa-plus(ng-click=click bs-tooltip data-title='Add new item')
 
 mixin btn-remove(click)
-    i.tipField.fa.fa-remove(ng-click=click bs-tooltip data-title='Remove item')
+    i.tipField.fa.fa-remove(ng-click=click bs-tooltip data-title='Remove item' data-trigger='hover')
 
 mixin btn-up(show, click)
     i.tipField.fa.fa-arrow-up(ng-show=show ng-click=click bs-tooltip data-title='Move item up')


[08/16] incubator-ignite git commit: #ignite-843 Backport sql from ignite-1121

Posted by se...@apache.org.
#ignite-843 Backport sql from ignite-1121


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

Branch: refs/heads/ignite-1121
Commit: 9101d1f366cb779d654f9e6dd31711c48748f807
Parents: f4e3a14
Author: Andrey <an...@gridgain.com>
Authored: Thu Jul 23 18:10:55 2015 +0700
Committer: Andrey <an...@gridgain.com>
Committed: Thu Jul 23 18:10:55 2015 +0700

----------------------------------------------------------------------
 .../main/js/controllers/summary-controller.js   |  6 ++
 .../src/main/js/public/stylesheets/style.less   | 39 +++++++++-
 .../src/main/js/routes/public.js                |  4 +-
 .../main/js/views/configuration/summary.jade    | 80 ++++++++++----------
 .../src/main/js/views/includes/header.jade      |  2 +-
 .../src/main/js/views/templates/layout.jade     |  2 +-
 6 files changed, 85 insertions(+), 48 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/9101d1f3/modules/web-control-center/src/main/js/controllers/summary-controller.js
----------------------------------------------------------------------
diff --git a/modules/web-control-center/src/main/js/controllers/summary-controller.js b/modules/web-control-center/src/main/js/controllers/summary-controller.js
index 1291683..531dc83 100644
--- a/modules/web-control-center/src/main/js/controllers/summary-controller.js
+++ b/modules/web-control-center/src/main/js/controllers/summary-controller.js
@@ -52,6 +52,12 @@ controlCenterModule.controller('summaryController', ['$scope', '$http', '$common
         editor.setReadOnly(true);
         editor.setOption("highlightActiveLine", false);
 
+        var renderer = editor.renderer;
+
+        renderer.setHighlightGutterLine(false);
+        renderer.setShowPrintMargin(false);
+        renderer.setOption('fontSize', '14px');
+
         editor.setTheme('ace/theme/chrome');
     };
 

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/9101d1f3/modules/web-control-center/src/main/js/public/stylesheets/style.less
----------------------------------------------------------------------
diff --git a/modules/web-control-center/src/main/js/public/stylesheets/style.less b/modules/web-control-center/src/main/js/public/stylesheets/style.less
index 850fc20..515371c 100644
--- a/modules/web-control-center/src/main/js/public/stylesheets/style.less
+++ b/modules/web-control-center/src/main/js/public/stylesheets/style.less
@@ -594,7 +594,7 @@ h1.ignite-logo {
 }
 
 .greedy {
-  min-height: 200px;
+  min-height: 100%;
   height: ~"calc(100vh - 290px)";
 }
 
@@ -814,6 +814,27 @@ button .caret, .btn .caret {
   }
 }
 
+.theme-line table.sql-results {
+  [class*="col-"] {
+    padding-left: 0 !important;
+    padding-right: 0 !important;
+  }
+
+  td {
+    padding: 3px 6px;
+  }
+
+  > thead > tr > td {
+    padding: 3px 0;
+  }
+
+  thead > tr > th {
+    padding: 3px 6px;
+
+    line-height: @input-height;
+  }
+}
+
 .panel-title a {
   font-size: 14px;
 }
@@ -1062,7 +1083,7 @@ input.ng-dirty.ng-invalid, button.ng-dirty.ng-invalid {
   margin-top: 10px;
 }
 
-.configBox .nav > li > a {
+.nav-tabs > li > a {
   padding: 5px 5px;
 }
 
@@ -1175,7 +1196,19 @@ a {
 }
 
 .ace_editor, #ace_document {
+  margin:  0.65em 0 0 0;
+
   width: 100%;
   height: 400px;
-}
 
+  .ace_gutter {
+    background: transparent !important;
+    border: 1px #ddd;
+    border-right-style: solid;
+  }
+
+  .ace_gutter-cell, .ace_folding-enabled > .ace_gutter-cell {
+    padding-left: 0.65em;
+    padding-right: 0.9em;
+  }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/9101d1f3/modules/web-control-center/src/main/js/routes/public.js
----------------------------------------------------------------------
diff --git a/modules/web-control-center/src/main/js/routes/public.js b/modules/web-control-center/src/main/js/routes/public.js
index 290ba90..b3cb983 100644
--- a/modules/web-control-center/src/main/js/routes/public.js
+++ b/modules/web-control-center/src/main/js/routes/public.js
@@ -24,7 +24,7 @@ router.get('/select', function (req, res) {
     res.render('templates/select', {});
 });
 
-// GET tabs template.
+// GET dynamic tabs template.
 router.get('/tab', function (req, res) {
     res.render('templates/tab', {});
 });
@@ -34,7 +34,7 @@ router.get('/confirm', function (req, res) {
     res.render('templates/confirm', {});
 });
 
-// GET save as dialog.
+// GET copy dialog.
 router.get('/copy', function (req, res) {
     res.render('templates/copy', {});
 });

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/9101d1f3/modules/web-control-center/src/main/js/views/configuration/summary.jade
----------------------------------------------------------------------
diff --git a/modules/web-control-center/src/main/js/views/configuration/summary.jade b/modules/web-control-center/src/main/js/views/configuration/summary.jade
index 6f2f6d8..0370ef4 100644
--- a/modules/web-control-center/src/main/js/views/configuration/summary.jade
+++ b/modules/web-control-center/src/main/js/views/configuration/summary.jade
@@ -63,33 +63,32 @@ block content
                             a(bs-collapse-toggle) Server
                             button.btn.btn-primary.pull-right(type='submit' style='margin-top: -5px') Download
                     .panel-collapse(role="tabpanel" bs-collapse-target)
-                        .panel-body
-                            .configBox(ng-show='selectedItem' bs-tabs)
-                                div(title='<img src="/images/xml.png" width="16px" height="16px"/> XML' bs-pane)
-                                    .configBox(ui-ace='{ onLoad: aceInit, mode: "xml" }' ng-model='xmlServer' style='margin: 0.65em 0;')
-                                div(title='<img src="/images/java.png" width="16px" height="16px"/> Java' bs-pane)
-                                    .settings-row
-                                        .col-sm-1
-                                            label Generate:
-                                        .col-sm-3
-                                            button.form-control(type='button' ng-model='configServer.javaClassServer'  bs-select data-placeholder='{{detail.placeholder}}' bs-options='item.value as item.label for item in javaClassItems' data-sort='false')
-                                    .configBox(ui-ace='{ onLoad: aceInit, mode: "java" }' ng-model='javaServer')
-                                div(title='<img src="/images/docker.png" width="16px" height="16px"/> Dockerfile' bs-pane)
-                                    .settings-row
-                                        p
-                                            +hard-link('https://docs.docker.com/reference/builder', 'Docker')
-                                            | &nbsp;file is a text file with instructions to create Docker image.<br/>
-                                            | To build image you have to store following Docker file with your Ignite XML configuration to the same directory.<br>
-                                            | Also you could use predefined&nbsp;
-                                            +hard-link('https://ignite.incubator.apache.org/download.html#docker', 'Apache Ignite docker image')
-                                            | . For more information about using Ignite with Docker please read&nbsp;
-                                            +hard-link('http://apacheignite.readme.io/docs/docker-deployment', 'documentation')
-                                            |.
-                                        .col-sm-2
-                                            label(for='os') Operation System:
-                                        .col-sm-4
-                                            input#os.form-control(type='text', ng-model='configServer.os' placeholder='debian:8' data-min-length="0" data-html="1" data-auto-select="true" data-animation="am-flip-x" bs-typeahead bs-options='os for os in oss')
-                                    div(ui-ace='{ onLoad: aceInit, mode: "dockerfile" }' ng-model='dockerServer')
+                        div(ng-show='selectedItem' bs-tabs style='margin-top: 0.65em')
+                            div(title='<img src="/images/xml.png" width="16px" height="16px"/> XML' bs-pane)
+                                div(ui-ace='{ onLoad: aceInit, mode: "xml" }' ng-model='xmlServer')
+                            div(title='<img src="/images/java.png" width="16px" height="16px"/> Java' bs-pane)
+                                .details-row
+                                    .col-sm-1
+                                        label Generate:
+                                    .col-sm-3
+                                        button.form-control(type='button' ng-model='configServer.javaClassServer'  bs-select data-placeholder='{{detail.placeholder}}' bs-options='item.value as item.label for item in javaClassItems' data-sort='false')
+                                div(ui-ace='{ onLoad: aceInit, mode: "java" }' ng-model='javaServer')
+                            div(title='<img src="/images/docker.png" width="16px" height="16px"/> Dockerfile' bs-pane)
+                                .details-row
+                                    p
+                                        +hard-link('https://docs.docker.com/reference/builder', 'Docker')
+                                        | &nbsp;file is a text file with instructions to create Docker image.<br/>
+                                        | To build image you have to store following Docker file with your Ignite XML configuration to the same directory.<br>
+                                        | Also you could use predefined&nbsp;
+                                        +hard-link('https://ignite.incubator.apache.org/download.html#docker', 'Apache Ignite docker image')
+                                        | . For more information about using Ignite with Docker please read&nbsp;
+                                        +hard-link('http://apacheignite.readme.io/docs/docker-deployment', 'documentation')
+                                        |.
+                                    .col-sm-2
+                                        label(for='os') Operation System:
+                                    .col-sm-4
+                                        input#os.form-control(type='text', ng-model='configServer.os' placeholder='debian:8' data-min-length="0" data-html="1" data-auto-select="true" data-animation="am-flip-x" bs-typeahead bs-options='os for os in oss')
+                                div(ui-ace='{ onLoad: aceInit, mode: "dockerfile" }' ng-model='dockerServer')
             .padding-dflt(bs-collapse data-start-collapsed='false')
                 .panel.panel-default
                     form.panel-heading(role='tab' method='post' action='summary/download')
@@ -101,17 +100,16 @@ block content
                             a(bs-collapse-toggle) Client
                             button.btn.btn-primary.pull-right(type='submit' style='margin-top: -5px') Download
                     .panel-collapse(role="tabpanel" bs-collapse-target)
-                        .panel-body
-                            div(ng-show='selectedItem')
-                                .settings-row(ng-repeat='field in clientFields')
-                                    +form-row-custom(['col-sm-3'], ['col-sm-3'])
-                                .configBox(bs-tabs)
-                                    div(title='<img src="/images/xml.png" width="16px" height="16px"/> XML' bs-pane)
-                                        .configBox(ui-ace='{ onLoad: aceInit, mode: "xml" }' ng-model='xmlClient' style='margin: 0.65em 0;')
-                                    div(title='<img src="/images/java.png" width="16px" height="16px"/> Java' bs-pane)
-                                        .settings-row
-                                            .col-sm-1
-                                                label Generate:
-                                            .col-sm-4
-                                                button.form-control(type='button' ng-model='backupItem.javaClassClient' bs-select data-placeholder='{{detail.placeholder}}' bs-options='item.value as item.label for item in javaClassItems' data-sort='false')
-                                        div(ui-ace='{ onLoad: aceInit, mode: "java" }' ng-model='javaClient')
+                        div(ng-show='selectedItem')
+                            .details-row(ng-repeat='field in clientFields')
+                                +form-row-custom(['col-sm-3'], ['col-sm-3'])
+                            div(bs-tabs style='margin-top: 0.65em')
+                                div(title='<img src="/images/xml.png" width="16px" height="16px"/> XML' bs-pane)
+                                    div(ui-ace='{ onLoad: aceInit, mode: "xml" }' ng-model='xmlClient')
+                                div(title='<img src="/images/java.png" width="16px" height="16px"/> Java' bs-pane)
+                                    .details-row
+                                        .col-sm-1
+                                            label Generate:
+                                        .col-sm-4
+                                            button.form-control(type='button' ng-model='backupItem.javaClassClient' bs-select data-placeholder='{{detail.placeholder}}' bs-options='item.value as item.label for item in javaClassItems' data-sort='false')
+                                    div(ui-ace='{ onLoad: aceInit, mode: "java" }' ng-model='javaClient')

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/9101d1f3/modules/web-control-center/src/main/js/views/includes/header.jade
----------------------------------------------------------------------
diff --git a/modules/web-control-center/src/main/js/views/includes/header.jade b/modules/web-control-center/src/main/js/views/includes/header.jade
index ab2d31e..bfd5275 100644
--- a/modules/web-control-center/src/main/js/views/includes/header.jade
+++ b/modules/web-control-center/src/main/js/views/includes/header.jade
@@ -29,7 +29,7 @@ header.header(id='header')
             ul.nav.navbar-nav(ng-controller='activeLink' ng-show='user')
                 +header-item('/configuration', '/configuration/clusters', 'Configuration')
                 //+header-item('/monitoring', '/monitoring', 'Monitoring')
-                //+header-item('/sql', '/sql', 'SQL')
+                +header-item('/sql', '/sql', 'SQL')
                 //+header-item('/deploy', '/deploy', 'Deploy')
             ul.nav.navbar-nav.pull-right
                 li(ng-if='user')

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/9101d1f3/modules/web-control-center/src/main/js/views/templates/layout.jade
----------------------------------------------------------------------
diff --git a/modules/web-control-center/src/main/js/views/templates/layout.jade b/modules/web-control-center/src/main/js/views/templates/layout.jade
index a4191ae..8fbcd7e 100644
--- a/modules/web-control-center/src/main/js/views/templates/layout.jade
+++ b/modules/web-control-center/src/main/js/views/templates/layout.jade
@@ -49,7 +49,7 @@ html(ng-app='ignite-web-control-center', ng-init='user = #{JSON.stringify(user)}
             script(src='/common-module.js')
             script(src='/data-structures.js')
 
-    body.theme-line.body-overlap
+    body.theme-line.body-overlap.greedy
         .wrapper
             include ../includes/header
 


[11/16] incubator-ignite git commit: IGNITE-843: Fixed metadata "both" mode.

Posted by se...@apache.org.
IGNITE-843: Fixed metadata "both" mode.


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

Branch: refs/heads/ignite-1121
Commit: 3c6f5383a00f335f965b6e03024e8e132f089bc5
Parents: 07d9499
Author: AKuznetsov <ak...@gridgain.com>
Authored: Thu Jul 23 18:20:25 2015 +0700
Committer: AKuznetsov <ak...@gridgain.com>
Committed: Thu Jul 23 18:20:25 2015 +0700

----------------------------------------------------------------------
 .../src/main/js/controllers/models/metadata.json  | 18 +++++++++---------
 1 file changed, 9 insertions(+), 9 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/3c6f5383/modules/web-control-center/src/main/js/controllers/models/metadata.json
----------------------------------------------------------------------
diff --git a/modules/web-control-center/src/main/js/controllers/models/metadata.json b/modules/web-control-center/src/main/js/controllers/models/metadata.json
index bd6d7a0..b002aeb 100644
--- a/modules/web-control-center/src/main/js/controllers/models/metadata.json
+++ b/modules/web-control-center/src/main/js/controllers/models/metadata.json
@@ -50,7 +50,7 @@
       "label": "Database schema",
       "type": "text",
       "model": "databaseSchema",
-      "hide": "backupItem.kind == 'query'",
+      "hide": "backupItem.kind != 'both' && backupItem.kind == 'query'",
       "placeholder": "Input DB schema name",
       "tip": [
         "Schema name in database."
@@ -60,7 +60,7 @@
       "label": "Database table",
       "type": "text",
       "model": "databaseTable",
-      "hide": "backupItem.kind == 'query'",
+      "hide": "backupItem.kind != 'both' && backupItem.kind == 'query'",
       "placeholder": "Input DB table name",
       "tip": [
         "Table name in database."
@@ -92,7 +92,7 @@
       "model": "keyFields",
       "keyName": "name",
       "valueName": "className",
-      "hide": "backupItem.kind == 'query'",
+      "hide": "backupItem.kind != 'both' && backupItem.kind == 'query'",
       "tip": [
         "Collection of key fields descriptions for CacheJdbcPojoStore."
       ]
@@ -103,7 +103,7 @@
       "model": "valueFields",
       "keyName": "name",
       "valueName": "className",
-      "hide": "backupItem.kind == 'query'",
+      "hide": "backupItem.kind != 'both' && backupItem.kind == 'query'",
       "tip": [
         "Collection of value fields descriptions for CacheJdbcPojoStore.."
       ]
@@ -114,7 +114,7 @@
       "model": "queryFields",
       "keyName": "name",
       "valueName": "className",
-      "hide": "backupItem.kind != 'query'",
+      "hide": "backupItem.kind != 'both' && backupItem.kind != 'query'",
       "addTip": "Add field to query.",
       "removeTip": "Remove field.",
       "tip": [
@@ -127,7 +127,7 @@
       "model": "ascendingFields",
       "keyName": "name",
       "valueName": "className",
-      "hide": "backupItem.kind != 'query'",
+      "hide": "backupItem.kind != 'both' && backupItem.kind != 'query'",
       "addTip": "Add field to index in ascending order.",
       "removeTip": "Remove field.",
       "tip": [
@@ -140,7 +140,7 @@
       "model": "descendingFields",
       "keyName": "name",
       "valueName": "className",
-      "hide": "backupItem.kind != 'query'",
+      "hide": "backupItem.kind != 'both' && backupItem.kind != 'query'",
       "addTip": "Add field to index in descending order.",
       "removeTip": "Remove field.",
       "tip": [
@@ -151,7 +151,7 @@
       "label": "Text fields",
       "type": "table-simple",
       "model": "textFields",
-      "hide": "backupItem.kind != 'query'",
+      "hide": "backupItem.kind != 'both' && backupItem.kind != 'query'",
       "placeholder": "Field name",
       "addTip": "Add field to index as text.",
       "removeTip": "Remove field.",
@@ -166,7 +166,7 @@
       "label": "Groups",
       "type": "queryGroups",
       "model": "groups",
-      "hide": "backupItem.kind != 'query'",
+      "hide": "backupItem.kind != 'both' && backupItem.kind != 'query'",
       "addTip": "Add new group index.",
       "removeTip": "Remove group.",
       "tip": [


[10/16] incubator-ignite git commit: #ignite-843 Backport sql from ignite-1121

Posted by se...@apache.org.
#ignite-843 Backport sql from ignite-1121


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

Branch: refs/heads/ignite-1121
Commit: 07d9499941d78856397c75ebce28fbb7a48935f4
Parents: 698d779
Author: Andrey <an...@gridgain.com>
Authored: Thu Jul 23 18:14:56 2015 +0700
Committer: Andrey <an...@gridgain.com>
Committed: Thu Jul 23 18:14:56 2015 +0700

----------------------------------------------------------------------
 .../src/main/js/controllers/models/sql.json     |  5 ++
 .../src/main/js/controllers/sql-controller.js   | 84 ++++++++++++++++++++
 .../src/main/js/views/sql/sql.jade              | 84 ++++++++++++++++++++
 .../src/main/js/views/templates/tab.jade        | 26 ++++++
 4 files changed, 199 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/07d94999/modules/web-control-center/src/main/js/controllers/models/sql.json
----------------------------------------------------------------------
diff --git a/modules/web-control-center/src/main/js/controllers/models/sql.json b/modules/web-control-center/src/main/js/controllers/models/sql.json
new file mode 100644
index 0000000..bcb03e0
--- /dev/null
+++ b/modules/web-control-center/src/main/js/controllers/models/sql.json
@@ -0,0 +1,5 @@
+{
+  "screenTip": [
+    "Select cache and execute SQL queries."
+  ]
+}

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/07d94999/modules/web-control-center/src/main/js/controllers/sql-controller.js
----------------------------------------------------------------------
diff --git a/modules/web-control-center/src/main/js/controllers/sql-controller.js b/modules/web-control-center/src/main/js/controllers/sql-controller.js
new file mode 100644
index 0000000..12772c6
--- /dev/null
+++ b/modules/web-control-center/src/main/js/controllers/sql-controller.js
@@ -0,0 +1,84 @@
+/*
+ * 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 demoResults = [
+    {
+        id: 256,
+        firstName: 'Ivan',
+        lastName: 'Ivanov'
+    },
+    {
+        id: 384,
+        firstName: 'Sergey',
+        lastName: 'Petrov'
+    },
+    {
+        id: 923,
+        firstName: 'Andrey',
+        lastName: 'Sidorov'
+    }
+];
+
+var demoCaches = [{_id: '1', name: 'Users', mode: 'LOCAL'}, {_id: '2', name: 'Organizations', mode: 'REPLICATED'}, {_id: '3', name: 'Cities', mode: 'PARTITIONED'}];
+
+
+
+controlCenterModule.controller('sqlController', ['$scope', '$http', '$common', function ($scope, $http, $common) {
+    $scope.joinTip = $common.joinTip;
+
+    $scope.pageSizes = [50, 100, 200, 400, 800, 1000];
+
+    $scope.tabs = [
+        {
+            query: "SELECT u.id, u.firstName, u.lastName FROM User u WHERE u.name LIKE 'aaaa'",
+            cols: Object.keys(demoResults[0]),
+            page: 1,
+            hasMore: true,
+            total: 0,
+            rows: demoResults
+        },
+        {query: "SELECT * FROM Organization"}
+    ];
+
+    $scope.addTab = function() {
+        console.log('addTab');
+
+        $scope.tabs.push({query: "SELECT "});
+    };
+
+    $scope.removeTab = function(idx) {
+        console.log('removeTab');
+
+        $scope.tabs.splice(idx, 1);
+    };
+
+    $scope.modes = [
+        {value: 'PARTITIONED', label: 'PARTITIONED'},
+        {value: 'REPLICATED', label: 'REPLICATED'},
+        {value: 'LOCAL', label: 'LOCAL'}
+    ];
+
+    $http.get('/models/sql.json')
+        .success(function (data) {
+            $scope.screenTip = data.screenTip;
+        })
+        .error(function (errMsg) {
+            $common.showError(errMsg);
+        });
+
+    $scope.caches = demoCaches;
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/07d94999/modules/web-control-center/src/main/js/views/sql/sql.jade
----------------------------------------------------------------------
diff --git a/modules/web-control-center/src/main/js/views/sql/sql.jade b/modules/web-control-center/src/main/js/views/sql/sql.jade
new file mode 100644
index 0000000..6957be1
--- /dev/null
+++ b/modules/web-control-center/src/main/js/views/sql/sql.jade
@@ -0,0 +1,84 @@
+//-
+    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.
+extends ../templates/layout
+
+append scripts
+    script(src='/sql-controller.js')
+
+    script(src='//cdnjs.cloudflare.com/ajax/libs/ace/1.2.0/theme-chrome.js')
+    script(src='//cdnjs.cloudflare.com/ajax/libs/ace/1.2.0/mode-sql.js')
+    script(src='//cdnjs.cloudflare.com/ajax/libs/ace/1.2.0/ext-language_tools.js')
+
+block container
+    .row
+        .col-sm-12
+            .docs-content
+                .docs-header
+                    h1 Connect to Ignite and Execute SQL Queries
+                    hr
+                .docs-body(ng-controller='sqlController')
+                    - var tab = 'tabs[tabs.activeIdx]'
+
+                    .block-callout-parent.block-callout-border.margin-bottom-dflt
+                        .block-callout
+                            p(ng-bind-html='joinTip(screenTip)')
+                    .tabs-below(bs-tabs bs-active-pane='tabs.activeIdx' data-template='/tab')
+                        div(ng-repeat='tab in tabs' title='Query' bs-pane)
+                    .row
+                        .col-sm-9(style='border-right: 1px solid #eee')
+                            div(style='height: 200px' ui-ace='{ theme: "chrome", mode: "sql",' +
+                                'require: ["ace/ext/language_tools"],' +
+                                'rendererOptions: {showPrintMargin: false, highlightGutterLine: false, fontSize: 14},' +
+                                'advanced: {enableSnippets: false, enableBasicAutocompletion: true, enableLiveAutocompletion: true}}' ng-model='#{tab}.query')
+                        .col-sm-3
+                            .links(ng-hide='caches.length == 0' style='margin-top: 0.65em')
+                                lable.labelHeader Caches:
+                                table(st-table='caches')
+                                    tbody
+                                        tr(ng-repeat='row in caches track by row._id')
+                                            td.col-sm-6(ng-class='{active: row._id == #{tab}.selectedItem._id}')
+                                                a(ng-click='#{tab}.selectedItem = row') {{$index + 1}}) {{row.name}}, {{row.mode | displayValue:modes:'Cache mode not set'}}
+                    hr(style='margin: 0')
+                    .settings-row
+                        label Page Size:&nbsp;
+                        button.btn.btn-default.base-control(ng-init='pageSize = pageSizes[0]' ng-model='pageSize' bs-options='item for item in pageSizes' bs-select)
+                    .settings-row
+                        button.btn.btn-primary(ng-click='') Explain
+                        button.btn.btn-primary(ng-click='') Execute
+                        button.btn.btn-primary(ng-click='' disabled) Scan
+
+                    div(ng-show='#{tab}.rows.length > 0' style='margin-top: 0.65em')
+                        hr
+                        div
+                            table.table.table-striped.col-sm-12.sql-results(st-table='rows' st-safe-src='#{tab}.rows')
+                                thead
+                                    tr(style='border-size: 0')
+                                        td(colspan='{{#{tab}.cols.length}}')
+                                            .col-sm-8
+                                                lable Page results:&nbsp;
+                                                b {{#{tab}.rows.length}}&nbsp;&nbsp;&nbsp;
+                                                | Page #:&nbsp;
+                                                b {{#{tab}.page}}&nbsp;&nbsp;&nbsp;
+                                                | Total results:&nbsp;
+                                                b {{#{tab}.rows.length + #{tab}.total}}
+                                            .col-sm-4
+                                                button.btn.btn-primary.fieldButton(ng-click='') Next page
+                                                .input-tip
+                                                    input.form-control(type='text' st-search='' placeholder='Filter...')
+
+                                    tr
+                                        th(ng-repeat='column in #{tab}.cols' st-sort='{{column}}') {{column}}
+                                tbody
+                                    tr(ng-repeat='row in rows')
+                                        td(ng-repeat="column in #{tab}.cols") {{row[column]}}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/07d94999/modules/web-control-center/src/main/js/views/templates/tab.jade
----------------------------------------------------------------------
diff --git a/modules/web-control-center/src/main/js/views/templates/tab.jade b/modules/web-control-center/src/main/js/views/templates/tab.jade
new file mode 100644
index 0000000..518c870
--- /dev/null
+++ b/modules/web-control-center/src/main/js/views/templates/tab.jade
@@ -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.
+
+ul.nav(ng-class='$navClass', role='tablist')
+    li(role='presentation', ng-repeat='$pane in $panes track by $index', ng-class="[ $isActive($pane, $index) ? $activeClass : '', $pane.disabled ? 'disabled' : '' ]")
+        a(ng-if='$index == 0' role='tab', data-toggle='tab', ng-click='!$pane.disabled && $setActive($pane.name || $index)', data-index='{{ $index }}', aria-controls='$pane.title') {{$pane.title}}
+            i.fa.fa-remove(ng-click='removeTab($index)' ng-if='$index > 0' style='margin-left: 5px')
+        a(ng-if='$index > 0' role='tab', data-toggle='tab', ng-click='!$pane.disabled && $setActive($pane.name || $index)', data-index='{{ $index }}', aria-controls='$pane.title') {{$pane.title}}: {{$index}}
+            i.fa.fa-remove(ng-click='removeTab($index)' style='margin-left: 5px')
+    li.pull-right(bs-tooltip data-title='Add new query')
+        a(role='tab', data-toggle='tab' ng-click='addTab()')
+            i.fa.fa-plus
+.tab-content(ng-transclude)


[13/16] incubator-ignite git commit: # ignite-843 Moved from less to sass.

Posted by se...@apache.org.
# ignite-843 Moved from less to sass.


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

Branch: refs/heads/ignite-1121
Commit: 6b58c47db04cb0671e8be1e62472a0db6f746e44
Parents: 95f54db
Author: Andrey <an...@gridgain.com>
Authored: Fri Jul 24 13:17:58 2015 +0700
Committer: Andrey <an...@gridgain.com>
Committed: Fri Jul 24 13:17:58 2015 +0700

----------------------------------------------------------------------
 modules/web-control-center/src/main/js/app.js   |   10 +-
 .../web-control-center/src/main/js/package.json |    2 +-
 .../src/main/js/public/stylesheets/style.less   | 1214 -----------------
 .../src/main/js/public/stylesheets/style.scss   | 1270 ++++++++++++++++++
 .../src/main/js/views/configuration/caches.jade |    4 +-
 .../main/js/views/configuration/clusters.jade   |    4 +-
 .../main/js/views/configuration/metadata.jade   |    4 +-
 .../main/js/views/configuration/summary.jade    |    3 +-
 .../src/main/js/views/sql/sql.jade              |    7 +-
 9 files changed, 1289 insertions(+), 1229 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/6b58c47d/modules/web-control-center/src/main/js/app.js
----------------------------------------------------------------------
diff --git a/modules/web-control-center/src/main/js/app.js b/modules/web-control-center/src/main/js/app.js
index 8c347db..a67afc8 100644
--- a/modules/web-control-center/src/main/js/app.js
+++ b/modules/web-control-center/src/main/js/app.js
@@ -52,10 +52,12 @@ app.use(logger('dev'));
 app.use(bodyParser.json());
 app.use(bodyParser.urlencoded({extended: false}));
 
-app.use(require('less-middleware')(path.join(__dirname, 'public'), {
-    render: {
-        compress: false
-    }
+app.use(require('node-sass-middleware')({
+    /* Options */
+    src: path.join(__dirname, 'public'),
+    dest: path.join(__dirname, 'public'),
+    debug: true,
+    outputStyle: 'nested'
 }));
 
 app.use(express.static(path.join(__dirname, 'public')));

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/6b58c47d/modules/web-control-center/src/main/js/package.json
----------------------------------------------------------------------
diff --git a/modules/web-control-center/src/main/js/package.json b/modules/web-control-center/src/main/js/package.json
index 7295755..ed06004 100644
--- a/modules/web-control-center/src/main/js/package.json
+++ b/modules/web-control-center/src/main/js/package.json
@@ -30,10 +30,10 @@
     "express": "~4.12.2",
     "express-session": "^1.11.1",
     "jade": "~1.9.2",
-    "less-middleware": "1.0.x",
     "lodash": "3.10.0",
     "mongoose": "^4.0.2",
     "nconf": "^0.7.1",
+    "node-sass-middleware": "^0.9.0",
     "passport": "^0.2.1",
     "passport-local": "^1.0.0",
     "passport-local-mongoose": "^1.0.0",

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/6b58c47d/modules/web-control-center/src/main/js/public/stylesheets/style.less
----------------------------------------------------------------------
diff --git a/modules/web-control-center/src/main/js/public/stylesheets/style.less b/modules/web-control-center/src/main/js/public/stylesheets/style.less
deleted file mode 100644
index 515371c..0000000
--- a/modules/web-control-center/src/main/js/public/stylesheets/style.less
+++ /dev/null
@@ -1,1214 +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.
- */
-
-@logo-path: "https://www.filepicker.io/api/file/QagunjDGRFul2JgNCAli";
-@input-height: 28px;
-@ignite-red: #ec1c24;
-@ignite-block-callout-background: #f3f8f3;
-@ignite-block-callout: #50af51;
-
-hr {
-  margin-top: 20px;
-  margin-bottom: 20px;
-}
-
-.main-header .logo {
-  height: auto;
-}
-
-.main-sidebar {
-  padding-top: 60px;
-}
-
-.navbar-default .navbar-brand, .navbar-default .navbar-brand:hover {
-  position: absolute;
-  width: 100%;
-  left: 0;
-  text-align: center;
-}
-
-.modal-backdrop.am-fade {
-  opacity: .5;
-  transition: opacity .15s linear;
-  &.ng-enter {
-    opacity: 0;
-    &.ng-enter-active {
-      opacity: .5;
-    }
-  }
-  &.ng-leave {
-    opacity: .5;
-    &.ng-leave-active {
-      opacity: 0;
-    }
-  }
-}
-
-.modal.center .modal-dialog {
-  position: fixed;
-  top: 50%;
-  left: 50%;
-  -webkit-transform: translateX(-50%) translateY(-50%);
-  transform: translateX(-50%) translateY(-50%);
-}
-
-.border-left {
-  box-shadow: 1px 0 0 0 #eee inset;
-}
-
-.border-right {
-  box-shadow: 1px 0 0 0 #eee;
-}
-
-.theme-line {
-  background-color: #f9f9f9;
-}
-
-.theme-line header {
-  background-color: #fff;
-}
-
-.theme-line header a.btn {
-  border: 0 none;
-  padding: 10px 25px;
-  background-color: rgba(0, 0, 0, 0.15);
-}
-
-.theme-line header a.btn:hover {
-  background-color: rgba(0, 0, 0, 0.25);
-}
-
-.theme-line header a.btn.btn-link {
-  background: transparent;
-  color: rgba(255, 255, 255, 0.8);
-}
-
-.theme-line header a.btn.btn-link:hover {
-  color: #fff;
-  text-decoration: none;
-}
-
-.theme-line .navbar-nav a {
-  background-color: transparent;
-}
-
-.theme-line .navbar-nav a:hover,
-.theme-line .navbar-nav a:active,
-.theme-line .navbar-nav a:focus {
-  background-color: transparent;
-}
-
-.theme-line .main-links {
-  padding-top: 50px;
-}
-
-.theme-line .main-links h3 {
-  margin-top: 0;
-  font-size: 17px;
-}
-
-.theme-line .main-links .links a {
-  color: #888;
-}
-
-.theme-line .main-links .links a:hover {
-  text-decoration: none;
-}
-
-.theme-line #category-columns,
-.theme-solid #category-columns {
-  margin: 50px 30px 0;
-}
-
-.theme-line #category-columns h4 {
-  text-transform: uppercase;
-  font-weight: 300;
-  color: #999;
-  font-size: 14px;
-}
-
-.theme-line #category-columns ul {
-  list-style: none;
-  padding: 0;
-  margin-bottom: 15px;
-}
-
-.theme-line #category-columns ul li a {
-  padding: 5px 0;
-  display: block;
-  font-size: 16px;
-}
-
-.theme-line #category-columns ul .view-all {
-  font-size: 0.85em;
-}
-
-.theme-line .docs-header {
-  color: #999;
-  overflow: hidden;
-}
-
-.theme-line .docs-header h1 {
-  color: #444;
-  margin-top: 0;
-  font-size: 22px;
-}
-
-.theme-line .btn-primary {
-  border: 0 none;
-  background-color: @ignite-red;
-}
-
-.theme-line .btn-primary:hover {
-  background-color: #950d12;
-}
-
-.theme-line .main-content .nav-horizontal a {
-  box-shadow: 0 0;
-  border: 0 none;
-  background-color: #fff;
-  border-radius: 0;
-  color: #aaa;
-  padding: 6px;
-  margin: 0 14px;
-}
-
-.theme-line .main-content .nav-horizontal a:hover {
-  color: #999;
-  border-bottom: 5px solid #ddd;
-}
-
-.theme-line .main-content .nav-horizontal a.active {
-  border-bottom: 5px solid #888;
-}
-
-.theme-line .navbar-nav, .theme-line .sidebar-nav {
-  ul li > a.active {
-    cursor: default;
-    pointer-events: none;
-  }
-}
-
-.theme-line .sidebar-nav {
-  color: #474a54;
-  padding-bottom: 30px;
-
-  ul {
-    padding: 0;
-    list-style: none;
-    font-size: 14px;
-    margin: 3px 0 0;
-    li {
-      color: #666;
-      line-height: @input-height;
-
-      span.fa-stack {
-        margin-right: 5px;
-        font-size: 12px;
-        height: 26px;
-      }
-
-      a {
-        font-size: 18px;
-        color: #666;
-        position: relative;
-        white-space: nowrap;
-        overflow: hidden;
-        -o-text-overflow: ellipsis;
-        text-overflow: ellipsis;
-      }
-    }
-  }
-}
-
-.theme-line .sidebar-nav ul li a:hover {
-  text-decoration: none;
-}
-
-.theme-line .select,
-.theme-line .typeahead {
-  li a {
-    color: #666;
-    background-color: transparent;
-  }
-
-  li a:hover {
-    color: @ignite-red;
-  }
-
-  .active {
-    background-color: #eee;
-  }
-}
-
-.theme-line .sidebar-nav ul li .subcategory {
-  padding-left: 15px;
-}
-
-.theme-line .sidebar-nav h4 {
-  margin-top: 2em;
-  font-weight: normal;
-  text-transform: uppercase;
-  font-size: 11px;
-  margin-bottom: 10px;
-  color: #bbb;
-}
-
-.theme-line .sidebar-nav h4:first-child {
-  margin-top: 0;
-}
-
-.theme-line .sidebar-nav .ask {
-  width: 100%;
-  text-align: center;
-  padding: 10px;
-}
-
-.theme-line .border-left .sidebar-nav {
-  padding-left: 15px;
-}
-
-.theme-line .suggest {
-  padding: 5px;
-  display: inline-block;
-  font-size: 12px;
-}
-
-.header {
-  padding: 15px;
-}
-
-.header .has-github {
-  padding-right: 136px;
-}
-
-.header h1.navbar-brand {
-  height: 40px;
-  width: 200px;
-  padding: 0;
-  margin: 5px 15px 0 0;
-}
-
-.header h1.navbar-brand a {
-  text-indent: -99999px;
-  background: no-repeat center center;
-  display: block;
-  width: 100%;
-  height: 100%;
-  background-size: contain;
-}
-
-.header .nav.navbar-nav.pull-right {
-  position: relative;
-  right: -30px;
-}
-
-.header .nav.navbar-nav .not-link {
-  padding: 15px;
-  display: inline-block;
-}
-
-.header .nav.navbar-nav .stable,
-.header .nav.navbar-nav .beta,
-.header .nav.navbar-nav .private {
-  font-size: 9px;
-  padding: 3px 5px;
-  display: inline-block;
-  line-height: 8px;
-  border-radius: 3px;
-  margin-left: 6px;
-  color: #fff;
-  top: -2px;
-  position: relative;
-  opacity: 0.6;
-  -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=60)";
-  filter: alpha(opacity=60);
-}
-
-.header .nav.navbar-nav a:hover > .stable,
-.header .nav.navbar-nav a:hover > .beta,
-.header .nav.navbar-nav a:hover > .private {
-  opacity: 1;
-  -ms-filter: none;
-  filter: none;
-}
-
-.header .nav.navbar-nav .beta {
-  background-color: #59c3d1;
-}
-
-.header .nav.navbar-nav .stable {
-  background-color: #41b841;
-}
-
-.header .nav.navbar-nav .private {
-  background-color: #333;
-}
-
-.theme-line header {
-  border-bottom: 8px solid;
-}
-
-.theme-line header h2 {
-  color: #aaa;
-}
-
-.theme-line header p {
-  color: #666;
-}
-
-.theme-line header {
-  border-bottom-color: @ignite-red;
-}
-
-.theme-line .navbar-nav {
-  color: #888;
-}
-
-.theme-line .navbar-nav a {
-  color: #bbb;
-}
-
-.theme-line header a.btn {
-  background-color: @ignite-red;
-}
-
-.theme-line header a.btn:hover {
-  background-color: #950d12;
-}
-
-.theme-line header .navbar-nav .tt-cursor {
-  background-color: @ignite-red;
-}
-
-.theme-line header .navbar-nav a:hover, .theme-line header .navbar-nav .open > a {
-  color: @ignite-red;
-}
-
-.theme-line .navbar-nav .active a {
-  //font-weight: bold;
-  color: @ignite-red;
-}
-
-.theme-line .navbar-nav .active a:hover {
-  color: #950d12;
-}
-
-.theme-line .main-links .links a:hover {
-  color: @ignite-red;
-}
-
-.theme-line .main-content a {
-  color: #666;
-}
-
-.theme-line .main-content a:hover {
-  color: #950d12;
-}
-
-.theme-line .sidebar-nav ul li a.active:before {
-  background-color: @ignite-red;
-}
-
-.theme-line .sidebar-nav ul li a.active {
-  color: @ignite-red;
-}
-
-.theme-line .sidebar-nav ul li a:hover, .theme-line .sidebar-nav ul li a.active:hover {
-  color: #950d12;
-}
-
-.theme-line .main-content .nav-horizontal a.active {
-  border-color: @ignite-red;
-  color: @ignite-red;
-}
-
-.theme-line .main-content .nav-horizontal a:hover {
-  color: #950d12;
-}
-
-.theme-line .main-content .nav-horizontal a.active:hover {
-  border-color: #950d12;
-}
-
-.theme-line header .navbar-nav a.active, .theme-line #versions-list li a:hover strong, .theme-line #versions-list li a.active .current, .theme-line #versions-list li a:active .current {
-  color: @ignite-red;
-}
-
-.theme-line header .navbar-nav a {
-  font-size: 18px;
-}
-
-.theme-line.body-threes .section-right .threes-nav .btn-default:hover, .theme-line.page-docs.body-threes .section-right .threes-nav .pull-right a:hover {
-  color: @ignite-red;
-  border-color: @ignite-red;
-}
-
-.theme-line .section-right {
-  padding-left: 30px;
-}
-
-.body-overlap .main-content {
-  margin-top: 30px;
-}
-
-.body-box .main-content,
-.body-overlap .main-content {
-  padding: 30px;
-  box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.1);
-  background-color: #fff;
-}
-
-body {
-  font-weight: 400;
-  font-family: Roboto Slab, serif;;
-}
-
-h1, h2, h3, h4, h5, h6 {
-  font-weight: 700;
-  font-family: Roboto Slab, serif;
-  margin-bottom: 10px;
-}
-
-.submit-vote.submit-vote-parent.voted a.submit-vote-button, .submit-vote.submit-vote-parent a.submit-vote-button:hover {
-  background-color: @ignite-red;
-}
-
-div.submit-vote.submit-vote-parent.voted a.submit-vote-button:hover {
-  background-color: #950d12;
-}
-
-a, .link .title {
-  color: @ignite-red;
-}
-
-a:hover, .link:hover .title {
-  color: #950d12;
-}
-
-.header h1.navbar-brand a {
-  background-image: url("@{logo-path}");
-}
-
-.header h1.navbar-brand {
-  width: 96px;
-}
-
-.block-edit-parameters {
-  text-align: right;
-  padding-bottom: 5px;
-}
-
-.container-footer {
-  margin-top: 20px;
-}
-
-/* Modal */
-.modal {
-  display: block;
-  overflow: hidden;
-}
-
-.modal .close {
-  position: absolute;
-  top: 10px;
-  right: 10px;
-  float: none;
-}
-
-// Close icon
-.modal-header .close {
-  margin-right: -2px;
-}
-
-.modal .modal-dialog {
-  width: 610px;
-}
-
-.modal .modal-content {
-  border-radius: 0;
-  background-color: #f7f7f7;
-}
-
-.modal .modal-content .modal-header {
-  background-color: #fff;
-  text-align: center;
-  color: #555;
-  padding: 15px;
-  font-family: "myriad-pro", sans-serif;
-}
-
-.modal .modal-content .modal-header h4 {
-  font-family: "myriad-pro", sans-serif;
-  font-size: 22px;
-}
-
-.modal .modal-content .modal-header h4 .fa {
-  display: block;
-  font-size: 41px;
-  color: #ddd;
-  margin-bottom: 5px;
-}
-
-.modal .modal-content .modal-header p {
-  color: #aaa;
-  font-size: 1em;
-  margin: 3px 0 0;
-}
-
-.modal .modal-content .modal-spacer {
-  padding: 10px 10px 0 10px;
-}
-
-.modal .modal-content .modal-footer {
-  margin-top: 0;
-}
-
-.modal-body {
-  padding-top: 15px;
-}
-
-h1.ignite-logo {
-  background-image: url("@{logo-path}");
-}
-
-.block-display-image img {
-  max-width: 100%;
-  max-height: 450px;
-  margin: auto;
-  display: block;
-}
-
-.greedy {
-  min-height: 100%;
-  height: ~"calc(100vh - 290px)";
-}
-
-@media (min-width: 768px) {
-  .navbar-nav > li > a {
-    padding-top: 18px;
-    padding-bottom: 10px;
-  }
-}
-
-.details-row {
-  padding: 0 10px;
-}
-
-.details-row, .settings-row {
-  display: block;
-  margin: 10px 0;
-
-  label.table-header {
-    line-height: @input-height;
-  }
-
-  [class*="col-"] {
-    display: inline-block;
-    vertical-align: middle;
-    float: none;
-
-    padding-left: 0 !important;
-    padding-right: 0 !important;
-  }
-
-  input[type="checkbox"] {
-    line-height: 20px;
-    margin-right: 5px;
-  }
-
-  .checkbox label {
-    line-height: 20px;
-    vertical-align: middle;
-  }
-}
-
-button {
-  margin-right: 5px;
-}
-
-h1,
-h2,
-h3 {
-  user-select: none;
-  font-weight: normal;
-  /* Makes the vertical size of the text the same for all fonts. */
-  line-height: 1;
-}
-
-h3 {
-  color: black;
-  font-size: 1.2em;
-  margin-top: 0;
-  margin-bottom: 1.5em;
-}
-
-table tr:hover {
-  cursor: pointer;
-}
-
-.btn {
-  padding: 3px 6px;
-}
-
-button .caret, .btn .caret {
-  float: right;
-  margin-left: 5px;
-  margin-top: 7px;
-}
-
-.base-control {
-  text-align: left;
-  padding: 3px 3px;
-  height: @input-height;
-}
-
-.form-control:extend(.base-control all) {
-  display: inline-block;
-
-  button {
-    text-align: left;
-  }
-}
-
-.theme-line .panel-heading {
-  padding: 10px 10px;
-  margin: 0;
-
-  h3 {
-    margin-bottom: 0;
-  }
-
-  h3 > a {
-    color: black;
-  }
-}
-
-.theme-line .panel-title {
-  a {
-    color: @ignite-red;
-  }
-
-  h3 {
-    margin-bottom: 20px;
-  }
-}
-
-.theme-line .panel-body {
-  padding: 10px 20px;
-}
-
-.theme-line .main-content a.customize {
-  margin-left: 5px;
-  color: @ignite-red;
-}
-
-.theme-line .panel-collapse {
-  margin: 0;
-}
-
-.theme-line .links table {
-  display: table;
-  table-layout: fixed;
-
-  td {
-    padding-left: 18px;
-  }
-
-  .active a {
-    color: @ignite-red;
-    font-weight: bold;
-  }
-
-  a:hover {
-    color: #950d12;
-  }
-
-  a {
-    color: #666;
-  }
-}
-
-.theme-line table.links-edit:extend(.theme-line .links table all) {
-  margin-top: 5px;
-  margin-bottom: 5px;
-
-  label {
-    line-height: @input-height;
-    color: #666;
-  }
-}
-
-.theme-line table.links-edit-details:extend(.theme-line .links table all) {
-  margin-bottom: 10px;
-
-  label {
-    line-height: @input-height;
-    color: #666;
-  }
-
-  td {
-    padding: 0;
-
-    .input-tip {
-      padding: 0;
-    }
-  }
-}
-
-.theme-line table.admin {
-  tr:hover {
-    cursor: default;
-  }
-
-  thead > tr th.header {
-    padding: 0 0 10px;
-
-    div {
-      padding: 0
-    }
-  }
-
-  margin-bottom: 10px;
-
-  label {
-    line-height: @input-height;
-    color: #666;
-  }
-
-  thead > tr th, td {
-    padding: 10px 10px;
-
-    .input-tip {
-      padding: 0;
-    }
-  }
-
-  tfoot > tr > td {
-    padding: 0;
-
-    .pagination {
-      margin: 10px 0;
-
-      > .active > a {
-        color: @ignite-red;
-        font-weight: bold;
-        border-color: #ddd;
-        background-color: #eee;
-      }
-    }
-  }
-}
-
-.theme-line table.sql-results {
-  [class*="col-"] {
-    padding-left: 0 !important;
-    padding-right: 0 !important;
-  }
-
-  td {
-    padding: 3px 6px;
-  }
-
-  > thead > tr > td {
-    padding: 3px 0;
-  }
-
-  thead > tr > th {
-    padding: 3px 6px;
-
-    line-height: @input-height;
-  }
-}
-
-.panel-title a {
-  font-size: 14px;
-}
-
-.panel-details {
-  margin-top: 10px;
-
-  padding: 0;
-
-  border-radius: 5px;
-  border: thin dotted lightgrey;
-}
-
-.table-details {
-  border-radius: 5px;
-  border: thin dotted lightgrey;
-
-  margin-top: 10px;
-
-  padding-left: 10px;
-  padding-right: 5px;
-}
-
-.tooltip.right .tooltip-arrow {
-  border-right-color: @ignite-red;
-}
-
-.tooltip > .tooltip-inner {
-  max-width: 400px;
-  text-align: left;
-  background-color: @ignite-red;
-}
-
-label {
-  font-weight: normal;
-  margin-bottom: 0;
-}
-
-.form-horizontal .checkbox {
-  padding-top: 0;
-}
-
-.input-tip {
-  display: block;
-  overflow: hidden;
-}
-
-.labelField {
-  float: left;
-  margin-right: 5px;
-}
-
-.labelFormField {
-  float: left;
-  line-height: @input-height;
-}
-
-.form-horizontal .form-group {
-  margin: 0;
-}
-
-.form-horizontal .has-feedback .form-control-feedback {
-  right: 0;
-}
-
-.tipField {
-  float: right;
-  line-height: @input-height;
-  margin-left: 5px;
-}
-
-.tipLabel {
-  font-size: 14px;
-  margin-left: 5px;
-}
-
-.fieldSep {
-  float: right;
-  line-height: @input-height;
-  margin: 0 5px;
-}
-
-.fieldButton {
-  float: right;
-  margin-left: 5px;
-  margin-right: 0;
-}
-
-.fa-plus {
-  cursor: pointer;
-}
-
-.fa-remove {
-  color: @ignite-red;
-  cursor: pointer;
-}
-
-.fa-floppy-o {
-  cursor: pointer;
-}
-
-.fa-arrow-up {
-  cursor: pointer;
-}
-
-.fa-arrow-down {
-  cursor: pointer;
-}
-
-label.required:after {
-  color: @ignite-red;
-  content: ' *';
-  display: inline;
-}
-
-.blank {
-  visibility: hidden;
-}
-
-.alert {
-  outline: 0
-}
-
-.alert.bottom, .alert.bottom-left, .alert.bottom-right, .alert.top,
-.alert.top-left, .alert.top-right {
-  position: fixed;
-  z-index: 1050;
-  margin: 20px
-}
-
-.alert.top, .alert.top-left, .alert.top-right {
-  top: 50px
-}
-
-.alert.top {
-  right: 0;
-  left: 0
-}
-
-.alert.top-right {
-  right: 0
-}
-
-.alert.top-right .close {
-  padding-left: 10px
-}
-
-.alert.top-left {
-  left: 0
-}
-
-.alert.top-left .close {
-  padding-right: 10px
-}
-
-.alert.bottom, .alert.bottom-left, .alert.bottom-right {
-  bottom: 0
-}
-
-.alert.bottom {
-  right: 0;
-  left: 0
-}
-
-.alert.bottom-right {
-  right: 0
-}
-
-.alert.bottom-right .close {
-  padding-left: 10px
-}
-
-.alert.bottom-left {
-  left: 0
-}
-
-.alert.bottom-left .close {
-  padding-right: 10px
-}
-
-//  Summary page
-#cfgResult textarea {
-  font-family: monospace;
-  font-size: 12px;
-}
-
-input[type="number"]::-webkit-outer-spin-button,
-input[type="number"]::-webkit-inner-spin-button {
-  -webkit-appearance: none;
-  margin: 0;
-}
-
-input[type="number"] {
-  -moz-appearance: textfield;
-}
-
-input.ng-dirty.ng-invalid, button.ng-dirty.ng-invalid {
-  border-color: @ignite-red;
-
-  :focus {
-    border-color: @ignite-red;
-  }
-}
-
-.form-control-feedback {
-  display: inline-block;
-  color: @ignite-red;
-  right: 18px;
-  line-height: @input-height;
-  pointer-events: initial;
-}
-
-.syntaxhighlighter {
-  padding: 10px 5px;
-  border-radius: 6px;
-}
-
-.theme-line table.links-edit-small-padding:extend(.theme-line .links table all) {
-  label {
-    line-height: @input-height;
-    color: #666;
-  }
-
-  a {
-    line-height: @input-height;
-  }
-
-  input[type="checkbox"] {
-    line-height: 20px;
-    margin-right: 5px;
-  }
-
-  .checkbox label {
-    line-height: 20px;
-    vertical-align: middle;
-  }
-
-  th {
-    text-align: center;
-  }
-
-  td {
-    padding-left: 10px;
-  }
-
-  margin-top: 10px;
-}
-
-.nav-tabs > li > a {
-  padding: 5px 5px;
-}
-
-.viewedUser {
-  position: absolute;
-  width: 100%;
-  left: 0;
-
-  text-align: center;
-
-  margin-top: -15px;
-
-  background-color: #f8d5d8;
-}
-
-a {
-  cursor: pointer;
-}
-
-.st-sort-ascent:after {
-  content: '\25B2';
-}
-
-.st-sort-descent:after {
-  content: '\25BC';
-}
-
-.panel {
-  margin-bottom: 0;
-}
-
-.panel-group {
-  margin-bottom: 0;
-}
-
-.panel-group .panel + .panel {
-  margin-top: 20px;
-}
-
-.margin-top-dflt {
-  margin-top: 10px;
-}
-
-.margin-bottom-dflt {
-  margin-bottom: 10px;
-}
-
-.margin-dflt {
-  margin-top: 10px;
-  margin-bottom: 10px;
-}
-
-.padding-top-dflt {
-  padding-top: 10px;
-}
-
-.padding-bottom-dflt {
-  padding-bottom: 10px;
-}
-
-.padding-dflt {
-  padding-top: 10px;
-  padding-bottom: 10px;
-}
-
-.theme-line .panel-title h3 {
-  margin-top: 20px;
-  margin-bottom: 20px;
-}
-
-.block-callout-parent {
-  background-color: @ignite-block-callout-background;
-  overflow: hidden;
-}
-
-.block-callout {
-  background-color: @ignite-block-callout-background;
-  display: inline-block;
-  vertical-align: top;
-  width: 50%;
-
-  i {
-    padding: 10px 5px 0 10px;
-    color: @ignite-block-callout;
-  }
-
-  ul {
-    padding-left: 20px;
-    margin-bottom: 0;
-  }
-
-  p {
-    padding: 5px 0 10px 10px;
-    margin: 0;
-  }
-
-  label {
-    font-weight: bold;
-    color: @ignite-block-callout;
-  }
-}
-
-.block-callout-border {
-  border-left: 5px solid;
-  border-color: @ignite-block-callout;
-}
-
-.labelHeader {
-  font-weight: bold;
-}
-
-.ace_editor, #ace_document {
-  margin:  0.65em 0 0 0;
-
-  width: 100%;
-  height: 400px;
-
-  .ace_gutter {
-    background: transparent !important;
-    border: 1px #ddd;
-    border-right-style: solid;
-  }
-
-  .ace_gutter-cell, .ace_folding-enabled > .ace_gutter-cell {
-    padding-left: 0.65em;
-    padding-right: 0.9em;
-  }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/6b58c47d/modules/web-control-center/src/main/js/public/stylesheets/style.scss
----------------------------------------------------------------------
diff --git a/modules/web-control-center/src/main/js/public/stylesheets/style.scss b/modules/web-control-center/src/main/js/public/stylesheets/style.scss
new file mode 100644
index 0000000..e2542ce
--- /dev/null
+++ b/modules/web-control-center/src/main/js/public/stylesheets/style.scss
@@ -0,0 +1,1270 @@
+/*
+ * 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.
+ */
+
+$logo-path: "https://www.filepicker.io/api/file/QagunjDGRFul2JgNCAli";
+$input-height: 28px;
+$ignite-red: #ec1c24;
+$ignite-block-callout-background: #f3f8f3;
+$ignite-block-callout: #50af51;
+
+hr {
+    margin: 20px 0;
+}
+
+.main-header .logo {
+    height: auto;
+}
+
+.main-sidebar {
+    padding-top: 60px;
+}
+
+.navbar-default .navbar-brand, .navbar-default .navbar-brand:hover {
+    position: absolute;
+    width: 100%;
+    left: 0;
+    text-align: center;
+}
+
+.modal-backdrop.am-fade {
+    opacity: .5;
+    transition: opacity .15s linear;
+    &.ng-enter {
+        opacity: 0;
+        &.ng-enter-active {
+            opacity: .5;
+        }
+    }
+    &.ng-leave {
+        opacity: .5;
+        &.ng-leave-active {
+            opacity: 0;
+        }
+    }
+}
+
+.modal.center .modal-dialog {
+    position: fixed;
+    top: 50%;
+    left: 50%;
+    -webkit-transform: translateX(-50%) translateY(-50%);
+    transform: translateX(-50%) translateY(-50%);
+}
+
+.border-left {
+    box-shadow: 1px 0 0 0 #eee inset;
+}
+
+.border-right {
+    box-shadow: 1px 0 0 0 #eee;
+}
+
+.theme-line {
+    background-color: #f9f9f9;
+}
+
+.theme-line header {
+    background-color: #fff;
+}
+
+.theme-line header a.btn {
+    border: 0 none;
+    padding: 10px 25px;
+    background-color: rgba(0, 0, 0, 0.15);
+}
+
+.theme-line header a.btn:hover {
+    background-color: rgba(0, 0, 0, 0.25);
+}
+
+.theme-line header a.btn.btn-link {
+    background: transparent;
+    color: rgba(255, 255, 255, 0.8);
+}
+
+.theme-line header a.btn.btn-link:hover {
+    color: #fff;
+    text-decoration: none;
+}
+
+.theme-line .navbar-nav a {
+    background-color: transparent;
+}
+
+.theme-line .navbar-nav a:hover,
+.theme-line .navbar-nav a:active,
+.theme-line .navbar-nav a:focus {
+    background-color: transparent;
+}
+
+.theme-line .main-links {
+    padding-top: 50px;
+}
+
+.theme-line .main-links h3 {
+    margin-top: 0;
+    font-size: 17px;
+}
+
+.theme-line .main-links .links a {
+    color: #888;
+}
+
+.theme-line .main-links .links a:hover {
+    text-decoration: none;
+}
+
+.theme-line #category-columns,
+.theme-solid #category-columns {
+    margin: 50px 30px 0;
+}
+
+.theme-line #category-columns h4 {
+    text-transform: uppercase;
+    font-weight: 300;
+    color: #999;
+    font-size: 14px;
+}
+
+.theme-line #category-columns ul {
+    list-style: none;
+    padding: 0;
+    margin-bottom: 15px;
+}
+
+.theme-line #category-columns ul li a {
+    padding: 5px 0;
+    display: block;
+    font-size: 16px;
+}
+
+.theme-line #category-columns ul .view-all {
+    font-size: 0.85em;
+}
+
+.theme-line .docs-header {
+    color: #999;
+    overflow: hidden;
+}
+
+.theme-line .docs-header h1 {
+    color: #444;
+    margin-top: 0;
+    font-size: 22px;
+}
+
+.theme-line .btn-primary {
+    border: 0 none;
+    background-color: $ignite-red;
+}
+
+.theme-line .btn-primary:hover {
+    background-color: #950d12;
+}
+
+.theme-line .main-content .nav-horizontal a {
+    box-shadow: 0 0;
+    border: 0 none;
+    background-color: #fff;
+    border-radius: 0;
+    color: #aaa;
+    padding: 6px;
+    margin: 0 14px;
+}
+
+.theme-line .main-content .nav-horizontal a:hover {
+    color: #999;
+    border-bottom: 5px solid #ddd;
+}
+
+.theme-line .main-content .nav-horizontal a.active {
+    border-bottom: 5px solid #888;
+}
+
+.theme-line .navbar-nav, .theme-line .sidebar-nav {
+    ul li > a.active {
+        cursor: default;
+        pointer-events: none;
+    }
+}
+
+.theme-line .sidebar-nav {
+    color: #474a54;
+    padding-bottom: 30px;
+
+    ul {
+        padding: 0;
+        list-style: none;
+        font-size: 14px;
+        margin: 3px 0 0;
+        li {
+            color: #666;
+            line-height: $input-height;
+
+            span.fa-stack {
+                margin-right: 5px;
+                font-size: 12px;
+                height: 26px;
+            }
+
+            a {
+                font-size: 18px;
+                color: #666;
+                position: relative;
+                white-space: nowrap;
+                overflow: hidden;
+                -o-text-overflow: ellipsis;
+                text-overflow: ellipsis;
+            }
+        }
+    }
+}
+
+.theme-line .sidebar-nav ul li a:hover {
+    text-decoration: none;
+}
+
+.theme-line .select,
+.theme-line .typeahead {
+    li a {
+        color: #666;
+        background-color: transparent;
+    }
+
+    li a:hover {
+        color: $ignite-red;
+    }
+
+    .active {
+        background-color: #eee;
+    }
+}
+
+.theme-line .sidebar-nav ul li .subcategory {
+    padding-left: 15px;
+}
+
+.theme-line .sidebar-nav h4 {
+    margin-top: 2em;
+    font-weight: normal;
+    text-transform: uppercase;
+    font-size: 11px;
+    margin-bottom: 10px;
+    color: #bbb;
+}
+
+.theme-line .sidebar-nav h4:first-child {
+    margin-top: 0;
+}
+
+.theme-line .sidebar-nav .ask {
+    width: 100%;
+    text-align: center;
+    padding: 10px;
+}
+
+.theme-line .border-left .sidebar-nav {
+    padding-left: 15px;
+}
+
+.theme-line .suggest {
+    padding: 5px;
+    display: inline-block;
+    font-size: 12px;
+}
+
+.header {
+    padding: 15px;
+}
+
+.header .has-github {
+    padding-right: 136px;
+}
+
+.header h1.navbar-brand {
+    height: 40px;
+    width: 200px;
+    padding: 0;
+    margin: 5px 15px 0 0;
+}
+
+.header h1.navbar-brand a {
+    text-indent: -99999px;
+    background: no-repeat center center;
+    display: block;
+    width: 100%;
+    height: 100%;
+    background-size: contain;
+}
+
+.header .nav.navbar-nav.pull-right {
+    position: relative;
+    right: -30px;
+}
+
+.header .nav.navbar-nav .not-link {
+    padding: 15px;
+    display: inline-block;
+}
+
+.header .nav.navbar-nav .stable,
+.header .nav.navbar-nav .beta,
+.header .nav.navbar-nav .private {
+    font-size: 9px;
+    padding: 3px 5px;
+    display: inline-block;
+    line-height: 8px;
+    border-radius: 3px;
+    margin-left: 6px;
+    color: #fff;
+    top: -2px;
+    position: relative;
+    opacity: 0.6;
+    -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=60)";
+    filter: alpha(opacity=60);
+}
+
+.header .nav.navbar-nav a:hover > .stable,
+.header .nav.navbar-nav a:hover > .beta,
+.header .nav.navbar-nav a:hover > .private {
+    opacity: 1;
+    -ms-filter: none;
+    filter: none;
+}
+
+.header .nav.navbar-nav .beta {
+    background-color: #59c3d1;
+}
+
+.header .nav.navbar-nav .stable {
+    background-color: #41b841;
+}
+
+.header .nav.navbar-nav .private {
+    background-color: #333;
+}
+
+.theme-line header {
+    border-bottom: 8px solid;
+}
+
+.theme-line header h2 {
+    color: #aaa;
+}
+
+.theme-line header p {
+    color: #666;
+}
+
+.theme-line header {
+    border-bottom-color: $ignite-red;
+}
+
+.theme-line .navbar-nav {
+    color: #888;
+}
+
+.theme-line .navbar-nav a {
+    color: #bbb;
+}
+
+.theme-line header a.btn {
+    background-color: $ignite-red;
+}
+
+.theme-line header a.btn:hover {
+    background-color: #950d12;
+}
+
+.theme-line header .navbar-nav .tt-cursor {
+    background-color: $ignite-red;
+}
+
+.theme-line header .navbar-nav a:hover, .theme-line header .navbar-nav .open > a {
+    color: $ignite-red;
+}
+
+.theme-line .navbar-nav .active a {
+    //font-weight: bold;
+    color: $ignite-red;
+}
+
+.theme-line .navbar-nav .active a:hover {
+    color: #950d12;
+}
+
+.theme-line .main-links .links a:hover {
+    color: $ignite-red;
+}
+
+.theme-line .main-content a {
+    color: #666;
+}
+
+.theme-line .main-content a:hover {
+    color: #950d12;
+}
+
+.theme-line .sidebar-nav ul li a.active:before {
+    background-color: $ignite-red;
+}
+
+.theme-line .sidebar-nav ul li a.active {
+    color: $ignite-red;
+}
+
+.theme-line .sidebar-nav ul li a:hover, .theme-line .sidebar-nav ul li a.active:hover {
+    color: #950d12;
+}
+
+.theme-line .main-content .nav-horizontal a.active {
+    border-color: $ignite-red;
+    color: $ignite-red;
+}
+
+.theme-line .main-content .nav-horizontal a:hover {
+    color: #950d12;
+}
+
+.theme-line .main-content .nav-horizontal a.active:hover {
+    border-color: #950d12;
+}
+
+.theme-line header .navbar-nav a.active, .theme-line #versions-list li a:hover strong, .theme-line #versions-list li a.active .current, .theme-line #versions-list li a:active .current {
+    color: $ignite-red;
+}
+
+.theme-line header .navbar-nav a {
+    font-size: 18px;
+}
+
+.theme-line.body-threes .section-right .threes-nav .btn-default:hover, .theme-line.page-docs.body-threes .section-right .threes-nav .pull-right a:hover {
+    color: $ignite-red;
+    border-color: $ignite-red;
+}
+
+.theme-line .section-right {
+    padding-left: 30px;
+}
+
+.body-overlap .main-content {
+    margin-top: 30px;
+}
+
+.body-box .main-content,
+.body-overlap .main-content {
+    padding: 30px;
+    box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.1);
+    background-color: #fff;
+}
+
+body {
+    font-weight: 400;
+    font-family: Roboto Slab, serif;;
+}
+
+h1, h2, h3, h4, h5, h6 {
+    font-weight: 700;
+    font-family: Roboto Slab, serif;
+    margin-bottom: 10px;
+}
+
+.submit-vote.submit-vote-parent.voted a.submit-vote-button, .submit-vote.submit-vote-parent a.submit-vote-button:hover {
+    background-color: $ignite-red;
+}
+
+div.submit-vote.submit-vote-parent.voted a.submit-vote-button:hover {
+    background-color: #950d12;
+}
+
+a, .link .title {
+    color: $ignite-red;
+}
+
+a:hover, .link:hover .title {
+    color: #950d12;
+}
+
+.header h1.navbar-brand a {
+    background-image: url("#{$logo-path}");
+}
+
+.header h1.navbar-brand {
+    width: 96px;
+}
+
+.block-edit-parameters {
+    text-align: right;
+    padding-bottom: 5px;
+}
+
+.container-footer {
+    margin-top: 20px;
+}
+
+/* Modal */
+.modal {
+    display: block;
+    overflow: hidden;
+}
+
+.modal .close {
+    position: absolute;
+    top: 10px;
+    right: 10px;
+    float: none;
+}
+
+// Close icon
+.modal-header .close {
+    margin-right: -2px;
+}
+
+.modal .modal-dialog {
+    width: 610px;
+}
+
+.modal .modal-content {
+    border-radius: 0;
+    background-color: #f7f7f7;
+}
+
+.modal .modal-content .modal-header {
+    background-color: #fff;
+    text-align: center;
+    color: #555;
+    padding: 15px;
+    font-family: "myriad-pro", sans-serif;
+}
+
+.modal .modal-content .modal-header h4 {
+    font-family: "myriad-pro", sans-serif;
+    font-size: 22px;
+}
+
+.modal .modal-content .modal-header h4 .fa {
+    display: block;
+    font-size: 41px;
+    color: #ddd;
+    margin-bottom: 5px;
+}
+
+.modal .modal-content .modal-header p {
+    color: #aaa;
+    font-size: 1em;
+    margin: 3px 0 0;
+}
+
+.modal .modal-content .modal-spacer {
+    padding: 10px 10px 0 10px;
+}
+
+.modal .modal-content .modal-footer {
+    margin-top: 0;
+}
+
+.modal-body {
+    padding-top: 15px;
+}
+
+h1.ignite-logo {
+    background-image: url("#{$logo-path}");
+}
+
+.block-display-image img {
+    max-width: 100%;
+    max-height: 450px;
+    margin: auto;
+    display: block;
+}
+
+.greedy {
+    min-height: 100%;
+    height: #{"calc(100vh - 290px)"};
+}
+
+@media (min-width: 768px) {
+    .navbar-nav > li > a {
+        padding-top: 18px;
+        padding-bottom: 10px;
+    }
+}
+
+.details-row {
+    padding: 0 10px;
+}
+
+.details-row, .settings-row {
+    display: block;
+    margin: 10px 0;
+
+    label.table-header {
+        line-height: $input-height;
+    }
+
+    [class*="col-"] {
+        display: inline-block;
+        vertical-align: middle;
+        float: none;
+
+        padding-left: 0 !important;
+        padding-right: 0 !important;
+    }
+
+    input[type="checkbox"] {
+        line-height: 20px;
+        margin-right: 5px;
+    }
+
+    .checkbox label {
+        line-height: 20px;
+        vertical-align: middle;
+    }
+}
+
+button {
+    margin-right: 5px;
+}
+
+h1,
+h2,
+h3 {
+    user-select: none;
+    font-weight: normal;
+    /* Makes the vertical size of the text the same for all fonts. */
+    line-height: 1;
+}
+
+h3 {
+    color: black;
+    font-size: 1.2em;
+    margin-top: 0;
+    margin-bottom: 1.5em;
+}
+
+table tr:hover {
+    cursor: pointer;
+}
+
+.btn {
+    padding: 3px 6px;
+}
+
+button .caret, .btn .caret {
+    float: right;
+    margin-left: 5px;
+    margin-top: 7px;
+}
+
+.base-control {
+    text-align: left;
+    padding: 3px 3px;
+    height: $input-height;
+}
+
+.form-control {
+    @extend .base-control;
+
+    display: inline-block;
+
+    button {
+        text-align: left;
+    }
+}
+
+.theme-line .panel-heading {
+    padding: 10px 10px;
+    margin: 0;
+
+    h3 {
+        margin-bottom: 0;
+    }
+
+    h3 > a {
+        color: black;
+    }
+}
+
+.theme-line .panel-title {
+    a {
+        color: $ignite-red;
+    }
+
+    h3 {
+        margin-bottom: 20px;
+    }
+}
+
+.theme-line .panel-body {
+    padding: 10px 20px;
+}
+
+.theme-line .main-content a.customize {
+    margin-left: 5px;
+    color: $ignite-red;
+}
+
+.theme-line .panel-collapse {
+    margin: 0;
+}
+
+.theme-line table.links {
+    display: table;
+    table-layout: fixed;
+
+    td {
+        padding-left: 18px;
+    }
+
+    .active a {
+        color: $ignite-red;
+        font-weight: bold;
+    }
+
+    a:hover {
+        color: #950d12;
+    }
+
+    a {
+        color: #666;
+    }
+}
+
+.theme-line table.links-edit {
+    @extend table.links;
+
+    margin-top: 5px;
+    margin-bottom: 5px;
+
+    label {
+        line-height: $input-height;
+        color: #666;
+    }
+}
+
+.theme-line table.links-edit-details {
+    @extend table.links;
+
+    margin-bottom: 10px;
+
+    label {
+        line-height: $input-height;
+        color: #666;
+    }
+
+    td {
+        padding: 0;
+
+        .input-tip {
+            padding: 0;
+        }
+    }
+}
+
+.theme-line table.admin {
+    tr:hover {
+        cursor: default;
+    }
+
+    thead > tr th.header {
+        padding: 0 0 10px;
+
+        div {
+            padding: 0
+        }
+    }
+
+    margin-bottom: 10px;
+
+    label {
+        line-height: $input-height;
+        color: #666;
+    }
+
+    thead > tr th, td {
+        padding: 10px 10px;
+
+        .input-tip {
+            padding: 0;
+        }
+    }
+
+    tfoot > tr > td {
+        padding: 0;
+
+        .pagination {
+            margin: 10px 0;
+
+            > .active > a {
+                color: $ignite-red;
+                font-weight: bold;
+                border-color: #ddd;
+                background-color: #eee;
+            }
+        }
+    }
+}
+
+.theme-line table.sql-results {
+    [class*="col-"] {
+        padding-left: 0 !important;
+        padding-right: 0 !important;
+    }
+
+    td {
+        padding: 3px 6px;
+    }
+
+    > thead > tr > td {
+        padding: 3px 0;
+    }
+
+    thead > tr > th {
+        padding: 3px 6px;
+
+        line-height: $input-height;
+    }
+}
+
+.panel-title a {
+    font-size: 14px;
+}
+
+.panel-details {
+    margin-top: 10px;
+
+    padding: 0;
+
+    border-radius: 5px;
+    border: thin dotted lightgrey;
+}
+
+.table-details {
+    border-radius: 5px;
+    border: thin dotted lightgrey;
+
+    margin-top: 10px;
+
+    padding-left: 10px;
+    padding-right: 5px;
+}
+
+.tooltip.right .tooltip-arrow {
+    border-right-color: $ignite-red;
+}
+
+.tooltip > .tooltip-inner {
+    max-width: 400px;
+    text-align: left;
+    background-color: $ignite-red;
+}
+
+label {
+    font-weight: normal;
+    margin-bottom: 0;
+}
+
+.form-horizontal .checkbox {
+    padding-top: 0;
+}
+
+.input-tip {
+    display: block;
+    overflow: hidden;
+}
+
+.labelField {
+    float: left;
+    margin-right: 5px;
+}
+
+.labelFormField {
+    float: left;
+    line-height: $input-height;
+}
+
+.form-horizontal .form-group {
+    margin: 0;
+}
+
+.form-horizontal .has-feedback .form-control-feedback {
+    right: 0;
+}
+
+.tipField {
+    float: right;
+    line-height: $input-height;
+    margin-left: 5px;
+}
+
+.tipLabel {
+    font-size: 14px;
+    margin-left: 5px;
+}
+
+.fieldSep {
+    float: right;
+    line-height: $input-height;
+    margin: 0 5px;
+}
+
+.fieldButton {
+    float: right;
+    margin-left: 5px;
+    margin-right: 0;
+}
+
+.fa-plus {
+    cursor: pointer;
+}
+
+.fa-remove {
+    color: $ignite-red;
+    cursor: pointer;
+}
+
+.fa-floppy-o {
+    cursor: pointer;
+}
+
+.fa-arrow-up {
+    cursor: pointer;
+}
+
+.fa-arrow-down {
+    cursor: pointer;
+}
+
+label.required:after {
+    color: $ignite-red;
+    content: ' *';
+    display: inline;
+}
+
+.blank {
+    visibility: hidden;
+}
+
+.alert {
+    outline: 0
+}
+
+.alert.bottom, .alert.bottom-left, .alert.bottom-right, .alert.top,
+.alert.top-left, .alert.top-right {
+    position: fixed;
+    z-index: 1050;
+    margin: 20px
+}
+
+.alert.top, .alert.top-left, .alert.top-right {
+    top: 50px
+}
+
+.alert.top {
+    right: 0;
+    left: 0
+}
+
+.alert.top-right {
+    right: 0
+}
+
+.alert.top-right .close {
+    padding-left: 10px
+}
+
+.alert.top-left {
+    left: 0
+}
+
+.alert.top-left .close {
+    padding-right: 10px
+}
+
+.alert.bottom, .alert.bottom-left, .alert.bottom-right {
+    bottom: 0
+}
+
+.alert.bottom {
+    right: 0;
+    left: 0
+}
+
+.alert.bottom-right {
+    right: 0
+}
+
+.alert.bottom-right .close {
+    padding-left: 10px
+}
+
+.alert.bottom-left {
+    left: 0
+}
+
+.alert.bottom-left .close {
+    padding-right: 10px
+}
+
+//  Summary page
+#cfgResult textarea {
+    font-family: monospace;
+    font-size: 12px;
+}
+
+input[type="number"]::-webkit-outer-spin-button,
+input[type="number"]::-webkit-inner-spin-button {
+    -webkit-appearance: none;
+    margin: 0;
+}
+
+input[type="number"] {
+    -moz-appearance: textfield;
+}
+
+input.ng-dirty.ng-invalid, button.ng-dirty.ng-invalid {
+    border-color: $ignite-red;
+
+    :focus {
+        border-color: $ignite-red;
+    }
+}
+
+.form-control-feedback {
+    display: inline-block;
+    color: $ignite-red;
+    right: 18px;
+    line-height: $input-height;
+    pointer-events: initial;
+}
+
+.syntaxhighlighter {
+    padding: 10px 5px;
+    border-radius: 6px;
+}
+
+.theme-line table.links-edit-small-padding {
+    @extend table.links;
+
+    label {
+        line-height: $input-height;
+        color: #666;
+    }
+
+    a {
+        line-height: $input-height;
+    }
+
+    input[type="checkbox"] {
+        line-height: 20px;
+        margin-right: 5px;
+    }
+
+    .checkbox label {
+        line-height: 20px;
+        vertical-align: middle;
+    }
+
+    th {
+        text-align: center;
+    }
+
+    td {
+        padding-left: 10px;
+    }
+
+    margin-top: 10px;
+}
+
+.nav-tabs > li > a {
+    padding: 5px 5px;
+}
+
+.viewedUser {
+    position: absolute;
+    width: 100%;
+    left: 0;
+
+    text-align: center;
+
+    margin-top: -15px;
+
+    background-color: #f8d5d8;
+}
+
+a {
+    cursor: pointer;
+}
+
+.st-sort-ascent:after {
+    content: '\25B2';
+}
+
+.st-sort-descent:after {
+    content: '\25BC';
+}
+
+.panel {
+    margin-bottom: 0;
+}
+
+.panel-group {
+    margin-bottom: 0;
+}
+
+.panel-group .panel + .panel {
+    margin-top: 20px;
+}
+
+.margin-top-dflt {
+    margin-top: 10px;
+}
+
+.margin-bottom-dflt {
+    margin-bottom: 10px;
+}
+
+.margin-dflt {
+    margin-top: 10px;
+    margin-bottom: 10px;
+}
+
+.padding-top-dflt {
+    padding-top: 10px;
+}
+
+.padding-bottom-dflt {
+    padding-bottom: 10px;
+}
+
+.padding-dflt {
+    padding-top: 10px;
+    padding-bottom: 10px;
+}
+
+.theme-line .panel-title h3 {
+    margin-top: 20px;
+    margin-bottom: 20px;
+}
+
+.block-callout-parent {
+    background-color: $ignite-block-callout-background;
+    overflow: hidden;
+}
+
+.block-callout {
+    background-color: $ignite-block-callout-background;
+    display: inline-block;
+    vertical-align: top;
+    width: 50%;
+
+    i {
+        padding: 10px 5px 0 10px;
+        color: $ignite-block-callout;
+    }
+
+    ul {
+        padding-left: 20px;
+        margin-bottom: 0;
+    }
+
+    p {
+        padding: 5px 0 10px 10px;
+        margin: 0;
+    }
+
+    label {
+        font-weight: bold;
+        color: $ignite-block-callout;
+    }
+}
+
+.block-callout-border {
+    border-left: 5px solid;
+    border-color: $ignite-block-callout;
+}
+
+.labelHeader {
+    font-weight: bold;
+}
+
+.ace_editor, #ace_document {
+    margin: 0.65em 0 0 0;
+
+    width: 100%;
+    height: 400px;
+
+    .ace_gutter {
+        background: transparent !important;
+        border: 1px #ddd;
+        border-right-style: solid;
+    }
+
+    .ace_gutter-cell, .ace_folding-enabled > .ace_gutter-cell {
+        padding-left: 0.65em;
+        padding-right: 0.9em;
+    }
+}
+
+.loading-indicator {
+    box-sizing: border-box;
+    -webkit-box-sizing: border-box;
+    -moz-box-sizing: border-box;
+    width: 100%;
+    text-align: center;
+    padding: 0.7em;
+
+    :before {
+        display: inline-block;
+        margin: 0 0.4em;
+        min-width: 1em;
+        min-height: 1em;
+        border: 4px solid #646464;
+        border-right-color: #e6e6e6;
+        border-left-color: #e6e6e6;
+        content: "";
+        -webkit-animation: halfspin 1s ease infinite;
+        -moz-animation: halfspin 1s ease infinite;
+        -o-animation: halfspin 1s ease infinite;
+        animation: halfspin 1s ease infinite;
+        border-radius: 100%;
+    }
+}
+
+@-webkit-keyframes halfspin {
+    to {
+        -webkit-transform: rotate(180deg);
+        -moz-transform: rotate(180deg);
+        transform: rotate(180deg);
+    }
+}
+
+@-moz-keyframes halfspin {
+    to {
+        -webkit-transform: rotate(180deg);
+        -moz-transform: rotate(180deg);
+        transform: rotate(180deg);
+    }
+}
+
+@keyframes halfspin {
+    to {
+        -webkit-transform: rotate(180deg);
+        -moz-transform: rotate(180deg);
+        transform: rotate(180deg);
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/6b58c47d/modules/web-control-center/src/main/js/views/configuration/caches.jade
----------------------------------------------------------------------
diff --git a/modules/web-control-center/src/main/js/views/configuration/caches.jade b/modules/web-control-center/src/main/js/views/configuration/caches.jade
index 3a011fc..ea50317 100644
--- a/modules/web-control-center/src/main/js/views/configuration/caches.jade
+++ b/modules/web-control-center/src/main/js/views/configuration/caches.jade
@@ -27,10 +27,10 @@ block content
         hr
     .docs-body(ng-controller='cachesController')
         +block-callout('{{screenTip.workflowTitle}}', 'joinTip(screenTip.workflowContent)', '{{screenTip.whatsNextTitle}}', 'joinTip(screenTip.whatsNextContent)')
-        .links(ng-hide='caches.length == 0')
+        div(ng-hide='caches.length == 0')
             .padding-dflt
                 lable.labelHeader Caches:
-                table(st-table='caches')
+                table.links(st-table='caches')
                     tbody
                         tr(ng-repeat='row in caches track by row._id')
                             td.col-sm-6(ng-class='{active: row._id == selectedItem._id}')

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/6b58c47d/modules/web-control-center/src/main/js/views/configuration/clusters.jade
----------------------------------------------------------------------
diff --git a/modules/web-control-center/src/main/js/views/configuration/clusters.jade b/modules/web-control-center/src/main/js/views/configuration/clusters.jade
index 81acfed..cf429e5 100644
--- a/modules/web-control-center/src/main/js/views/configuration/clusters.jade
+++ b/modules/web-control-center/src/main/js/views/configuration/clusters.jade
@@ -27,10 +27,10 @@ block content
         hr
     .docs-body(ng-controller='clustersController')
         +block-callout('{{screenTip.workflowTitle}}', 'joinTip(screenTip.workflowContent)', '{{screenTip.whatsNextTitle}}', 'joinTip(screenTip.whatsNextContent)')
-        .links(ng-hide='clusters.length == 0')
+        div(ng-hide='clusters.length == 0')
             .padding-dflt
                 lable.labelHeader Clusters:
-                table(st-table='clusters')
+                table.links(st-table='clusters')
                     tbody
                         tr(ng-repeat='row in clusters track by row._id')
                             td.col-sm-6(ng-class='{active: row._id == selectedItem._id}')

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/6b58c47d/modules/web-control-center/src/main/js/views/configuration/metadata.jade
----------------------------------------------------------------------
diff --git a/modules/web-control-center/src/main/js/views/configuration/metadata.jade b/modules/web-control-center/src/main/js/views/configuration/metadata.jade
index 1197795..9f94965 100644
--- a/modules/web-control-center/src/main/js/views/configuration/metadata.jade
+++ b/modules/web-control-center/src/main/js/views/configuration/metadata.jade
@@ -27,10 +27,10 @@ block content
         hr
     .docs-body(ng-controller='metadataController')
         +block-callout('{{screenTip.workflowTitle}}', 'joinTip(screenTip.workflowContent)', '{{screenTip.whatsNextTitle}}', 'joinTip(screenTip.whatsNextContent)')
-        .links(ng-hide='metadatas.length == 0')
+        div(ng-hide='metadatas.length == 0')
             .padding-dflt
                 lable.labelHeader Types metadata:
-                table(st-table='metadatas')
+                table.links(st-table='metadatas')
                     tbody
                         tr(ng-repeat='row in metadatas track by row._id')
                             td.col-sm-6(ng-class='{active: row._id == selectedItem._id}')

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/6b58c47d/modules/web-control-center/src/main/js/views/configuration/summary.jade
----------------------------------------------------------------------
diff --git a/modules/web-control-center/src/main/js/views/configuration/summary.jade b/modules/web-control-center/src/main/js/views/configuration/summary.jade
index 0370ef4..688f85e 100644
--- a/modules/web-control-center/src/main/js/views/configuration/summary.jade
+++ b/modules/web-control-center/src/main/js/views/configuration/summary.jade
@@ -46,8 +46,7 @@ block content
             | &nbsp;it.
         .padding-dflt(ng-if='clusters.length > 0')
             lable.labelHeader Clusters:
-            .links
-                table(st-table='clusters')
+                table.links(st-table='clusters')
                     tbody
                         tr(ng-repeat='row in clusters track by row._id')
                             td.col-sm-6(ng-class='{active: row._id == selectedItem._id}')

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/6b58c47d/modules/web-control-center/src/main/js/views/sql/sql.jade
----------------------------------------------------------------------
diff --git a/modules/web-control-center/src/main/js/views/sql/sql.jade b/modules/web-control-center/src/main/js/views/sql/sql.jade
index 864b0d5..1e625ff 100644
--- a/modules/web-control-center/src/main/js/views/sql/sql.jade
+++ b/modules/web-control-center/src/main/js/views/sql/sql.jade
@@ -42,9 +42,9 @@ block container
                                 'rendererOptions: {showPrintMargin: false, highlightGutterLine: false, fontSize: 14},' +
                                 'advanced: {enableSnippets: false, enableBasicAutocompletion: true, enableLiveAutocompletion: true}}' ng-model='#{tab}.query')
                         .col-sm-3
-                            .links(ng-hide='caches.length == 0' style='margin-top: 0.65em')
+                            div(ng-hide='caches.length == 0' style='margin-top: 0.65em')
                                 lable.labelHeader Caches:
-                                table(st-table='caches')
+                                table.links(st-table='caches')
                                     tbody
                                         tr(ng-repeat='row in caches track by row._id')
                                             td.col-sm-6(ng-class='{active: row._id == #{tab}.selectedItem._id}')
@@ -78,5 +78,8 @@ block container
                                     tr
                                         th(ng-repeat='column in #{tab}.cols' st-sort='{{column}}') {{column}}
                                 tbody
+                                    //tr
+                                    //    td(colspan='{{#{tab}.cols.length}}')
+                                    //        .loading-indicator
                                     tr(ng-repeat='row in rows')
                                         td(ng-repeat="column in #{tab}.cols") {{row[column]}}
\ No newline at end of file


[05/16] incubator-ignite git commit: IGNITE-843: WIP on metadata screen.

Posted by se...@apache.org.
IGNITE-843: WIP on metadata screen.


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

Branch: refs/heads/ignite-1121
Commit: c4a6ad5b283e71c5796215fa2dca80bcf0aab7c9
Parents: 419dde3
Author: AKuznetsov <ak...@gridgain.com>
Authored: Thu Jul 23 16:39:07 2015 +0700
Committer: AKuznetsov <ak...@gridgain.com>
Committed: Thu Jul 23 16:39:07 2015 +0700

----------------------------------------------------------------------
 .../main/js/controllers/metadata-controller.js  | 45 +++++++++++++-------
 .../main/js/views/configuration/metadata.jade   |  2 +-
 2 files changed, 30 insertions(+), 17 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/c4a6ad5b/modules/web-control-center/src/main/js/controllers/metadata-controller.js
----------------------------------------------------------------------
diff --git a/modules/web-control-center/src/main/js/controllers/metadata-controller.js b/modules/web-control-center/src/main/js/controllers/metadata-controller.js
index bf58fe2..21af931 100644
--- a/modules/web-control-center/src/main/js/controllers/metadata-controller.js
+++ b/modules/web-control-center/src/main/js/controllers/metadata-controller.js
@@ -267,6 +267,20 @@ controlCenterModule.controller('metadataController', ['$scope', '$http', '$commo
                 $common.showError(errMsg);
             });
 
+        function selectFirstItem() {
+            if ($scope.metadatas.length > 0)
+                $scope.selectItem($scope.metadatas[0]);
+        }
+
+        function setSelectedAndBackupItem(sel, bak) {
+            $table.tableReset();
+
+            $scope.selectedItem = sel;
+            $scope.backupItem = bak;
+
+            $scope.panels.activePanel = [0];
+        }
+
         // When landing on the page, get metadatas and show them.
         $http.post('metadata/list')
             .success(function (data) {
@@ -275,21 +289,25 @@ controlCenterModule.controller('metadataController', ['$scope', '$http', '$commo
 
                 var restoredItem = angular.fromJson(sessionStorage.metadataBackupItem);
 
-                if (restoredItem && restoredItem._id) {
-                    var idx = _.findIndex($scope.metadatas, function (metadata) {
-                        return metadata._id == restoredItem._id;
-                    });
+                if (restoredItem) {
+                    if (restoredItem._id) {
+                        var idx = _.findIndex($scope.metadatas, function (metadata) {
+                            return metadata._id == restoredItem._id;
+                        });
 
-                    if (idx >= 0) {
-                        $scope.selectedItem = $scope.metadatas[idx];
+                        if (idx >= 0)
+                            setSelectedAndBackupItem($scope.metadatas[idx], restoredItem);
+                        else {
+                            sessionStorage.removeItem('metadataBackupItem');
 
-                        $scope.backupItem = restoredItem;
+                            selectFirstItem();
+                        }
                     }
                     else
-                        sessionStorage.removeItem('metadataBackupItem');
+                        setSelectedAndBackupItem(undefined, restoredItem);
                 }
                 else
-                    $scope.backupItem = restoredItem;
+                    selectFirstItem();
 
                 $scope.$watch('backupItem', function (val) {
                     if (val)
@@ -301,12 +319,7 @@ controlCenterModule.controller('metadataController', ['$scope', '$http', '$commo
             });
 
         $scope.selectItem = function (item) {
-            $table.tableReset();
-
-            $scope.selectedItem = item;
-            $scope.backupItem = angular.copy(item);
-
-            $scope.panels.activePanel = [0];
+            setSelectedAndBackupItem(item, angular.copy(item));
         };
 
         // Add new metadata.
@@ -317,7 +330,7 @@ controlCenterModule.controller('metadataController', ['$scope', '$http', '$commo
             $scope.backupItem.space = $scope.spaces[0]._id;
         };
 
-        // Check cache type metadata logical consistency.
+        // Check metadata logical consistency.
         function validate(item) {
             return true;
         }

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/c4a6ad5b/modules/web-control-center/src/main/js/views/configuration/metadata.jade
----------------------------------------------------------------------
diff --git a/modules/web-control-center/src/main/js/views/configuration/metadata.jade b/modules/web-control-center/src/main/js/views/configuration/metadata.jade
index d5bac06..1197795 100644
--- a/modules/web-control-center/src/main/js/views/configuration/metadata.jade
+++ b/modules/web-control-center/src/main/js/views/configuration/metadata.jade
@@ -42,7 +42,7 @@ block content
             i.tiplabel.fa.fa-question-circle(bs-tooltip data-title='{{joinTip(templateTip)}}' type='button')
         hr
         .panel-group(bs-collapse ng-model='panels.activePanel' data-allow-multiple="false")
-            .panel.panel-default
+            .panel.panel-default(ng-show='selectedItem || backupItem')
                 .panel-heading
                     h3
                         a(bs-collapse-toggle) Manual


[07/16] incubator-ignite git commit: IGNITE-843: Tooltips for add and remove buttons.

Posted by se...@apache.org.
IGNITE-843: Tooltips for add and remove buttons.


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

Branch: refs/heads/ignite-1121
Commit: e795ef45a4e2c7269182ef946cd19b37e12b90cf
Parents: f4e3a14
Author: AKuznetsov <ak...@gridgain.com>
Authored: Thu Jul 23 18:09:08 2015 +0700
Committer: AKuznetsov <ak...@gridgain.com>
Committed: Thu Jul 23 18:09:08 2015 +0700

----------------------------------------------------------------------
 .../src/main/js/controllers/models/caches.json  |  6 ++
 .../main/js/controllers/models/clusters.json    |  6 ++
 .../main/js/controllers/models/metadata.json    | 10 ++
 .../src/main/js/views/includes/controls.jade    | 98 ++++++++++----------
 4 files changed, 71 insertions(+), 49 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/e795ef45/modules/web-control-center/src/main/js/controllers/models/caches.json
----------------------------------------------------------------------
diff --git a/modules/web-control-center/src/main/js/controllers/models/caches.json b/modules/web-control-center/src/main/js/controllers/models/caches.json
index 13c5985..e3f0613 100644
--- a/modules/web-control-center/src/main/js/controllers/models/caches.json
+++ b/modules/web-control-center/src/main/js/controllers/models/caches.json
@@ -372,6 +372,8 @@
           "model": "indexedTypes",
           "keyName": "keyClass",
           "valueName": "valueClass",
+          "addTip": "Add new key and value classes to indexed types.",
+          "removeTip": "Remove item from indexed types.",
           "tip": [
             "Collection of types to index."
           ]
@@ -382,6 +384,8 @@
           "model": "sqlFunctionClasses",
           "editIdx": -1,
           "placeholder": "SQL function full class name",
+          "addTip": "Add new user-defined functions for SQL queries.",
+          "removeTip": "Remove user-defined function.",
           "tableTip": [
             "Collections of classes with user-defined functions for SQL queries."
           ],
@@ -810,6 +814,8 @@
                   "model": "hibernateProperties",
                   "editIdx": -1,
                   "placeholder": "key=value",
+                  "addTip": "Add new Hibernate property.",
+                  "removeTip": "Remove Hibernate property.",
                   "tip": [
                     "List of Hibernate properties.",
                     "For example: connection.url=jdbc:h2:mem:"

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/e795ef45/modules/web-control-center/src/main/js/controllers/models/clusters.json
----------------------------------------------------------------------
diff --git a/modules/web-control-center/src/main/js/controllers/models/clusters.json b/modules/web-control-center/src/main/js/controllers/models/clusters.json
index e90094e..0ffb1b3 100644
--- a/modules/web-control-center/src/main/js/controllers/models/clusters.json
+++ b/modules/web-control-center/src/main/js/controllers/models/clusters.json
@@ -68,6 +68,8 @@
               "reordering": true,
               "ipaddress": true,
               "placeholder": "IP address:port",
+              "addTip": "Add new address.",
+              "removeTip": "Remove address.",
               "tip": [
                 "Addresses may be represented as follows:",
                 "<ul>",
@@ -221,6 +223,8 @@
               "model": "regions",
               "editIdx": -1,
               "placeholder": "",
+              "addTip": "Add new region.",
+              "removeTip": "Remove region.",
               "tableTip": [
                 "List of regions where VMs are located.",
                 "If the regions are not set then every region, that a cloud provider has, will be investigated. This could lead to significant performance degradation.",
@@ -237,6 +241,8 @@
               "model": "zones",
               "editIdx": -1,
               "placeholder": "",
+              "addTip": "Add new zone.",
+              "removeTip": "Remove zone.",
               "tableTip": [
                 "List of zones where VMs are located.",
                 "If the zones are not set then every zone from regions, set by {@link #setRegions(Collection)}}, will be taken into account.",

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/e795ef45/modules/web-control-center/src/main/js/controllers/models/metadata.json
----------------------------------------------------------------------
diff --git a/modules/web-control-center/src/main/js/controllers/models/metadata.json b/modules/web-control-center/src/main/js/controllers/models/metadata.json
index 516fb6e..bd6d7a0 100644
--- a/modules/web-control-center/src/main/js/controllers/models/metadata.json
+++ b/modules/web-control-center/src/main/js/controllers/models/metadata.json
@@ -115,6 +115,8 @@
       "keyName": "name",
       "valueName": "className",
       "hide": "backupItem.kind != 'query'",
+      "addTip": "Add field to query.",
+      "removeTip": "Remove field.",
       "tip": [
         "Collection of name-to-type mappings to be queried, in addition to indexed fields."
       ]
@@ -126,6 +128,8 @@
       "keyName": "name",
       "valueName": "className",
       "hide": "backupItem.kind != 'query'",
+      "addTip": "Add field to index in ascending order.",
+      "removeTip": "Remove field.",
       "tip": [
         "Collection of name-to-type mappings to index in ascending order."
       ]
@@ -137,6 +141,8 @@
       "keyName": "name",
       "valueName": "className",
       "hide": "backupItem.kind != 'query'",
+      "addTip": "Add field to index in descending order.",
+      "removeTip": "Remove field.",
       "tip": [
         "Collection of name-to-type mappings to index in descending order."
       ]
@@ -147,6 +153,8 @@
       "model": "textFields",
       "hide": "backupItem.kind != 'query'",
       "placeholder": "Field name",
+      "addTip": "Add field to index as text.",
+      "removeTip": "Remove field.",
       "tableTip": [
         "Fields to index as text."
       ],
@@ -159,6 +167,8 @@
       "type": "queryGroups",
       "model": "groups",
       "hide": "backupItem.kind != 'query'",
+      "addTip": "Add new group index.",
+      "removeTip": "Remove group.",
       "tip": [
         "Collection of group indexes."
       ]

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/e795ef45/modules/web-control-center/src/main/js/views/includes/controls.jade
----------------------------------------------------------------------
diff --git a/modules/web-control-center/src/main/js/views/includes/controls.jade b/modules/web-control-center/src/main/js/views/includes/controls.jade
index 2318370..c0ccc91 100644
--- a/modules/web-control-center/src/main/js/views/includes/controls.jade
+++ b/modules/web-control-center/src/main/js/views/includes/controls.jade
@@ -40,11 +40,11 @@ mixin ico-exclamation(mdl, err, msg)
 mixin btn-save(show, click)
     i.tipField.fa.fa-floppy-o(ng-show=show ng-click=click bs-tooltip data-title='Save item')
 
-mixin btn-add(click)
-    i.tipField.fa.fa-plus(ng-click=click bs-tooltip data-title='Add new item')
+mixin btn-add(click, tip)
+    i.tipField.fa.fa-plus(ng-click=click bs-tooltip=tip)
 
-mixin btn-remove(click)
-    i.tipField.fa.fa-remove(ng-click=click bs-tooltip data-title='Remove item' data-trigger='hover')
+mixin btn-remove(click, tip)
+    i.tipField.fa.fa-remove(ng-click=click bs-tooltip=tip data-trigger='hover')
 
 mixin btn-up(show, click)
     i.tipField.fa.fa-arrow-up(ng-show=show ng-click=click bs-tooltip data-title='Move item up')
@@ -63,7 +63,7 @@ mixin table-pair(header, tblMdl, keyFld, valFld, keyPlaceholder, valPlaceholder)
     .col-sm-6
         label.table-header #{header}:
         +tipLabel('field.tip')
-        +btn-add('tableNewItem(field)')
+        +btn-add('tableNewItem(field)', 'field.addTip')
         .table-details(ng-show='(#{tblMdl} && #{tblMdl}.length > 0) || tableNewItemActive(field)')
             table.links-edit.col-sm-12(st-table=tblMdl)
                 tbody
@@ -71,7 +71,7 @@ mixin table-pair(header, tblMdl, keyFld, valFld, keyPlaceholder, valPlaceholder)
                         td.col-sm-12
                             div(ng-show='!tableEditing(field, $index)')
                                 a.labelFormField(ng-click='curPair = tableStartEdit(backupItem, field, $index); curKey = curPair.#{keyFld}; curValue = curPair.#{valFld}') {{$index + 1}}) {{item.#{keyFld}}} / {{item.#{valFld}}}
-                                +btn-remove('tableRemove(backupItem, field, $index)')
+                                +btn-remove('tableRemove(backupItem, field, $index)', 'field.removeTip')
                             div(ng-show='tableEditing(field, $index)')
                                 label.labelField {{$index + 1}})
                                 +btn-save('tablePairSaveVisible(curKey, curValue)', 'tablePairSave(tablePairValid, backupItem, field, curKey, curValue, $index)')
@@ -92,41 +92,41 @@ mixin details-row
 
     div(ng-switch='detail.type')
         div(ng-switch-when='label')
-            label {{detail.label}}
+            label {{::detail.label}}
         div.checkbox(ng-switch-when='check')
             label
                 input(type='checkbox')&attributes(detailCommon)
-                |{{detail.label}}
+                |{{::detail.label}}
                 +tipLabel('detail.tip')
         div(ng-switch-when='text')
-            label(class=lblDetailClasses ng-class='{required: detail.required}') {{detail.label}}:
+            label(class=lblDetailClasses ng-class='{required: detail.required}') {{::detail.label}}:
             .col-sm-8
                 +tipField('detail.tip')
                 .input-tip
-                    input.form-control(type='text' placeholder='{{detail.placeholder}}')&attributes(detailCommon)
+                    input.form-control(type='text' placeholder='{{::detail.placeholder}}')&attributes(detailCommon)
         div(ng-switch-when='number' )
-            label(class=lblDetailClasses ng-class='{required: detail.required}') {{detail.label}}:
+            label(class=lblDetailClasses ng-class='{required: detail.required}') {{::detail.label}}:
             .col-sm-8
                 +tipField('detail.tip')
                 .input-tip
-                    input.form-control(name='{{detail.model}}' type='number' placeholder='{{detail.placeholder}}' min='{{detail.min ? detail.min : 0}}' max='{{detail.max ? detail.max : Number.MAX_VALUE}}')&attributes(detailCommon)
+                    input.form-control(name='{{detail.model}}' type='number' placeholder='{{::detail.placeholder}}' min='{{detail.min ? detail.min : 0}}' max='{{detail.max ? detail.max : Number.MAX_VALUE}}')&attributes(detailCommon)
                     +ico-exclamation('{{detail.model}}', 'min', 'Value is less than allowable minimum.')
                     +ico-exclamation('{{detail.model}}', 'max', 'Value is more than allowable maximum.')
                     +ico-exclamation('{{detail.model}}', 'number', 'Invalid value. Only numbers allowed.')
         div(ng-switch-when='dropdown')
-            label(class=lblDetailClasses ng-class='{required: detail.required}') {{detail.label}}:
+            label(class=lblDetailClasses ng-class='{required: detail.required}') {{::detail.label}}:
             .col-sm-8
                 +tipField('detail.tip')
                 .input-tip
-                    button.form-control(bs-select data-placeholder='{{detail.placeholder}}' bs-options='item.value as item.label for item in {{detail.items}}')&attributes(detailCommon)
+                    button.form-control(bs-select data-placeholder='{{::detail.placeholder}}' bs-options='item.value as item.label for item in {{detail.items}}')&attributes(detailCommon)
         div(ng-switch-when='dropdown-multiple')
-            label(class=lblDetailClasses ng-class='{required: detail.required}') {{detail.label}}:
+            label(class=lblDetailClasses ng-class='{required: detail.required}') {{::detail.label}}:
             .col-sm-8
-                button.form-control(bs-select data-multiple='1' data-placeholder='{{detail.placeholder}}' bs-options='item.value as item.label for item in {{detail.items}}')&attributes(detailCommon)
+                button.form-control(bs-select data-multiple='1' data-placeholder='{{::detail.placeholder}}' bs-options='item.value as item.label for item in {{detail.items}}')&attributes(detailCommon)
             +tipField('detail.tip')
         div(ng-switch-when='table-simple')&attributes(detailCommon)
             div(ng-if='detail.label')
-                label.table-header {{detail.label}}:
+                label.table-header {{::detail.label}}:
                 +tipLabel('detail.tableTip')
             table.col-sm-12.links-edit-details(st-table='#{detailMdl}')
                 tbody
@@ -134,19 +134,19 @@ mixin details-row
                         td
                             div(ng-show='!tableEditing(detail, $index)')
                                 a.labelFormField(ng-click='curValue = tableStartEdit(backupItem, detail, $index)') {{$index + 1}}) {{item}}
-                                +btn-remove('tableRemove(backupItem, detail, $index)')
+                                +btn-remove('tableRemove(backupItem, detail, $index)', 'detail.removeTip')
                                 +btn-down('detail.reordering && tableSimpleDownVisible(backupItem, detail, $index)', 'tableSimpleDown(backupItem, detail, $index)')
                                 +btn-up('detail.reordering && $index > 0', 'tableSimpleUp(backupItem, detail, $index)')
                             div(ng-show='tableEditing(detail, $index)')
                                 label.labelField {{$index + 1}})
                                 +btn-save('tableSimpleSaveVisible(curValue)', 'tableSimpleSave(tableSimpleValid, backupItem, detail, curValue, $index)')
                                 .input-tip.form-group.has-feedback
-                                    input.form-control(name='{{detail.model}}.edit' type='text' ng-model='curValue' placeholder='{{detail.placeholder}}')&attributes(customValidators)
+                                    input.form-control(name='{{detail.model}}.edit' type='text' ng-model='curValue' placeholder='{{::detail.placeholder}}')&attributes(customValidators)
                                     +ico-exclamation('{{detail.model}}.edit', 'ipaddress', 'Invalid address, see help for format description.')
             button.btn.btn-primary.fieldButton(ng-disabled='!newValue' ng-click='tableSimpleSave(tableSimpleValid, backupItem, detail, newValue, -1)') Add
             +tipField('detail.tip')
             .input-tip.form-group.has-feedback
-                input.form-control(name='{{detail.model}}' type='text' ng-model='newValue' ng-focus='tableNewItem(detail)' placeholder='{{detail.placeholder}}')&attributes(customValidators)
+                input.form-control(name='{{detail.model}}' type='text' ng-model='newValue' ng-focus='tableNewItem(detail)' placeholder='{{::detail.placeholder}}')&attributes(customValidators)
                 +ico-exclamation('{{detail.model}}', 'ipaddress', 'Invalid address, see help for format description.')
 
 mixin table-db-field-edit(dbName, dbType, javaName, javaType)
@@ -183,63 +183,63 @@ mixin form-row-custom(lblClasses, fieldClasses)
 
     div(ng-switch='field.type')
         div.col-sm-6(ng-switch-when='label')
-            label {{field.label}}
+            label {{::field.label}}
         div.checkbox.col-sm-6(ng-switch-when='check' ng-hide=fieldHide)
             label
                 input(type='checkbox')&attributes(fieldCommon)
-                | {{field.label}}
+                | {{::field.label}}
                 +tipLabel('field.tip')
         div(ng-switch-when='text' ng-hide=fieldHide)
-            label(class=lblClasses ng-class=fieldRequiredClass) {{field.label}}:
+            label(class=lblClasses ng-class=fieldRequiredClass) {{::field.label}}:
             div(class=fieldClasses)
                 +tipField('field.tip')
                 .input-tip
-                    input.form-control(type='text' placeholder='{{field.placeholder}}')&attributes(fieldCommon)
+                    input.form-control(type='text' placeholder='{{::field.placeholder}}')&attributes(fieldCommon)
         div(ng-switch-when='password' ng-hide=fieldHide)
-            label(class=lblClasses ng-class=fieldRequiredClass) {{field.label}}:
+            label(class=lblClasses ng-class=fieldRequiredClass) {{::field.label}}:
             div(class=fieldClasses)
                 +tipField('field.tip')
                 .input-tip
-                    input.form-control(type='password' placeholder='{{field.placeholder}}')&attributes(fieldCommon)
+                    input.form-control(type='password' placeholder='{{::field.placeholder}}')&attributes(fieldCommon)
         div(ng-switch-when='number' ng-hide=fieldHide)
-            label(class=lblClasses ng-class=fieldRequiredClass) {{field.label}}:
+            label(class=lblClasses ng-class=fieldRequiredClass) {{::field.label}}:
             div(class=fieldClasses)
                 +tipField('field.tip')
                 .input-tip
-                    input.form-control(name='{{field.model}}' type='number' placeholder='{{field.placeholder}}' min='{{field.min ? field.min : 0}}' max='{{field.max ? field.max : Number.MAX_VALUE}}')&attributes(fieldCommon)
+                    input.form-control(name='{{field.model}}' type='number' placeholder='{{::field.placeholder}}' min='{{field.min ? field.min : 0}}' max='{{field.max ? field.max : Number.MAX_VALUE}}')&attributes(fieldCommon)
                     +ico-exclamation('{{field.model}}', 'min', 'Value is less than allowable minimum.')
                     +ico-exclamation('{{field.model}}', 'max', 'Value is more than allowable maximum.')
                     +ico-exclamation('{{field.model}}', 'number', 'Invalid value. Only numbers allowed.')
         div(ng-switch-when='dropdown' ng-hide=fieldHide)
-            label(class=lblClasses ng-class=fieldRequiredClass) {{field.label}}:
+            label(class=lblClasses ng-class=fieldRequiredClass) {{::field.label}}:
             div(class=fieldClasses)
                 +tipField('field.tip')
                 .input-tip
-                    button.form-control(bs-select data-placeholder='{{field.placeholder}}' bs-options='item.value as item.label for item in {{field.items}}')&attributes(fieldCommon)
+                    button.form-control(bs-select data-placeholder='{{::field.placeholder}}' bs-options='item.value as item.label for item in {{field.items}}')&attributes(fieldCommon)
         div(ng-switch-when='dropdown-multiple' ng-hide=fieldHide)
-            label(class=lblClasses ng-class=fieldRequiredClass) {{field.label}}:
+            label(class=lblClasses ng-class=fieldRequiredClass) {{::field.label}}:
             div(class=fieldClasses)
                 +tipField('field.tip')
                 .input-tip
-                    button.form-control(bs-select ng-disabled='{{field.items}}.length == 0' data-multiple='1' data-placeholder='{{field.placeholder}}' bs-options='item.value as item.label for item in {{field.items}}')&attributes(fieldCommon)
+                    button.form-control(bs-select ng-disabled='{{field.items}}.length == 0' data-multiple='1' data-placeholder='{{::field.placeholder}}' bs-options='item.value as item.label for item in {{field.items}}')&attributes(fieldCommon)
             a.customize(ng-show='field.addLink' ng-href='{{field.addLink.ref}}') {{field.addLink.label}}
         div(ng-switch-when='dropdown-details' ng-hide=fieldHide)
             - var expanded = 'field.details[' + fieldMdl + '].expanded'
 
-            label(class=lblClasses ng-class=fieldRequiredClass) {{field.label}}:
+            label(class=lblClasses ng-class=fieldRequiredClass) {{::field.label}}:
             div(class=fieldClasses)
                 +tipField('field.tip')
                 .input-tip
-                    button.form-control(bs-select data-placeholder='{{field.placeholder}}' bs-options='item.value as item.label for item in {{field.items}}')&attributes(fieldCommon)
+                    button.form-control(bs-select data-placeholder='{{::field.placeholder}}' bs-options='item.value as item.label for item in {{field.items}}')&attributes(fieldCommon)
             a.customize(ng-show='#{fieldMdl} && field.details[#{fieldMdl}].fields' ng-click='#{expanded} = !#{expanded}') {{#{expanded} ? "Hide settings" : "Show settings"}}
             .col-sm-6.panel-details(ng-show='#{expanded} && #{fieldMdl}')
                 .details-row(ng-repeat='detail in field.details[#{fieldMdl}].fields')
                     +details-row
         div(ng-switch-when='table-simple' ng-hide=fieldHide)&attributes(fieldCommon)
             .col-sm-6
-                label.table-header {{field.label}}:
+                label.table-header {{::field.label}}:
                 +tipLabel('field.tableTip')
-                +btn-add('tableNewItem(field)')
+                +btn-add('tableNewItem(field)', 'field.addTip')
             .col-sm-12(ng-show='(#{fieldMdl} && #{fieldMdl}.length > 0) || tableNewItemActive(field)')
                 .col-sm-6
                     .table-details
@@ -249,29 +249,29 @@ mixin form-row-custom(lblClasses, fieldClasses)
                                     td.col-sm-12
                                         div(ng-show='!tableEditing(field, $index)')
                                             a.labelFormField(ng-click='curValue = tableStartEdit(backupItem, field, $index)') {{$index + 1}}) {{item | compact}}
-                                            +btn-remove('tableRemove(backupItem, field, $index)')
+                                            +btn-remove('tableRemove(backupItem, field, $index)', 'field.removeTip')
                                             +btn-down('field.reordering && tableSimpleDownVisible(backupItem, field, $index)', 'tableSimpleDown(backupItem, field, $index)')
                                             +btn-up('field.reordering && $index > 0', 'tableSimpleUp(backupItem, field, $index)')
                                         div(ng-show='tableEditing(field, $index)')
                                             label.labelField {{$index + 1}})
                                             +btn-save('tableSimpleSaveVisible(curValue)', 'tableSimpleSave(tableSimpleValid, backupItem, field, curValue, $index)')
                                             .input-tip
-                                                input.form-control(type='text' ng-model='curValue' placeholder='{{field.placeholder}}')
+                                                input.form-control(type='text' ng-model='curValue' placeholder='{{::field.placeholder}}')
                             tfoot(ng-show='tableNewItemActive(field)')
                                 tr
                                     td.col-sm-12
                                         +btn-save('tableSimpleSaveVisible(newValue)', 'tableSimpleSave(tableSimpleValid, backupItem, field, newValue, -1)')
                                         .input-tip
-                                            input.form-control(type='text' ng-model='newValue' placeholder='{{field.placeholder}}')
+                                            input.form-control(type='text' ng-model='newValue' placeholder='{{::field.placeholder}}')
         div(ng-switch-when='indexedTypes')
             +table-pair('Index key-value type pairs', fieldMdl, 'keyClass', 'valueClass', 'Key class full name', 'Value class full name')
         div(ng-switch-when='queryFields' ng-hide=fieldHide)
-            +table-pair('{{field.label}}', fieldMdl, 'name', 'className', 'Field name', 'Field class full name')
+            +table-pair('{{::field.label}}', fieldMdl, 'name', 'className', 'Field name', 'Field class full name')
         div(ng-switch-when='dbFields' ng-hide=fieldHide)
             .col-sm-6
-                label.table-header {{field.label}}:
+                label.table-header {{::field.label}}:
                 +tipLabel('field.tip')
-                +btn-add('tableNewItem(field)')
+                +btn-add('tableNewItem(field)', 'field.addTip')
             .col-sm-12(ng-show='(#{fieldMdl} && #{fieldMdl}.length > 0) || tableNewItemActive(field)')
                 .col-sm-6
                     .table-details
@@ -281,7 +281,7 @@ mixin form-row-custom(lblClasses, fieldClasses)
                                     td.col-sm-12
                                         div(ng-show='!tableEditing(field, $index)')
                                             a.labelFormField(ng-click='curField = tableStartEdit(backupItem, field, $index); curDbName = curField.dbName; curDbType = curField.dbType; curJavaName = curField.javaName; curJavaType = curField.javaType') {{$index + 1}}) {{item.dbName}} / {{item.dbType}} / {{item.javaName}} / {{item.javaType}}
-                                            +btn-remove('tableRemove(backupItem, field, $index)')
+                                            +btn-remove('tableRemove(backupItem, field, $index)', 'field.removeTip')
                                         div(ng-if='tableEditing(field, $index)')
                                             label.labelField {{$index + 1}})
                                             +btn-save('tableDbFieldSaveVisible(curDbName, curDbType, curJavaName, curJavaType)', 'tableDbFieldSave(field, curDbName, curDbType, curJavaName, curJavaType, $index)')
@@ -293,21 +293,21 @@ mixin form-row-custom(lblClasses, fieldClasses)
                                         +table-db-field-edit('newDbName', 'newDbType', 'newJavaName', 'newJavaType')
         div(ng-switch-when='queryGroups' ng-hide=fieldHide)
             .col-sm-6
-                label.table-header {{field.label}}:
+                label.table-header {{::field.label}}:
                 +tipLabel('field.tip')
-                +btn-add('tableNewItem(field)')
+                +btn-add('tableNewItem(field)', 'field.addTip')
             .col-sm-12(ng-show='(#{fieldMdl} && #{fieldMdl}.length > 0) || tableNewItemActive(field)')
                 .col-sm-6
                     .table-details
-                        table.links-edit.col-sm-12(st-table=fieldMdl)
+                        table.links-edit.col-sm-12(st-table=fieldMdl ng-init='newDirection = "ASC"')
                             tbody
                                 tr(ng-repeat='group in #{fieldMdl}')
                                     td.col-sm-12
                                         div
                                             .col-sm-12(ng-show='!tableEditing(field, $index)')
                                                 a.labelFormField(ng-click='curGroup = tableStartEdit(backupItem, field, $index); curGroupName = curGroup.name; curFields = curGroup.fields') {{$index + 1}}) {{group.name}}
-                                                +btn-remove('tableRemove(backupItem, field, $index)')
-                                                +btn-add('tableGroupNewItem($index); newDirection = "ASC"')
+                                                +btn-remove('tableRemove(backupItem, field, $index)', 'field.removeTip')
+                                                +btn-add('tableGroupNewItem($index)', 'field.addTip')
                                             div(ng-show='tableEditing(field, $index)')
                                                 label.labelField {{$index + 1}})
                                                 +btn-save('tableGroupSaveVisible(curGroupName)', 'tableGroupSave(curGroupName, $index)')
@@ -319,7 +319,7 @@ mixin form-row-custom(lblClasses, fieldClasses)
                                                         td
                                                             div(ng-show='!tableGroupItemEditing(groupIndex, $index)')
                                                                 a.labelFormField(ng-click='curGroupItem = tableGroupItemStartEdit(groupIndex, $index); curFieldName = curGroupItem.name; curClassName = curGroupItem.className; curDirection = curGroupItem.direction') {{$index + 1}}) {{groupItem.name}} / {{groupItem.className}} / {{groupItem.direction}}
-                                                                +btn-remove('tableRemoveGroupItem(group, $index)')
+                                                                +btn-remove('tableRemoveGroupItem(group, $index)', 'field.removeTip')
                                                             div(ng-show='tableGroupItemEditing(groupIndex, $index)')
                                                                 label.labelField {{$index + 1}})
                                                                 +btn-save('tableGroupItemSaveVisible(curFieldName, curClassName)', 'tableGroupItemSave(curFieldName, curClassName, curDirection, groupIndex, $index)')


[15/16] incubator-ignite git commit: IGNITE-843: WIP assosiate meta with cache.

Posted by se...@apache.org.
IGNITE-843: WIP assosiate meta with cache.


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

Branch: refs/heads/ignite-1121
Commit: 8f3042822c23a165745ebf7de3f094fe07738332
Parents: b6911af
Author: AKuznetsov <ak...@gridgain.com>
Authored: Fri Jul 24 18:51:59 2015 +0700
Committer: AKuznetsov <ak...@gridgain.com>
Committed: Fri Jul 24 18:51:59 2015 +0700

----------------------------------------------------------------------
 .../src/main/js/controllers/caches-controller.js  | 14 ++++++++++++++
 .../main/js/controllers/clusters-controller.js    |  6 ++----
 .../src/main/js/controllers/models/caches.json    | 14 ++++++++++++++
 .../src/main/js/controllers/models/metadata.json  |  8 +++++++-
 modules/web-control-center/src/main/js/db.js      |  2 ++
 .../src/main/js/routes/caches.js                  | 18 ++++++++++++++----
 .../src/main/js/views/includes/controls.jade      |  4 ++--
 7 files changed, 55 insertions(+), 11 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/8f304282/modules/web-control-center/src/main/js/controllers/caches-controller.js
----------------------------------------------------------------------
diff --git a/modules/web-control-center/src/main/js/controllers/caches-controller.js b/modules/web-control-center/src/main/js/controllers/caches-controller.js
index 0c23e3b..d8993c2 100644
--- a/modules/web-control-center/src/main/js/controllers/caches-controller.js
+++ b/modules/web-control-center/src/main/js/controllers/caches-controller.js
@@ -100,6 +100,8 @@ controlCenterModule.controller('cachesController', ['$scope', '$http', '$common'
             });
 
         $scope.caches = [];
+        $scope.queryMetadata = [];
+        $scope.storeMetadata = [];
 
         $scope.required = function (field) {
             var model = $common.isDefined(field.path) ? field.path + '.' + field.model : field.model;
@@ -172,6 +174,16 @@ controlCenterModule.controller('cachesController', ['$scope', '$http', '$common'
                 $scope.spaces = data.spaces;
                 $scope.caches = data.caches;
 
+                _.forEach(data.metadatas, function (meta) {
+                    var kind = meta.kind;
+
+                    if (kind == 'query' || kind == 'both')
+                        $scope.queryMetadata.push(meta);
+
+                    if (kind == 'store' || kind == 'both')
+                        $scope.storeMetadata.push(meta);
+                });
+
                 var restoredItem = angular.fromJson(sessionStorage.cacheBackupItem);
 
                 if (restoredItem) {
@@ -214,6 +226,8 @@ controlCenterModule.controller('cachesController', ['$scope', '$http', '$common'
             $table.tableReset();
 
             $scope.backupItem = {mode: 'PARTITIONED', atomicityMode: 'ATOMIC', readFromBackup: true, copyOnRead: true};
+            $scope.backupItem.queryMetadata = [];
+            $scope.backupItem.spaceMetadata = [];
             $scope.backupItem.space = $scope.spaces[0]._id;
         };
 

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/8f304282/modules/web-control-center/src/main/js/controllers/clusters-controller.js
----------------------------------------------------------------------
diff --git a/modules/web-control-center/src/main/js/controllers/clusters-controller.js b/modules/web-control-center/src/main/js/controllers/clusters-controller.js
index 1ec78a1..41215b0 100644
--- a/modules/web-control-center/src/main/js/controllers/clusters-controller.js
+++ b/modules/web-control-center/src/main/js/controllers/clusters-controller.js
@@ -32,10 +32,7 @@ controlCenterModule.controller('clustersController', ['$scope', '$http', '$commo
         $scope.tableSimpleDownVisible = $table.tableSimpleDownVisible;
 
         $scope.templates = [
-            {
-                value: {discovery: {kind: 'Multicast', Vm: {addresses: ['127.0.0.1:47500..47510']}, Multicast: {}}},
-                label: 'multicast'
-            },
+            {value: {discovery: {kind: 'Multicast', Vm: {addresses: ['127.0.0.1:47500..47510']}, Multicast: {}}},label: 'multicast'},
             {value: {discovery: {kind: 'Vm', Vm: {addresses: ['127.0.0.1:47500..47510']}}}, label: 'local'}
         ];
 
@@ -188,6 +185,7 @@ controlCenterModule.controller('clustersController', ['$scope', '$http', '$commo
             $table.tableReset();
 
             $scope.backupItem = angular.copy($scope.create.template);
+            $scope.backupItem.caches = [];
             $scope.backupItem.space = $scope.spaces[0]._id;
         };
 

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/8f304282/modules/web-control-center/src/main/js/controllers/models/caches.json
----------------------------------------------------------------------
diff --git a/modules/web-control-center/src/main/js/controllers/models/caches.json b/modules/web-control-center/src/main/js/controllers/models/caches.json
index e3f0613..6f334d2 100644
--- a/modules/web-control-center/src/main/js/controllers/models/caches.json
+++ b/modules/web-control-center/src/main/js/controllers/models/caches.json
@@ -368,6 +368,20 @@
           ]
         },
         {
+          "label": "Metadata",
+          "type": "dropdown-multiple",
+          "model": "queryMetadata",
+          "placeholder": "Choose metadata",
+          "items": "queryMetadata",
+          "tip": [
+            "Select cache type metadata to describe types in cache."
+          ],
+          "addLink": {
+            "label": "Add metadata(s)",
+            "ref": "/configuration/metadata"
+          }
+        } ,
+        {
           "type": "indexedTypes",
           "model": "indexedTypes",
           "keyName": "keyClass",

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/8f304282/modules/web-control-center/src/main/js/controllers/models/metadata.json
----------------------------------------------------------------------
diff --git a/modules/web-control-center/src/main/js/controllers/models/metadata.json b/modules/web-control-center/src/main/js/controllers/models/metadata.json
index b002aeb..6c9bf35 100644
--- a/modules/web-control-center/src/main/js/controllers/models/metadata.json
+++ b/modules/web-control-center/src/main/js/controllers/models/metadata.json
@@ -93,6 +93,8 @@
       "keyName": "name",
       "valueName": "className",
       "hide": "backupItem.kind != 'both' && backupItem.kind == 'query'",
+      "addTip": "Add key field.",
+      "removeTip": "Remove key field.",
       "tip": [
         "Collection of key fields descriptions for CacheJdbcPojoStore."
       ]
@@ -104,6 +106,8 @@
       "keyName": "name",
       "valueName": "className",
       "hide": "backupItem.kind != 'both' && backupItem.kind == 'query'",
+      "addTip": "Add value field.",
+      "removeTip": "Remove value field.",
       "tip": [
         "Collection of value fields descriptions for CacheJdbcPojoStore.."
       ]
@@ -167,8 +171,10 @@
       "type": "queryGroups",
       "model": "groups",
       "hide": "backupItem.kind != 'both' && backupItem.kind != 'query'",
-      "addTip": "Add new group index.",
+      "addTip": "Add new group.",
       "removeTip": "Remove group.",
+      "addItemTip": "Add new field to group.",
+      "removeItemTip": "Remove field from group.",
       "tip": [
         "Collection of group indexes."
       ]

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/8f304282/modules/web-control-center/src/main/js/db.js
----------------------------------------------------------------------
diff --git a/modules/web-control-center/src/main/js/db.js b/modules/web-control-center/src/main/js/db.js
index e34272c..b0b7053 100644
--- a/modules/web-control-center/src/main/js/db.js
+++ b/modules/web-control-center/src/main/js/db.js
@@ -124,6 +124,7 @@ var CacheSchema = new Schema({
     rebalanceTimeout: Number,
     rebalanceThrottle: Number,
 
+    storeMetadatas: [{type: ObjectId, ref: 'CacheTypeMetadata'}],
     cacheStoreFactory: {
         kind: {
             type: String,
@@ -167,6 +168,7 @@ var CacheSchema = new Schema({
     sqlEscapeAll: Boolean,
     sqlOnheapRowCacheSize: Number,
     longQueryWarningTimeout: Number,
+    queryMetadatas: [{type: ObjectId, ref: 'CacheTypeMetadata'}],
     indexedTypes: [{keyClass: String, valueClass: String}],
     sqlFunctionClasses: [String],
     statisticsEnabled: Boolean,

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/8f304282/modules/web-control-center/src/main/js/routes/caches.js
----------------------------------------------------------------------
diff --git a/modules/web-control-center/src/main/js/routes/caches.js b/modules/web-control-center/src/main/js/routes/caches.js
index 3fefd37..7b9c62b 100644
--- a/modules/web-control-center/src/main/js/routes/caches.js
+++ b/modules/web-control-center/src/main/js/routes/caches.js
@@ -41,12 +41,22 @@ router.post('/list', function (req, res) {
             return value._id;
         });
 
-        // Get all caches for spaces.
-        db.Cache.find({space: {$in: space_ids}}).sort('name').exec(function (err, caches) {
+        // Get all caches type metadata for spaces.
+        db.CacheTypeMetadata.find({space: {$in: space_ids}}, '_id name kind', function (err, metadatas) {
             if (err)
-                return res.status(500).send(err.message);
+                return res.status(500).send(err);
+
+            // Get all caches for spaces.
+            db.Cache.find({space: {$in: space_ids}}).sort('name').exec(function (err, caches) {
+                if (err)
+                    return res.status(500).send(err.message);
+
+                var metadatasJson = metadatas.map(function (meta) {
+                    return {value: meta._id, label: meta.name, kind: meta.kind};
+                });
 
-            res.json({spaces: spaces, caches: caches});
+                res.json({spaces: spaces, metadatas: metadatasJson, caches: caches});
+            });
         });
     });
 });

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/8f304282/modules/web-control-center/src/main/js/views/includes/controls.jade
----------------------------------------------------------------------
diff --git a/modules/web-control-center/src/main/js/views/includes/controls.jade b/modules/web-control-center/src/main/js/views/includes/controls.jade
index c0ccc91..aebe4de 100644
--- a/modules/web-control-center/src/main/js/views/includes/controls.jade
+++ b/modules/web-control-center/src/main/js/views/includes/controls.jade
@@ -307,7 +307,7 @@ mixin form-row-custom(lblClasses, fieldClasses)
                                             .col-sm-12(ng-show='!tableEditing(field, $index)')
                                                 a.labelFormField(ng-click='curGroup = tableStartEdit(backupItem, field, $index); curGroupName = curGroup.name; curFields = curGroup.fields') {{$index + 1}}) {{group.name}}
                                                 +btn-remove('tableRemove(backupItem, field, $index)', 'field.removeTip')
-                                                +btn-add('tableGroupNewItem($index)', 'field.addTip')
+                                                +btn-add('tableGroupNewItem($index)', 'field.addItemTip')
                                             div(ng-show='tableEditing(field, $index)')
                                                 label.labelField {{$index + 1}})
                                                 +btn-save('tableGroupSaveVisible(curGroupName)', 'tableGroupSave(curGroupName, $index)')
@@ -319,7 +319,7 @@ mixin form-row-custom(lblClasses, fieldClasses)
                                                         td
                                                             div(ng-show='!tableGroupItemEditing(groupIndex, $index)')
                                                                 a.labelFormField(ng-click='curGroupItem = tableGroupItemStartEdit(groupIndex, $index); curFieldName = curGroupItem.name; curClassName = curGroupItem.className; curDirection = curGroupItem.direction') {{$index + 1}}) {{groupItem.name}} / {{groupItem.className}} / {{groupItem.direction}}
-                                                                +btn-remove('tableRemoveGroupItem(group, $index)', 'field.removeTip')
+                                                                +btn-remove('tableRemoveGroupItem(group, $index)', 'field.removeItemTip')
                                                             div(ng-show='tableGroupItemEditing(groupIndex, $index)')
                                                                 label.labelField {{$index + 1}})
                                                                 +btn-save('tableGroupItemSaveVisible(curFieldName, curClassName)', 'tableGroupItemSave(curFieldName, curClassName, curDirection, groupIndex, $index)')


[04/16] incubator-ignite git commit: #ignite-843 Fixed callout

Posted by se...@apache.org.
#ignite-843 Fixed callout


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

Branch: refs/heads/ignite-1121
Commit: 0631417a8851ada7624f2b96523f57f94b0f973a
Parents: 419dde3
Author: Andrey <an...@gridgain.com>
Authored: Thu Jul 23 16:17:40 2015 +0700
Committer: Andrey <an...@gridgain.com>
Committed: Thu Jul 23 16:17:40 2015 +0700

----------------------------------------------------------------------
 modules/web-control-center/src/main/js/package.json              | 4 +---
 .../web-control-center/src/main/js/public/stylesheets/style.less | 3 +--
 2 files changed, 2 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/0631417a/modules/web-control-center/src/main/js/package.json
----------------------------------------------------------------------
diff --git a/modules/web-control-center/src/main/js/package.json b/modules/web-control-center/src/main/js/package.json
index 5e5463c..7295755 100644
--- a/modules/web-control-center/src/main/js/package.json
+++ b/modules/web-control-center/src/main/js/package.json
@@ -37,9 +37,7 @@
     "passport": "^0.2.1",
     "passport-local": "^1.0.0",
     "passport-local-mongoose": "^1.0.0",
-    "pg": "^4.4.0",
-    "serve-favicon": "~2.2.0",
-    "util": "^0.10.3"
+    "serve-favicon": "~2.2.0"
   },
   "devDependencies": {
     "morgan": "~1.5.1",

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/0631417a/modules/web-control-center/src/main/js/public/stylesheets/style.less
----------------------------------------------------------------------
diff --git a/modules/web-control-center/src/main/js/public/stylesheets/style.less b/modules/web-control-center/src/main/js/public/stylesheets/style.less
index e05f0ff..850fc20 100644
--- a/modules/web-control-center/src/main/js/public/stylesheets/style.less
+++ b/modules/web-control-center/src/main/js/public/stylesheets/style.less
@@ -1155,7 +1155,7 @@ a {
   }
 
   p {
-    padding: 5px 0 10px 20px;
+    padding: 5px 0 10px 10px;
     margin: 0;
   }
 
@@ -1179,4 +1179,3 @@ a {
   height: 400px;
 }
 
-


[16/16] incubator-ignite git commit: Merge ignite-843 -> ignite-1121

Posted by se...@apache.org.
Merge ignite-843 -> ignite-1121


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

Branch: refs/heads/ignite-1121
Commit: 3e8a935d83e0c4eed589fe490835d0518dd82cc6
Parents: 8e050e9 8f30428
Author: sevdokimov <se...@gridgain.com>
Authored: Fri Jul 24 16:45:12 2015 +0300
Committer: sevdokimov <se...@gridgain.com>
Committed: Fri Jul 24 16:45:12 2015 +0300

----------------------------------------------------------------------
 modules/web-control-center/src/main/js/app.js   |   10 +-
 .../main/js/controllers/caches-controller.js    |   14 +
 .../main/js/controllers/clusters-controller.js  |    6 +-
 .../main/js/controllers/metadata-controller.js  |   67 +-
 .../src/main/js/controllers/models/caches.json  |   22 +-
 .../main/js/controllers/models/clusters.json    |    8 +-
 .../main/js/controllers/models/metadata.json    |   42 +-
 .../src/main/js/controllers/models/summary.json |    2 +-
 modules/web-control-center/src/main/js/db.js    |    2 +
 .../web-control-center/src/main/js/package.json |    2 +-
 .../src/main/js/public/stylesheets/style.less   | 1214 -----------------
 .../src/main/js/public/stylesheets/style.scss   | 1270 ++++++++++++++++++
 .../src/main/js/routes/caches.js                |   18 +-
 .../src/main/js/views/configuration/caches.jade |    4 +-
 .../main/js/views/configuration/clusters.jade   |    4 +-
 .../main/js/views/configuration/metadata.jade   |    6 +-
 .../main/js/views/configuration/summary.jade    |   11 +-
 .../src/main/js/views/includes/controls.jade    |   98 +-
 .../src/main/js/views/sql/sql.jade              |   13 +-
 19 files changed, 1482 insertions(+), 1331 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/3e8a935d/modules/web-control-center/src/main/js/app.js
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/3e8a935d/modules/web-control-center/src/main/js/package.json
----------------------------------------------------------------------