feat: add layout to all pages
This commit is contained in:
parent
02639175f4
commit
de3defefa6
12 changed files with 155 additions and 66 deletions
|
|
@ -19,11 +19,14 @@ pub async fn home(
|
|||
)
|
||||
}
|
||||
|
||||
pub async fn list_tasks(State(app_state): State<AppState>) -> Html<String> {
|
||||
Html(render!(
|
||||
include_str!("./templates/pages/list_tasks.html"),
|
||||
tasks => Vec::from_iter(app_state.config.tasks.iter())
|
||||
))
|
||||
pub async fn list_tasks(State(app_state): State<AppState>) -> impl IntoResponse {
|
||||
Html(
|
||||
app_state.templating_env.get_template("pages/list_tasks.html").unwrap()
|
||||
.render(context!(
|
||||
tasks => Vec::from_iter(app_state.config.tasks.iter())
|
||||
))
|
||||
.unwrap()
|
||||
)
|
||||
}
|
||||
|
||||
pub async fn trigger_task(
|
||||
|
|
@ -50,10 +53,13 @@ pub async fn trigger_task(
|
|||
|
||||
(
|
||||
StatusCode::OK,
|
||||
Html(render!(
|
||||
include_str!("./templates/pages/run_task.html"),
|
||||
task => task
|
||||
)),
|
||||
Html(
|
||||
app_state.templating_env.get_template("pages/run_task.html").unwrap()
|
||||
.render(context!(
|
||||
task => task
|
||||
))
|
||||
.unwrap()
|
||||
)
|
||||
)
|
||||
}
|
||||
|
||||
|
|
@ -70,7 +76,7 @@ pub async fn list_task_runs(
|
|||
State(app_state): State<AppState>,
|
||||
ExtractPath(task_id): ExtractPath<String>,
|
||||
) -> Html<String> {
|
||||
let runs = sqlx::query_as::<_, TaskRunSummary>("SELECT id,status,trigger_mode,submitted_at,started_at,ended_at FROM task_runs WHERE task_id = $1 LIMIT 100")
|
||||
let runs = sqlx::query_as::<_, TaskRunSummary>("SELECT id,status,trigger_mode,submitted_at,started_at,ended_at FROM task_runs WHERE task_id = $1")
|
||||
.bind(&task_id)
|
||||
.fetch_all(&app_state.db)
|
||||
.await
|
||||
|
|
@ -81,11 +87,15 @@ pub async fn list_task_runs(
|
|||
return Html("<h1>Task not found</h1>".to_string());
|
||||
}
|
||||
};
|
||||
Html(render!(
|
||||
include_str!("./templates/pages/list_task_runs.html"),
|
||||
task => task,
|
||||
runs => runs,
|
||||
))
|
||||
Html(
|
||||
app_state.templating_env.get_template("pages/list_task_runs.html").unwrap()
|
||||
.render(context!(
|
||||
task_id => task_id,
|
||||
task => task,
|
||||
runs => runs
|
||||
))
|
||||
.unwrap()
|
||||
)
|
||||
}
|
||||
|
||||
pub async fn get_task_run(
|
||||
|
|
@ -102,8 +112,12 @@ pub async fn get_task_run(
|
|||
}
|
||||
};
|
||||
|
||||
Html(render!(
|
||||
include_str!("./templates/pages/task_run_details.html"),
|
||||
run => run_details
|
||||
))
|
||||
Html(
|
||||
app_state.templating_env.get_template("pages/task_run_details.html").unwrap()
|
||||
.render(context!(
|
||||
run => run_details
|
||||
))
|
||||
.unwrap()
|
||||
)
|
||||
}
|
||||
|
||||
|
|
|
|||
13
src/main.rs
13
src/main.rs
|
|
@ -48,12 +48,19 @@ async fn main() -> Result<()> {
|
|||
|
||||
let config: Config = get_config().expect("Cannot get config");
|
||||
let mut templating_env = Environment::new();
|
||||
|
||||
templating_env
|
||||
.add_template("layouts/base.html", include_str!("./templates/layouts/base.html"))
|
||||
.unwrap();
|
||||
templating_env
|
||||
.add_template("pages/home.html", include_str!("./templates/pages/home.html"))
|
||||
.unwrap();
|
||||
for path in fs::read_dir("./src/templates/pages").unwrap() {
|
||||
let file_name = path.unwrap().file_name().into_string().unwrap();
|
||||
let path = format!("./src/templates/pages/{}", file_name);
|
||||
let content: &'static str = Box::leak(fs::read_to_string(&path).unwrap().into_boxed_str());
|
||||
let path: &'static str = Box::leak(format!("pages/{}", file_name).into_boxed_str());
|
||||
templating_env
|
||||
.add_template(&path, &content)
|
||||
.unwrap();
|
||||
}
|
||||
|
||||
let state = AppState {
|
||||
config,
|
||||
|
|
|
|||
|
|
@ -8,8 +8,18 @@
|
|||
<link href="/assets/styles/app.css" rel="stylesheet">
|
||||
</head>
|
||||
<body>
|
||||
<div class="container">
|
||||
<header>
|
||||
<nav>
|
||||
<ul>
|
||||
<li><a href="/tasks">Tasks</a></li>
|
||||
</ul>
|
||||
</nav>
|
||||
</header>
|
||||
<main class="container">
|
||||
{% block body %}{% endblock %}
|
||||
</div>
|
||||
</main>
|
||||
<footer>
|
||||
Autotasker
|
||||
</footer>
|
||||
</body>
|
||||
</html>
|
||||
|
|
|
|||
|
|
@ -1,6 +1,32 @@
|
|||
<h1>List of task runs for "{{ task.name }}"</h1>
|
||||
<ul>
|
||||
{% for task_run in runs %}
|
||||
<li><a href="/tasks/{{ task.id }}/runs/{{ task_run.id }}">{{ task_run.id }}</a> {{ task_run.status }}</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
{% extends "layouts/base.html" %}
|
||||
{% block body %}
|
||||
<h1>List of task runs for "{{ task.name }}"</h1>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Id</th>
|
||||
<th>Date</th>
|
||||
<th>Status</th>
|
||||
<th>Actions</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% for task_run in runs %}
|
||||
<tr>
|
||||
<td>
|
||||
{{ task_run.id | split("-") | first }}
|
||||
</td>
|
||||
<td>
|
||||
{{ task_run.started_at }}
|
||||
</td>
|
||||
<td>
|
||||
{{ task_run.status }}
|
||||
</td>
|
||||
<td>
|
||||
<a href="/tasks/{{ task_id }}/runs/{{ task_run.id }}">Details</a>
|
||||
</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
{% endblock %}
|
||||
|
|
|
|||
|
|
@ -1,13 +1,34 @@
|
|||
<h1>Tasks</h1>
|
||||
{% if tasks | length == 0 %}
|
||||
No tasks were configured.
|
||||
{% endif %}
|
||||
<ul>
|
||||
{% for (id, task) in tasks %}
|
||||
<li>
|
||||
{{ task.name }}
|
||||
<a href="/tasks/{{ id }}/trigger">Trigger task</a>
|
||||
<a href="/tasks/{{ id }}/runs">See runs</a>
|
||||
</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
{% extends "layouts/base.html" %}
|
||||
{% block body %}
|
||||
<h1>Tasks</h1>
|
||||
{% if tasks | length == 0 %}
|
||||
<p>
|
||||
No tasks were configured.
|
||||
</p>
|
||||
{% endif %}
|
||||
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Name</th>
|
||||
<th>Trigger</th>
|
||||
<th>See runs</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% for (id, task) in tasks %}
|
||||
<tr>
|
||||
<td>
|
||||
{{ task.name }}
|
||||
</td>
|
||||
<td>
|
||||
<a href="/tasks/{{ id }}/trigger">Trigger task</a>
|
||||
</td>
|
||||
<td>
|
||||
<a href="/tasks/{{ id }}/runs">See runs</a>
|
||||
</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
{% endblock %}
|
||||
|
|
|
|||
|
|
@ -1 +1,6 @@
|
|||
Task "{{ task.name }}" triggered!
|
||||
{% extends "layouts/base.html" %}
|
||||
{% block body %}
|
||||
<p>
|
||||
Task "{{ task.name }}" triggered!
|
||||
</p>
|
||||
{% endblock %}
|
||||
|
|
|
|||
|
|
@ -1,16 +1,16 @@
|
|||
<h1>Task run {{ run.id }}</h1>
|
||||
{% extends "layouts/base.html" %}
|
||||
{% block body %}
|
||||
<h1>Task run details</h1>
|
||||
<ul>
|
||||
<li>Id: {{ run.id }}</li>
|
||||
<li>State: {{ run.status }}</li>
|
||||
<li>Submitted at: {{ run.submitted_at }}</li>
|
||||
<li>Started at: {{ run.started_at }}</li>
|
||||
<li>Ended at: {{ run.ended_at }}</li>
|
||||
<li>Trigger Mode: {{ run.trigger_mode }}</li>
|
||||
</ul>
|
||||
|
||||
<ul>
|
||||
<li>Id: {{ run.id }}</li>
|
||||
<li>State: {{ run.status }}</li>
|
||||
<li>Submitted at: {{ run.submitted_at }}</li>
|
||||
<li>Started at: {{ run.started_at }}</li>
|
||||
<li>Ended at: {{ run.ended_at }}</li>
|
||||
<li>Trigger Mode: {{ run.trigger_mode }}</li>
|
||||
</ul>
|
||||
|
||||
<h3>Logs</h3>
|
||||
<p>Exit code is {{ run.exit_code }}</p>
|
||||
<pre>
|
||||
{{ run.logs }}
|
||||
</pre>
|
||||
<h3>Logs</h3>
|
||||
<p>Exit code is {{ run.exit_code }}</p>
|
||||
<pre>{{ run.logs }}</pre>
|
||||
{% endblock %}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue