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/10 03:18:56 UTC

[1/3] incubator-ignite git commit: # ignite-843 Added download on summary.

Repository: incubator-ignite
Updated Branches:
  refs/heads/ignite-843 f444f66ed -> a0eaaacb0


# ignite-843 Added download on summary.


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

Branch: refs/heads/ignite-843
Commit: 3a1eba2e7f0078c4fc08f96697b00cf9f0580bf4
Parents: 77caa75
Author: Andrey <an...@gridgain.com>
Authored: Thu Jul 9 18:31:09 2015 +0700
Committer: Andrey <an...@gridgain.com>
Committed: Thu Jul 9 18:31:09 2015 +0700

----------------------------------------------------------------------
 .../nodejs/controllers/summary-controller.js    | 24 ++++++----
 modules/web-control-center/nodejs/package.json  |  2 +-
 .../nodejs/routes/generator/common.js           |  4 +-
 .../nodejs/routes/generator/docker.js           |  2 +-
 .../web-control-center/nodejs/routes/summary.js | 48 ++++++++++++++++++++
 .../nodejs/views/summary.jade                   | 14 ++++--
 6 files changed, 76 insertions(+), 18 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/3a1eba2e/modules/web-control-center/nodejs/controllers/summary-controller.js
----------------------------------------------------------------------
diff --git a/modules/web-control-center/nodejs/controllers/summary-controller.js b/modules/web-control-center/nodejs/controllers/summary-controller.js
index 9e11f8d..1935739 100644
--- a/modules/web-control-center/nodejs/controllers/summary-controller.js
+++ b/modules/web-control-center/nodejs/controllers/summary-controller.js
@@ -30,7 +30,7 @@ controlCenterModule.controller('summaryController', ['$scope', '$http', function
 
     $scope.generated = undefined;
 
-    $http.post('/configuration/clusters/list').success(function (data) {
+    $http.post('clusters/list').success(function (data) {
         $scope.clusters = data.clusters;
     });
 
@@ -54,7 +54,7 @@ controlCenterModule.controller('summaryController', ['$scope', '$http', function
 
         $scope.loading = true;
 
-        $http.post('/configuration/summary/generator', {_id: $scope.selectedItem._id})
+        $http.post('summary/generator', {_id: $scope.selectedItem._id})
             .success(function (data) {
                 $scope.generated = data;
 
@@ -70,17 +70,23 @@ controlCenterModule.controller('summaryController', ['$scope', '$http', function
     };
 
     $scope.download = function() {
-        var file = document.createElement('a');
+        $http.post('summary/download', {_id: $scope.selectedItem._id, javaClass: $scope.javaClass, os: $scope.os})
+            .success(function (data) {
+                var file = document.createElement('a');
 
-        file.setAttribute('href', 'data:application/octet-stream;charset=utf-8,' + encodeURIComponent(text));
-        file.setAttribute('download', $scope.selectedItem.name + '-configuration.zip');
+                file.setAttribute('href', 'data:application/octet-stream;charset=utf-8,' + data);
+                file.setAttribute('download', $scope.selectedItem.name + '-configuration.zip');
 
-        file.style.display = 'none';
+                file.style.display = 'none';
 
-        document.body.appendChild(file);
+                document.body.appendChild(file);
 
-        file.click();
+                file.click();
 
-        document.body.removeChild(file);
+                document.body.removeChild(file);
+            })
+            .error(function (data) {
+                $scope.generateError = "Failed to generate zip: " + data;
+            });
     };
 }]);

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/3a1eba2e/modules/web-control-center/nodejs/package.json
----------------------------------------------------------------------
diff --git a/modules/web-control-center/nodejs/package.json b/modules/web-control-center/nodejs/package.json
index 9cb3744..82a3906 100644
--- a/modules/web-control-center/nodejs/package.json
+++ b/modules/web-control-center/nodejs/package.json
@@ -9,7 +9,7 @@
   "author": "Ignite",
   "license": "Apache License, Version 2.0",
   "dependencies": {
-    "adm-zip": "^0.4.7",
+    "archiver": "^0.14.4",
     "body-parser": "~1.12.0",
     "connect-flash": "^0.1.1",
     "connect-mongo": "^0.8.1",

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/3a1eba2e/modules/web-control-center/nodejs/routes/generator/common.js
----------------------------------------------------------------------
diff --git a/modules/web-control-center/nodejs/routes/generator/common.js b/modules/web-control-center/nodejs/routes/generator/common.js
index 42af90d..716d18b 100644
--- a/modules/web-control-center/nodejs/routes/generator/common.js
+++ b/modules/web-control-center/nodejs/routes/generator/common.js
@@ -261,7 +261,7 @@ exports.toJavaName = function(name) {
  * @returns {string} Generated content.
  */
 exports.generateProperties = function(cluster) {
-    var res = builder();
+    var res = exports.builder();
 
     var datasources = [];
 
@@ -290,5 +290,5 @@ exports.generateProperties = function(cluster) {
     if (datasources.length > 0)
         return '# ' + mainComment() + '\n\n' + res.join();
 
-    return '';
+    return undefined;
 };

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/3a1eba2e/modules/web-control-center/nodejs/routes/generator/docker.js
----------------------------------------------------------------------
diff --git a/modules/web-control-center/nodejs/routes/generator/docker.js b/modules/web-control-center/nodejs/routes/generator/docker.js
index 9ea917d..93faf8e 100644
--- a/modules/web-control-center/nodejs/routes/generator/docker.js
+++ b/modules/web-control-center/nodejs/routes/generator/docker.js
@@ -20,7 +20,7 @@ exports.generateClusterConfiguration = function(cluster, os) {
         os = 'debian:8';
 
     return "" +
-        "# Start from a Debian image.\n"+
+        "# Start from a OS image.\n"+
         "FROM " + os + "\n"+
         "\n"+
         "# Install tools.\n"+

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/3a1eba2e/modules/web-control-center/nodejs/routes/summary.js
----------------------------------------------------------------------
diff --git a/modules/web-control-center/nodejs/routes/summary.js b/modules/web-control-center/nodejs/routes/summary.js
index 9724708..884c78c 100644
--- a/modules/web-control-center/nodejs/routes/summary.js
+++ b/modules/web-control-center/nodejs/routes/summary.js
@@ -46,4 +46,52 @@ router.post('/generator', function(req, res) {
     });
 });
 
+router.post('/download', function(req, res) {
+    // Get cluster.
+    db.Cluster.findById(req.body._id).populate('caches').exec(function (err, cluster) {
+        if (err)
+            return res.status(500).send(err.message);
+
+        if (!cluster)
+            return res.sendStatus(404);
+
+        var archiver = require('archiver');
+
+        // creating archives
+        var zip = archiver('zip');
+
+        zip.on('error', function(err) {
+            res.status(500).send({error: err.message});
+        });
+
+        //on stream closed we can end the request
+        res.on('close', function() {
+            console.log('Archive wrote %d bytes', archive.pointer());
+
+            return res.status(200).send('OK').end();
+        });
+
+        //set the archive name
+        res.attachment(cluster.name + '-configuration.zip');
+
+        var generatorCommon = require('./generator/common');
+
+        var javaClass = req.body.javaClass;
+
+        // Send the file to the page output.
+        zip.pipe(res);
+
+        var props = generatorCommon.generateProperties(cluster);
+
+        if (props)
+            zip.append(props, {name: "secret.properties"});
+
+        zip.append(generatorXml.generateClusterConfiguration(cluster), {name: cluster.name + ".xml"})
+            .append(generatorJava.generateClusterConfiguration(cluster, req.body.javaClass),
+                {name: javaClass ? 'ConfigurationFactory.java' : cluster.name + '.snipplet.java'})
+            .append(generatorDocker.generateClusterConfiguration(cluster, req.body.os), {name: "Dockerfile"})
+            .finalize();
+    });
+});
+
 module.exports = router;
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/3a1eba2e/modules/web-control-center/nodejs/views/summary.jade
----------------------------------------------------------------------
diff --git a/modules/web-control-center/nodejs/views/summary.jade b/modules/web-control-center/nodejs/views/summary.jade
index 54d8395..c2ac0d3 100644
--- a/modules/web-control-center/nodejs/views/summary.jade
+++ b/modules/web-control-center/nodejs/views/summary.jade
@@ -62,19 +62,23 @@ block content
                         a(href, ng-click='cfgLang = "docker"')
                             img(src='/images/docker.png', width='16px' height='16px')
                             |  Dockerfile
-                .settings-row
+                form.settings-row(method='post' action='summary/download')
+                    input(type="hidden" name="_id" value="{{selectedItem._id}}")
+                    input(type="hidden" name="javaClass" value="{{javaClass}}")
+                    input(type="hidden" name="os" value="{{os}}")
+
                     #xmlResult(ng-show="cfgLang == 'xml'")
-                        button.btn.btn-primary.pull-right(style='margin-right: 0px;margin-top: -45px' ng-click='download(xmlData, selectedItem.name + ".xml")') Download
+                        button.btn.btn-primary.pull-right(style='margin-right: 0px;margin-top: -45px' type='submit') Download
                         #xmlResultDiv
                     #javaResult(ng-show="cfgLang == 'java'")
                         .col-sm-1
                             label Generate:
                         .col-sm-3
-                            button.form-control(ng-model='javaClass' bs-select data-placeholder='{{detail.placeholder}}' bs-options='item.value as item.label for item in javaClassItems' data-sort='false')
-                        button.btn.btn-primary.pull-right(style='margin-right: 0px;margin-top: -40px' ng-click='downloadJava()') Download
+                            button.form-control(type='button' ng-model='javaClass' bs-select data-placeholder='{{detail.placeholder}}' bs-options='item.value as item.label for item in javaClassItems' data-sort='false')
+                        button.btn.btn-primary.pull-right(style='margin-right: 0px;margin-top: -40px' type='submit') Download
                         #javaResultDiv
                     #dockerResult(ng-show="cfgLang == 'docker'")
-                        button.btn.btn-primary.pull-right(style='margin-right: 0px;margin-top: -40px' ng-click='downloadDocker()') Download
+                        button.btn.btn-primary.pull-right(style='margin-right: 0px;margin-top: -40px' type='submit') Download
                         p
                             a(style='color:#ec1c24' href='https://docs.docker.com/reference/builder' target="_blank") Docker
                             | &nbsp;file is a text file with instructions to create Docker image.<br/>


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

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


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

Branch: refs/heads/ignite-843
Commit: 8465af564cec8b8e4af3152459a34e8d71b43708
Parents: 3a1eba2 87be527
Author: Andrey <an...@gridgain.com>
Authored: Thu Jul 9 18:31:15 2015 +0700
Committer: Andrey <an...@gridgain.com>
Committed: Thu Jul 9 18:31:15 2015 +0700

----------------------------------------------------------------------
 modules/web-control-center/nodejs/app.js        |  3 +-
 .../nodejs/controllers/admin-controller.js      | 42 ++++++++++++++------
 .../nodejs/controllers/models/caches.json       |  2 +-
 .../nodejs/controllers/profile-controller.js    | 28 +++++++++++--
 .../web-control-center/nodejs/routes/profile.js | 38 +++++++++++++++---
 .../nodejs/views/admin/userList.jade            |  5 +--
 .../web-control-center/nodejs/views/index.jade  |  1 +
 .../web-control-center/nodejs/views/login.jade  | 11 +++--
 .../nodejs/views/profile.jade                   | 13 +++++-
 9 files changed, 110 insertions(+), 33 deletions(-)
----------------------------------------------------------------------



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

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


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

Branch: refs/heads/ignite-843
Commit: a0eaaacb09cf5f2355c37eeaa915887ba0360abd
Parents: 8465af5 f444f66
Author: Andrey <an...@gridgain.com>
Authored: Fri Jul 10 08:16:20 2015 +0700
Committer: Andrey <an...@gridgain.com>
Committed: Fri Jul 10 08:19:16 2015 +0700

----------------------------------------------------------------------
 modules/web-control-center/nodejs/app.js        |   2 +
 .../controllers/cache-viewer-controller.js      |  78 ++++++
 .../nodejs/controllers/models/caches.json       | 268 +++++++++----------
 .../nodejs/controllers/profile-controller.js    |   4 +
 .../nodejs/public/libs/xeditable.min.js         |   6 -
 .../nodejs/public/stylesheets/sql-console.css   |  72 +++++
 .../nodejs/public/stylesheets/style.css         |   2 +-
 .../nodejs/public/stylesheets/style.less        | 134 +++-------
 .../nodejs/public/stylesheets/xeditable.css     |   7 -
 .../web-control-center/nodejs/routes/profile.js |  12 +-
 modules/web-control-center/nodejs/routes/sql.js |  26 ++
 .../nodejs/views/admin/userList.jade            |   4 +-
 .../nodejs/views/includes/header.jade           |   6 +-
 .../web-control-center/nodejs/views/login.jade  |   2 +-
 .../nodejs/views/profile.jade                   |  55 ++--
 .../nodejs/views/sql/sql.jade                   |  54 ++++
 .../nodejs/views/summary.jade                   |   4 +-
 .../nodejs/views/templates/headers.jade         |  55 ++++
 .../nodejs/views/templates/layout-fluid.jade    |  22 ++
 .../nodejs/views/templates/layout.jade          |  46 +---
 20 files changed, 537 insertions(+), 322 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/a0eaaacb/modules/web-control-center/nodejs/public/stylesheets/style.css
----------------------------------------------------------------------
diff --cc modules/web-control-center/nodejs/public/stylesheets/style.css
index 29199ba,5f5b0e4..d2753e3
--- a/modules/web-control-center/nodejs/public/stylesheets/style.css
+++ b/modules/web-control-center/nodejs/public/stylesheets/style.css
@@@ -1,1 -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,.theme-line .typeahead li a{color:#666;background-co
 lor:transparent}.theme-line .select li a:hover,.theme-line .typeahead li a:hover{color:#ec1c24;background-color:transparent}.theme-line .select .active,.theme-line .typeahead .active{background-color:#eee}.theme-line .sidebar-nav ul li .subcategory{padding-left:15px}.theme-line .sidebar-nav h4{margin-top:2em;font-weight:normal;text-transform:uppercase;font-size:11px;margin-bottom:10px;color:#bbb}.theme-line .sidebar-nav h4:first-child{margin-top:0}.theme-line .sidebar-nav .ask{width:100%;text-align:center;padding:10px}.theme-line .border-left .sidebar-nav{padding-left:15px}.theme-line .suggest{padding: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{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 st
 rong,.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("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 .m
 odal-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:0 0.65em}.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 labe
 l,.settings-row .checkbox label{line-height:20px;vertical-align:middle}button{margin-right:4px}h1,h2,h3{user-select:none;font-weight:normal;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: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{margin-left:5px;color:#ec1c24;cursor:pointer}.theme-line .panel-collapse{margin:0}.theme-line .links table,.theme-l
 ine table.links-edit,.theme-line table.links-edit-details,.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-details 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-details .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-details 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-details a,.theme-line table.links-edit-small-padding a{color:#666}.theme-line table.links-edit label{line-height:28px;color:#666}.theme-line table.links-edit-details label{line-height:28px;color:#666}.theme-l
 ine table.links-edit-details td{padding:0}.theme-line table.links-edit-details td .input-tip{padding:0}.btn{padding:3px 6px}.panel-title a{font-size:14px}.panel-details{margin-top:0.65em;padding:0;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}.labelField{float:left;margin-right:4px}.stackTipField{float:right;line-height:28px;margin-left:5px}.form-horizontal .form-group{margin:0}.form-horizontal .has-feedback .form-control-feedback{right:0}.tipField{float:right;line-height:28px;margin-left:5px}.tipLabel{font-size:14px;margin-left:5px}.fieldButton{float:right;margin-left:5px;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;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-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:5px}.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}.configBox .nav>li>a{padding:5px 5px}.viewedUser{display:inline;padding:6px;margin:7px;border-radius:4px;background-color:#f8d5d8}
 -.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,.theme-line .typeahead li a{color:#666;background-co
 lor:transparent}.theme-line .select li a:hover,.theme-line .typeahead li a:hover{color:#ec1c24;background-color:transparent}.theme-line .select .active,.theme-line .typeahead .active{background-color:#eee}.theme-line .sidebar-nav ul li .subcategory{padding-left:15px}.theme-line .sidebar-nav h4{margin-top:2em;font-weight:normal;text-transform:uppercase;font-size:11px;margin-bottom:10px;color:#bbb}.theme-line .sidebar-nav h4:first-child{margin-top:0}.theme-line .sidebar-nav .ask{width:100%;text-align:center;padding:10px}.theme-line .border-left .sidebar-nav{padding-left:15px}.theme-line .suggest{padding: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{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 st
 rong,.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("https://www.
 filepicker.io/api/file/QagunjDGRFul2JgNCAli")}.header h1.navbar-brand{width:96px}.block-edit-parameters{text-align:right;padding-bottom:5px}.container-footer{margin-top:20px}.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("htt
 ps://www.filepicker.io/api/file/QagunjDGRFul2JgNCAli")}.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:0 0.65em}.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-height:1}h3{color:black;font-size:1.2em;margin-top:0;margin-bottom:1.5em}table tr:hover{cursor:pointer}.form-control{display:inline-block;text-align:left;padding:3px 3px;height:2
 8px}.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{margin-left:5px;color:#ec1c24;cursor:pointer}.theme-line .panel-collapse{margin:0}.theme-line .links table,.theme-line table.links-edit,.theme-line table.links-edit-details,.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-details 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-deta
 ils .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-details 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-details a,.theme-line table.links-edit-small-padding a{color:#666}.theme-line table.links-edit label{line-height:28px;color:#666}.theme-line table.links-edit-details label{line-height:28px;color:#666}.theme-line table.links-edit-details td{padding:0}.theme-line table.links-edit-details td .input-tip{padding:0}.btn{padding:3px 6px}.panel-title a{font-size:14px}.panel-details{margin-top:0.65em;padding:0;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}.labelField{float:left;margin-right:4px}.labelFormField{float:left;line-height:28px}.stackTipField{float:right;line-height:28px;margin-left:5px}.form-horizontal .form-group{margin:0}.form-horizontal .has-feedback .form-control-feedback{right:0}.tipField{float:right;line-height:28px;margin-left:5px}.tipLabel{font-size:14px;margin-left:5px}.fieldButton{float:right;margin-left:5px;margin-right:0}.fa-remove{color:#ec1c24;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.bot
 tom,.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-dirty.ng-invalid,input.ng-pristine.ng-invalid,button.ng-dirty.ng-invalid,button.ng-pristine.ng-invalid{border-color:#ec1c24}input.ng-dirty.ng-invalid :focus,input.ng-pristine.ng-invalid :focus,button.ng-dirty.ng-invalid :focus,button.ng-pristine.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:5px}.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}.configBox .nav>li>a{padding:5px 5px}.viewedUser{display:inline;padding:6px;margin:7px;border-radius:4px;background-color:#f8d5d8}
++.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,.theme-line .typeahead li a{color:#666;background-co
 lor:transparent}.theme-line .select li a:hover,.theme-line .typeahead li a:hover{color:#ec1c24;background-color:transparent}.theme-line .select .active,.theme-line .typeahead .active{background-color:#eee}.theme-line .sidebar-nav ul li .subcategory{padding-left:15px}.theme-line .sidebar-nav h4{margin-top:2em;font-weight:normal;text-transform:uppercase;font-size:11px;margin-bottom:10px;color:#bbb}.theme-line .sidebar-nav h4:first-child{margin-top:0}.theme-line .sidebar-nav .ask{width:100%;text-align:center;padding:10px}.theme-line .border-left .sidebar-nav{padding-left:15px}.theme-line .suggest{padding: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{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 st
 rong,.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("https://www.
 filepicker.io/api/file/QagunjDGRFul2JgNCAli")}.header h1.navbar-brand{width:96px}.block-edit-parameters{text-align:right;padding-bottom:5px}.container-footer{margin-top:20px}.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("htt
 ps://www.filepicker.io/api/file/QagunjDGRFul2JgNCAli")}.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:0 0.65em}.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-height:1}h3{color:black;font-size:1.2em;margin-top:0;margin-bottom:1.5em}table tr:hover{cursor:pointer}.form-control{display:inline-block;text-align:left;padding:3px 3px;height:2
 8px}.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}.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{margin-left:5px;color:#ec1c24}.theme-line .panel-collapse{margin:0}.theme-line .links table,.theme-line table.links-edit,.theme-line table.links-edit-details,.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-details 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-details .active a,.theme-line tabl
 e.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-details 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-details a,.theme-line table.links-edit-small-padding a{color:#666}.theme-line table.links-edit label{line-height:28px;color:#666}.theme-line table.links-edit-details label{line-height:28px;color:#666}.theme-line table.links-edit-details td{padding:0}.theme-line table.links-edit-details td .input-tip{padding:0}.btn{padding:3px 6px}.panel-title a{font-size:14px}.panel-details{margin-top:0.65em;padding:0;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-horizont
 al .checkbox{padding-top:0}.input-tip{display:block;overflow:hidden}.labelField{float:left;margin-right:4px}.labelFormField{float:left;line-height:28px}.stackTipField{float:right;line-height:28px;margin-left:5px}.form-horizontal .form-group{margin:0}.form-horizontal .has-feedback .form-control-feedback{right:0}.tipField{float:right;line-height:28px;margin-left:5px}.tipLabel{font-size:14px;margin-left:5px}.fieldButton{float:right;margin-left:5px;margin-right:0}.fa-remove{color:#ec1c24;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-dirty.ng-invalid,input.ng-pristine.ng-invalid,button.ng-dirty.ng-invalid,button.ng-pristine.ng-invalid{border-color:#ec1c24}input.ng-dirty.ng-invalid :focus,input.ng-pristine.ng-invalid :focus,button.ng-dirty.ng-invalid :focus,button.ng-pristine.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:5px}.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}.configBox .nav>li>a{padding:5px 5px}.viewedUser{display:inline;padding:6px;margin:7px;border-radius:4px;background-color:#f8d5d8}a{cursor:pointer}

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/a0eaaacb/modules/web-control-center/nodejs/public/stylesheets/style.less
----------------------------------------------------------------------
diff --cc modules/web-control-center/nodejs/public/stylesheets/style.less
index b249ea9,3e78a8a..3aa2110
--- a/modules/web-control-center/nodejs/public/stylesheets/style.less
+++ b/modules/web-control-center/nodejs/public/stylesheets/style.less
@@@ -716,7 -674,7 +674,6 @@@ button .caret 
  
    h3 > a {
      color: black;
--    cursor: pointer;
    }
  }
  
@@@ -736,8 -694,8 +693,7 @@@
  
  .theme-line .main-content a.customize {
    margin-left: 5px;
-   color: #ec1c24;
-   cursor: pointer;
+   color: @ignite-red;
 -  cursor: pointer;
  }
  
  .theme-line .panel-collapse {
@@@ -1038,5 -987,4 +985,8 @@@ input.ng-dirty.ng-invalid, input.ng-pri
    border-radius: 4px;
  
    background-color: #f8d5d8;
++}
 +
++a {
++  cursor: pointer;
  }

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/a0eaaacb/modules/web-control-center/nodejs/views/summary.jade
----------------------------------------------------------------------