diff --git a/web/snapshots/brass_web__endpoints__availability__put_cross_areal__tests__inner_area_manager_can_toggle_cross_areal_for_availabilities_in_his_area-2.snap b/web/snapshots/brass_web__endpoints__availability__put_cross_areal__tests__inner_area_manager_can_toggle_cross_areal_for_availabilities_in_his_area-2.snap
index ca3ef7be..b7c4063d 100644
--- a/web/snapshots/brass_web__endpoints__availability__put_cross_areal__tests__inner_area_manager_can_toggle_cross_areal_for_availabilities_in_his_area-2.snap
+++ b/web/snapshots/brass_web__endpoints__availability__put_cross_areal__tests__inner_area_manager_can_toggle_cross_areal_for_availabilities_in_his_area-2.snap
@@ -3,11 +3,44 @@ source: web/src/endpoints/availability/put_cross_areal.rs
expression: disable_body
snapshot_kind: text
---
-
+
+ Max Mustermann |
+
+ Posten
+ |
+
+ 10:00 Uhr bis
+ 01.02.2025 10:00 Uhr
+ |
+ |
+ nein |
+
+
+
+
+ |
+
diff --git a/web/snapshots/brass_web__endpoints__availability__put_cross_areal__tests__inner_area_manager_can_toggle_cross_areal_for_availabilities_in_his_area.snap b/web/snapshots/brass_web__endpoints__availability__put_cross_areal__tests__inner_area_manager_can_toggle_cross_areal_for_availabilities_in_his_area.snap
index d7875200..5fc63a8a 100644
--- a/web/snapshots/brass_web__endpoints__availability__put_cross_areal__tests__inner_area_manager_can_toggle_cross_areal_for_availabilities_in_his_area.snap
+++ b/web/snapshots/brass_web__endpoints__availability__put_cross_areal__tests__inner_area_manager_can_toggle_cross_areal_for_availabilities_in_his_area.snap
@@ -3,11 +3,44 @@ source: web/src/endpoints/availability/put_cross_areal.rs
expression: enable_body
snapshot_kind: text
---
-
+
+ Max Mustermann |
+
+ Posten
+ |
+
+ 10:00 Uhr bis
+ 01.02.2025 10:00 Uhr
+ |
+ |
+ ja |
+
+
+
+
+ |
+
diff --git a/web/src/endpoints/availability/put_cross_areal.rs b/web/src/endpoints/availability/put_cross_areal.rs
index 180119ec..747b9a76 100644
--- a/web/src/endpoints/availability/put_cross_areal.rs
+++ b/web/src/endpoints/availability/put_cross_areal.rs
@@ -1,18 +1,26 @@
use actix_web::{web, HttpResponse, Responder};
-use askama::Template;
+use askama::{filters::urlencode, Template};
use serde_json::json;
use sqlx::PgPool;
use crate::{
endpoints::IdPath,
- utils::{ApplicationError, TemplateResponse},
+ filters,
+ utils::{
+ ApplicationError,
+ DateTimeFormat::{DayMonthYearHourMinute, HourMinute},
+ TemplateResponse,
+ },
};
+
use brass_db::models::{Assignment, Availability, Role, User};
#[derive(Template)]
-#[template(path = "calendar_cross_areal_button.html")]
-struct CalendarPartialCrossArealButtonTemplate {
+#[template(path = "calendar_tr_availability.html")]
+struct CalendarAvailabilityTableRowTemplate {
+ user: User,
availability: Availability,
+ u: User,
}
#[actix_web::put("/availability/{id}/makeNonCrossAreal")]
@@ -60,7 +68,7 @@ async fn handle_cross_areal(
let trigger = json!({
"showToast": {
"type": "danger",
- "message": "Verfügbarkeit bereits verplant!"
+ "message": urlencode("Verfügbarkeit bereits verplant!").unwrap().to_string()
}
})
.to_string();
@@ -75,7 +83,13 @@ async fn handle_cross_areal(
availability.cross_areal = cross_areal;
}
- let template = CalendarPartialCrossArealButtonTemplate { availability };
+ let u = availability.user.as_ref().unwrap().clone();
+
+ let template = CalendarAvailabilityTableRowTemplate {
+ availability,
+ user: user.into_inner(),
+ u,
+ };
Ok(template.to_response()?)
}
@@ -102,7 +116,9 @@ mod tests {
RequestConfig::new("/availability/1/makeCrossAreal").with_role(Role::AreaManager);
create_test_login_user(&context.db_pool, &config).await;
- User::create(&context.db_pool, &Faker.fake()).await.unwrap();
+ let mut changeset: UserChangeset = Faker.fake();
+ changeset.name = "Max Mustermann".to_string();
+ User::create(&context.db_pool, &changeset).await.unwrap();
Availability::create(
&context.db_pool,
2,
diff --git a/web/static/utils.js b/web/static/utils.js
index 0ed13c6a..ce0dd5ed 100644
--- a/web/static/utils.js
+++ b/web/static/utils.js
@@ -60,7 +60,7 @@ setThemeSwitcherIconTo(isCurrentlyLight ? "moon" : "sun");
htmx.on("showToast", (e) => {
const toast = document.getElementById("toast");
const toastProgress = document.getElementById("toast-progress");
- document.getElementById("toast-message").innerText = e.detail.message;
+ document.getElementById("toast-message").innerText = decodeURI(e.detail.message);
toast.classList.add(`is-${e.detail.type}`);
toastProgress.classList.add(`has-background-${e.detail.type}-90`)
diff --git a/web/templates/availability/new_or_edit.html b/web/templates/availability/new_or_edit.html
index 1c8a8484..86d77d5c 100644
--- a/web/templates/availability/new_or_edit.html
+++ b/web/templates/availability/new_or_edit.html
@@ -13,6 +13,8 @@
{% if other_users.len() != 0 %}
+
+
@@ -21,12 +23,13 @@
-