ignite-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From akuznet...@apache.org
Subject incubator-ignite git commit: IGNITE-843: WIP Web config.
Date Thu, 04 Jun 2015 18:26:33 GMT
Repository: incubator-ignite
Updated Branches:
  refs/heads/ignite-843 d18056148 -> c6747cf19


IGNITE-843: WIP Web config.


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

Branch: refs/heads/ignite-843
Commit: c6747cf19aeee05f1dd254677f3d976558f74eb7
Parents: d180561
Author: AKuznetsov <akuznetsov@gridgain.com>
Authored: Fri Jun 5 01:26:21 2015 +0700
Committer: AKuznetsov <akuznetsov@gridgain.com>
Committed: Fri Jun 5 01:26:21 2015 +0700

----------------------------------------------------------------------
 .../nodejs/public/form-models/caches.json       | 44 +++++++++++++++++---
 .../nodejs/public/form-models/clusters.json     |  2 +-
 .../public/javascripts/controllers/caches.js    | 11 ++---
 .../nodejs/public/stylesheets/style.css         |  2 +-
 .../nodejs/public/stylesheets/style.less        | 12 +++++-
 modules/webconfig/nodejs/views/caches.jade      | 34 ++++++++-------
 modules/webconfig/nodejs/views/clusters.jade    | 21 +++++-----
 modules/webconfig/nodejs/views/discovery.jade   |  4 +-
 .../webconfig/nodejs/views/includes/footer.jade |  2 +-
 .../webconfig/nodejs/views/includes/header.jade | 10 ++---
 modules/webconfig/nodejs/views/index.jade       | 16 +++----
 .../webconfig/nodejs/views/layout-sidebar.jade  |  2 +-
 modules/webconfig/nodejs/views/layout.jade      |  4 +-
 modules/webconfig/nodejs/views/login.jade       | 16 +++----
 14 files changed, 113 insertions(+), 67 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/c6747cf1/modules/webconfig/nodejs/public/form-models/caches.json
----------------------------------------------------------------------
diff --git a/modules/webconfig/nodejs/public/form-models/caches.json b/modules/webconfig/nodejs/public/form-models/caches.json
index 92d0886..fdfc243 100644
--- a/modules/webconfig/nodejs/public/form-models/caches.json
+++ b/modules/webconfig/nodejs/public/form-models/caches.json
@@ -11,7 +11,7 @@
       "model": "mode",
       "placeholder": "Choose mode",
       "items": "modes",
