From 2950bd483a19045ef6eaf706251d9c9a426902fd Mon Sep 17 00:00:00 2001 From: Garry Newman Date: Fri, 4 Mar 2016 16:56:34 +0000 Subject: [PATCH] Fetch the console history --- js/console.js | 48 +++++++++++++++++++++++++++++++++++------------ js/rconService.js | 7 +------ rcon.css | 22 ++++++++++++++++++---- 3 files changed, 55 insertions(+), 22 deletions(-) diff --git a/js/console.js b/js/console.js index 0f9760b..c45a971 100644 --- a/js/console.js +++ b/js/console.js @@ -1,28 +1,52 @@ -app.controller( 'ConsoleController', ['$scope', 'rconService', ConsoleController] ); +app.controller( 'ConsoleController', ConsoleController ); -function ConsoleController( $scope, rconService ) +function ConsoleController( $scope, rconService, $timeout ) { - $scope.Output = rconService.Output; + $scope.Output = new Array(); $scope.SubmitCommand = function () { - rconService.Command( $scope.Command, 0 ); + $scope.OnMessage( { Message: $scope.Command, Type: 'Command' } ) + + rconService.Command( $scope.Command, 1 ); $scope.Command = ""; } - $scope.$on( "OnMessage", function ( event, msg ) + $scope.$on( "OnMessage", function ( event, msg ) { $scope.OnMessage( msg ); } ); + + $scope.OnMessage = function( msg ) { - if ( msg.Message.startsWith( "[CHAT] " ) ) - msg.Class = "Chat"; + // Ignore rcon entries + if ( msg.Message.startsWith( "[rcon] " ) ) return; - if ( msg.Identifier == 1 ) - msg.Class = "Requested"; + msg.Class = msg.Type; + $scope.Output.push( msg ); - if ( msg.Identifier > 1 ) - return; + $timeout( $scope.ScrollToBottom, 50 ); + } + $scope.ScrollToBottom = function() + { + // TODO - don't scroll if we're not at the bottom ! $( "#ConsoleController .Output" ).scrollTop( $( "#ConsoleController .Output" )[0].scrollHeight ); + } - } ); + // + // Calls console.tail - which returns the last 256 entries from the console. + // This is then added to the console + // + $scope.GetHistory = function () + { + console.log( "GetHistory" ); + + rconService.Request( "console.tail 256", $scope, function ( msg ) + { + var messages = JSON.parse( msg.Message ); + + messages.forEach( function ( x ) { $scope.OnMessage( x ); } ); + } ); + } + + rconService.InstallService( $scope, $scope.GetHistory ) } \ No newline at end of file diff --git a/js/rconService.js b/js/rconService.js index 01fed47..58aa456 100644 --- a/js/rconService.js +++ b/js/rconService.js @@ -5,10 +5,6 @@ function RconService() s.Callbacks = {}; - // A list of untargetted ouput from the server - // ie - the console history - s.Output = new Array(); - s.Connect = function ( addr, pass ) { s.Socket = new WebSocket( "ws://" + addr + "/" + pass ); @@ -22,7 +18,7 @@ function RconService() // This is a targetted message, it has an identifier // So feed it back to the right callback. // - if ( data.Identifier != 0 ) + if ( data.Identifier > 1000 ) { var cb = s.Callbacks[data.Identifier]; if ( cb != null ) @@ -42,7 +38,6 @@ function RconService() // if ( s.OnMessage != null ) { - s.Output.push( data ); s.OnMessage( data ); } }; diff --git a/rcon.css b/rcon.css index 4a80b96..3cbab4e 100644 --- a/rcon.css +++ b/rcon.css @@ -31,14 +31,28 @@ H3 padding: 8px; } -#ConsoleController .Output .Requested +#ConsoleController .Output div { - color: #2196F3; + padding: 2px 4px; + color: #888; } -#ConsoleController .Output .Chat +#ConsoleController .Output .Command { - color: #4CAF50; + color: #009688; + background-color: rgba(137, 255, 0, 0.44); +} + +#ConsoleController .Output .Warning +{ + color: #c79621; + background-color: rgba(255, 128, 0, 0.1); +} + +#ConsoleController .Output .Assert, #ConsoleController .Output .Error +{ + color: #b42626; + background-color: rgba(255,0,0,.1); } #ConsoleController .Input input