From 34faecc52c7016c5792b21cb1f598c7ee6538f77 Mon Sep 17 00:00:00 2001 From: Gregory Ballantine Date: Mon, 27 Nov 2023 00:42:42 -0500 Subject: [PATCH] Added views and routes for benchmarks --- index.js | 7 +++++++ src/routes/benchmark.js | 42 ++++++++++++++++++++++++++++++++++++++ views/benchmark/add.twig | 40 ++++++++++++++++++++++++++++++++++++ views/benchmark/list.twig | 31 ++++++++++++++++++++++++++++ views/benchmark/view.twig | 17 +++++++++++++++ views/index/dashboard.twig | 2 +- 6 files changed, 138 insertions(+), 1 deletion(-) create mode 100644 src/routes/benchmark.js create mode 100644 views/benchmark/add.twig create mode 100644 views/benchmark/list.twig create mode 100644 views/benchmark/view.twig diff --git a/index.js b/index.js index f98752e..1d31c45 100644 --- a/index.js +++ b/index.js @@ -36,6 +36,7 @@ app.use(express.static('public')); const indexRoutes = require('./src/routes/index'); const projectRoutes = require('./src/routes/project'); const hardwareRoutes = require('./src/routes/hardware'); +const benchmarkRoutes = require('./src/routes/benchmark'); // register routes app.get('/', indexRoutes.getIndex); @@ -51,6 +52,12 @@ app.get('/hardware/list', hardwareRoutes.getList); app.get('/hardware/add', hardwareRoutes.getAdd); app.post('/hardware/add', hardwareRoutes.postAdd); app.get('/hardware/:hardware_id', hardwareRoutes.getView); +// benchmark routes +app.get('/benchmark', benchmarkRoutes.getIndex); +app.get('/benchmark/list', benchmarkRoutes.getList); +app.get('/benchmark/add', benchmarkRoutes.getAdd); +app.post('/benchmark/add', benchmarkRoutes.postAdd); +app.get('/benchmark/:benchmark_id', benchmarkRoutes.getView); app.listen(port, () => { console.log(`Leviathan listening on port ${port}`); diff --git a/src/routes/benchmark.js b/src/routes/benchmark.js new file mode 100644 index 0000000..4ceba1d --- /dev/null +++ b/src/routes/benchmark.js @@ -0,0 +1,42 @@ +const Benchmark = require('../models').models.Benchmark; + +// GET /benchmark - redirects to benchmark list +exports.getIndex = async function(req, res) { + res.redirect('/benchmark/list'); +}; + +// GET /benchmark/list - list of benchmarks +exports.getList = async function(req, res) { + var benchmarks = await Benchmark.findAll(); + res.render('benchmark/list', { + benchmarks: benchmarks + }); +}; + +// GET /benchmark/:benchmark_id - view information about a benchmark +exports.getView = async function(req, res) { + var benchmark = await Benchmark.findAll({ + where: { + id: req.params.benchmark_id + } + }); + res.render('benchmark/view', { + benchmark: benchmark[0] + }); +}; + +// GET /benchmark/add - add a new benchmark +exports.getAdd = async function(req, res) { + res.render('benchmark/add'); +}; + +// POST /benchmark/add - add the benchmark to the database +exports.postAdd = async function(req, res) { + var benchmark = await Benchmark.create({ + name: req.body.benchmark_name, + scoring: req.body.benchmark_scoring, + description: req.body.benchmark_description + }); + + res.redirect('/benchmark'); +}; diff --git a/views/benchmark/add.twig b/views/benchmark/add.twig new file mode 100644 index 0000000..0cb2f60 --- /dev/null +++ b/views/benchmark/add.twig @@ -0,0 +1,40 @@ +{% extends 'layouts/default.twig' %} + +{% block title %}Add a Benchmark{% endblock %} + +{% block content %} +
+

Add a benchmark

+ +
+
+
+ +
+ +
+ +
+
+ +
+ +
+ + +
+
+{% endblock %} diff --git a/views/benchmark/list.twig b/views/benchmark/list.twig new file mode 100644 index 0000000..d091428 --- /dev/null +++ b/views/benchmark/list.twig @@ -0,0 +1,31 @@ +{% extends 'layouts/default.twig' %} + +{% block title %}List of Benchmarks{% endblock %} + +{% block content %} +
+

Benchmarks

+ Add a benchmark + + + + + + + + + + + + {% for b in benchmarks %} + + + + + + + {% endfor %} + +
Benchmark nameScoring typeCreated atLast updated
{{ b.name }}{{ b.scoring }}{{ b.createdAt | date('m/d/Y g:ia') }}{{ b.updatedAt | date('m/d/Y g:ia') }}
+
+{% endblock %} diff --git a/views/benchmark/view.twig b/views/benchmark/view.twig new file mode 100644 index 0000000..4cf809a --- /dev/null +++ b/views/benchmark/view.twig @@ -0,0 +1,17 @@ +{% extends 'layouts/default.twig' %} + +{% block title %}{{ benchmark.name }}{% endblock %} + +{% block content %} +
+

{{ benchmark.name }}

+ +

Scoring type: {{ benchmark.scoring }}

+ +

{{ benchmark.description }}

+ +
+ +

Back

+
+{% endblock %} diff --git a/views/index/dashboard.twig b/views/index/dashboard.twig index 87efade..04f73d0 100644 --- a/views/index/dashboard.twig +++ b/views/index/dashboard.twig @@ -15,7 +15,7 @@ {% for p in projects %} - {{ p.title }} + {{ p.title }} {{ p.updatedAt | date('m/d/Y g:ia') }} {% endfor %}