From b0eb94a02ab9a5db91a8b7c0de6660421256399c Mon Sep 17 00:00:00 2001 From: Joscha Date: Mon, 14 Aug 2023 17:49:21 +0200 Subject: [PATCH] Add graph tab --- src/server/web.rs | 2 ++ src/server/web/base.rs | 6 +++++- src/server/web/pages.rs | 1 + src/server/web/pages/graph.rs | 30 ++++++++++++++++++++++++++++++ src/server/web/paths.rs | 4 ++++ templates/base.html | 3 +++ templates/pages/graph.html | 11 +++++++++++ 7 files changed, 56 insertions(+), 1 deletion(-) create mode 100644 src/server/web/pages/graph.rs create mode 100644 templates/pages/graph.html diff --git a/src/server/web.rs b/src/server/web.rs index 764ed6f..760e380 100644 --- a/src/server/web.rs +++ b/src/server/web.rs @@ -22,6 +22,7 @@ use self::{ }, pages::{ commit::get_commit_by_hash, + graph::get_graph, index::get_index, queue::{get_queue, get_queue_delete, get_queue_inner}, run::get_run_by_id, @@ -42,6 +43,7 @@ pub async fn run(server: Server) -> somehow::Result<()> { .typed_get(get_api_worker_bench_repo_by_hash_tree_tar_gz) .typed_get(get_api_worker_repo_by_hash_tree_tar_gz) .typed_get(get_commit_by_hash) + .typed_get(get_graph) .typed_get(get_index) .typed_get(get_queue) .typed_get(get_queue_delete) diff --git a/src/server/web/base.rs b/src/server/web/base.rs index 01eb655..5b29a20 100644 --- a/src/server/web/base.rs +++ b/src/server/web/base.rs @@ -3,13 +3,14 @@ use std::fmt; use crate::config::Config; use super::{ - paths::{PathIndex, PathQueue}, + paths::{PathGraph, PathIndex, PathQueue}, r#static::{BASE_CSS, LOGO_SVG}, }; pub enum Tab { None, Index, + Graph, Queue, } @@ -18,6 +19,7 @@ pub struct Base { pub link_logo_svg: Link, pub link_base_css: Link, pub link_index: Link, + pub link_graph: Link, pub link_queue: Link, pub web_base: String, pub repo_name: String, @@ -29,12 +31,14 @@ impl Base { let tab = match tab { Tab::None => "", Tab::Index => "index", + Tab::Graph => "graph", Tab::Queue => "queue", }; Self { link_logo_svg: Self::link_with_config(config, LOGO_SVG), link_base_css: Self::link_with_config(config, BASE_CSS), link_index: Self::link_with_config(config, PathIndex {}), + link_graph: Self::link_with_config(config, PathGraph {}), link_queue: Self::link_with_config(config, PathQueue {}), web_base: config.web_base.clone(), repo_name: config.repo_name.clone(), diff --git a/src/server/web/pages.rs b/src/server/web/pages.rs index 1ec151e..d08ff4e 100644 --- a/src/server/web/pages.rs +++ b/src/server/web/pages.rs @@ -1,4 +1,5 @@ pub mod commit; +pub mod graph; pub mod index; pub mod queue; pub mod run; diff --git a/src/server/web/pages/graph.rs b/src/server/web/pages/graph.rs new file mode 100644 index 0000000..1ea49ac --- /dev/null +++ b/src/server/web/pages/graph.rs @@ -0,0 +1,30 @@ +use askama::Template; +use axum::{extract::State, response::IntoResponse}; + +use crate::{ + config::Config, + server::web::{ + base::{Base, Link, Tab}, + paths::PathGraph, + r#static::GRAPH_JS, + }, + somehow, +}; + +#[derive(Template)] +#[template(path = "pages/graph.html")] +struct Page { + link_graph_js: Link, + base: Base, +} + +pub async fn get_graph( + _path: PathGraph, + State(config): State<&'static Config>, +) -> somehow::Result { + let base = Base::new(config, Tab::Graph); + Ok(Page { + link_graph_js: base.link(GRAPH_JS), + base, + }) +} diff --git a/src/server/web/paths.rs b/src/server/web/paths.rs index 20e3e51..7c4fbcb 100644 --- a/src/server/web/paths.rs +++ b/src/server/web/paths.rs @@ -9,6 +9,10 @@ use serde::Deserialize; #[typed_path("/")] pub struct PathIndex {} +#[derive(Deserialize, TypedPath)] +#[typed_path("/graph/")] +pub struct PathGraph {} + #[derive(Deserialize, TypedPath)] #[typed_path("/queue/")] pub struct PathQueue {} diff --git a/templates/base.html b/templates/base.html index 33c0093..c141e09 100644 --- a/templates/base.html +++ b/templates/base.html @@ -15,6 +15,9 @@ {{ base.repo_name }} + + graph + queue diff --git a/templates/pages/graph.html b/templates/pages/graph.html new file mode 100644 index 0000000..9c92d78 --- /dev/null +++ b/templates/pages/graph.html @@ -0,0 +1,11 @@ +{% extends "base.html" %} + +{% block title %}graph{% endblock %} + +{% block head %} + +{% endblock %} + +{% block body %} +

Graph

+{% endblock %}