feat: various htmx improvements and start of area creation

This commit is contained in:
Max Hohlfeld 2024-06-09 23:21:41 +02:00
parent 11c4f52baf
commit e0351dac82
8 changed files with 72 additions and 4 deletions

View File

@ -0,0 +1,20 @@
use actix_web::{web, Responder};
use askama::Template;
use askama_actix::TemplateToResponse;
use crate::models::{Role, User};
#[derive(Template)]
#[template(path = "area/new.html")]
struct NewAreaTemplate {
user: User,
}
#[actix_web::get("/area/new")]
async fn get(user: web::ReqData<User>) -> impl Responder {
let template = NewAreaTemplate {
user: user.into_inner(),
};
template.to_response()
}

View File

@ -0,0 +1 @@
pub mod get_new;

View File

@ -8,6 +8,7 @@ mod location;
mod user;
mod assignment;
mod get_export;
mod area;
#[derive(Deserialize)]
pub struct IdPath {
@ -50,5 +51,7 @@ pub fn init(cfg: &mut ServiceConfig) {
cfg.service(assignment::get_new::get);
cfg.service(assignment::post_new::post);
cfg.service(area::get_new::get);
cfg.service(get_export::get);
}

View File

@ -27,6 +27,7 @@ async fn post(
.unwrap();
return HttpResponse::Found()
.insert_header(("LOCATION", "/"))
.insert_header(("HX-LOCATION", "/"))
.finish();
}

42
templates/area/new.html Normal file
View File

@ -0,0 +1,42 @@
{% extends "nav.html" %}
{% block content %}
<section class="section">
<div class="container">
<form method="post" action="/area/new">
<h1 class="title">Neuen Bereich anlegen</h1>
<div class="field is-horizontal">
<div class="field-label">
<label class="label">Name</label>
</div>
<div class="field-body">
<div class="field">
<div class="control">
<input class="input" type="text" name="name" placeholder="Leipzig Ost"/>
</div>
</div>
</div>
</div>
<div class="field is-horizontal">
<div class="field-label"></div>
<div class="field-body">
<div class="field is-grouped">
<div class="control">
<input class="button is-link" type="submit" value="Erstellen">
</div>
<div class="control">
<a class="button is-link is-light" hx-boost="true" href="/locations">Zurück</a>
</div>
</div>
</div>
</div>
</form>
</div>
</section>
<script>
</script>
{% endblock %}

View File

@ -5,13 +5,13 @@
<div class="container">
<div class="level">
<div class="level-left">
<a class="button is-link level-item" href="/?date={{ date.pred() }}">&larr;</a>
<a hx-boost="true" class="button is-link level-item" href="/?date={{ date.pred() }}">&larr;</a>
</div>
<div class="control level-item is-flex-grow-0">
<input id="date-selector" class="input" type="date" value="{{ date }}">
</div>
<div class="level-right">
<a class="button is-link level-item" href="/?date={{ date.succ() }}">&rarr;</a>
<a hx-boost="true" class="button is-link level-item" href="/?date={{ date.succ() }}">&rarr;</a>
</div>
</div>
</div>

View File

@ -10,7 +10,8 @@
</h3>
</div>
<div class="level-right">
<a class="button" href="/locations/new">Neuen Ort anlegen</a>
<a class="button" hx-boost="true" href="/area/new">Neuen Bereich anlegen</a>
<a class="button" hx-boost="true" href="/locations/new">Neuen Ort anlegen</a>
</div>
</div>

View File

@ -4,7 +4,7 @@
<section class="section">
<div class="container">
<h1 class="title">Brass - Anmeldung</h1>
<form class="box" hx-post="/login" hx-target-400="#error-message" hx-on:change="document.getElementById('error-message').innerHTML = ''">
<form class="box" action="/login" method="post" hx-boost="true" hx-target-400="#error-message" hx-on:change="document.getElementById('error-message').innerHTML = ''">
<div class="field">
<label class="label" for="email">E-Mail:</label>
<div class="control">