diff --git a/scripts/queue.ts b/scripts/queue.ts index 05780f2..6aaa965 100644 --- a/scripts/queue.ts +++ b/scripts/queue.ts @@ -1,4 +1,3 @@ -const COUNT = document.getElementById("count")!; const INNER = document.getElementById("inner")!; const REFRESH_SECONDS = 10; @@ -7,7 +6,7 @@ function update() { .then(response => response.text()) .then(text => { INNER.innerHTML = text; - let count = INNER.querySelector("#queue")?.dataset["count"]!; + let count = document.getElementById("queue")?.dataset["count"]!; document.title = document.title.replace(/^queue \(\d+\)/, `queue (${count})`); }); } diff --git a/src/server/web.rs b/src/server/web.rs index 5319168..084f687 100644 --- a/src/server/web.rs +++ b/src/server/web.rs @@ -4,7 +4,6 @@ mod base; mod link; mod pages; pub mod paths; -mod queue; mod r#static; use axum::{routing::get, Router}; @@ -19,10 +18,12 @@ use self::{ post_api_worker_status, }, pages::{ - commit::get_commit_by_hash, index::get_index, run::get_run_by_id, + commit::get_commit_by_hash, + index::get_index, + queue::{get_queue, get_queue_inner}, + run::get_run_by_id, worker::get_worker_by_name, }, - queue::{get_queue, get_queue_inner}, }; use super::Server; diff --git a/src/server/web/pages.rs b/src/server/web/pages.rs index 24926e1..1ec151e 100644 --- a/src/server/web/pages.rs +++ b/src/server/web/pages.rs @@ -1,4 +1,5 @@ pub mod commit; pub mod index; +pub mod queue; pub mod run; pub mod worker; diff --git a/src/server/web/queue.rs b/src/server/web/pages/queue.rs similarity index 87% rename from src/server/web/queue.rs rename to src/server/web/pages/queue.rs index 19a6c65..7859d3b 100644 --- a/src/server/web/queue.rs +++ b/src/server/web/pages/queue.rs @@ -12,19 +12,21 @@ use crate::{ config::Config, server::{ util, + web::{ + base::{Base, Link, Tab}, + link::{LinkCommit, LinkRunShort, LinkWorker}, + paths::{ + PathAdminQueueDecrease, PathAdminQueueDelete, PathAdminQueueIncrease, PathQueue, + PathQueueInner, + }, + r#static::QUEUE_JS, + }, workers::{WorkerInfo, Workers}, }, shared::WorkerStatus, somehow, }; -use super::{ - base::{Base, Link, Tab}, - link::{LinkCommit, LinkRunShort, LinkWorker}, - paths::{PathQueue, PathQueueInner}, - r#static::QUEUE_JS, -}; - enum Status { Idle, Busy, @@ -37,6 +39,10 @@ struct Worker { } struct Task { + link_delete: Link, + link_increase: Link, + link_decrease: Link, + hash: String, commit: LinkCommit, since: String, priority: i64, @@ -121,6 +127,10 @@ async fn get_queue_data( ) .fetch(db) .map_ok(|r| Task { + link_delete: base.link(PathAdminQueueDelete {}), + link_increase: base.link(PathAdminQueueIncrease {}), + link_decrease: base.link(PathAdminQueueDecrease {}), + hash: r.hash.clone(), workers: workers_by_commit.remove(&r.hash).unwrap_or_default(), commit: LinkCommit::new(base, r.hash, &r.message, r.reachable), since: util::format_delta_from_now(r.date), @@ -144,7 +154,7 @@ async fn get_queue_data( } #[derive(Template)] -#[template(path = "queue_inner.html")] +#[template(path = "pages/queue_inner.html")] struct QueueInnerTemplate { workers: Vec, tasks: Vec, @@ -163,7 +173,7 @@ pub async fn get_queue_inner( Ok(QueueInnerTemplate { workers, tasks }) } #[derive(Template)] -#[template(path = "queue.html")] +#[template(path = "pages/queue.html")] struct QueueTemplate { link_queue_js: Link, base: Base, diff --git a/src/server/web/paths.rs b/src/server/web/paths.rs index 7f4aa84..9690c62 100644 --- a/src/server/web/paths.rs +++ b/src/server/web/paths.rs @@ -10,7 +10,7 @@ use serde::Deserialize; pub struct PathIndex {} #[derive(Deserialize, TypedPath)] -#[typed_path("/queue")] +#[typed_path("/queue/")] pub struct PathQueue {} #[derive(Deserialize, TypedPath)] diff --git a/templates/queue.html b/templates/pages/queue.html similarity index 100% rename from templates/queue.html rename to templates/pages/queue.html diff --git a/templates/queue_inner.html b/templates/pages/queue_inner.html similarity index 63% rename from templates/queue_inner.html rename to templates/pages/queue_inner.html index cb3b1cb..70e7606 100644 --- a/templates/queue_inner.html +++ b/templates/pages/queue_inner.html @@ -1,6 +1,5 @@ -{% import "util.html" as util %} -

Workers

+ {% if workers.is_empty() %}

No workers connected

{% else %} @@ -30,6 +29,7 @@ {% endif %}

Queue ({{ tasks.len() }})

+ @@ -43,8 +43,21 @@ {% for task in tasks %} - - + + {% if task.workers.is_empty() %} {% else %} @@ -53,4 +66,5 @@ {% endfor %} +
{{ task.commit|safe }}{{ task.since }}{{ task.priority }} + {{ task.since }} + [del] + + {{ task.priority }} + [
+ + +
, +
+ + +
] +
-