nbot

A clone of the eBot by @deStrO fully based on node.js with build in Web Page - WIP
git clone git://archive.git.mtrnord.blog/MTRNord/nbot.git
Log | Files | Refs | README | LICENSE

commit e6ee3438bb425e8bdb3ab6a72c3ecc0344fc087f
parent c0b39e890b8ad77f88578136571659e3e27c2bb1
Author: MTRNord <mtrnord1@gmail.com>
Date:   Thu, 24 Mar 2016 13:04:34 +0100

Add sidebar to Theme

Diffstat:
Mbackend/rcon.js | 6+++---
Mweb/server.js | 12++++++------
Aweb/theme/css/sidebar.css | 125+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Rweb/theme/theme.css -> web/theme/css/theme.css | 0
Mweb/theme/index.html | 193+++++++++++++++++++++++++++++++++++++++++++++++++------------------------------
5 files changed, 253 insertions(+), 83 deletions(-)

diff --git a/backend/rcon.js b/backend/rcon.js @@ -32,9 +32,9 @@ module.exports = { }); }, status: function () { - rcon.connect().then(() => { - rcon.command('status').then(() => { - console.log('status check'); + return rcon.connect().then(() => { + return rcon.command('status').then(result => { + return result }); }).then( () => rcon.disconnect() diff --git a/web/server.js b/web/server.js @@ -17,8 +17,8 @@ module.exports = { app.use('/css', express.static(__dirname + '/theme/css')); app.use('/js', express.static(__dirname + '/theme/js')); app.use('/fonts', express.static(__dirname + '/theme/fonts')); - http.listen(3000, function(){ - console.log('listening on *:3000'); + http.listen(3001, "0.0.0.0", function(){ + console.log('listening on *:3001'); }); }, iojs: function () { @@ -36,9 +36,9 @@ module.exports = { rcon.live_on() }else { if (command.command == "status") { - rcon.status() - - console.log("Status: " + util.inspect(rcon.status(), {showHidden: false, depth: null})); + console.log(typeof rcon.status()); + socket.emit('status_alert', {response: rcon.status()}); + console.log(rcon.status()); }else { if (command.command == "add_server") { addserver.start() @@ -48,7 +48,7 @@ module.exports = { } } } - socket.broadcast.emit('alert', "command executed"); + socket.emit('alert', {response: "command executed"}); }); }); } diff --git a/web/theme/css/sidebar.css b/web/theme/css/sidebar.css @@ -0,0 +1,125 @@ +/*! + * Start Bootstrap - Simple Sidebar HTML Template (http://startbootstrap.com) + * Code licensed under the Apache License v2.0. + * For details, see http://www.apache.org/licenses/LICENSE-2.0. + */ + +/* Toggle Styles */ + +#wrapper { + padding-left: 0; + -webkit-transition: all 0.5s ease; + -moz-transition: all 0.5s ease; + -o-transition: all 0.5s ease; + transition: all 0.5s ease; +} + +#wrapper.toggled { + padding-left: 250px; +} + +#sidebar-wrapper { + z-index: 1000; + position: fixed; + left: 250px; + width: 0; + height: 100%; + margin-left: -250px; + overflow-y: auto; + -webkit-transition: all 0.5s ease; + -moz-transition: all 0.5s ease; + -o-transition: all 0.5s ease; + transition: all 0.5s ease; + background: rgba(217,217,217,0.2); +} + +#wrapper.toggled #sidebar-wrapper { + width: 250px; +} + +#page-content-wrapper { + width: 100%; + position: absolute; + padding: 15px; +} + +#wrapper.toggled #page-content-wrapper { + position: absolute; + margin-right: -250px; +} + +/* Sidebar Styles */ + +.sidebar-nav { + position: absolute; + top: 0; + width: 250px; + margin: 0; + padding: 0; + list-style: none; +} + +.sidebar-nav li { + text-indent: 20px; + line-height: 40px; +} + +.sidebar-nav li a { + display: block; + text-decoration: none; + color: #635C5C; +} + +.sidebar-nav li a:hover { + text-decoration: none; + color: #000; + background: rgba(128,128,128,0.2); +} + +.sidebar-nav li a:active, +.sidebar-nav li a:focus { + text-decoration: none; +} + +.sidebar-nav > .sidebar-brand { + height: 65px; + font-size: 18px; + line-height: 60px; +} + +.sidebar-nav > .sidebar-brand a { + color: #635C5C; +} + +.sidebar-nav > .sidebar-brand a:hover { + color: #000; + background: rgba(128,128,128,0.2); +} + +@media(min-width:768px) { + #wrapper { + padding-left: 250px; + } + + #wrapper.toggled { + padding-left: 0; + } + + #sidebar-wrapper { + width: 250px; + } + + #wrapper.toggled #sidebar-wrapper { + width: 0; + } + + #page-content-wrapper { + padding: 20px; + position: relative; + } + + #wrapper.toggled #page-content-wrapper { + position: relative; + margin-right: 0; + } +} diff --git a/web/theme/theme.css b/web/theme/css/theme.css diff --git a/web/theme/index.html b/web/theme/index.html @@ -16,7 +16,8 @@ <!-- Bootstrap theme --> <!--<link href="css/bootstrap-theme.min.css" rel="stylesheet">--> <!-- Custom styles for this template --> - <link href="theme.css" rel="stylesheet"> + <link href="css/theme.css" rel="stylesheet"> + <link href="css/sidebar.css" rel="stylesheet"> <!-- IE10 viewport hack for Surface/desktop Windows 8 bug --> <link href="//getbootstrap.com/assets/css/ie10-viewport-bug-workaround.css" rel="stylesheet"> @@ -28,92 +29,131 @@ </head> <body> - <!-- Fixed navbar --> - <nav class="navbar navbar-inverse navbar-fixed-top"> - <div class="container"> - <div class="navbar-header"> - <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false" aria-controls="navbar"> - <span class="sr-only">Toggle navigation</span> - <span class="icon-bar"></span> - <span class="icon-bar"></span> - <span class="icon-bar"></span> - </button> - <a class="navbar-brand" href="#">Bootstrap theme</a> + <div id="wrapper" class="toggled"> + <!-- Fixed navbar --> + <nav class="navbar navbar-inverse navbar-fixed-top"> + <div class="container"> + <div class="navbar-header"> + <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false" aria-controls="navbar"> + <span class="sr-only">Toggle navigation</span> + <span class="icon-bar"></span> + <span class="icon-bar"></span> + <span class="icon-bar"></span> + </button> + <a class="navbar-brand" href="#">Bootstrap theme</a> + </div> + <div id="navbar" class="navbar-collapse collapse"> + <ul class="nav navbar-nav"> + <li class="active"><a href="#">Home</a></li> + <li><a href="#about">About</a></li> + <li><a href="#contact">Contact</a></li> + </ul> + </div><!--/.nav-collapse --> </div> - <div id="navbar" class="navbar-collapse collapse"> - <ul class="nav navbar-nav"> - <li class="active"><a href="#">Home</a></li> - <li><a href="#about">About</a></li> - <li><a href="#contact">Contact</a></li> - </ul> - </div><!--/.nav-collapse --> - </div> - </nav> + </nav> + <!-- Sidebar --> + <div id="sidebar-wrapper"> + <ul class="sidebar-nav"> + <li class="sidebar-brand"> + <a href="#"> + Start Bootstrap + </a> + </li> + <li> + <a href="#">Dashboard</a> + </li> + <li> + <a href="#">Shortcuts</a> + </li> + <li> + <a href="#">Overview</a> + </li> + <li> + <a href="#">Events</a> + </li> + <li> + <a href="#">About</a> + </li> + <li> + <a href="#">Services</a> + </li> + <li> + <a href="#">Contact</a> + </li> + </ul> + </div> + <!-- /#sidebar-wrapper --> <!-- Main jumbotron for a primary marketing message or call to action --> <div class="jumbotron"> - <div class="container"> - <h1>nBot</h1> - <p>This is a eBot like CSGO Webadministration called nBot.</p> + <div id="page-content-wrapper"> + <div class="container"> + <button type="button" class="btn btn-default" aria-label="Toggle Menu" href="#menu-toggle" id="menu-toggle"> + <span class="glyphicon glyphicon-th-list" aria-hidden="true"></span> MENU + </button> + <h1>nBot</h1> + <p>This is a eBot like CSGO Webadministration called nBot.</p> - <div class="panel panel-default"> - <div class="panel-heading"> - <h3 class="panel-title">Server 1</h3> - </div> - <div class="panel-body"> - <div class="panel panel-default"> - <div class="panel-heading">Server Data</div> - <div class="panel-body"> - <p><b>Hostname: </b>Placeholder</p> - <p><b>IP: </b>Placeholder</p> - <p><b>Password: </b>Placeholder</p> - <p><b>Owner: </b>Placeholder</p> - </div> + <div class="panel panel-default"> + <div class="panel-heading"> + <h3 class="panel-title">Server 1</h3> </div> - <div class="panel panel-default"> - <div class="panel-heading">Game Options</div> - <div class="panel-body"> - <button type="button" class="btn btn-danger btn-lg" id="restart">Restart Game</button> - <button type="button" class="btn btn-success btn-lg" id="live_on">LIVE!!!</button> + <div class="panel-body"> + <div class="panel panel-default"> + <div class="panel-heading">Server Data</div> + <div class="panel-body"> + <p><b>Hostname: </b>Placeholder</p> + <p><b>IP: </b>Placeholder</p> + <p><b>Password: </b>Placeholder</p> + <p><b>Owner: </b>Placeholder</p> + </div> </div> - </div> - <div class="panel panel-default"> - <div class="panel-heading">Game Infos</div> - <div class="panel-body"> - <p id="status"></p> - <button type="button" class="btn btn-info btn-lg" id="check_status">Check Status</button> + <div class="panel panel-default"> + <div class="panel-heading">Game Options</div> + <div class="panel-body"> + <button type="button" class="btn btn-danger btn-lg" id="restart">Restart Game</button> + <button type="button" class="btn btn-success btn-lg" id="live_on">LIVE!!!</button> + </div> + </div> + <div class="panel panel-default"> + <div class="panel-heading">Game Infos</div> + <div class="panel-body"> + <p id="status"></p> + <button type="button" class="btn btn-info btn-lg" id="check_status">Check Status</button> + </div> </div> </div> </div> + <button type="button" class="btn btn-info btn-lg" id="add_server">Add Server</button> </div> - <button type="button" class="btn btn-info btn-lg" id="add_server">Add Server</button> </div> </div> <div class="container"> - <!-- Example row of columns --> - <div class="row"> - <div class="col-md-4"> - <h2>Heading</h2> - <p>Donec id elit non mi porta gravida at eget metus. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Etiam porta sem malesuada magna mollis euismod. Donec sed odio dui. </p> - <p><a class="btn btn-default" href="#" role="button">View details &raquo;</a></p> - </div> - <div class="col-md-4"> - <h2>Heading</h2> - <p>Donec id elit non mi porta gravida at eget metus. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Etiam porta sem malesuada magna mollis euismod. Donec sed odio dui. </p> - <p><a class="btn btn-default" href="#" role="button">View details &raquo;</a></p> - </div> - <div class="col-md-4"> - <h2>Heading</h2> - <p>Donec sed odio dui. Cras justo odio, dapibus ac facilisis in, egestas eget quam. Vestibulum id ligula porta felis euismod semper. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus.</p> - <p><a class="btn btn-default" href="#" role="button">View details &raquo;</a></p> - </div> - </div> + <!-- Example row of columns --> + <div class="row"> + <div class="col-md-4"> + <h2>Heading</h2> + <p>Donec id elit non mi porta gravida at eget metus. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Etiam porta sem malesuada magna mollis euismod. Donec sed odio dui. </p> + <p><a class="btn btn-default" href="#" role="button">View details &raquo;</a></p> + </div> + <div class="col-md-4"> + <h2>Heading</h2> + <p>Donec id elit non mi porta gravida at eget metus. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Etiam porta sem malesuada magna mollis euismod. Donec sed odio dui. </p> + <p><a class="btn btn-default" href="#" role="button">View details &raquo;</a></p> + </div> + <div class="col-md-4"> + <h2>Heading</h2> + <p>Donec sed odio dui. Cras justo odio, dapibus ac facilisis in, egestas eget quam. Vestibulum id ligula porta felis euismod semper. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus.</p> + <p><a class="btn btn-default" href="#" role="button">View details &raquo;</a></p> + </div> + </div> - <hr> + <hr> - <footer> - <p>&copy; 2016 MTRNord &amp; Theme: &copy; 2015 Bootstrap</p> - </footer> - </div> <!-- /container --> + <footer> + <p>&copy; 2016 MTRNord &amp; Theme: &copy; 2015 Bootstrap</p> + </footer> + </div> <!-- /container --> + </div> <!-- Bootstrap core JavaScript ================================================== --> <!-- Placed at the end of the document so the pages load faster --> @@ -121,6 +161,10 @@ <script src="js/bootstrap.min.js"></script> <script src="https://cdn.socket.io/socket.io-1.4.5.js"></script> <script> + $("#menu-toggle").click(function(e) { + e.preventDefault(); + $("#wrapper").toggleClass("toggled"); + }); var socket = io('ws://localhost:3000'); $(document).off('click', '#restart').on('click', '#restart', function (e) { console.log('restart fired'); @@ -135,10 +179,11 @@ e.preventDefault(); }); socket.on('alert', function (message) { - console.log(message); + console.log(message.response); }); socket.on('status_alert', function (message) { - console.log("response " + message); + console.warn(typeof message) + console.warn(message) }); $(document).off('click', '#check_status').on('click', '#check_status', function (e) { console.log('Check Status');