diff --git a/assets/scripts/test.coffee b/assets/scripts/test.coffee index be479b9..6662eed 100644 --- a/assets/scripts/test.coffee +++ b/assets/scripts/test.coffee @@ -53,6 +53,8 @@ fetchTestBenchmarkResults = (testId, benchmarkId) -> else tableRow.append('N/a') tableRow.append('N/a') + + tableRow.append('Details') catch error console.error 'An error occurred while fetching benchmark results.', error diff --git a/assets/styles/nardah.scss b/assets/styles/nardah.scss index 1900231..97ee52b 100644 --- a/assets/styles/nardah.scss +++ b/assets/styles/nardah.scss @@ -22,6 +22,10 @@ table{ border: 1px solid #eee; } +a{ + transition: color 210ms ease-in-out; +} + #main-wrapper{ padding: 1.5rem 2rem; background: white; diff --git a/src/Controllers/ApiController.php b/src/Controllers/ApiController.php index 3a7e704..c58f284 100644 --- a/src/Controllers/ApiController.php +++ b/src/Controllers/ApiController.php @@ -66,6 +66,23 @@ class ApiController extends Controller { ->withHeader('Content-Type', 'application/json'); } + public function getResultDelete(Request $request, Response $response, array $args): Response { + $result = Result::where('id', $args['result_id'])->delete(); + + $payload = json_encode($result); + + $referrer = $request->getHeaderLine('Referer'); + if ($referrer) { + return $response + ->withHeader('Location', $referrer) + ->withStatus(302); + } + + $response->getBody()->write($payload); + return $response + ->withHeader('Content-Type', 'application/json'); + } + public function getTestDetails(Request $request, Response $response, array $args): Response { $urlParams = $request->getQueryParams(); $test = Test::where('id', $urlParams['test_id'])->first(); diff --git a/src/Controllers/TestController.php b/src/Controllers/TestController.php index e711846..0a91453 100644 --- a/src/Controllers/TestController.php +++ b/src/Controllers/TestController.php @@ -109,4 +109,13 @@ class TestController extends Controller { ->withStatus(302); } + public function getResults(Request $request, Response $response, array $args): Response { + $test = Test::where('id', $args['test_id'])->first(); + + $view = Twig::fromRequest($request); + return $view->render($response, 'test/results.twig', [ + 'test' => $test, + ]); + } + } diff --git a/src/routes.php b/src/routes.php index dc2e77c..19cdfe5 100644 --- a/src/routes.php +++ b/src/routes.php @@ -42,6 +42,8 @@ $app->group('/test', function(RouteCollectorProxy $group) { $test->get('/edit', '\\BitGoblin\\Colossus\\Controllers\\TestController:getEdit')->setName('test.edit'); $test->post('/edit', '\\BitGoblin\\Colossus\\Controllers\\TestController:postEdit'); + + $test->get('/results', '\\BitGoblin\\Colossus\\Controllers\\TestController:getResults')->setName('test.results'); }); }); @@ -56,6 +58,7 @@ $app->group('/api', function(RouteCollectorProxy $group) { $apiv1->get('/result/list', '\\BitGoblin\\Colossus\\Controllers\\ApiController:getResultList')->setName('api.resultList'); $apiv1->post('/result/add', '\\BitGoblin\\Colossus\\Controllers\\ApiController:postResultAdd')->setName('api.resultAdd'); + $apiv1->get('/result/{result_id}/delete', '\\BitGoblin\\Colossus\\Controllers\\ApiController:getResultDelete')->setName('api.resultDelete'); $apiv1->get('/test/details', '\\BitGoblin\\Colossus\\Controllers\\ApiController:getTestDetails')->setName('api.testDetails'); }); diff --git a/views/test/results.twig b/views/test/results.twig new file mode 100644 index 0000000..b8516e3 --- /dev/null +++ b/views/test/results.twig @@ -0,0 +1,44 @@ +{% extends 'layout.twig' %} + +{% block title %}Result Details for {{ test.title }}{% endblock %} + +{% block content %} +
+
+

Result Details for {{ test.title }}

+

Back

+
+
+ +
+ +
+ {% for b in test.benchmarks %} +
+

{{ b.name }}

+ + + + + + + + + + + + {% for r in b.results().where('test_id', test.id).get() %} + + + + + + + + {% endfor %} + +
AverageMinimumMaximumEditDelete
{{ r.average }}{{ r.minimum }}{{ r.maximum }}EditDelete
+
+ {% endfor %} +
+{% endblock %} diff --git a/views/test/view.twig b/views/test/view.twig index c4e39c6..ff2814e 100644 --- a/views/test/view.twig +++ b/views/test/view.twig @@ -61,6 +61,7 @@ Avg. Min. Max. + Actions