You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by an...@apache.org on 2015/07/02 11:22:25 UTC

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

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/668d707d
Tree: http://git-wip-us.apache.org/repos/asf/incubator-ignite/tree/668d707d
Diff: http://git-wip-us.apache.org/repos/asf/incubator-ignite/diff/668d707d

Branch: refs/heads/ignite-843
Commit: 668d707d2e90bba2c9f8a3f474c4b161ecaeb2e8
Parents: 32cf17f 8e79260
Author: Andrey <an...@gridgain.com>
Authored: Thu Jul 2 15:46:28 2015 +0700
Committer: Andrey <an...@gridgain.com>
Committed: Thu Jul 2 15:46:28 2015 +0700

----------------------------------------------------------------------
 .../web-control-center/licenses/apache-2.0.txt  | 202 ++++
 modules/web-control-center/nodejs/.gitignore    |   1 +
 modules/web-control-center/nodejs/DEVNOTES.txt  |  14 +
 modules/web-control-center/nodejs/app.js        | 125 +++
 modules/web-control-center/nodejs/bin/www       |  90 ++
 .../nodejs/config/default.json                  |   8 +
 .../web-control-center/nodejs/configuration.js  |  22 +
 modules/web-control-center/nodejs/db.js         | 320 ++++++
 modules/web-control-center/nodejs/package.json  |  36 +
 .../nodejs/public/favicon.ico                   | Bin 0 -> 1150 bytes
 .../nodejs/public/form-models/caches.json       | 804 +++++++++++++++
 .../nodejs/public/form-models/clusters.json     | 849 ++++++++++++++++
 .../nodejs/public/form-models/persistence.json  |  66 ++
 .../nodejs/public/images/docker.png             | Bin 0 -> 994 bytes
 .../nodejs/public/images/java.png               | Bin 0 -> 170 bytes
 .../nodejs/public/images/logo.png               | Bin 0 -> 8148 bytes
 .../nodejs/public/images/xml.png                | Bin 0 -> 232 bytes
 .../nodejs/public/javascripts/bundle.js         |  18 +
 .../public/javascripts/controllers/caches.js    | 237 +++++
 .../public/javascripts/controllers/clusters.js  | 207 ++++
 .../public/javascripts/controllers/common.js    | 169 ++++
 .../javascripts/controllers/persistences.js     | 202 ++++
 .../public/javascripts/controllers/summary.js   | 137 +++
 .../nodejs/public/javascripts/dataStructures.js |  84 ++
 .../nodejs/public/stylesheets/style.css         |   1 +
 .../nodejs/public/stylesheets/style.less        | 994 +++++++++++++++++++
 .../web-control-center/nodejs/routes/auth.js    |  74 ++
 .../web-control-center/nodejs/routes/caches.js  |  91 ++
 .../nodejs/routes/clusters.js                   | 100 ++
 .../nodejs/routes/configGenerator.js            |  69 ++
 .../web-control-center/nodejs/routes/pages.js   |  68 ++
 .../nodejs/routes/persistences.js               | 313 ++++++
 .../nodejs/test/routes/persistence.js           |  32 +
 .../nodejs/utils/generatorJava.js               | 555 +++++++++++
 .../nodejs/utils/generatorUtils.js              | 227 +++++
 .../nodejs/utils/generatorXml.js                | 502 ++++++++++
 .../web-control-center/nodejs/views/caches.jade |  68 ++
 .../nodejs/views/clients.jade                   |  26 +
 .../nodejs/views/clusters.jade                  |  71 ++
 .../web-control-center/nodejs/views/error.jade  |  22 +
 .../nodejs/views/includes/controls.jade         | 193 ++++
 .../nodejs/views/includes/footer.jade           |  23 +
 .../nodejs/views/includes/header.jade           |  36 +
 .../web-control-center/nodejs/views/index.jade  |  29 +
 .../nodejs/views/layout-sidebar.jade            |  37 +
 .../web-control-center/nodejs/views/layout.jade |  59 ++
 .../web-control-center/nodejs/views/login.jade  |  47 +
 .../nodejs/views/persistence.jade               | 115 +++
 .../web-control-center/nodejs/views/sql.jade    |  23 +
 .../nodejs/views/summary.jade                   |  93 ++
 .../nodejs/views/templates/select.jade          |  26 +
 modules/webconfig/licenses/apache-2.0.txt       | 202 ----
 modules/webconfig/nodejs/.gitignore             |   1 -
 modules/webconfig/nodejs/DEVNOTES.txt           |  14 -
 modules/webconfig/nodejs/app.js                 | 125 ---
 modules/webconfig/nodejs/bin/www                |  90 --
 modules/webconfig/nodejs/config/default.json    |   8 -
 modules/webconfig/nodejs/configuration.js       |  22 -
 modules/webconfig/nodejs/db.js                  | 320 ------
 modules/webconfig/nodejs/package.json           |  36 -
 modules/webconfig/nodejs/public/favicon.ico     | Bin 1150 -> 0 bytes
 .../nodejs/public/form-models/caches.json       | 804 ---------------
 .../nodejs/public/form-models/clusters.json     | 849 ----------------
 .../nodejs/public/form-models/persistence.json  |  66 --
 .../webconfig/nodejs/public/images/docker.png   | Bin 994 -> 0 bytes
 modules/webconfig/nodejs/public/images/java.png | Bin 170 -> 0 bytes
 modules/webconfig/nodejs/public/images/logo.png | Bin 8148 -> 0 bytes
 modules/webconfig/nodejs/public/images/xml.png  | Bin 232 -> 0 bytes
 .../nodejs/public/javascripts/bundle.js         |  18 -
 .../public/javascripts/controllers/caches.js    | 237 -----
 .../public/javascripts/controllers/clusters.js  | 207 ----
 .../public/javascripts/controllers/common.js    | 169 ----
 .../javascripts/controllers/persistences.js     | 202 ----
 .../public/javascripts/controllers/summary.js   | 137 ---
 .../nodejs/public/javascripts/dataStructures.js |  84 --
 .../nodejs/public/stylesheets/style.css         |   1 -
 .../nodejs/public/stylesheets/style.less        | 994 -------------------
 modules/webconfig/nodejs/routes/auth.js         |  74 --
 modules/webconfig/nodejs/routes/caches.js       |  91 --
 modules/webconfig/nodejs/routes/clusters.js     | 100 --
 .../webconfig/nodejs/routes/configGenerator.js  |  69 --
 modules/webconfig/nodejs/routes/pages.js        |  68 --
 modules/webconfig/nodejs/routes/persistences.js | 313 ------
 .../webconfig/nodejs/test/routes/persistence.js |  32 -
 modules/webconfig/nodejs/utils/generatorJava.js | 555 -----------
 .../webconfig/nodejs/utils/generatorUtils.js    | 227 -----
 modules/webconfig/nodejs/utils/generatorXml.js  | 502 ----------
 modules/webconfig/nodejs/views/caches.jade      |  68 --
 modules/webconfig/nodejs/views/clients.jade     |  26 -
 modules/webconfig/nodejs/views/clusters.jade    |  71 --
 modules/webconfig/nodejs/views/error.jade       |  22 -
 .../nodejs/views/includes/controls.jade         | 193 ----
 .../webconfig/nodejs/views/includes/footer.jade |  23 -
 .../webconfig/nodejs/views/includes/header.jade |  36 -
 modules/webconfig/nodejs/views/index.jade       |  29 -
 .../webconfig/nodejs/views/layout-sidebar.jade  |  37 -
 modules/webconfig/nodejs/views/layout.jade      |  59 --
 modules/webconfig/nodejs/views/login.jade       |  47 -
 modules/webconfig/nodejs/views/persistence.jade | 115 ---
 modules/webconfig/nodejs/views/sql.jade         |  23 -
 modules/webconfig/nodejs/views/summary.jade     |  93 --
 .../nodejs/views/templates/select.jade          |  26 -
 modules/webconfig/pom.xml                       | 172 ----
 .../server/auth/AjaxAuthenticationHandler.java  |  80 --
 .../server/auth/AuthenticationProviderImpl.java |  62 --
 .../server/auth/UserAuthentication.java         | 103 --
 .../ClusterConfigurationController.java         |  57 --
 .../server/controller/JsonResponseBean.java     |  76 --
 .../server/controller/UsersController.java      | 128 ---
 .../server/dao/ClusterConfigurationDao.java     |  41 -
 .../ignite/webconfig/server/dao/UserDao.java    |  45 -
 .../impl/MongoClusterConfigurationDaoImpl.java  |  54 -
 .../server/dao/impl/MongoSpringBean.java        | 103 --
 .../server/dao/impl/MongoUserDaoImpl.java       | 135 ---
 .../server/dao/impl/MorphiaSpringBean.java      |  58 --
 .../webconfig/server/launcher/Launcher.java     |  44 -
 .../server/model/ClusterConfiguration.java      | 117 ---
 .../ignite/webconfig/server/model/User.java     | 104 --
 .../main/webapp/WEB-INF/applicationContext.xml  |  53 -
 .../src/main/webapp/WEB-INF/main-servlet.xml    |  10 -
 .../webconfig/src/main/webapp/WEB-INF/web.xml   |  40 -
 modules/webconfig/src/main/webapp/css/home.css  |  34 -
 modules/webconfig/src/main/webapp/css/login.css | 217 ----
 modules/webconfig/src/main/webapp/home.html     |  26 -
 modules/webconfig/src/main/webapp/js/home.js    |  20 -
 modules/webconfig/src/main/webapp/js/login.js   | 170 ----
 modules/webconfig/src/main/webapp/login.html    |  36 -
 127 files changed, 7485 insertions(+), 9470 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/668d707d/modules/web-control-center/nodejs/public/stylesheets/style.css