-      "tip": ["Cache modes:<br/>",
+      "tip": ["Cache modes:",
         "<ul><li>Partitioned - in this mode the overall key set will be divided into partitions and all partitions will be split equally between participating nodes.</li>",
         "<li>Replicated - in this mode all the keys are distributed to all participating nodes.</li>",
         "<li>Local - in this mode caches residing on different grid nodes will not know about each other.</li></ul>"]
@@ -21,11 +21,43 @@
       "type": "dropdown",
       "model": "atomicity",
       "placeholder": "Choose atomicity",
-      "items": "atomicities"
+      "items": "atomicities",
+      "tip": ["Atomicity:",
+        "<ul><li>Transactional - in this mode specified fully ACID-compliant transactional cache behavior.</li>",
+        "<li>Atomic - in this mode distributed transactions and distributed locking are not supported.</li></ul>"]
     }
   ],
   "advanced": [
     {
+      "label": "Memory",
+      "fields": [
+        {
+          "label": "Backups",
+          "type": "text",
+          "model": "backups",
+          "placeholder": "0",
+          "tip": ["Number of nodes used to back up single partition for partitioned cache."]
+        },
+        {
+          "label": "Mode",
+          "type": "dropdown",
+          "model": "memoryMode",
+          "placeholder": "Choose mode",
+          "items": "memoryModes",
+          "tip": ["Memory modes:",
+            "<ul><li>ONHEAP_TIERED - in this mode entries will be stored on-heap first.</li>",
+            "<li>OFFHEAP_TIERED - distributed caches will start immediately and will load all necessary data from other available grid nodes in the background.</li>",
+            "<li>OFFHEAP_VALUES - in this mode no rebalancing will take place which means that caches will be either loaded on demand from persistent store whenever data is accessed, or will be populated explicitly.</li></ul>"]
+        },
+        {
+          "label": "Swap enabled",
+          "type": "check",
+          "model": "swapEnabled",
+          "tip": ["Flag indicating whether swap storage is enabled or not for this cache."]
+        }
+      ]
+    },
+    {
       "label": "Rebalance",
       "fields": [
         {
@@ -34,10 +66,10 @@
           "model": "rebalanceMode",
           "placeholder": "Choose mode",
           "items": "rebalanceModes",
-          "tip": ["Rebalance modes:<br>",
-            "<ul><li>Synchronous - distributed caches will not start until all necessary data is loaded from other available grid nodes.</li>",
-            "<li>Asynchronous - distributed caches will start immediately and will load all necessary data from other available grid nodes in the background.</li>",
-            "<li>None - in this mode no rebalancing will take place which means that caches will be either loaded on demand from persistent store whenever data is accessed, or will be populated explicitly.</li></ul>"]
+          "tip": ["Rebalance modes:",
+            "<ul><li>Synchronous - in this mode distributed caches will not start until all necessary data is loaded from other available grid nodes.</li>",
+            "<li>Asynchronous - in this mode entries never end up in heap memory and get stored in offheap memory right away.</li>",
+            "<li>None - in this mode entry keys will be stored on heap memory, and values will be stored in offheap memory.</li></ul>"]
         },
         {
           "label": "Pool size",

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/c6747cf1/modules/webconfig/nodejs/public/form-models/clusters.json
----------------------------------------------------------------------
diff --git a/modules/webconfig/nodejs/public/form-models/clusters.json b/modules/webconfig/nodejs/public/form-models/clusters.json
index 118cbac..761256f 100644
--- a/modules/webconfig/nodejs/public/form-models/clusters.json
+++ b/modules/webconfig/nodejs/public/form-models/clusters.json
@@ -11,7 +11,7 @@
       "model": "discovery.kind",
       "placeholder": "Choose discovery",
       "items": "discoveries",
-      "tooltip": "Discovery allows to discover remote nodes in grid."
+      "tip": ["Discovery allows to discover remote nodes in grid."]
     }
   ],
   "advanced": [

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/c6747cf1/modules/webconfig/nodejs/public/javascripts/controllers/caches.js
----------------------------------------------------------------------
diff --git a/modules/webconfig/nodejs/public/javascripts/controllers/caches.js b/modules/webconfig/nodejs/public/javascripts/controllers/caches.js
index 68a7c09..5216f99 100644
--- a/modules/webconfig/nodejs/public/javascripts/controllers/caches.js
+++ b/modules/webconfig/nodejs/public/javascripts/controllers/caches.js
@@ -17,8 +17,7 @@
 
 configuratorModule.controller('cachesController', ['$scope', '$http', function($scope, $http) {
         $scope.templates = [
-            {value: {}, label: 'None'},
-            {value: {mode: 'PART', atomicity: 'ATOMIC'}, label: 'Partitioned'},
+            {value: {mode: 'PART', atomicity: 'TRANSACTIONAL'}, label: 'Partitioned'},
             {value: {mode: 'REPL', atomicity: 'ATOMIC'}, label: 'Replicated'},
             {value: {mode: 'LOCAL', atomicity: 'ATOMIC'}, label: 'Local'}
         ];
@@ -46,14 +45,16 @@ configuratorModule.controller('cachesController', ['$scope', '$http', function($
         ];
 
         $scope.memoryModes = [
-            {value: 'ONHT', label: 'Onheap tiered'},
-            {value: 'OFHT', label: 'Offheap tiered'},
-            {value: 'OFHV', label: 'Offheap values'}
+            {value: 'ONHT', label: 'ONHEAP_TIERED'},
+            {value: 'OFHT', label: 'OFFHEAP_TIERED'},
+            {value: 'OFHV', label: 'OFFHEAP_VALUES'}
             ];
 
         $scope.general = [];
         $scope.advanced = [];
 
+
+
         $http.get('/form-models/caches.json')
             .success(function(data) {
                 $scope.general = data.general;

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/c6747cf1/modules/webconfig/nodejs/public/stylesheets/style.css
----------------------------------------------------------------------
diff --git a/modules/webconfig/nodejs/public/stylesheets/style.css b/modules/webconfig/nodejs/public/stylesheets/style.css
index 869157a..261f76d 100644
--- a/modules/webconfig/nodejs/public/stylesheets/style.css
+++ b/modules/webconfig/nodejs/public/stylesheets/style.css
@@ -1 +1 @@
-.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}.modal-backdrop.am-fade.ng-enter{opacity:0}.modal-backdrop.am-fade.ng-enter.ng-enter-active{opacity:.5}.modal-backdrop.am-fade.ng-leave{opacity:.5}.modal-backdrop.am-fade.ng-leave.ng-leave-active{opacity:0}.modal.center .modal-dialog{position:fixed;top:40%;left:50%;min-width:320px;max-width:630px;width:50%;-webkit-transform:translateX(-50%) translateY(-50%);transform:translateX(-50%) translateY(-50%)}.ng-table th.text-right{text-align:right}.ng-table th.text-left{text-align:left}.ng-table th.text-center{text-align:center}.fa.fa-remove{color:red}.border-left{-webkit-box-shadow:1px 0 0 0 #eee inset;box-shadow:1px 0 0 0 #eee inset}.border-right{-webkit-box-shadow:1px 0 0 0 #eee;box-shadow:1px 0 0 0 #eee}.theme-line{background-color:#f9f9f9}.t
 heme-line header{background-color:#fff}.theme-line header .search-bar{width:90%;margin:30px auto 0;-webkit-border-radius:5px;border-radius:5px;-webkit-box-shadow:0 0 0 5px rgba(0,0,0,0.1),0 0 0 1px rgba(0,0,0,0.1);box-shadow:0 0 0 5px rgba(0,0,0,0.1),0 0 0 1px rgba(0,0,0,0.1);position:relative}.theme-line header .search-bar.focus{-webkit-box-shadow:0 0 0 5px rgba(0,0,0,0.2),0 0 0 1px rgba(0,0,0,0.1);box-shadow:0 0 0 5px rgba(0,0,0,0.2),0 0 0 1px rgba(0,0,0,0.1)}.theme-line header .search-bar .fa{position:absolute;top:10px;left:14px;font-size:21px;color:#ccc;z-index:10}.theme-line header .search-bar .twitter-typeahead{width:100%}.theme-line header .search-bar input{-webkit-border-radius:5px;border-radius:5px;height:100%;border:0 none;-webkit-box-shadow:0 2px 2px rgba(0,0,0,0.1) inset;box-shadow:0 2px 2px rgba(0,0,0,0.1) inset;color:#444;width:100%;padding:13px 13px 13px 50px;font-size:14px}.theme-line header .search-bar input.tt-hint{color:#bbb}.theme-line header .search-bar input:ac
 tive .theme-line header .search-bar input:focus{outline:0 none;-webkit-box-shadow:0 2px 2px rgba(0,0,0,0.2) inset;box-shadow:0 2px 2px rgba(0,0,0,0.2) inset}.theme-line header .search-bar .tt-dropdown-menu,.theme-solid header .search-bar .tt-dropdown-menu{width:100%;text-align:left}.theme-line header .search-bar .tt-dropdown-menu h3{padding:0 45px;color:#ccc;font-weight:bold;font-size:12px;margin:10px 0 4px;text-transform:uppercase}.theme-line header .search-bar .tt-dropdown-menu .tt-suggestions{display:block}.theme-line header .search-bar .tt-dropdown-menu .tt-suggestions .tt-suggestion{cursor:pointer;font-size:14px;padding:4px 45px}.theme-line header .search-bar .tt-dropdown-menu .tt-suggestions .tt-suggestion p{color:#333;white-space:nowrap;overflow:hidden;-o-text-overflow:ellipsis;text-overflow:ellipsis}.theme-line header .search-bar .tt-cursor{background-color:#eee}.theme-line header .search-bar .tt-cursor p{color:#fff}.theme-line header a.btn{border:0 none;padding:10px 25px;ba
 ckground-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:4px 0;display:block;font-size:16px}.theme-line #category-c
 olumns 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:25px}.theme-line .btn-primary{border:0 none}.theme-line .main-content .nav-horizontal a{-webkit-box-shadow:0 0;box-shadow:0 0;border:0 none;background-color:#fff;-webkit-border-radius:0;border-radius:0;color:#aaa;padding:6px;margin:0 14px}.theme-line .main-content .nav-horizontal a:hover{color:#999;border-bottom:4px solid #ddd}.theme-line .main-content .nav-horizontal a.active{border-bottom:4px solid #888}.theme-line .sidebar-nav{color:#474a54;padding-bottom:30px}.theme-line .sidebar-nav ul{padding:0;list-style:none;font-size:13px;margin:3px 0 0}.theme-line .sidebar-nav ul li a{padding:3px 0;display:block;color:#666;position:relative;white-space:nowrap;overflow:hidden;-o-text-overflow:ellipsis;text-overflow:ellipsis}.theme-line .sidebar-nav ul li a:before{top:0;content:" ";display:block;width:6px;height:100%;position:absolute;left:-30
 px}.theme-line .sidebar-nav ul li a:hover{text-decoration:none}.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:4px;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:0;margin-top:5px;margin-right:15px}.header h1.navbar-brand a{text-indent:-99999px;background-position:center center;display:block;width:100%;height:100%;-webkit-background-size:contain;-moz-background-size:contain;background-size:contain;background-repeat:no-repeat}.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;-webkit-border-radius:3px;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}.header #jumbotron{margin:55px 70px 50px;text-align:center}.header #jumbotron h2{margin-top:0;margin-bottom:20px}.header #jumbotron p{margin-bottom:0;line-height:1.6em;font-size:16px}.header #jumbotron .btn{margin-top:20px}.header .searchbox{position:relative;margin-right:15p
 x;top:9px}.header .searchbox .fa-search{position:absolute;top:8px;right:10px;color:#777;pointer-events:none}.header .searchbox .typeahead{line-height:1.25em;-webkit-transition:.3s ease-out;-moz-transition:.3s ease-out;-o-transition:.3s ease-out;-ms-transition:.3s ease-out;transition:.3s ease-out;background-color:rgba(0,0,0,0.05);-webkit-border-radius:5px;border-radius:5px;width:95px}.header .searchbox .typeahead:focus,.header .searchbox .typeahead:active{outline:0 none}.header .searchbox .tt-dropdown-menu{max-width:350px;margin-left:-100px}.header .searchbox .tt-dropdown-menu h3{width:100px;float:left;margin:0;padding:8px 0 6px 15px;font-size:13px;color:#bbb}.header .searchbox .tt-dropdown-menu .tt-suggestions{display:block;float:left;width:250px}.header .searchbox .tt-dropdown-menu .tt-suggestions .tt-suggestion{font-size:14px}.header .searchbox .tt-dropdown-menu .tt-suggestions .tt-suggestion p{white-space:nowrap;overflow:hidden;-o-text-overflow:ellipsis;text-overflow:ellipsis}.he
 ader .searchbox .tt-cursor{background-color:#eee}.header .searchbox .tt-cursor p{color:#fff}.header .searchbox input{border:0 none;display:inline-block;font-size:14px;padding:6px 32px 6px 12px;margin:0}.header .searchbox input.tt-hint{height:auto}.header .searchbox.focus input{width:250px}.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:#ec1c24}.theme-line .navbar-nav{color:#888}.theme-line .navbar-nav a{color:#bbb}.theme-line header a.btn{background-color:#ec1c24}.theme-line header a.btn:hover{background-color:#950d12}.theme-line header .navbar-nav .tt-cursor{background-color:#ec1c24}.theme-line header .navbar-nav a:hover,.theme-line header .navbar-nav .open>a{color:#ec1c24}.theme-line .navbar-nav .active a{color:#ec1c24}.theme-line .navbar-nav .active a:hover{color:#950d12}.theme-line .main-links .links a:hover{color:#ec1c24}.theme-line .main-content a{color:#ec1c24}.theme-line .main-
 content a:hover{color:#950d12}.theme-line .sidebar-nav ul li a.active:before{background-color:#ec1c24}.theme-line .sidebar-nav ul li a.active{color:#ec1c24}.theme-line .sidebar-nav ul li a:hover,.theme-line .sidebar-nav ul li a.active:hover{color:#950d12}.theme-line .btn-primary{background-color:#ec1c24}.theme-line .btn-primary:hover{background-color:#950d12}.theme-line .main-content .nav-horizontal a.active{border-color:#ec1c24;color:#ec1c24}.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:#ec1c24}.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:#ec1c24;border-color:#ec1c24}.body-overlap .main-content
 {margin-top:30px}.body-box .main-content,.body-overlap .main-content{padding:30px;-webkit-box-shadow:0 0 0 1px rgba(0,0,0,0.1);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}.submit-vote.submit-vote-parent.voted a.submit-vote-button,.submit-vote.submit-vote-parent a.submit-vote-button:hover{background-color:#ec1c24}div.submit-vote.submit-vote-parent.voted a.submit-vote-button:hover{background-color:#950d12}a,.link .title{color:#ec1c24}a:hover,.link:hover .title{color:#950d12}.header h1.navbar-brand a{background-image:url("https://www.filepicker.io/api/file/QagunjDGRFul2JgNCAli")}.header h1.navbar-brand{width:96px}.block-edit-parameters{text-align:right;padding-bottom:5px}.ng-table-pager{display:none}.container-footer{margin-top:20px}.vcenter{display:inline-block;vertical-align:middle;float:none}.modal{display:block;overflow:hidden}.modal .close{position:ab
 solute;top:24px;right:24px;float:none}.modal .modal-dialog{width:610px}.modal .modal-content{-webkit-border-radius:0;border-radius:0;background-color:#f7f7f7}.modal .modal-content .modal-header{background-color:#fff;text-align:center;color:#555;padding:24px;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{margin:0;color:#aaa;font-size:1em;margin-top:3px}.modal .modal-content .modal-spacer{padding:10px 10px 0 10px}.modal .modal-content .modal-footer{margin-top:0}.modal-body{padding-top:30px}h1.ignite-logo{background-image:url("https://www.filepicker.io/api/file/QagunjDGRFul2JgNCAli")}.st-sort-ascent:after{font-family:FontAwesome, serif;content:'\f077'}.st-sort-descent:after{font-family:FontAwesome, serif;content:'\f078'}.block-display-image img{max-width:100%;max-height:4
 50px;margin:auto;display:block}.greedy{min-height:200px;height:calc(100vh - 230px)}@media (min-width:768px){.navbar-nav>li>a{padding-top:20px;padding-bottom:10px}}.settings-row{display:block;margin:0.65em 0;padding-left:18px}.settings-row [class*="col-"]{display:inline-block;vertical-align:middle;float:none;padding-left:0 !important;padding-right:0 !important}.settings-row input[type="checkbox"]{margin-right:4px}button{margin-right:4px}h1,h2,h3{-webkit-user-select:none;font-weight:normal;line-height:1}h3{color:black;font-size:1.2em;margin-top:1.2em;margin-bottom:1.2em}table tr:hover{cursor:pointer}.input-group{display:inline-block}.input-group .form-control{width:auto;margin-left:0;margin-right:0}.form-control{display:inline-block;padding:3px 6px;height:28px}.form-control button{text-align:left}button .caret{float:right;margin-left:0;margin-top:7px}.panel-heading .panel-title{margin-left:-18px}.theme-line .links table{table-layout:fixed;margin:0}.theme-line .links table td{padding-l
 eft:18px}.theme-line .links table a{color:#666}.theme-line .links table a:hover{color:#ec1c24}.theme-line .links table .active a{color:#ec1c24}.btn{padding:3px 6px}.panel-title a{font-size:14px}.panel-heading{margin:-0.65em 0}.panel{margin-top:-0.65em}.tooltip.right .tooltip-arrow{border-right-color:#ec1c24}.tooltip>.tooltip-inner{max-width:400px;text-align:left;background-color:#ec1c24}
\ No newline at end of file
+.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}.modal-backdrop.am-fade.ng-enter{opacity:0}.modal-backdrop.am-fade.ng-enter.ng-enter-active{opacity:.5}.modal-backdrop.am-fade.ng-leave{opacity:.5}.modal-backdrop.am-fade.ng-leave.ng-leave-active{opacity:0}.modal.center .modal-dialog{position:fixed;top:40%;left:50%;min-width:320px;max-width:630px;width:50%;-webkit-transform:translateX(-50%) translateY(-50%);transform:translateX(-50%) translateY(-50%)}.ng-table th.text-right{text-align:right}.ng-table th.text-left{text-align:left}.ng-table th.text-center{text-align:center}.fa.fa-remove{color:red}.border-left{-webkit-box-shadow:1px 0 0 0 #eee inset;box-shadow:1px 0 0 0 #eee inset}.border-right{-webkit-box-shadow:1px 0 0 0 #eee;box-shadow:1px 0 0 0 #eee}.theme-line{background-color:#f9f9f9}.t
 heme-line header{background-color:#fff}.theme-line header .search-bar{width:90%;margin:30px auto 0;-webkit-border-radius:5px;border-radius:5px;-webkit-box-shadow:0 0 0 5px rgba(0,0,0,0.1),0 0 0 1px rgba(0,0,0,0.1);box-shadow:0 0 0 5px rgba(0,0,0,0.1),0 0 0 1px rgba(0,0,0,0.1);position:relative}.theme-line header .search-bar.focus{-webkit-box-shadow:0 0 0 5px rgba(0,0,0,0.2),0 0 0 1px rgba(0,0,0,0.1);box-shadow:0 0 0 5px rgba(0,0,0,0.2),0 0 0 1px rgba(0,0,0,0.1)}.theme-line header .search-bar .fa{position:absolute;top:10px;left:14px;font-size:21px;color:#ccc;z-index:10}.theme-line header .search-bar .twitter-typeahead{width:100%}.theme-line header .search-bar input{-webkit-border-radius:5px;border-radius:5px;height:100%;border:0 none;-webkit-box-shadow:0 2px 2px rgba(0,0,0,0.1) inset;box-shadow:0 2px 2px rgba(0,0,0,0.1) inset;color:#444;width:100%;padding:13px 13px 13px 50px;font-size:14px}.theme-line header .search-bar input.tt-hint{color:#bbb}.theme-line header .search-bar input:ac
 tive .theme-line header .search-bar input:focus{outline:0 none;-webkit-box-shadow:0 2px 2px rgba(0,0,0,0.2) inset;box-shadow:0 2px 2px rgba(0,0,0,0.2) inset}.theme-line header .search-bar .tt-dropdown-menu,.theme-solid header .search-bar .tt-dropdown-menu{width:100%;text-align:left}.theme-line header .search-bar .tt-dropdown-menu h3{padding:0 45px;color:#ccc;font-weight:bold;font-size:12px;margin:10px 0 4px;text-transform:uppercase}.theme-line header .search-bar .tt-dropdown-menu .tt-suggestions{display:block}.theme-line header .search-bar .tt-dropdown-menu .tt-suggestions .tt-suggestion{cursor:pointer;font-size:14px;padding:4px 45px}.theme-line header .search-bar .tt-dropdown-menu .tt-suggestions .tt-suggestion p{color:#333;white-space:nowrap;overflow:hidden;-o-text-overflow:ellipsis;text-overflow:ellipsis}.theme-line header .search-bar .tt-cursor{background-color:#eee}.theme-line header .search-bar .tt-cursor p{color:#fff}.theme-line header a.btn{border:0 none;padding:10px 25px;ba
 ckground-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:4px 0;display:block;font-size:16px}.theme-line #category-c
 olumns 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:25px}.theme-line .btn-primary{border:0 none}.theme-line .main-content .nav-horizontal a{-webkit-box-shadow:0 0;box-shadow:0 0;border:0 none;background-color:#fff;-webkit-border-radius:0;border-radius:0;color:#aaa;padding:6px;margin:0 14px}.theme-line .main-content .nav-horizontal a:hover{color:#999;border-bottom:4px solid #ddd}.theme-line .main-content .nav-horizontal a.active{border-bottom:4px solid #888}.theme-line .sidebar-nav{color:#474a54;padding-bottom:30px}.theme-line .sidebar-nav ul{padding:0;list-style:none;font-size:13px;margin:3px 0 0}.theme-line .sidebar-nav ul li a{padding:3px 0;display:block;color:#666;position:relative;white-space:nowrap;overflow:hidden;-o-text-overflow:ellipsis;text-overflow:ellipsis}.theme-line .sidebar-nav ul li a:before{top:0;content:" ";display:block;width:6px;height:100%;position:absolute;left:-30
 px}.theme-line .sidebar-nav ul li a:hover{text-decoration:none}.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:4px;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:0;margin-top:5px;margin-right:15px}.header h1.navbar-brand a{text-indent:-99999px;background-position:center center;display:block;width:100%;height:100%;-webkit-background-size:contain;-moz-background-size:contain;background-size:contain;background-repeat:no-repeat}.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;-webkit-border-radius:3px;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}.header #jumbotron{margin:55px 70px 50px;text-align:center}.header #jumbotron h2{margin-top:0;margin-bottom:20px}.header #jumbotron p{margin-bottom:0;line-height:1.6em;font-size:16px}.header #jumbotron .btn{margin-top:20px}.header .searchbox{position:relative;margin-right:15p
 x;top:9px}.header .searchbox .fa-search{position:absolute;top:8px;right:10px;color:#777;pointer-events:none}.header .searchbox .typeahead{line-height:1.25em;-webkit-transition:.3s ease-out;-moz-transition:.3s ease-out;-o-transition:.3s ease-out;-ms-transition:.3s ease-out;transition:.3s ease-out;background-color:rgba(0,0,0,0.05);-webkit-border-radius:5px;border-radius:5px;width:95px}.header .searchbox .typeahead:focus,.header .searchbox .typeahead:active{outline:0 none}.header .searchbox .tt-dropdown-menu{max-width:350px;margin-left:-100px}.header .searchbox .tt-dropdown-menu h3{width:100px;float:left;margin:0;padding:8px 0 6px 15px;font-size:13px;color:#bbb}.header .searchbox .tt-dropdown-menu .tt-suggestions{display:block;float:left;width:250px}.header .searchbox .tt-dropdown-menu .tt-suggestions .tt-suggestion{font-size:14px}.header .searchbox .tt-dropdown-menu .tt-suggestions .tt-suggestion p{white-space:nowrap;overflow:hidden;-o-text-overflow:ellipsis;text-overflow:ellipsis}.he
 ader .searchbox .tt-cursor{background-color:#eee}.header .searchbox .tt-cursor p{color:#fff}.header .searchbox input{border:0 none;display:inline-block;font-size:14px;padding:6px 32px 6px 12px;margin:0}.header .searchbox input.tt-hint{height:auto}.header .searchbox.focus input{width:250px}.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:#ec1c24}.theme-line .navbar-nav{color:#888}.theme-line .navbar-nav a{color:#bbb}.theme-line header a.btn{background-color:#ec1c24}.theme-line header a.btn:hover{background-color:#950d12}.theme-line header .navbar-nav .tt-cursor{background-color:#ec1c24}.theme-line header .navbar-nav a:hover,.theme-line header .navbar-nav .open>a{color:#ec1c24}.theme-line .navbar-nav .active a{color:#ec1c24}.theme-line .navbar-nav .active a:hover{color:#950d12}.theme-line .main-links .links a:hover{color:#ec1c24}.theme-line .main-content a{color:#ec1c24}.theme-line .main-
 content a:hover{color:#950d12}.theme-line .sidebar-nav ul li a.active:before{background-color:#ec1c24}.theme-line .sidebar-nav ul li a.active{color:#ec1c24}.theme-line .sidebar-nav ul li a:hover,.theme-line .sidebar-nav ul li a.active:hover{color:#950d12}.theme-line .btn-primary{background-color:#ec1c24}.theme-line .btn-primary:hover{background-color:#950d12}.theme-line .main-content .nav-horizontal a.active{border-color:#ec1c24;color:#ec1c24}.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:#ec1c24}.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:#ec1c24;border-color:#ec1c24}.body-overlap .main-content
 {margin-top:30px}.body-box .main-content,.body-overlap .main-content{padding:30px;-webkit-box-shadow:0 0 0 1px rgba(0,0,0,0.1);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}.submit-vote.submit-vote-parent.voted a.submit-vote-button,.submit-vote.submit-vote-parent a.submit-vote-button:hover{background-color:#ec1c24}div.submit-vote.submit-vote-parent.voted a.submit-vote-button:hover{background-color:#950d12}a,.link .title{color:#ec1c24}a:hover,.link:hover .title{color:#950d12}.header h1.navbar-brand a{background-image:url("https://www.filepicker.io/api/file/QagunjDGRFul2JgNCAli")}.header h1.navbar-brand{width:96px}.block-edit-parameters{text-align:right;padding-bottom:5px}.ng-table-pager{display:none}.container-footer{margin-top:20px}.vcenter{display:inline-block;vertical-align:middle;float:none}.modal{display:block;overflow:hidden}.modal .close{position:ab
 solute;top:24px;right:24px;float:none}.modal .modal-dialog{width:610px}.modal .modal-content{-webkit-border-radius:0;border-radius:0;background-color:#f7f7f7}.modal .modal-content .modal-header{background-color:#fff;text-align:center;color:#555;padding:24px;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{margin:0;color:#aaa;font-size:1em;margin-top:3px}.modal .modal-content .modal-spacer{padding:10px 10px 0 10px}.modal .modal-content .modal-footer{margin-top:0}.modal-body{padding-top:30px}h1.ignite-logo{background-image:url("https://www.filepicker.io/api/file/QagunjDGRFul2JgNCAli")}.st-sort-ascent:after{font-family:FontAwesome, serif;content:'\f077'}.st-sort-descent:after{font-family:FontAwesome, serif;content:'\f078'}.block-display-image img{max-width:100%;max-height:4
 50px;margin:auto;display:block}.greedy{min-height:200px;height:calc(100vh - 230px)}@media (min-width:768px){.navbar-nav>li>a{padding-top:20px;padding-bottom:10px}}.settings-row{display:block;margin:0.65em 0;padding-left:18px}.settings-row [class*="col-"]{display:inline-block;vertical-align:middle;float:none;padding-left:0 !important;padding-right:0 !important}.settings-row input[type="checkbox"]{margin-right:4px}button{margin-right:4px}h1,h2,h3{-webkit-user-select:none;font-weight:normal;line-height:1}h3{color:black;font-size:1.2em;margin-top:1.2em;margin-bottom:1.2em}table tr:hover{cursor:pointer}.input-group{display:inline-block}.input-group .form-control{width:auto;margin-left:0;margin-right:0}.form-control{display:inline-block;text-align:left;padding:3px 6px;height:28px}.form-control button{text-align:left}button .caret{float:right;margin-left:0;margin-top:7px}.panel-heading .panel-title{margin-left:-18px}.theme-line .links table{table-layout:fixed;margin:0}.theme-line .links ta
 ble td{padding-left:18px}.theme-line .links table a{color:#666}.theme-line .links table a:hover{color:#ec1c24}.theme-line .links table .active a{color:#ec1c24}.btn{padding:3px 6px}.panel-title a{font-size:14px}.panel-heading{margin:-0.65em 0}.panel{margin-top:-0.65em}.tooltip.right .tooltip-arrow{border-right-color:#ec1c24}.tooltip>.tooltip-inner{max-width:400px;text-align:left;background-color:#ec1c24}label{font-weight:normal;margin-bottom:0px}.tip{margin-left:5px}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/c6747cf1/modules/webconfig/nodejs/public/stylesheets/style.less
----------------------------------------------------------------------
diff --git a/modules/webconfig/nodejs/public/stylesheets/style.less b/modules/webconfig/nodejs/public/stylesheets/style.less
index b18fb17..b40c4c2 100644
--- a/modules/webconfig/nodejs/public/stylesheets/style.less
+++ b/modules/webconfig/nodejs/public/stylesheets/style.less
@@ -926,6 +926,7 @@ table tr:hover{ cursor:pointer; }
 
 .form-control {
   display: inline-block;
+  text-align: left;
   padding: 3px 6px;
   height: 28px;
 
@@ -989,4 +990,13 @@ button .caret {
   max-width: 400px;
   text-align: left;
   background-color: #ec1c24;
-}
\ No newline at end of file
+}
+
+label {
+  font-weight: normal;
+  margin-bottom: 0;
+}
+
+.tip {
+  margin-left: 5px;
+}

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/c6747cf1/modules/webconfig/nodejs/views/caches.jade
----------------------------------------------------------------------
diff --git a/modules/webconfig/nodejs/views/caches.jade b/modules/webconfig/nodejs/views/caches.jade
index 6a24b17..b18eeca 100644
--- a/modules/webconfig/nodejs/views/caches.jade
+++ b/modules/webconfig/nodejs/views/caches.jade
@@ -19,15 +19,18 @@ extends layout-sidebar
 append scripts
     script(src='/javascripts/controllers/caches.js')
 
+mixin tip
+    i.tip.fa.fa-question-circle(bs-tooltip ng-if='field.tip' type='button' data-placement='right' data-trigger='hover' data-title='$sce.trustAsHtml({{field.tip.join("")}})' data-html='true')
+
 block content
     .docs-header
         h1 Caches
         p Create and configure Ignite caches.
         hr
     .docs-body(ng-controller='cachesController')
-        button(ng-click='createItem()' class=['btn', 'btn-primary'] ng-disabled='!create.template') &nbspAdd cache
-        span from template:&nbsp
-        button(class=['btn', 'btn-default'] ng-init='create.template = templates[0].value' ng-model='create.template' data-template='/select' data-placeholder='Choose cache template' bs-options='item.value as item.label for item in templates' bs-select)
+        button.btn.btn-primary(ng-click='createItem()' ng-disabled='!create.template') &nbspAdd cache
+        label from template:&nbsp
+        button.btn.btn-default(bs-select ng-init='create.template = templates[0].value' ng-model='create.template' data-template='/select' data-placeholder='Choose cache template' bs-options='item.value as item.label for item in templates')
         h3(ng-hide='caches.length == 0') Caches
         .links
             table.col-sm-12(st-table='rowCollection' st-safe-src='caches')
@@ -40,27 +43,28 @@ block content
         form.form-horizontal(name='editForm' ng-if='backupItem')
             h3 General
             .settings-row(ng-repeat='field in general')
-                span.col-sm-2 {{field.label}}:
+                label.col-sm-2 {{field.label}}:
                 .col-sm-3(ng-switch on='field.type')
                     div(ng-switch-when='text')
                         input.form-control(type='text' ng-model='backupItem[field.model]' placeholder='{{field.placeholder}}')
                     div(ng-switch-when='dropdown')
-                        button.form-control(style='text-align: left' ng-model='backupItem[field.model]' data-template='/select' data-placeholder='{{field.placeholder}}' bs-options='item.value as item.label for item in {{field.items}}' bs-select)
-                span(ng-show='field.tip' type='button' data-placement='right' data-trigger='click' data-title='{{field.tip.join("")}}' data-html='true' data-type='success' bs-tooltip)
-                    i(style='margin-left: 5px'  class=['fa', 'fa-question-circle'])
+                        button.form-control(bs-select ng-model='backupItem[field.model]' data-template='/select' data-placeholder='{{field.placeholder}}' bs-options='item.value as item.label for item in {{field.items}}')
+                +tip
             .panel(bs-collapse data-start-collapsed='true')
                 .panel-collapse(bs-collapse-target)
                     div(ng-repeat='group in advanced')
                         h3 {{group.label}}
                         .settings-row(ng-repeat='field in group.fields')
-                            span.col-sm-2 {{field.label}}:
-                            .col-sm-3(ng-switch on='field.type')
-                                div(ng-switch-when='text')
-                                    input.form-control(type='text' ng-model='backupItem[field.model]' placeholder='{{field.placeholder}}')
-                                div(ng-switch-when='dropdown')
-                                    button.form-control(style='text-align: left' ng-model='backupItem[field.model]' data-template='/select' data-placeholder='{{field.placeholder}}' bs-options='item.value as item.label for item in {{field.items}}' bs-select)
-                            span(ng-show='field.tip' type='button' data-placement='right' data-trigger='click' data-title='{{field.tip.join("")}}' data-html='true' data-type='success' bs-tooltip)
-                                i(style='margin-left: 5px'  class=['fa', 'fa-question-circle'])
+                            div(ng-if='field.type != "check"')
+                                label.col-sm-2 {{field.label}}:
+                                .col-sm-3
+                                    input.form-control(ng-if='field.type == "text"' type='text' ng-model='backupItem[field.model]' placeholder='{{field.placeholder}}')
+                                    button.form-control(ng-if='field.type == "dropdown"' bs-select ng-model='backupItem[field.model]' data-template='/select' data-placeholder='{{field.placeholder}}' bs-options='item.value as item.label for item in {{field.items}}')
+                                +tip
+                            div(ng-if='field.type == "check"')
+                                input(type='checkbox' ng-model='backupItem[field.model]')
+                                label(ng-click='backupItem[field.model] = !backupItem[field.model]') {{field.label}}
+                                +tip
                 .panel-heading
                     .panel-title
                         span(bs-collapse-toggle)

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/c6747cf1/modules/webconfig/nodejs/views/clusters.jade
----------------------------------------------------------------------
diff --git a/modules/webconfig/nodejs/views/clusters.jade b/modules/webconfig/nodejs/views/clusters.jade
index 007ad30..7639a6d 100644
--- a/modules/webconfig/nodejs/views/clusters.jade
+++ b/modules/webconfig/nodejs/views/clusters.jade
@@ -27,13 +27,13 @@ block content
     .docs-body(ng-controller='clustersController')
         button(ng-click='createItem()' class=['btn', 'btn-primary'] ng-disabled='!create.template') &nbspAdd cluster
         span from template:&nbsp
-        button(class=['btn', 'btn-default'] ng-init="create.template = templates[0].value" ng-model='create.template' data-template='/select' data-placeholder='Choose cluster template' bs-options='item.value as item.label for item in templates' bs-select)
+        button.btn.btn-default(ng-init='create.template = templates[0].value' ng-model='create.template' data-template='/select' data-placeholder='Choose cluster template' bs-options='item.value as item.label for item in templates' bs-select)
         h3(ng-hide='clusters.length == 0') Clusters
         .links
             table.col-sm-12(st-table='rowCollection' st-safe-src='clusters')
                 tbody
                     tr(ng-repeat='row in rowCollection')
-                        td.col-sm-6(ng-class="{active: row._id == selectedItem._id}")
+                        td.col-sm-6(ng-class='{active: row._id == selectedItem._id}')
                             a(ng-click='selectItem(row)') {{$index + 1}}. {{row.name}}, {{row.discovery.kind | displayValue:discoveries:'Discovery not set'}}
         .row.col-sm-12
             hr
@@ -45,9 +45,8 @@ block content
                     div(ng-switch-when='text')
                         input.form-control(type='text' ng-model='backupItem[field.model]')
                     div(ng-switch-when='dropdown')
-                        button.form-control(style='text-align: left' ng-model='backupItem[field.model]' data-template='/select' data-placeholder='{{field.placeholder}}' bs-options='item.value as item.label for item in {{field.items}}' bs-select)
-                span(type='button' ng-show="field.tooltip" data-trigger="click" data-placement='right' data-title='{{field.tooltip}}' data-html='true' data-type="success" bs-tooltip)
-                    i(style='margin-left: 5px'  class=['fa', 'fa-question-circle'])
+                        button.form-control(ng-model='backupItem[field.model]' data-template='/select' data-placeholder='{{field.placeholder}}' bs-options='item.value as item.label for item in {{field.items}}' bs-select)
+                i.tip.fa.fa-question-circle(bs-tooltip type='button' ng-show='field.tip' data-trigger='hover' data-placement='right' data-title='{{field.tip.join("")}}' data-html='true')
             .panel(bs-collapse data-start-collapsed='true')
                 .panel-collapse(bs-collapse-target)
                     h3 Atomic data structures
@@ -58,7 +57,7 @@ block content
                     .settings-row
                         span.col-sm-2 Cache mode:
                         .col-sm-3
-                            button.form-control(style='text-align: left' ng-model='backupItem.atomic.cacheMode' data-template='/select' data-placeholder='PARTITIONED' bs-options='item.value as item.label for item in cacheModes' bs-select)
+                            button.form-control(ng-model='backupItem.atomic.cacheMode' data-template='/select' data-placeholder='PARTITIONED' bs-options='item.value as item.label for item in cacheModes' bs-select)
                     .settings-row
                         span.col-sm-2 Sequence reserve size:
                         .col-sm-3
@@ -67,15 +66,15 @@ block content
                     .settings-row
                         span.col-sm-2 Caches:
                         .col-sm-3
-                            button.form-control(style='text-align: left' ng-model='backupItem.caches' data-template='/select' data-multiple='1' data-max-length='3' data-placeholder='Choose caches' bs-options='item.value as item.label for item in caches' bs-select)
+                            button.form-control(ng-model='backupItem.caches' data-template='/select' data-multiple='1' data-max-length='3' data-placeholder='Choose caches' bs-options='item.value as item.label for item in caches' bs-select)
                     .settings-row
                         input(type='checkbox' ng-model='backupItem.cacheSanityCheckEnabled')
-                        span Enable cache sanity check.
+                        label(ng-click='backupItem.cacheSanityCheckEnabled = !backupItem.cacheSanityCheckEnabled') Enable cache sanity check.
                     h3 Events
                     .settings-row
                         span.col-sm-2 Include type:
                         .col-sm-3
-                            button.form-control(style='text-align: left' ng-model='backupItem.inclEvtTypes' data-template='/select' data-multiple='1' data-max-length='2' data-placeholder='Choose recorded event types' bs-options='item.value as item.label for item in events' bs-select)
+                            button.form-control(ng-model='backupItem.inclEvtTypes' data-template='/select' data-multiple='1' data-max-length='2' data-placeholder='Choose recorded event types' bs-options='item.value as item.label for item in events' bs-select)
                     h3 Marshaller
                     .settings-row
                         span.col-sm-2 Keep alive time:
@@ -122,7 +121,7 @@ block content
                     h3 Peer Class Loading
                     .settings-row
                         input(type='checkbox' ng-model='backupItem.p2pEnabled')
-                        span Enable peer class loading.
+                        label(ng-click='backupItem.p2pEnabled = !backupItem.p2pEnabled') Enable peer class loading.
                     .settings-row
                         span.col-sm-2 Local class path exclude:
                         .col-sm-3
@@ -164,7 +163,7 @@ block content
                             input.form-control(type='text' ng-model='backupItem.transactions.pessimisticTxLogSize' placeholder='0')
                     .settings-row
                         input(type='checkbox' ng-model='backupItem.transactions.txSerEnabled')
-                        span Enable serializable cache transactions.
+                        label(ng-click='backupItem.txSerEnabled = !backupItem.txSerEnabled') span Enable serializable cache transactions.
                     h3 Utility
                     .settings-row
                         span.col-sm-2 Keep alive time:

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/c6747cf1/modules/webconfig/nodejs/views/discovery.jade
----------------------------------------------------------------------
diff --git a/modules/webconfig/nodejs/views/discovery.jade b/modules/webconfig/nodejs/views/discovery.jade
index 94c0461..21e1869 100644
--- a/modules/webconfig/nodejs/views/discovery.jade
+++ b/modules/webconfig/nodejs/views/discovery.jade
@@ -24,8 +24,8 @@ div(class=['modal', 'center'] tabindex='-1' role='dialog')
                 div.block-edit-parameters
                     div.btn-group
                         button(ng-click='add()' class=['btn', 'btn-default', 'fa', 'fa-plus'] ) &nbspAdd
-                table(ng-table="tcpDiscoveryVmIpFinderTable" class=['table', 'table-bordered', 'table-hover'])
-                    tr(ng-repeat="address in $data")
+                table(ng-table='tcpDiscoveryVmIpFinderTable' class=['table', 'table-bordered', 'table-hover'])
+                    tr(ng-repeat='address in $data')
                         td(data-title="'#'" class=['text-center', 'vcenter'] style='width: 50px') {{$index + 1}}
                         td.text-center(data-title="'IP Address with ports range'")
                             div(ng-if='!(editColumn == "ip" && currentRow == cluster)')

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/c6747cf1/modules/webconfig/nodejs/views/includes/footer.jade
----------------------------------------------------------------------
diff --git a/modules/webconfig/nodejs/views/includes/footer.jade b/modules/webconfig/nodejs/views/includes/footer.jade
index 5042443..8e98681 100644
--- a/modules/webconfig/nodejs/views/includes/footer.jade
+++ b/modules/webconfig/nodejs/views/includes/footer.jade
@@ -14,7 +14,7 @@
     See the License for the specific language governing permissions and
     limitations under the License.
 
-div(class=['container', 'container-footer'])
+div.container.container-footer
     footer
         center
             p

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/c6747cf1/modules/webconfig/nodejs/views/includes/header.jade
----------------------------------------------------------------------
diff --git a/modules/webconfig/nodejs/views/includes/header.jade b/modules/webconfig/nodejs/views/includes/header.jade
index 23d8f25..b2ac480 100644
--- a/modules/webconfig/nodejs/views/includes/header.jade
+++ b/modules/webconfig/nodejs/views/includes/header.jade
@@ -18,15 +18,15 @@ header.header(id='header')
     div.container
         h1.navbar-brand
             a(href='/') Apache Ignite Web Configurator
-        div(class=['navbar-collapse', 'collapse'] ng-controller='auth')
-            ul(class=['nav', 'navbar-nav'])
+        div.navbar-collapse.collapse(ng-controller='auth')
+            ul.nav.navbar-nav
                 li
                     a.active(href='/') Home
-            ul(class=['nav', 'navbar-nav', 'pull-right'] ng-init='user = #{JSON.stringify(user)}')
+            ul.nav.navbar-nav.pull-right(ng-init='user = #{JSON.stringify(user)}')
                 li(ng-show='user')
-                    a.dropdown-toggle(data-toggle="dropdown" aria-expanded="true" bs-dropdown data-template="user-dropdown" data-placement='bottom-right') {{user.username}}
+                    a.dropdown-toggle(data-toggle='dropdown' aria-expanded='true' bs-dropdown data-template='user-dropdown' data-placement='bottom-right') {{user.username}}
                         span.caret
-                    script#user-dropdown(type="text/ng-template")
+                    script#user-dropdown(type='text/ng-template')
                         ul.dropdown-menu
                             li
                                 a(href='/rest/auth/logout') Log Out

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/c6747cf1/modules/webconfig/nodejs/views/index.jade
----------------------------------------------------------------------
diff --git a/modules/webconfig/nodejs/views/index.jade b/modules/webconfig/nodejs/views/index.jade
index aeee291..06bc560 100644
--- a/modules/webconfig/nodejs/views/index.jade
+++ b/modules/webconfig/nodejs/views/index.jade
@@ -19,17 +19,17 @@ block container
     div.row
         div(class=['col-sm-2', 'border-right', 'section-left'])
             div.sidebar-nav
-                ul(ng-controller='activeLink' class="menu")
+                ul.menu(ng-controller='activeLink')
                     li
-                        a(ng-class="{active: isActive('/clusters')}" href='/clusters') Clusters
+                        a(ng-class='{active: isActive("/clusters")}' href='/clusters') Clusters
                     li
-                        a(ng-class="{active: isActive('/caches')}" href='/caches') Caches
+                        a(ng-class='{active: isActive("/caches")}' href='/caches') Caches
                     li
-                        a(ng-class="{active: isActive('/persistence')}" href='/persistence') Persistence
+                        a(ng-class='{active: isActive("/persistence")}' href='/persistence') Persistence
                     li
-                        a(ng-class="{active: isActive('/sql')}" href='/sql') SQL
+                        a(ng-class='{active: isActive("/sql")}' href='/sql') SQL
                     li
-                        a(ng-class="{active: isActive('/clients')}" href='/clients') Clients
+                        a(ng-class='{active: isActive("/clients")}' href='/clients') Clients
         div(class=['col-sm-10', 'border-left', 'section-right'])
             div.docs-content
                 div
@@ -37,7 +37,7 @@ block container
                         | Apache Ignite<sup>tm</sup> In-Memory Data Fabric is a high-performance,
                         | integrated and distributed in-memory platform for computing and transacting on large-scale data
                         | sets in real-time, orders of magnitude faster than possible with traditional disk-based or flash technologies.
-            div(class=['block-image', 'block-display-image'])
+            div.block-image.block-display-image
                     img(ng-src='https://www.filepicker.io/api/file/lydEeGB6Rs9hwbpcQxiw' alt='Apache Ignite stack')
             div.text-center(ng-controller='auth')
-                a(class=['btn', 'btn-default'] ng-click='login()' href='#') Configure Now
+                a.btn.btn-default(ng-click='login()' href='#') Configure Now

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/c6747cf1/modules/webconfig/nodejs/views/layout-sidebar.jade
----------------------------------------------------------------------
diff --git a/modules/webconfig/nodejs/views/layout-sidebar.jade b/modules/webconfig/nodejs/views/layout-sidebar.jade
index 36d7bd3..252815e 100644
--- a/modules/webconfig/nodejs/views/layout-sidebar.jade
+++ b/modules/webconfig/nodejs/views/layout-sidebar.jade
@@ -22,7 +22,7 @@ block container
     div.row
         div(class=['col-sm-2', 'border-right', 'section-left', 'greedy'])
             div.sidebar-nav
-                ul(ng-controller='activeLink' class="menu")
+                ul.menu(ng-controller='activeLink')
                     li
                         a(ng-class="{active: isActive('/clusters')}" href='/clusters') Clusters
                     li

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/c6747cf1/modules/webconfig/nodejs/views/layout.jade
----------------------------------------------------------------------
diff --git a/modules/webconfig/nodejs/views/layout.jade b/modules/webconfig/nodejs/views/layout.jade
index d217000..422130b 100644
--- a/modules/webconfig/nodejs/views/layout.jade
+++ b/modules/webconfig/nodejs/views/layout.jade
@@ -45,11 +45,11 @@ html(ng-app='ignite-web-configurator')
             script(src='/javascripts/controllers/common.js')
 
             script(src='/javascripts/bundle.js')
-    body(class=['theme-line', 'body-overlap'])
+    body.theme-line.body-overlap
         div.wrapper
             include includes/header
 
-            div(class=['container', 'body-container'])
+            div.container.body-container
                 div.main-content
                     div.main-head
                         block container

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/c6747cf1/modules/webconfig/nodejs/views/login.jade
----------------------------------------------------------------------
diff --git a/modules/webconfig/nodejs/views/login.jade b/modules/webconfig/nodejs/views/login.jade
index 35ad6f6..c0e4e6d 100644
--- a/modules/webconfig/nodejs/views/login.jade
+++ b/modules/webconfig/nodejs/views/login.jade
@@ -14,7 +14,7 @@
     See the License for the specific language governing permissions and
     limitations under the License.
 
-div(class=['modal', 'center'] tabindex='-1' role='dialog')
+div.modal.center(tabindex='-1' role='dialog')
     .modal-dialog
         .modal-content
             .modal-header.header
@@ -28,21 +28,21 @@ div(class=['modal', 'center'] tabindex='-1' role='dialog')
                     div(ng-show='errorMessage')
                         p.text-center.error-message {{errorMessage}}
                     .col-xs-9.login.col-xs-offset-1
-                        div.form-group(ng-show="action == 'register'")
+                        div.form-group(ng-show='action == "register"')
                             label.col-sm-3.control-label Full Name
                             .controls.col-sm-9
-                                input.form-control(type='text', ng-model='user_info.username', placeholder='John Smith', focus-me="action=='register'", ng-required="action=='register'")
+                                input.form-control(type='text', ng-model='user_info.username', placeholder='John Smith', focus-me='action=="register"', ng-required='action=="register"')
                         div.form-group
                             label.col-sm-3.control-label Email
                             .controls.col-sm-9
-                                input.form-control(type='email', ng-model='user_info.email', placeholder='you@domain.com', focus-me="action=='login'", required)
+                                input.form-control(type='email', ng-model='user_info.email', placeholder='you@domain.com', focus-me='action=="login"', required)
                         div.form-group
                             label.col-sm-3.control-label Password
                             .controls.col-sm-9
                                 input.form-control(type='password', ng-model='user_info.password', placeholder='Password', required)
             .modal-footer
-                a.show-signup.ng-hide(ng-show="action != 'login'", ng-click="action = 'login';") log in
-                a.show-signup(ng-show="action != 'register'", ng-click="action = 'register';") sign up
+                a.show-signup.ng-hide(ng-show='action != "login"', ng-click='action = "login";') log in
+                a.show-signup(ng-show="action != 'register'", ng-click='action = "register";') sign up
                 | &nbsp;or&nbsp;
-                button.btn.btn-primary(ng-click='auth(action, user_info)' ng-show="action == 'login'" ng-disabled='loginForm.$invalid') Log In
-                button.btn.btn-primary(ng-click='auth(action, user_info)' ng-show="action == 'register'" ng-disabled='loginForm.$invalid') Sign Up
+                button.btn.btn-primary(ng-click='auth(action, user_info)' ng-show='action == "login"' ng-disabled='loginForm.$invalid') Log In
+                button.btn.btn-primary(ng-click='auth(action, user_info)' ng-show='action == "register"' ng-disabled='loginForm.$invalid') Sign Up


Mime
View raw message