Repository: incubator-ignite Updated Branches: refs/heads/ignite-843 d58bae6b4 -> f8be27395
# 843 WIP Clusters page. Project: http://git-wip-us.apache.org/repos/asf/incubator-ignite/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-ignite/commit/f8be2739 Tree: http://git-wip-us.apache.org/repos/asf/incubator-ignite/tree/f8be2739 Diff: http://git-wip-us.apache.org/repos/asf/incubator-ignite/diff/f8be2739 Branch: refs/heads/ignite-843 Commit: f8be27395826e03bbfc3be7fb08964be258efa69 Parents: d58bae6 Author: Andrey <anovi...@gridgain.com> Authored: Wed May 20 14:08:03 2015 +0700 Committer: Andrey <anovi...@gridgain.com> Committed: Wed May 20 14:08:03 2015 +0700 ---------------------------------------------------------------------- modules/webconfig/nodejs/app.js | 4 +- modules/webconfig/nodejs/db.js | 2 +- .../nodejs/public/javascripts/bundle.js | 0 .../public/javascripts/controllers/clusters.js | 108 ++- .../public/javascripts/controllers/sidebar.js | 6 + .../nodejs/public/stylesheets/style.css | 2 +- .../nodejs/public/stylesheets/style.less | 669 +++++++++++++++++++ modules/webconfig/nodejs/routes/pages.js | 28 +- modules/webconfig/nodejs/views/caches.jade | 10 + modules/webconfig/nodejs/views/clients.jade | 10 + modules/webconfig/nodejs/views/cluster.jade | 30 - modules/webconfig/nodejs/views/clusters.jade | 47 ++ .../webconfig/nodejs/views/includes/footer.jade | 15 +- .../webconfig/nodejs/views/includes/header.jade | 38 +- modules/webconfig/nodejs/views/index.jade | 3 - modules/webconfig/nodejs/views/layout.jade | 82 ++- modules/webconfig/nodejs/views/persistence.jade | 10 + modules/webconfig/nodejs/views/sql.jade | 10 + 18 files changed, 922 insertions(+), 152 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/f8be2739/modules/webconfig/nodejs/app.js ---------------------------------------------------------------------- diff --git a/modules/webconfig/nodejs/app.js b/modules/webconfig/nodejs/app.js index 666dbff..344ec96 100644 --- a/modules/webconfig/nodejs/app.js +++ b/modules/webconfig/nodejs/app.js @@ -7,7 +7,7 @@ var bodyParser = require('body-parser'); var session = require('express-session') var pageRoutes = require('./routes/pages'); -var clusterRouter = require('./routes/clusters'); +var clustersRouter = require('./routes/clusters'); var passport = require('passport'); var LocalStrategy = require('passport-local').Strategy; @@ -33,7 +33,7 @@ app.use(passport.initialize()); app.use(passport.session()); app.use('/', pageRoutes); -app.use('/rest', clusterRouter); +app.use('/rest', clustersRouter); // catch 404 and forward to error handler app.use(function (req, res, next) { http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/f8be2739/modules/webconfig/nodejs/db.js ---------------------------------------------------------------------- diff --git a/modules/webconfig/nodejs/db.js b/modules/webconfig/nodejs/db.js index 33764b7..59534f5 100644 --- a/modules/webconfig/nodejs/db.js +++ b/modules/webconfig/nodejs/db.js @@ -24,6 +24,6 @@ exports.Cache = mongoose.model('Cache', new mongoose.Schema({ exports.Cluster = mongoose.model('Cluster', new mongoose.Schema({ name : String, caches : [String], - discovery : { type: String, enum: ['VM', 'Multicast'] }, + discovery : { type: String, enum: ['TcpDiscoveryVmIpFinder', 'TcpDiscoveryMulticastIpFinder'] }, addresses : [String] })); \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/f8be2739/modules/webconfig/nodejs/public/javascripts/bundle.js ---------------------------------------------------------------------- diff --git a/modules/webconfig/nodejs/public/javascripts/bundle.js b/modules/webconfig/nodejs/public/javascripts/bundle.js new file mode 100644 index 0000000..e69de29 http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/f8be2739/modules/webconfig/nodejs/public/javascripts/controllers/clusters.js ---------------------------------------------------------------------- diff --git a/modules/webconfig/nodejs/public/javascripts/controllers/clusters.js b/modules/webconfig/nodejs/public/javascripts/controllers/clusters.js index 9be3f8d..ff144ae 100644 --- a/modules/webconfig/nodejs/public/javascripts/controllers/clusters.js +++ b/modules/webconfig/nodejs/public/javascripts/controllers/clusters.js @@ -1,23 +1,43 @@ -angular.module('ignite-web-configurator', ['ngTable', 'mgcrea.ngStrap', 'ngSanitize']) - .controller('clusterRouter', ['$scope', '$modal', '$http', '$filter', 'ngTableParams', function($scope, $modal, $http, $filter, ngTableParams) { +angular.module('ignite-web-configurator', ['ngTable', 'mgcrea.ngStrap']) + .controller('activeLink', ['$scope', function($scope) { + $scope.isActive = function(path) { + return window.location.pathname.substr(0, path.length) == path; + }; + }]) + .controller('clustersController', ['$scope', '$modal', '$http', '$filter', 'ngTableParams', function($scope, $modal, $http, $filter, ngTableParams) { + $scope.edit = { }; + + $scope.editRow = {}; + $scope.editIdx = false; + $scope.discoveries = [ - {value: 'VM', label: 'VM'}, - {value: 'Multicast', label: 'Multicast'} + {value: 'TcpDiscoveryVmIpFinder', label: 'Static IPs'}, + {value: 'TcpDiscoveryMulticastIpFinder', label: 'Multicast'} ]; + $scope.discoveryAsString = function(value) { + for (var i in $scope.discoveries) { + if ($scope.discoveries[i].value == value) + return $scope.discoveries[i].label; + } + + return 'Wrong discovery'; + }; + // when landing on the page, get all settings and show them $http.get('/rest/cluster') .success(function(data) { $scope.clusters = data; $scope.clustersTable = new ngTableParams({ - page: 1, // show first page - count: 10, // count per page + page: 1, // show first page + count: Number.MAX_VALUE, // count per page sorting: { - name: 'asc' // initial sorting + name: 'asc' // initial sorting } }, { total: $scope.clusters.length, // length of data + counts: [], getData: function($defer, params) { // use build-in angular filter var orderedData = params.sorting() ? @@ -36,39 +56,62 @@ angular.module('ignite-web-configurator', ['ngTable', 'mgcrea.ngStrap', 'ngSanit var myOtherModal = $modal({scope: $scope, template: '/cluster/edit', show: false}); $scope.submit = function() { - var data = { - _id: $scope.cluster._id, - name: $scope.cluster.name, - caches: ['cache1', 'cache2', 'cache2'], - discovery: $scope.cluster.discovery, - addresses: ['127.0.0.1', '192.168.1.1'] - }; - - $http.post('/rest/cluster/save', data) - .success(function(data) { - myOtherModal.hide(); + if ($scope.editIdx !== false) { + var cluster = $scope.clusters[$scope.editIdx]; - $scope.clusters = data; + var data = { + _id: cluster._id, + name: cluster.name, + caches: ['cache1', 'cache2', 'cache2'], + discovery: cluster.discovery, + addresses: ['127.0.0.1', '192.168.1.1'] + }; - $scope.clustersTable.reload(); - }) - .error(function(data) { - console.log('Error: ' + data); - }); + $scope.editIdx = false; + + $http.post('/rest/cluster/save', data) + .success(function (data) { + myOtherModal.hide(); + + $scope.clusters = data; + + $scope.clustersTable.reload(); + }) + .error(function (data) { + console.log('Error: ' + data); + }); + } }; - $scope.create = function () { - $scope.cluster = {}; + $scope.add = function () { + $scope.clusters.push({}); + + $scope.clustersTable.reload(); // Show when some event occurs (use $promise property to ensure the template has been loaded) - myOtherModal.$promise.then(myOtherModal.show); + //myOtherModal.$promise.then(myOtherModal.show); }; - $scope.edit = function (cluster) { - $scope.cluster = JSON.parse(JSON.stringify(cluster)); + $scope.beginEdit = function (cluster) { + $scope.editIdx = $scope.clusters.indexOf(cluster); - // Show when some event occurs (use $promise property to ensure the template has been loaded) - myOtherModal.$promise.then(myOtherModal.show); + $scope.editRow = angular.copy(cluster); + + //// Show when some event occurs (use $promise property to ensure the template has been loaded) + //myOtherModal.$promise.then(myOtherModal.show); + }; + + $scope.revert = function () { + if ($scope.editIdx !== false) { + $scope.clusters[$scope.editIdx] = $scope.editRow; + + $scope.editIdx = false; + + $scope.clustersTable.reload(); + } + + //// Show when some event occurs (use $promise property to ensure the template has been loaded) + //myOtherModal.$promise.then(myOtherModal.show); }; $scope.delete = function (cluster) { @@ -82,4 +125,5 @@ angular.module('ignite-web-configurator', ['ngTable', 'mgcrea.ngStrap', 'ngSanit console.log('Error: ' + data); }); }; - }]); \ No newline at end of file + }]) +; \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/f8be2739/modules/webconfig/nodejs/public/javascripts/controllers/sidebar.js ---------------------------------------------------------------------- diff --git a/modules/webconfig/nodejs/public/javascripts/controllers/sidebar.js b/modules/webconfig/nodejs/public/javascripts/controllers/sidebar.js new file mode 100644 index 0000000..c05f393 --- /dev/null +++ b/modules/webconfig/nodejs/public/javascripts/controllers/sidebar.js @@ -0,0 +1,6 @@ +angular.module('ignite-web-configurator', []) + .controller('activeLink', ['$scope', function($scope) { + $scope.isActive = function(path) { + return window.location.pathname.substr(0, path.length) == path; + }; + }]); \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/f8be2739/modules/webconfig/nodejs/public/stylesheets/style.css ---------------------------------------------------------------------- diff --git a/modules/webconfig/nodejs/public/stylesheets/style.css b/modules/webconfig/nodejs/public/stylesheets/style.css index 14091e2..3c2a159 100644 --- a/modules/webconfig/nodejs/public/stylesheets/style.css +++ b/modules/webconfig/nodejs/public/stylesheets/style.css @@ -1 +1 @@ -.main-header .logo{height:auto}.main-sidebar{padding-top:60px}.navbar-default .navbar-brand,.navbar-default .navbar-brand:hover{position:absolute;width:100%;left:0;text-align:center}.modal-backdrop.am-fade{opacity:.5;transition:opacity .15s linear}.modal-backdrop.am-fade.ng-enter{opacity:0}.modal-backdrop.am-fade.ng-enter.ng-enter-active{opacity:.5}.modal-backdrop.am-fade.ng-leave{opacity:.5}.modal-backdrop.am-fade.ng-leave.ng-leave-active{opacity:0}.modal.center .modal-dialog{position:fixed;top:40%;left:50%;min-width:320px;max-width:630px;width:50%;-webkit-transform:translateX(-50%) translateY(-50%);transform:translateX(-50%) translateY(-50%)}.ng-table th.text-right{text-align:right}.ng-table th.text-left{text-align:left}.ng-table th.text-center{text-align:center} \ No newline at end of file +.main-header .logo{height:auto}.main-sidebar{padding-top:60px}.navbar-default .navbar-brand,.navbar-default .navbar-brand:hover{position:absolute;width:100%;left:0;text-align:center}.modal-backdrop.am-fade{opacity:.5;transition:opacity .15s linear}.modal-backdrop.am-fade.ng-enter{opacity:0}.modal-backdrop.am-fade.ng-enter.ng-enter-active{opacity:.5}.modal-backdrop.am-fade.ng-leave{opacity:.5}.modal-backdrop.am-fade.ng-leave.ng-leave-active{opacity:0}.modal.center .modal-dialog{position:fixed;top:40%;left:50%;min-width:320px;max-width:630px;width:50%;-webkit-transform:translateX(-50%) translateY(-50%);transform:translateX(-50%) translateY(-50%)}.ng-table th.text-right{text-align:right}.ng-table th.text-left{text-align:left}.ng-table th.text-center{text-align:center}.fa.fa-remove{color:red}.border-left{-webkit-box-shadow:1px 0 0px 0px #eee inset;box-shadow:1px 0 0px 0px #eee inset}.border-right{-webkit-box-shadow:1px 0 0px 0px #eee;box-shadow:1px 0 0px 0px #eee}.theme-line{background- color:#f9f9f9}.theme-line header{background-color:#fff}.theme-line header .search-bar{width:90%;margin:30px auto 0;-webkit-border-radius:5px;border-radius:5px;-webkit-box-shadow:0 0 0 5px rgba(0,0,0,0.1),0 0 0 1px rgba(0,0,0,0.1);box-shadow:0 0 0 5px rgba(0,0,0,0.1),0 0 0 1px rgba(0,0,0,0.1);position:relative}.theme-line header .search-bar.focus{-webkit-box-shadow:0 0 0 5px rgba(0,0,0,0.2),0 0 0 1px rgba(0,0,0,0.1);box-shadow:0 0 0 5px rgba(0,0,0,0.2),0 0 0 1px rgba(0,0,0,0.1)}.theme-line header .search-bar .fa{position:absolute;top:10px;left:14px;font-size:21px;color:#ccc;z-index:10}.theme-line header .search-bar .twitter-typeahead{width:100%}.theme-line header .search-bar input{-webkit-border-radius:5px;border-radius:5px;height:100%;border:0 none;-webkit-box-shadow:0 2px 2px rgba(0,0,0,0.1) inset;box-shadow:0 2px 2px rgba(0,0,0,0.1) inset;color:#444;width:100%;padding:13px 13px 13px 50px;font-size:14px}.theme-line header .search-bar input.tt-hint{color:#bbb}.theme-line header .sea rch-bar input:active .theme-line header .search-bar input:focus{outline:0 none;-webkit-box-shadow:0 2px 2px rgba(0,0,0,0.2) inset;box-shadow:0 2px 2px rgba(0,0,0,0.2) inset}.theme-line header .search-bar .tt-dropdown-menu,.theme-solid header .search-bar .tt-dropdown-menu{width:100%;text-align:left}.theme-line header .search-bar .tt-dropdown-menu h3{padding:0 45px;color:#ccc;font-weight:bold;font-size:12px;margin:10px 0 4px;text-transform:uppercase}.theme-line header .search-bar .tt-dropdown-menu .tt-suggestions{display:block}.theme-line header .search-bar .tt-dropdown-menu .tt-suggestions .tt-suggestion{cursor:pointer;font-size:14px;padding:4px 45px}.theme-line header .search-bar .tt-dropdown-menu .tt-suggestions .tt-suggestion p{color:#333;white-space:nowrap;overflow:hidden;-o-text-overflow:ellipsis;text-overflow:ellipsis}.theme-line header .search-bar .tt-cursor{background-color:#eee}.theme-line header .search-bar .tt-cursor p{color:#fff}.theme-line header a.btn{border:0 none;padd ing: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 .navbar-nav .active a{font-weight:bold}.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}.theme-line .main-content .nav-horizontal a{-webkit-box-shadow:0 0;box-shadow:0 0;border:0 none;background-color:#fff;-webkit-border-radius:0;border-radius:0;color:#aaa;padding:6px;margin:0 14px}.theme-line .main-content .nav-horizontal a:hover{color:#999;border-bottom:4px solid #ddd}.theme-line .main-content .nav-horizontal a.active{border-bottom:4px solid #888}.theme-line .sidebar-nav{color:#474a54;padding-bottom:30px}.theme-line .sidebar-nav ul{padding:0;list-style:none;font-size:13px;margin:3px 0 0}.theme-line .sidebar-nav ul li a{padding:3px 0;display:block;color:#666;position:relative;white-space:nowrap;overflow:hidden;-o-text-overflow:ellipsis;text-overflow:ellipsis}.theme-line .sidebar-nav ul li a:before{top:0;content :" ";display:block;width:6px;height:100%;position:absolute;left:-30px}.theme-line .sidebar-nav ul li a:hover{text-decoration:none}.theme-line .sidebar-nav ul li a.active{font-weight:bold}.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:0em}.theme-line .sidebar-nav .ask{width:100%;text-align:center;padding:10px}.theme-line .border-left .sidebar-nav{padding-left:15px}.theme-line .suggest{padding:4px;display:inline-block;font-size:12px}.header{padding:15px}.header .has-github{padding-right:136px}.header h1.navbar-brand{height:40px;width:200px;padding:0;margin:0;margin-top:5px;margin-right:15px}.header h1.navbar-brand a{text-indent:-99999px;background-position:center center;display:block;width:100%;height:100%;-webkit-background-size:contain;-moz-background-size:contain;background-size:contain; background-repeat:no-repeat}.header .nav.navbar-nav.pull-right{position:relative;right:-30px}.header .nav.navbar-nav .not-link{padding:15px;display:inline-block}.header .nav.navbar-nav .stable,.header .nav.navbar-nav .beta,.header .nav.navbar-nav .private{font-size:9px;padding:3px 5px;display:inline-block;line-height:8px;-webkit-border-radius:3px;border-radius:3px;margin-left:6px;color:#fff;top:-2px;position:relative;opacity:0.6;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=60)";filter:alpha(opacity=60)}.header .nav.navbar-nav a:hover>.stable,.header .nav.navbar-nav a:hover>.beta,.header .nav.navbar-nav a:hover>.private{opacity:1;-ms-filter:none;filter:none}.header .nav.navbar-nav .beta{background-color:#59c3d1}.header .nav.navbar-nav .stable{background-color:#41b841}.header .nav.navbar-nav .private{background-color:#333}.header #jumbotron{margin:55px 70px 50px;text-align:center}.header #jumbotron h2{margin-top:0;margin-bottom:20px}.header #jumbotron p{margin-bottom:0; line-height:1.6em;font-size:16px}.header #jumbotron .btn{margin-top:20px}.header .searchbox{position:relative;margin-right:15px;top:9px}.header .searchbox .fa-search{position:absolute;top:8px;right:10px;color:#777;pointer-events:none}.header .searchbox .typeahead{line-height:1.25em;-webkit-transition:.3s ease-out;-moz-transition:.3s ease-out;-o-transition:.3s ease-out;-ms-transition:.3s ease-out;transition:.3s ease-out;background-color:rgba(0,0,0,0.05);-webkit-border-radius:5px;border-radius:5px;width:95px}.header .searchbox .typeahead:focus,.header .searchbox .typeahead:active{outline:0 none}.header .searchbox .tt-dropdown-menu{max-width:350px;margin-left:-100px}.header .searchbox .tt-dropdown-menu h3{width:100px;float:left;margin:0;padding:8px 0 6px 15px;font-size:13px;color:#bbb}.header .searchbox .tt-dropdown-menu .tt-suggestions{display:block;float:left;width:250px}.header .searchbox .tt-dropdown-menu .tt-suggestions .tt-suggestion{font-size:14px}.header .searchbox .tt-dropdown -menu .tt-suggestions .tt-suggestion p{white-space:nowrap;overflow:hidden;-o-text-overflow:ellipsis;text-overflow:ellipsis}.header .searchbox .tt-cursor{background-color:#eee}.header .searchbox .tt-cursor p{color:#fff}.header .searchbox input{border:0 none;display:inline-block;font-size:14px;padding:6px 32px 6px 12px;margin:0}.header .searchbox input.tt-hint{height:auto}.header .searchbox.focus input{width:250px}.theme-line header{border-bottom:8px solid}.theme-line header h2{color:#aaa}.theme-line header p{color:#666}.theme-line .navbar-nav{color:#888}.theme-line .navbar-nav a{color:#bbb}.theme-line.lumosity-light .searchbox .tt-cursor p{color:rgba(0,0,0,0.7)}.theme-line header{border-bottom-color:#ec1c24}.theme-line header a.btn{background-color:#ec1c24}.theme-line header a.btn:hover{background-color:#950d12}.theme-line header .navbar-nav a:hover,.theme-line header .navbar-nav .open>a{color:#ec1c24}.theme-line header .navbar-nav .tt-cursor{background-color:#ec1c24}.theme-line .nav bar-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:#ec1c24}.theme-line .main-content a:hover{color:#950d12}.theme-line .sidebar-nav ul li a.active:before{background-color:#ec1c24}.theme-line .sidebar-nav ul li a.active{color:#ec1c24}.theme-line .sidebar-nav ul li a:hover,.theme-line .sidebar-nav ul li a.active:hover{color:#950d12}.theme-line .btn-primary{background-color:#ec1c24}.theme-line .btn-primary:hover{background-color:#950d12}.theme-line .main-content .nav-horizontal a.active{border-color:#ec1c24;color:#ec1c24}.theme-line .main-content .nav-horizontal a:hover{color:#950d12}.theme-line .main-content .nav-horizontal a.active:hover{border-color:#950d12}.theme-line header .navbar-nav a.active,.theme-line #versions-list li a:hover strong,.theme-line #versions-list li a.active .current,.theme-line #versions-list li a:active .current{color:#ec1c 24}.theme-line.body-threes .section-right .threes-nav .btn-default:hover,.theme-line.page-docs.body-threes .section-right .threes-nav .pull-right a:hover{color:#ec1c24;border-color:#ec1c24}.body-overlap .main-content{margin-top:30px}.body-box .main-content,.body-overlap .main-content{padding:30px;-webkit-box-shadow:0 0 0 1px rgba(0,0,0,0.1);box-shadow:0 0 0 1px rgba(0,0,0,0.1);background-color:#fff}body{font-weight:400;font-family:Roboto Slab, serif}h1,h2,h3,h4,h5,h6{font-weight:700;font-family:Roboto Slab, serif}.submit-vote.submit-vote-parent.voted a.submit-vote-button,.submit-vote.submit-vote-parent a.submit-vote-button:hover{background-color:#ec1c24}div.submit-vote.submit-vote-parent.voted a.submit-vote-button:hover{background-color:#950d12}a,.link .title{color:#ec1c24}a:hover,.link:hover .title{color:#950d12}.header h1.navbar-brand a{background-image:url(https://www.filepicker.io/api/file/QagunjDGRFul2JgNCAli)}.header h1.navbar-brand{width:96px}.block-edit-parameters{text-align :right;padding-bottom:5px}.ng-table-pager{display:none}.container-footer{margin-top:20px}.vcenter{vertical-align:middle} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/f8be2739/modules/webconfig/nodejs/public/stylesheets/style.less ---------------------------------------------------------------------- diff --git a/modules/webconfig/nodejs/public/stylesheets/style.less b/modules/webconfig/nodejs/public/stylesheets/style.less index d18775f..7b488ab 100644 --- a/modules/webconfig/nodejs/public/stylesheets/style.less +++ b/modules/webconfig/nodejs/public/stylesheets/style.less @@ -69,6 +69,7 @@ body { .ng-table th.text-right { text-align: right; } + .ng-table th.text-left { text-align: left; } @@ -77,3 +78,671 @@ body { text-align: center; } +.fa.fa-remove { + color: red; +} + +.border-left { + -webkit-box-shadow: 1px 0 0px 0px #eee inset; + box-shadow: 1px 0 0px 0px #eee inset; +} + +.border-right { + -webkit-box-shadow: 1px 0 0px 0px #eee; + box-shadow: 1px 0 0px 0px #eee; +} + +.theme-line { + background-color: #f9f9f9; +} + +.theme-line header { + background-color: #fff; +} + +.theme-line header .search-bar { + width: 90%; + margin: 30px auto 0; + -webkit-border-radius: 5px; + border-radius: 5px; + -webkit-box-shadow: 0 0 0 5px rgba(0, 0, 0, 0.1), 0 0 0 1px rgba(0, 0, 0, 0.1); + box-shadow: 0 0 0 5px rgba(0, 0, 0, 0.1), 0 0 0 1px rgba(0, 0, 0, 0.1); + position: relative; +} + +.theme-line header .search-bar.focus { + -webkit-box-shadow: 0 0 0 5px rgba(0, 0, 0, 0.2), 0 0 0 1px rgba(0, 0, 0, 0.1); + box-shadow: 0 0 0 5px rgba(0, 0, 0, 0.2), 0 0 0 1px rgba(0, 0, 0, 0.1); +} + +.theme-line header .search-bar .fa { + position: absolute; + top: 10px; + left: 14px; + font-size: 21px; + color: #ccc; + z-index: 10; +} + +.theme-line header .search-bar .twitter-typeahead { + width: 100%; +} + +.theme-line header .search-bar input { + -webkit-border-radius: 5px; + border-radius: 5px; + height: 100%; + border: 0 none; + -webkit-box-shadow: 0 2px 2px rgba(0, 0, 0, 0.1) inset; + box-shadow: 0 2px 2px rgba(0, 0, 0, 0.1) inset; + color: #444; + width: 100%; + padding: 13px 13px 13px 50px; + font-size: 14px; +} + +.theme-line header .search-bar input.tt-hint { + color: #bbb; +} + +.theme-line header .search-bar input:active +.theme-line header .search-bar input:focus { + outline: 0 none; + -webkit-box-shadow: 0 2px 2px rgba(0, 0, 0, 0.2) inset; + box-shadow: 0 2px 2px rgba(0, 0, 0, 0.2) inset; +} + +.theme-line header .search-bar .tt-dropdown-menu, +.theme-solid header .search-bar .tt-dropdown-menu { + width: 100%; + text-align: left; +} + +.theme-line header .search-bar .tt-dropdown-menu h3 { + padding: 0 45px; + color: #ccc; + font-weight: bold; + font-size: 12px; + margin: 10px 0 4px; + text-transform: uppercase; +} + +.theme-line header .search-bar .tt-dropdown-menu .tt-suggestions { + display: block; +} + +.theme-line header .search-bar .tt-dropdown-menu .tt-suggestions .tt-suggestion { + cursor: pointer; + font-size: 14px; + padding: 4px 45px; +} + +.theme-line header .search-bar .tt-dropdown-menu .tt-suggestions .tt-suggestion p{ + color: #333; + white-space: nowrap; + overflow: hidden; + -o-text-overflow: ellipsis; + text-overflow: ellipsis; +} + +.theme-line header .search-bar .tt-cursor { + background-color: #eee; +} + +.theme-line header .search-bar .tt-cursor p { + color: #fff; +} + +.theme-line header a.btn { + border: 0 none; + padding: 10px 25px; + 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 .navbar-nav .active a { + font-weight: bold; +} + +.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; +} + +.theme-line .main-content .nav-horizontal a { + -webkit-box-shadow: 0 0; + box-shadow: 0 0; + border: 0 none; + background-color: #fff; + -webkit-border-radius: 0; + border-radius: 0; + color: #aaa; + padding: 6px; + margin: 0 14px; +} + +.theme-line .main-content .nav-horizontal a:hover { + color: #999; + border-bottom: 4px solid #ddd; +} + +.theme-line .main-content .nav-horizontal a.active { + border-bottom: 4px solid #888; +} + +.theme-line .sidebar-nav { + color: #474a54; + padding-bottom: 30px; +} + +.theme-line .sidebar-nav ul { + padding: 0; + list-style: none; + font-size: 13px; + margin: 3px 0 0; +} + +.theme-line .sidebar-nav ul li a { + padding: 3px 0; + display: block; + color: #666; + position: relative; + white-space: nowrap; + overflow: hidden; + -o-text-overflow: ellipsis; + text-overflow: ellipsis; +} + +.theme-line .sidebar-nav ul li a:before { + top: 0; + content: " "; + display: block; + width: 6px; + height: 100%; + position: absolute; + left: -30px; +} + +.theme-line .sidebar-nav ul li a:hover { + text-decoration: none; +} + +//.theme-line .sidebar-nav ul li a:hover:before, +//.theme-solid .sidebar-nav ul li a:hover:before { +// background-color: #eee; +//} + +.theme-line .sidebar-nav ul li a.active { + font-weight: bold; +} + +.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: 0em; +} + +.theme-line .sidebar-nav .ask { + width: 100%; + text-align: center; + padding: 10px; +} + +.theme-line .border-left .sidebar-nav { + padding-left: 15px; +} + +.theme-line .suggest { + padding: 4px; + display: inline-block; + font-size: 12px; +} + +.header { + padding: 15px; +} + +.header .has-github { + padding-right: 136px; +} + +.header h1.navbar-brand { + height: 40px; + width: 200px; + padding: 0; + margin: 0; + margin-top: 5px; + margin-right: 15px; +} + +.header h1.navbar-brand a { + text-indent: -99999px; + background-position: center center; + display: block; + width: 100%; + height: 100%; + -webkit-background-size: contain; + -moz-background-size: contain; + background-size: contain; + background-repeat: no-repeat; +} + +.header .nav.navbar-nav.pull-right { + position: relative; + right: -30px; +} + +.header .nav.navbar-nav .not-link { + padding: 15px; + display: inline-block; +} + +.header .nav.navbar-nav .stable, +.header .nav.navbar-nav .beta, +.header .nav.navbar-nav .private { + font-size: 9px; + padding: 3px 5px; + display: inline-block; + line-height: 8px; + -webkit-border-radius: 3px; + border-radius: 3px; + margin-left: 6px; + color: #fff; + top: -2px; + position: relative; + opacity: 0.6; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=60)"; + filter: alpha(opacity=60); +} + +.header .nav.navbar-nav a:hover > .stable, +.header .nav.navbar-nav a:hover > .beta, +.header .nav.navbar-nav a:hover > .private { + opacity: 1; + -ms-filter: none; + filter: none; +} + +.header .nav.navbar-nav .beta { + background-color: #59c3d1; +} + +.header .nav.navbar-nav .stable { + background-color: #41b841; +} + +.header .nav.navbar-nav .private { + background-color: #333; +} + +.header #jumbotron { + margin: 55px 70px 50px; + text-align: center; +} + +.header #jumbotron h2 { + margin-top: 0; + margin-bottom: 20px; +} + +.header #jumbotron p { + margin-bottom: 0; + line-height: 1.6em; + font-size: 16px; +} + +.header #jumbotron .btn { + margin-top: 20px; +} + +.header .searchbox { + position: relative; + margin-right: 15px; + top: 9px; +} + +.header .searchbox .fa-search { + position: absolute; + top: 8px; + right: 10px; + color: #777; + pointer-events: none; +} + +.header .searchbox .typeahead { + line-height: 1.25em; + -webkit-transition: 0.3s ease-out; + -moz-transition: 0.3s ease-out; + -o-transition: 0.3s ease-out; + -ms-transition: 0.3s ease-out; + transition: 0.3s ease-out; + background-color: rgba(0, 0, 0, 0.05); + -webkit-border-radius: 5px; + border-radius: 5px; + width: 95px; +} + +.header .searchbox .typeahead:focus, +.header .searchbox .typeahead:active { + outline: 0 none; +} + +.header .searchbox .tt-dropdown-menu { + max-width: 350px; + margin-left: -100px; +} + +.header .searchbox .tt-dropdown-menu h3 { + width: 100px; + float: left; + margin: 0; + padding: 8px 0 6px 15px; + font-size: 13px; + color: #bbb; +} + +.header .searchbox .tt-dropdown-menu .tt-suggestions { + display: block; + float: left; + width: 250px; +} + +.header .searchbox .tt-dropdown-menu .tt-suggestions .tt-suggestion { + font-size: 14px; +} + +.header .searchbox .tt-dropdown-menu .tt-suggestions .tt-suggestion p { + white-space: nowrap; + overflow: hidden; + -o-text-overflow: ellipsis; + text-overflow: ellipsis; +} + +.header .searchbox .tt-cursor { + background-color: #eee; +} + +.header .searchbox .tt-cursor p { + color: #fff; +} + +.header .searchbox input { + border: 0 none; + display: inline-block; + font-size: 14px; + padding: 6px 32px 6px 12px; + margin: 0; +} + +.header .searchbox input.tt-hint { + height: auto; +} + +.header .searchbox.focus input { + width: 250px; +} + +.theme-line header { + border-bottom: 8px solid; +} + +.theme-line header h2 { + color: #aaa; +} + +.theme-line header p { + color: #666; +} + +.theme-line .navbar-nav { + color: #888; +} + +.theme-line .navbar-nav a { + color: #bbb; +} + +.theme-line.lumosity-light .searchbox .tt-cursor p { + color: rgba(0, 0, 0, 0.7); +} + +.theme-line header { + border-bottom-color: #ec1c24; +} + +.theme-line header a.btn { + background-color: #ec1c24; +} + +.theme-line header a.btn:hover { + background-color: #950d12; +} + +.theme-line header .navbar-nav a:hover, .theme-line header .navbar-nav .open > a { + color: #ec1c24; +} + +.theme-line header .navbar-nav .tt-cursor { + background-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: #ec1c24; +} + +.theme-line .main-content a:hover { + color: #950d12; +} + +.theme-line .sidebar-nav ul li a.active:before { + background-color: #ec1c24; +} + +.theme-line .sidebar-nav ul li a.active { + color: #ec1c24; +} + +.theme-line .sidebar-nav ul li a:hover, .theme-line .sidebar-nav ul li a.active:hover { + color: #950d12; +} + +.theme-line .btn-primary { + background-color: #ec1c24; +} + +.theme-line .btn-primary:hover { + background-color: #950d12; +} + +.theme-line .main-content .nav-horizontal a.active { + border-color: #ec1c24; + color: #ec1c24; +} + +.theme-line .main-content .nav-horizontal a:hover { + color: #950d12; +} + +.theme-line .main-content .nav-horizontal a.active:hover { + border-color: #950d12; +} + +.theme-line header .navbar-nav a.active, .theme-line #versions-list li a:hover strong, .theme-line #versions-list li a.active .current, .theme-line #versions-list li a:active .current { + color: #ec1c24; +} + +.theme-line.body-threes .section-right .threes-nav .btn-default:hover, .theme-line.page-docs.body-threes .section-right .threes-nav .pull-right a:hover { + color: #ec1c24; + border-color: #ec1c24; +} + +.body-overlap .main-content { + margin-top: 30px; +} + +.body-box .main-content, +.body-overlap .main-content { + padding: 30px; + -webkit-box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.1); + box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.1); + background-color: #fff; +} + +body { + font-weight: 400; + font-family: Roboto Slab, serif;; +} + +h1, h2, h3, h4, h5, h6 { + font-weight: 700; + font-family: Roboto Slab, serif;; +} + +.submit-vote.submit-vote-parent.voted a.submit-vote-button, .submit-vote.submit-vote-parent a.submit-vote-button:hover { + background-color: #ec1c24; +} + +div.submit-vote.submit-vote-parent.voted a.submit-vote-button:hover { + background-color: #950d12; +} + +a, .link .title { + color: #ec1c24; +} + +a:hover, .link:hover .title { + color: #950d12; +} + +.header h1.navbar-brand a { + background-image: url(https://www.filepicker.io/api/file/QagunjDGRFul2JgNCAli) +} + +.header h1.navbar-brand { + width: 96px; +} + +.block-edit-parameters { + text-align: right; + padding-bottom: 5px; +} + +.ng-table-pager { + display: none; +} + +.container-footer { + margin-top: 20px; +} + +.vcenter { + //display: inline-block; + vertical-align: middle; + //float: none; +} + +.border-right-remove { + +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/f8be2739/modules/webconfig/nodejs/routes/pages.js ---------------------------------------------------------------------- diff --git a/modules/webconfig/nodejs/routes/pages.js b/modules/webconfig/nodejs/routes/pages.js index 99cf993..8f1e702 100644 --- a/modules/webconfig/nodejs/routes/pages.js +++ b/modules/webconfig/nodejs/routes/pages.js @@ -4,12 +4,12 @@ var router = express.Router(); /* GET home page. */ router.get('/', function(req, res) { - res.render('index', { title: 'Dashboard' }); + res.redirect('clusters'); }); -/* GET cluster page. */ -router.get('/cluster', function(req, res) { - res.render('cluster', { }); +/* GET clusters page. */ +router.get('/clusters', function(req, res) { + res.render('clusters', { }); }); /* GET cluster edit popup. */ @@ -17,6 +17,26 @@ router.get('/cluster/edit', function(req, res) { res.render('clusterEdit', {}); }); +/* GET caches page. */ +router.get('/caches', function(req, res) { + res.render('caches', { }); +}); + +/* GET persistence page. */ +router.get('/persistence', function(req, res) { + res.render('persistence', { }); +}); + +/* GET sql page. */ +router.get('/sql', function(req, res) { + res.render('sql', { }); +}); + +/* GET clients page. */ +router.get('/clients', function(req, res) { + res.render('clients', { }); +}); + // GET dropdown-menu template. router.get('/select', function(req, res) { res.render('templates/select', { }); http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/f8be2739/modules/webconfig/nodejs/views/caches.jade ---------------------------------------------------------------------- diff --git a/modules/webconfig/nodejs/views/caches.jade b/modules/webconfig/nodejs/views/caches.jade new file mode 100644 index 0000000..60f5890 --- /dev/null +++ b/modules/webconfig/nodejs/views/caches.jade @@ -0,0 +1,10 @@ +extends layout +block head +block content + div.docs-header + h1 Caches + p Create and configure Ignite caches. + hr + div.docs-body(ng-controller='cachesRouter') +block body + script(src='/javascripts/controllers/caches.js') \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/f8be2739/modules/webconfig/nodejs/views/clients.jade ---------------------------------------------------------------------- diff --git a/modules/webconfig/nodejs/views/clients.jade b/modules/webconfig/nodejs/views/clients.jade new file mode 100644 index 0000000..6a33b9a --- /dev/null +++ b/modules/webconfig/nodejs/views/clients.jade @@ -0,0 +1,10 @@ +extends layout +block head +block content + div.docs-header + h1 Clients + p Create and configure Ignite clients. + hr + div.docs-body(ng-controller='clientsRouter') +block body + script(src='/javascripts/controllers/clients.js') \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/f8be2739/modules/webconfig/nodejs/views/cluster.jade ---------------------------------------------------------------------- diff --git a/modules/webconfig/nodejs/views/cluster.jade b/modules/webconfig/nodejs/views/cluster.jade deleted file mode 100644 index 167be3b..0000000 --- a/modules/webconfig/nodejs/views/cluster.jade +++ /dev/null @@ -1,30 +0,0 @@ -extends layout -block head - script(src='//ajax.googleapis.com/ajax/libs/angularjs/1.3.15/angular.js') - script(src='//ajax.googleapis.com/ajax/libs/angularjs/1.3.15/angular-sanitize.js') - script(src='//cdnjs.cloudflare.com/ajax/libs/angular-strap/2.2.2/angular-strap.js') - script(src='//cdnjs.cloudflare.com/ajax/libs/angular-strap/2.2.2/angular-strap.tpl.min.js') - - link(rel='stylesheet', href='/stylesheets/ng-table.css') -block content - div.container(ng-controller='clusterRouter') - div.box - div.box-header - h3.box-title Clusters Table - div.pull-right - button.btn(ng-click='create()' data-animation="am-fade-and-scale") Create - div.box-body - table(ng-table="clustersTable" class=['table', 'table-bordered', 'table-hover']) - tr(ng-repeat="cluster in $data") - td.text-center(data-title="'#'" sortable="'index'") {{$index + 1}} - td.text-center(data-title="'Name'" sortable="'name'") {{cluster.name}} - td.text-center(data-title="'Caches'" sortable="'caches'") {{cluster.caches}} - td.text-center(data-title="'Discovery'" sortable="'discovery'") {{cluster.discovery}} - td.pull-right(data-title="'Actions'" sortable="'actions'") - button(class=['btn'] type='button' ng-click='edit(cluster)' data-animation="am-fade-and-scale") - i(class=['fa', 'fa-edit']) - button(class=['btn', 'btn-danger'] type='button' ng-click='delete(cluster)') - i(class=['fa', 'fa-remove']) -block body - script(src='/javascripts/ng-table.js') - script(src='/javascripts/controllers/clusters.js') \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/f8be2739/modules/webconfig/nodejs/views/clusters.jade ---------------------------------------------------------------------- diff --git a/modules/webconfig/nodejs/views/clusters.jade b/modules/webconfig/nodejs/views/clusters.jade new file mode 100644 index 0000000..c6c72f8 --- /dev/null +++ b/modules/webconfig/nodejs/views/clusters.jade @@ -0,0 +1,47 @@ +extends layout +block head + script(src='//ajax.googleapis.com/ajax/libs/angularjs/1.3.15/angular-sanitize.js') + script(src='//cdnjs.cloudflare.com/ajax/libs/angular-strap/2.2.2/angular-strap.js') + script(src='//cdnjs.cloudflare.com/ajax/libs/angular-strap/2.2.2/angular-strap.tpl.min.js') + + link(rel='stylesheet', href='/stylesheets/ng-table.css') +block content + div.docs-header + h1 Clusters + p Create and configure Ignite clusters. + hr + div.docs-body(ng-controller='clustersController') + div.block-edit-parameters + div(class=['btn-group']) + button(ng-click='add()' class=['btn', 'btn-default', 'fa', 'fa-plus'] )  Add + table(ng-table="clustersTable" class=['table', 'table-bordered', 'table-hover']) + tr(ng-repeat="cluster in $data") + td(data-title="'#'" class=['text-center', 'vcenter'] style='width: 50px') {{$index + 1}} + td(data-title="'Name'" sortable="'name'" class=['text-center', 'col-sm-4']) + div(ng-if='!(edit.name && editIdx == $index)') + span(ng-if='cluster.name') {{cluster.name}} + span.pull-right(type='button' ng-click='beginEdit(cluster); edit.name = true' data-animation="am-fade-and-scale") + i(class=['fa', 'fa-pencil']) + div.input-group(ng-if='edit.name && editIdx == $index') + input.form-control(type='text' ng-model='cluster.name') + span.input-group-addon + i(class=['fa', 'fa-repeat'] ng-click='revert(); edit.name = false') + i(class=['fa', 'fa-save'] ng-click='submit(); edit.name = false' style='margin-left: 10px;') + td.text-center(data-title="'Discovery'" sortable="'discovery'") + div(ng-if='!(edit.discovery && editIdx == $index)') + span(ng-if='cluster.discovery') {{discoveryAsString(cluster.discovery)}} + span.pull-right(type='button' ng-click='beginEdit(cluster); edit.discovery = true' data-animation="am-fade-and-scale") + i(class=['fa', 'fa-pencil']) + div.input-group(ng-if='edit.discovery && editIdx == $index') + button(class=['btn', 'btn-default', 'form-control', 'pull-right'] style='width: 85%' data-placement='bottom-center' ng-model='cluster.discovery' data-template='/select' data-placeholder='Choose discovery' bs-options='discovery.value as discovery.label for discovery in discoveries' bs-select) + span.caret + span.input-group-addon + i(class=['fa', 'fa-repeat'] ng-click='revert(); edit.discovery = false') + i(class=['fa', 'fa-save'] ng-click='submit(); edit.discovery = false' style='margin-left: 10px;') + td(data-title="'Delete'" class=['col-sm-1']) + center + span(type='button' ng-click='delete(cluster)') + i(class=['fa', 'fa-remove']) +block body + script(src='/javascripts/ng-table.js') + script(src='/javascripts/controllers/clusters.js') \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/f8be2739/modules/webconfig/nodejs/views/includes/footer.jade ---------------------------------------------------------------------- diff --git a/modules/webconfig/nodejs/views/includes/footer.jade b/modules/webconfig/nodejs/views/includes/footer.jade index 66d83c8..5816240 100644 --- a/modules/webconfig/nodejs/views/includes/footer.jade +++ b/modules/webconfig/nodejs/views/includes/footer.jade @@ -1,8 +1,7 @@ -footer.main-footer - .pull-right.hidden-xs - b Version - | 1.1.0 - strong - | Powered by - a(href='http://ignite.incubator.apache.org') Apache Ignite - | . \ No newline at end of file +div(class=['container', 'container-footer']) + footer + center + p + | Powered by + a(href='http://ignite.incubator.apache.org') Apache Ignite + | , version 1.1.0 \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/f8be2739/modules/webconfig/nodejs/views/includes/header.jade ---------------------------------------------------------------------- diff --git a/modules/webconfig/nodejs/views/includes/header.jade b/modules/webconfig/nodejs/views/includes/header.jade index f1597b7..689f7cc 100644 --- a/modules/webconfig/nodejs/views/includes/header.jade +++ b/modules/webconfig/nodejs/views/includes/header.jade @@ -1,28 +1,10 @@ -header.main-header - <!-- Logo --> - a(href='/' class='logo') - <!-- logo for regular state and mobile devices --> - span.logo-lg(style='vertical-align: middle') - img.pull-left(src='images/logo.png' alt='Apache Ignite Web-Configurator') - <!-- Sidebar toggle button--> - //a.sidebar-toggle(href='#' data-toggle='offcanvas' role='button') - // span.sr-only Toggle navigation - // span.icon-bar - // span.icon-bar - // span.icon-bar - nav(class=['navbar', 'navbar-static-top'] role='navigation') - div.navbar-custom-menu -//nav(class=['navbar', 'navbar-default', 'navbar-fixed-top', 'navbar-style']) -// div.container -// div.navbar-header -// a(href='#') -// img(src='images/logo.png' alt='ApacheIgnite') -// div(class=[ 'navbar-collapse', 'collapse']) -// ul(class=['nav', 'navbar-nav', 'navbar-right'], style='margin-top: 5px') -// li -// a(href='#') Settings -// li -// a(href='#') Profile -// li -// a(href='#') Log In - +header.header(id='header') + div.container + h1.navbar-brand + a(href='/') Apache Ignite Web Configurator + div(class=['navbar-collapse', 'collapse']) + ul(class=['nav', 'navbar-nav', 'pull-right']) + li(ng-show='user') + // TODO + li(ng-show='!user' class=['nav-login']) + a(ng-click='login()' href='#') Log In \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/f8be2739/modules/webconfig/nodejs/views/index.jade ---------------------------------------------------------------------- diff --git a/modules/webconfig/nodejs/views/index.jade b/modules/webconfig/nodejs/views/index.jade deleted file mode 100644 index 4d99d2a..0000000 --- a/modules/webconfig/nodejs/views/index.jade +++ /dev/null @@ -1,3 +0,0 @@ -extends layout - -block content http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/f8be2739/modules/webconfig/nodejs/views/layout.jade ---------------------------------------------------------------------- diff --git a/modules/webconfig/nodejs/views/layout.jade b/modules/webconfig/nodejs/views/layout.jade index d93ff43..2281679 100644 --- a/modules/webconfig/nodejs/views/layout.jade +++ b/modules/webconfig/nodejs/views/layout.jade @@ -1,60 +1,56 @@ doctype html html(ng-app='ignite-web-configurator') - head + head title= title - //add bootstrap dependencies from CDNjs. Using a CDN to distribute these files puts less pressure //on our web server and will be delivered faster to the client than our own server. link(rel='stylesheet', href='//cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.4/css/bootstrap.css') // Font Awesome Icons link(rel='stylesheet', href='//maxcdn.bootstrapcdn.com/font-awesome/4.3.0/css/font-awesome.css') + link(rel='stylesheet', href='//fonts.googleapis.com/css?family=Roboto+Slab:700:serif|Roboto+Slab:400:serif') // AdminLTE - link(rel='stylesheet', href='/stylesheets/AdminLTE.css') + //link(rel='stylesheet', href='/stylesheets/AdminLTE.css') script(src='//cdnjs.cloudflare.com/ajax/libs/jquery/2.1.4/jquery.js') - script(src='/javascripts/AdminLTE.js') + //script(src='/javascripts/AdminLTE.js') + + script(src='//ajax.googleapis.com/ajax/libs/angularjs/1.3.15/angular.js') + + script(src='/javascripts/bundle.js') // Site style - link(rel='stylesheet', href='/stylesheets/skin-ignite.css') + //link(rel='stylesheet', href='/stylesheets/skin-ignite.css') link(rel='stylesheet', href='/stylesheets/style.css') block head - body.skin-ignite - div.wrapper - include includes/header - - <!-- Sidebar --> - aside.main-sidebar - section.sidebar - ul.sidebar-menu - li.acitve - a(href="/cluster") Cluster - li.treeview - a(href="#") - span Caches - i(class=['fa', 'fa-angle-right', 'pull-left']) - ul.treeview-menu - li - a(href="/caches") Caches level 2 - li - a(href="/caches") Caches level 2 - li - a(href="/persistence") Persistence - li - a(href="/sql") SQL - li - a(href="/clients") Clients - - div.content-wrapper - <!-- Content Header (Page header) --> - section.content-header - block content-header - <!-- Content (Page content) --> - section.content - block content - - include includes/footer - - <!-- Custom script load --> - block body \ No newline at end of file + body(class=['theme-line', 'body-overlap']) + div.wrapper + include includes/header + + div(class=['container', 'body-container']) + div.main-content + div.main-head + div.row + div(class=['col-sm-2', 'border-right', 'section-left']) + div.sidebar-nav + ul(ng-controller='activeLink' class="menu") + li + a(ng-class="{active: isActive('/clusters')}" href='/clusters') Clusters + li + a(ng-class="{active: isActive('/caches')}" href='/caches') Caches + li + a(ng-class="{active: isActive('/persistence')}" href='/persistence') Persistence + li + a(ng-class="{active: isActive('/sql')}" href='/sql') SQL + li + a(ng-class="{active: isActive('/clients')}" href='/clients') Clients + div(class=['col-sm-10', 'border-left', 'section-right']) + div.docs-content + block content + + include includes/footer + <!-- Custom script load --> + script(src='/javascripts/controllers/sidebar.js') + + block body \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/f8be2739/modules/webconfig/nodejs/views/persistence.jade ---------------------------------------------------------------------- diff --git a/modules/webconfig/nodejs/views/persistence.jade b/modules/webconfig/nodejs/views/persistence.jade new file mode 100644 index 0000000..95086d6 --- /dev/null +++ b/modules/webconfig/nodejs/views/persistence.jade @@ -0,0 +1,10 @@ +extends layout +block head +block content + div.docs-header + h1 Persistence + p Create and configure Ignite persistence. + hr + div.docs-body(ng-controller='persistentRouter') +block body + script(src='/javascripts/controllers/persistent.js') \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/f8be2739/modules/webconfig/nodejs/views/sql.jade ---------------------------------------------------------------------- diff --git a/modules/webconfig/nodejs/views/sql.jade b/modules/webconfig/nodejs/views/sql.jade new file mode 100644 index 0000000..fc680ef --- /dev/null +++ b/modules/webconfig/nodejs/views/sql.jade @@ -0,0 +1,10 @@ +extends layout +block head +block content + div.docs-header + h1 SQL + p Create and configure Ignite SQL settings. + hr + div.docs-body(ng-controller='sqlRouter') +block body + script(src='/javascripts/controllers/sql.js') \ No newline at end of file