----------------------------------------------------------------------
diff --cc modules/web-control-center/nodejs/public/stylesheets/style.css
index 0000000,fb21a65..6e818e1
mode 000000,100644..100644
--- a/modules/web-control-center/nodejs/public/stylesheets/style.css
+++ b/modules/web-control-center/nodejs/public/stylesheets/style.css
@@@ -1,0 -1,1 +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%;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,2
 55,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-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:25px}.theme-line .btn-p
 rimary{border:0 none;background-color:#ec1c24}.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: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:-30px}.theme-line .sidebar-nav ul li a:hover{text-decoration:none}.theme-line .select li a{color:#666}.theme-line .select li a:hover,.theme-lin
 e .select .active{color:#ec1c24;background-color:white}.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: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-n
 av .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:#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:#666}.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 .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-ri
 ght .threes-nav .btn-default:hover,.theme-line.page-docs.body-threes .section-right .threes-nav .pull-right a:hover{color:#ec1c24;border-color:#ec1c24}.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}.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}.vcenter2{position:relative;top:50%;transform:translateY(-50%)}.modal{display:block;overflow:hidden}.modal .close{position:absolute;top:0.65em;right:0.65em;float:none}.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: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{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: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:450px;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}}.details-row{padding-left:1.3em}.details-table-row{padding:0}.details-row,.settings-row{display:block;margin:0.65em 0;line-height:28px}.details-row [class*="col-"],.settings-row [class*="col-"]{display:inline-block;vertical-align:middle;float:none;padding-left:0 !important;padding-right:0 !important}.details-row input[type="checkbox"],.settings-row input[type="checkbox"]{line-height:20px;margin-right:4px}.details-row .checkbox label,.settings-row .checkbox label{line-height:20px;vertical-align:middle}button{margin-right:4px}h1,h2,h3{user-select:none;font-weight:normal;line-hei
 ght:1}h3{color:black;font-size:1.2em;margin-top:0;margin-bottom:1.5em}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 3px;height:28px}.form-control button{text-align:left}.table-form-control{width:auto}.form-horizontal .control-label{padding-top:4px}button .caret{float:right;margin-left:0;margin-top:7px}.theme-line .panel-heading{padding:10px 10px;margin:0}.theme-line .panel-heading h3{margin-bottom:0}.theme-line .panel-heading h3>a{color:black;cursor:pointer}.theme-line .panel-title a{color:#ec1c24}.theme-line .panel-title h3{margin-bottom:1.3em}.theme-line .panel-body{padding:0.65em 1.3em}.theme-line .main-content a.customize{color:#ec1c24;cursor:pointer}.theme-line .panel-collapse{margin:0}.theme-line .links table,.theme-line table.links-edit,.theme-line table.links-edit-small-padding{display:table;table-layout:fixed;margin-bottom:10px}
 .theme-line .links table td,.theme-line table.links-edit td,.theme-line table.links-edit-small-padding td{padding-left:18px}.theme-line .links table .active a,.theme-line table.links-edit .active a,.theme-line table.links-edit-small-padding .active a{color:#ec1c24;font-weight:bold}.theme-line .links table a:hover,.theme-line table.links-edit a:hover,.theme-line table.links-edit-small-padding a:hover{color:#950d12}.theme-line .links table a,.theme-line table.links-edit a,.theme-line table.links-edit-small-padding a{color:#666}.theme-line table.links-edit label{line-height:28px;color:#666}.btn{padding:3px 6px}.panel-title a{font-size:14px}.panel-details{margin-top:1.3em;margin-bottom:0.65em;padding:0.65em;border-radius:4px;border:thin dotted lightgrey}.tooltip.right .tooltip-arrow{border-right-color:#ec1c24}.tooltip>.tooltip-inner{max-width:400px;text-align:left;background-color:#ec1c24}label{font-weight:normal;line-height:14px;margin-bottom:0}.form-horizontal .checkbox{padding-top:0}
 .input-tip{display:block;overflow:hidden;padding-right:4px}.labelField{float:left;margin-right:4px}.tipField{float:right;line-height:28px;margin-right:5px}.tipLabel{font-size:14px;margin-left:4px}.fieldButton{float:right;margin-left:4px;margin-right:0}.table-nowrap{table-layout:fixed}.td-overflow{max-width:100px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fa-edit{cursor:pointer}.fa-remove{color:#ec1c24;margin-left:5px;margin-right:5px;cursor:pointer}label.required:after{color:#ec1c24;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}#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-invalid{border-color:#ec1c24}input.ng-invalid :focus{border-color:#ec1c24}.form-control-feedback{display:inline-block;color:#ec1c24;right:18px;line-height:28px;pointer-events:initial}.syntaxhighlighter{padding:10px 5px;border-radius:6px}.theme-line table.links-edit-small-padding{margin-top:10px}.theme-line table.links-edit-small-padding label{line-height:28px;color:#666}.theme-line table.links-edit-small-padding a{line-height:28px}.theme-line table.links-edit-small-padding input[type="checkbox"]{line-height:20px;margin-right:4px}.theme-line table.links-edit-small-padding .checkbox label{l
 ine-height:20px;vertical-align:middle}.theme-line table.links-edit-small-padding th{text-align:center}.theme-line table.links-edit-small-padding td{padding-left:10px}
++.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%;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,2
 55,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-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:25px}.theme-line .btn-p
 rimary{border:0 none;background-color:#ec1c24}.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: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:-30px}.theme-line .sidebar-nav ul li a:hover{text-decoration:none}.theme-line .select li a{color:#666}.theme-line .select li a:hover,.theme-lin
 e .select .active{color:#ec1c24;background-color:white}.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: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-n
 av .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:#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:#666}.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 .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-ri
 ght .threes-nav .btn-default:hover,.theme-line.page-docs.body-threes .section-right .threes-nav .pull-right a:hover{color:#ec1c24;border-color:#ec1c24}.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}.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}.vcenter2{position:relative;top:50%;transform:translateY(-50%)}.modal{display:block;overflow:hidden}.modal .close{position:absolute;top:0.65em;right:0.65em;float:none}.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: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{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
 ("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:450px;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}}.details-row{padding-left:1.3em}.details-table-row{padding:0}.details-row,.settings-row{display:block;margin:0.65em 0;line-height:28px}.details-row [class*="col-"],.settings-row [class*="col-"]{display:inline-block;vertical-align:middle;float:none;padding-left:0 !important;padding-right:0 !important}.details-row input[type="checkbox"],.settings-row input[type="checkbox"]{line-height:20px;margin-right:4px}.details-row .checkbox label,.settings-row .checkbox label{line-height:20px;vertical-align:middle}button{margin-right:4px}h1,h2,h3{user-select:none;font-weight:normal;line-hei
 ght:1}h3{color:black;font-size:1.2em;margin-top:0;margin-bottom:1.5em}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 3px;height:28px}.form-control button{text-align:left}.table-form-control{width:auto}button .caret{float:right;margin-left:0;margin-top:7px}.theme-line .panel-heading{padding:10px 10px;margin:0}.theme-line .panel-heading h3{margin-bottom:0}.theme-line .panel-heading h3>a{color:black;cursor:pointer}.theme-line .panel-title a{color:#ec1c24}.theme-line .panel-title h3{margin-bottom:1.3em}.theme-line .panel-body{padding:0.65em 1.3em}.theme-line .main-content a.customize{color:#ec1c24;cursor:pointer}.theme-line .panel-collapse{margin:0}.theme-line .links table,.theme-line table.links-edit,.theme-line table.links-edit-small-padding{display:table;table-layout:fixed;margin-bottom:10px}.theme-line .links table td,.theme-line table.li
 nks-edit td,.theme-line table.links-edit-small-padding td{padding-left:18px}.theme-line .links table .active a,.theme-line table.links-edit .active a,.theme-line table.links-edit-small-padding .active a{color:#ec1c24;font-weight:bold}.theme-line .links table a:hover,.theme-line table.links-edit a:hover,.theme-line table.links-edit-small-padding a:hover{color:#950d12}.theme-line .links table a,.theme-line table.links-edit a,.theme-line table.links-edit-small-padding a{color:#666}.theme-line table.links-edit label{line-height:28px;color:#666}.btn{padding:3px 6px}.panel-title a{font-size:14px}.panel-details{margin-top:1.3em;margin-bottom:0.65em;padding:0.65em;border-radius:4px;border:thin dotted lightgrey}.tooltip.right .tooltip-arrow{border-right-color:#ec1c24}.tooltip>.tooltip-inner{max-width:400px;text-align:left;background-color:#ec1c24}label{font-weight:normal;line-height:14px;margin-bottom:0}.form-horizontal .checkbox{padding-top:0}.input-tip{display:block;overflow:hidden;padding
 -right:4px}.labelField{float:left;margin-right:4px}.tipField{float:right;line-height:28px;margin-right:5px}.tipLabel{font-size:14px;margin-left:4px}.fieldButton{float:right;margin-left:4px;margin-right:0}.table-nowrap{table-layout:fixed}.td-overflow{max-width:100px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fa-edit{cursor:pointer}.fa-remove{color:#ec1c24;margin-left:5px;margin-right:5px;cursor:pointer}label.required:after{color:#ec1c24;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}.ale
 rt.bottom-right .close{padding-left:10px}.alert.bottom-left{left:0}.alert.bottom-left .close{padding-right:10px}#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{border-color:#ec1c24}input.ng-dirty.ng-invalid :focus{border-color:#ec1c24}.form-control-feedback{display:inline-block;color:#ec1c24;right:18px;line-height:28px;pointer-events:initial}.syntaxhighlighter{padding:10px 5px;border-radius:6px}.theme-line table.links-edit-small-padding{margin-top:10px}.theme-line table.links-edit-small-padding label{line-height:28px;color:#666}.theme-line table.links-edit-small-padding a{line-height:28px}.theme-line table.links-edit-small-padding input[type="checkbox"]{line-height:20px;margin-right:4px}.theme-line table.links-edit-small-padding .checkbox label{line-height:20px;vertical-align
 :middle}.theme-line table.links-edit-small-padding th{text-align:center}.theme-line table.links-edit-small-padding td{padding-left:10px}

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/668d707d/modules/web-control-center/nodejs/public/stylesheets/style.less
----------------------------------------------------------------------
diff --cc modules/web-control-center/nodejs/public/stylesheets/style.less
index 0000000,3a41467..19babc8
mode 000000,100644..100644
--- a/modules/web-control-center/nodejs/public/stylesheets/style.less
+++ b/modules/web-control-center/nodejs/public/stylesheets/style.less
@@@ -1,0 -1,997 +1,994 @@@
+ /*
+  * 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;
+ 
+ .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: 40%;
+   left: 50%;
+   min-width: 320px;
+   max-width: 630px;
+   width: 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: 4px 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: 25px;
+ }
+ 
+ .theme-line .btn-primary {
+   border: 0 none;
+   background-color: #ec1c24;
+ }
+ 
+ .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: 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: -30px;
+ }
+ 
+ .theme-line .sidebar-nav ul li a:hover {
+   text-decoration: none;
+ }
+ 
+ .theme-line .select li a {
+   color: #666;
+ }
+ 
+ .theme-line .select  {
+   li a:hover, .active {
+     color: #ec1c24;
+     background-color: white;
+   }
+ }
+ 
+ .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: 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: #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 {
+   //font-weight: bold;
+   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: #666;
+ }
+ 
+ .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 .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;
+ }
+ 
+ .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;
+ }
+ 
+ .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("@{logo-path}");
+ }
+ 
+ .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;
+ }
+ 
+ .vcenter2 {
+   position: relative;
+   top: 50%;
+   transform: translateY(-50%);
+ }
+ 
+ .border-right-remove {
+ 
+ }
+ 
+ /* Modal */
+ .modal {
+   display: block;
+   overflow: hidden;
+ }
+ 
+ .modal .close {
+   position: absolute;
+   top: 0.65em;
+   right: 0.65em;
+   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: 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 {
+   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: 30px;
++  padding-top: 15px;
+ }
+ 
+ h1.ignite-logo {
+   background-image: url("@{logo-path}");
+ }
+ 
+ .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: 450px;
+   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;
+   }
+ }
+ 
+ .details-row {
+   padding-left: 1.3em;
+ }
+ 
+ .details-table-row  {
+   padding: 0;
+ }
+ 
+ .details-row, .settings-row {
+   display: block;
+   margin: 0.65em 0;
+   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: 4px;
+   }
+ 
+   .checkbox label {
+     line-height: 20px;
+     vertical-align: middle;
+   }
+ }
+ 
+ button {
+   margin-right: 4px;
+ }
+ 
+ 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; }
+ 
+ .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 3px;
+   height: @input-height;
+ 
+   button {
+     text-align: left;
+   }
+ }
+ 
+ .table-form-control {
+   width: auto;
+ }
+ 
 -.form-horizontal .control-label {
 -  padding-top: 4px;
 -}
+ 
+ button .caret {
+   float: right;
+   margin-left: 0;
+   margin-top: 7px;
+ }
+ 
+ .theme-line .panel-heading {
+   padding: 10px 10px;
+   margin: 0;
+ 
+   h3 {
+     margin-bottom: 0;
+   }
+ 
+   h3 > a {
+     color: black;
+     cursor: pointer;
+   }
+ }
+ 
+ .theme-line .panel-title {
+   a {
+     color: #ec1c24;
+   }
+ 
+   h3 {
+     margin-bottom: 1.3em;
+   }
+ }
+ 
+ .theme-line .panel-body {
+   padding: 0.65em 1.3em;
+ }
+ 
+ .theme-line .main-content a.customize {
+   //margin-left: 10px;
+   color: #ec1c24;
+   cursor: pointer;
+ }
+ 
+ .theme-line .panel-collapse {
+   margin: 0;
+ }
+ 
+ .theme-line .links table {
+   display: table;
+   table-layout: fixed;
+   margin-bottom: 10px;
+ 
+   td {
+     padding-left: 18px;
+   }
+ 
+   .active a {
+     color: #ec1c24;
+     font-weight: bold;
+   }
+ 
+   a:hover {
+     color: #950d12;
+   }
+ 
+   a {
+     color: #666;
+   }
+ }
+ 
+ .theme-line table.links-edit:extend(.theme-line .links table all) {
+   label {
+     line-height: @input-height;
+     color: #666;
+   }
+ }
+ 
+ .btn {
+   padding: 3px 6px;
+ }
+ 
+ .panel-title a {
+   font-size: 14px;
+ }
+ 
+ .panel-details {
+   margin-top: 1.3em;
+   margin-bottom: 0.65em;
+   padding: 0.65em;
+ 
+   border-radius: 4px;
+   border: thin dotted lightgrey;
+ }
+ 
+ .tooltip.right .tooltip-arrow {
+   border-right-color: #ec1c24;
+ }
+ 
+ .tooltip > .tooltip-inner {
+   max-width: 400px;
+   text-align: left;
+   background-color: #ec1c24;
+ }
+ 
+ label {
+   font-weight: normal;
+   line-height: 14px;
+   margin-bottom: 0;
+ }
+ 
+ .form-horizontal .checkbox {
+   padding-top: 0;
+ }
+ 
+ .input-tip {
+   display: block;
+   overflow: hidden;
+   padding-right:4px;
+ }
+ 
+ .labelField {
+   float: left;
+   margin-right: 4px;
+ }
+ 
+ .tipField {
+   float: right;
+   line-height: @input-height;
+   margin-right: 5px;
+ }
+ 
+ .tipLabel {
+   font-size: 14px;
+   margin-left: 4px;
+ }
+ 
+ .fieldButton {
+   float: right;
+   margin-left: 4px;
+   margin-right: 0;
+ }
+ 
+ .table-nowrap {
+   table-layout:fixed;
+ }
+ 
+ .td-overflow {
+   max-width: 100px;
+   overflow: hidden;
+   text-overflow: ellipsis;
+   white-space: nowrap;
+ }
+ 
+ .fa-edit {
+   cursor: pointer;
+ }
+ 
+ .fa-remove {
+   color: #ec1c24;
+   margin-left: 5px;
+   margin-right: 5px;
+   cursor: pointer;
+ }
+ 
+ label.required:after {
+   color: #ec1c24;
+   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-invalid {
++input.ng-dirty.ng-invalid {
+   border-color: #ec1c24;
+ 
+   :focus {
+     border-color: #ec1c24;
+   }
+ }
+ 
+ .form-control-feedback {
+   display: inline-block;
+   color: #ec1c24;
+   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: 4px;
+   }
+ 
+   .checkbox label {
+     line-height: 20px;
+     vertical-align: middle;
+   }
+ 
+   th {
+     text-align: center;
+   }
+ 
+   td {
+     padding-left: 10px;
+   }
+ 
+   margin-top: 10px;
+ }

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/668d707d/modules/web-control-center/nodejs/views/login.jade
----------------------------------------------------------------------
diff --cc modules/web-control-center/nodejs/views/login.jade
index 0000000,8ad1109..0d73552
mode 000000,100644..100644
--- a/modules/web-control-center/nodejs/views/login.jade
+++ b/modules/web-control-center/nodejs/views/login.jade
@@@ -1,0 -1,47 +1,47 @@@
+ //-
+     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.
+ 
+ .modal.center(role='dialog')
+     .modal-dialog
+         .modal-content
+             .modal-header.header
+                 div(id='errors-container')
+                 button.close(type='button', ng-click='$hide()', aria-hidden='true') &times;
 -                h1.navbar-brand.pull-left
++                h1.navbar-brand
+                     a(href='/') Apache Ignite Web Configurator
 -                h4.modal-title Authentication
 -                p Log in or register in order to collaborate
++                h4.modal-title(style='padding-right: 55px') Authentication
++                p(style='padding-right: 55px') Log in or register in order to collaborate
+             form.form-horizontal(name='loginForm')
+                 .modal-body.row
+                     .col-sm-9.login.col-sm-offset-1
 -                        .form-group(ng-show='action == "register"')
 -                            label.col-sm-3.control-label Full Name:
 -                            .controls.col-sm-9
++                        .details-row(ng-show='action == "register"')
++                            label.col-sm-3.required Full Name:
++                            .col-sm-9
+                                 input.form-control(type='text', ng-model='user_info.username', placeholder='John Smith', focus-me='action=="register"', ng-required='action=="register"')
 -                        .form-group
 -                            label.col-sm-3.control-label Email:
 -                            .controls.col-sm-9
++                        .details-row
++                            label.col-sm-3.required Email:
++                            .col-sm-9
+                                 input.form-control(type='email', ng-model='user_info.email', placeholder='you@domain.com', focus-me='action=="login"', required)
 -                        .form-group
 -                            label.col-sm-3.control-label Password:
 -                            .controls.col-sm-9
++                        .details-row
++                            label.col-sm-3.required Password:
++                            .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
+                 | &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