From efde09025c94926934ff41d9442d86581e3f4853 Mon Sep 17 00:00:00 2001 From: Gregory Ballantine Date: Sat, 24 Sep 2022 21:29:12 -0400 Subject: [PATCH] Added some AJAX to dynamically update the server's run status --- public/js/drake.js | 11 ++++++++++- src/routes.php | 20 ++++++++++++++++++-- views/index.twig | 14 +++++++------- 3 files changed, 35 insertions(+), 10 deletions(-) diff --git a/public/js/drake.js b/public/js/drake.js index 1b9de87..0fb993c 100644 --- a/public/js/drake.js +++ b/public/js/drake.js @@ -1,3 +1,12 @@ $(document).ready(function () { - // this will be used later. + $('.serverItem').each(function() { + setInterval(updateServer, 5000, $(this)); + }); }); + +function updateServer(elem) { + var serverName = elem.data('server-name'); + $.get('/server/' + serverName + '/status', function(data, state) { + elem.children('.serverState').eq(0).text(data.state); + }); +} diff --git a/src/routes.php b/src/routes.php index 07cf737..558a876 100644 --- a/src/routes.php +++ b/src/routes.php @@ -68,6 +68,22 @@ $app->post('/create', function (Request $request, Response $response, $args) { ->withStatus(302); }); +// server status route +$app->get('/server/{serverName}/status', function (Request $request, Response $response, $args) { + $config = $this->get('config'); + $serverDir = join('/', array($config->get('server_directory'), $args['serverName'])); + + // create server object and pass info back to client as JSON data + $server = new Server($serverDir); + $serverData = [ + 'state' => $server->getState() ? 'Running' : 'Stopped', + ]; + + $response->getBody()->write(json_encode($serverData)); + return $response + ->withHeader('Content-Type', 'application/json'); +})->setName('server.status'); + // server start route $app->get('/server/{serverName}/start', function (Request $request, Response $response, $args) { $config = $this->get('config'); @@ -81,7 +97,7 @@ $app->get('/server/{serverName}/start', function (Request $request, Response $re return $response ->withHeader('Location', '/') ->withStatus(302); -})->setName('start'); +})->setName('server.start'); // server stop route $app->get('/server/{serverName}/stop', function (Request $request, Response $response, $args) { @@ -96,4 +112,4 @@ $app->get('/server/{serverName}/stop', function (Request $request, Response $res return $response ->withHeader('Location', '/') ->withStatus(302); -})->setName('stop'); +})->setName('server.stop'); diff --git a/views/index.twig b/views/index.twig index 887be12..c0ed4f0 100644 --- a/views/index.twig +++ b/views/index.twig @@ -27,17 +27,17 @@ - - {% for m in servers %} - {{ m.getName() }} - {{ m.getVersion() }} - {{ m.getState() ? 'Running' : 'Stopped' }} + {% for m in servers %} + + {{ m.getName() }} + {{ m.getVersion() }} + {{ m.getState() ? 'Running' : 'Stopped' }} - {% endfor %} - + + {% endfor %} {% endif %}