forked from Ruderverein-Donau-Linz/rowt
Merge remote-tracking branch 'upstream/main' into upd
This commit is contained in:
commit
573bba9b62
1
.gitattributes
vendored
Normal file
1
.gitattributes
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
* merge=keepMine
|
1481
Cargo.lock
generated
1481
Cargo.lock
generated
File diff suppressed because it is too large
Load Diff
10
Cargo.toml
10
Cargo.toml
@ -1,7 +1,7 @@
|
|||||||
[package]
|
[package]
|
||||||
name = "rot"
|
name = "rot"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
edition = "2021"
|
edition = "2024"
|
||||||
|
|
||||||
[features]
|
[features]
|
||||||
default = ["rest", "rowing-tera" ]
|
default = ["rest", "rowing-tera" ]
|
||||||
@ -13,20 +13,20 @@ rocket = { version = "0.5.0", features = ["secrets"]}
|
|||||||
rocket_dyn_templates = {version = "0.2", features = [ "tera" ], optional = true }
|
rocket_dyn_templates = {version = "0.2", features = [ "tera" ], optional = true }
|
||||||
log = "0.4"
|
log = "0.4"
|
||||||
env_logger = "0.11"
|
env_logger = "0.11"
|
||||||
sqlx = { version = "0.7", features = ["sqlite", "runtime-tokio-rustls", "macros", "chrono", "time"] }
|
sqlx = { version = "0.8", features = ["sqlite", "runtime-tokio-rustls", "macros", "chrono"] }
|
||||||
argon2 = "0.5"
|
argon2 = "0.5"
|
||||||
serde = { version = "1.0", features = [ "derive" ]}
|
serde = { version = "1.0", features = [ "derive" ]}
|
||||||
serde_json = "1.0"
|
serde_json = "1.0"
|
||||||
chrono = { version = "0.4", features = ["serde"]}
|
chrono = { version = "0.4", features = ["serde"]}
|
||||||
chrono-tz = "0.9"
|
chrono-tz = "0.10"
|
||||||
tera = { version = "1.18", features = ["date-locale"], optional = true}
|
tera = { version = "1.18", features = ["date-locale"], optional = true}
|
||||||
ics = "0.5"
|
ics = "0.5"
|
||||||
futures = "0.3"
|
futures = "0.3"
|
||||||
lettre = "0.11"
|
lettre = "0.11"
|
||||||
csv = "1.3"
|
csv = "1.3"
|
||||||
itertools = "0.13"
|
itertools = "0.14"
|
||||||
job_scheduler_ng = "2.0"
|
job_scheduler_ng = "2.0"
|
||||||
ureq = { version = "2.9", features = ["json"] }
|
ureq = { version = "3.0", features = ["json"] }
|
||||||
regex = "1.10"
|
regex = "1.10"
|
||||||
urlencoding = "2.1"
|
urlencoding = "2.1"
|
||||||
|
|
||||||
|
@ -23,6 +23,7 @@ document.addEventListener("DOMContentLoaded", function () {
|
|||||||
addRelationMagic(<HTMLElement>document.querySelector("body"));
|
addRelationMagic(<HTMLElement>document.querySelector("body"));
|
||||||
reloadPage();
|
reloadPage();
|
||||||
setCurrentdate(<HTMLInputElement>document.querySelector("#departure"));
|
setCurrentdate(<HTMLInputElement>document.querySelector("#departure"));
|
||||||
|
initDropdown();
|
||||||
});
|
});
|
||||||
|
|
||||||
function changeTheme() {
|
function changeTheme() {
|
||||||
@ -795,3 +796,21 @@ function replaceStrings() {
|
|||||||
weekday.innerHTML = weekday.innerHTML.replace("Freitag", "Markttag");
|
weekday.innerHTML = weekday.innerHTML.replace("Freitag", "Markttag");
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function initDropdown() {
|
||||||
|
const popoverTriggerList = document.querySelectorAll('[data-dropdown]');
|
||||||
|
|
||||||
|
popoverTriggerList.forEach((popoverTriggerEl: Element) => {
|
||||||
|
const id = popoverTriggerEl.getAttribute('data-dropdown');
|
||||||
|
|
||||||
|
if (id) {
|
||||||
|
const element = document.getElementById(id);
|
||||||
|
if (element) {
|
||||||
|
// Toggle visibility of the dropdown when clicked
|
||||||
|
popoverTriggerEl.addEventListener('click', () => {
|
||||||
|
element.classList.toggle('hidden');
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
@ -339,7 +339,7 @@ mod test {
|
|||||||
}
|
}
|
||||||
)
|
)
|
||||||
.await,
|
.await,
|
||||||
3,
|
4,
|
||||||
);
|
);
|
||||||
assert_eq!(
|
assert_eq!(
|
||||||
TripDetails::create(
|
TripDetails::create(
|
||||||
@ -354,7 +354,7 @@ mod test {
|
|||||||
}
|
}
|
||||||
)
|
)
|
||||||
.await,
|
.await,
|
||||||
4,
|
5,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,92 +0,0 @@
|
|||||||
{% import "includes/macros" as macros %}
|
|
||||||
{% import "includes/forms/log" as log %}
|
|
||||||
{% import "includes/forms/boat" as boat %}
|
|
||||||
{% extends "base" %}
|
|
||||||
{% macro show_place(aisle_name, side_name, level) %}
|
|
||||||
<li class="truncate p-2 flex relative w-full">
|
|
||||||
{% set aisle = aisle_name ~ "-aisle" %}
|
|
||||||
{% set place = boathouse[aisle][side_name] %}
|
|
||||||
{% if place[level] %}
|
|
||||||
{{ place[level].1.name }}
|
|
||||||
{% if "admin" in loggedin_user.roles %}
|
|
||||||
<a class="btn btn-primary absolute end-0"
|
|
||||||
href="/board/boathouse/{{ place[level].0 }}/delete">X</a>
|
|
||||||
{% endif %}
|
|
||||||
{% elif boats | length > 0 %}
|
|
||||||
{% if "admin" in loggedin_user.roles %}
|
|
||||||
<details>
|
|
||||||
<summary>Kein Boot</summary>
|
|
||||||
<form action="/board/boathouse" method="post" class="grid gap-3">
|
|
||||||
{{ macros::select(label="Boot", data=boats, name="boat_id", id="boat_id", display=["name", " (","amount_seats", " x)"], wrapper_class="col-span-4") }}
|
|
||||||
<input type="hidden" name="aisle" value="{{ aisle_name }}" />
|
|
||||||
<input type="hidden" name="side" value="{{ side_name }}" />
|
|
||||||
<input type="hidden" name="level" value="{{ level }}" />
|
|
||||||
<input type="submit"
|
|
||||||
class="btn btn-primary w-full col-span-4"
|
|
||||||
value="Boot eintragen" />
|
|
||||||
</form>
|
|
||||||
</details>
|
|
||||||
{% else %}
|
|
||||||
Kein Boot
|
|
||||||
{% endif %}
|
|
||||||
{% else %}
|
|
||||||
Kein Boot
|
|
||||||
{% endif %}
|
|
||||||
</li>
|
|
||||||
{% endmacro show_place %}
|
|
||||||
{% macro show_side(aisle_name, side_name) %}
|
|
||||||
<div class="{{ side_name }}-side">
|
|
||||||
<ol>
|
|
||||||
{{ self::show_place(aisle_name = aisle_name, side_name = side_name, level = 0) }}
|
|
||||||
{{ self::show_place(aisle_name = aisle_name, side_name = side_name, level = 1) }}
|
|
||||||
{{ self::show_place(aisle_name = aisle_name, side_name = side_name, level = 2) }}
|
|
||||||
{{ self::show_place(aisle_name = aisle_name, side_name = side_name, level = 3) }}
|
|
||||||
{{ self::show_place(aisle_name = aisle_name, side_name = side_name, level = 4) }}
|
|
||||||
{% if aisle_name != 'water' or side_name != 'water' %}
|
|
||||||
{{ self::show_place(aisle_name = aisle_name, side_name = side_name, level = 5) }}
|
|
||||||
{% endif %}
|
|
||||||
{% set show_additional = false %}
|
|
||||||
{% if aisle_name == "mountain" %}
|
|
||||||
{% set show_additional = true %}
|
|
||||||
{% elif aisle_name == "middle" and side_name == "mountain" %}
|
|
||||||
{% set show_additional = true %}
|
|
||||||
{% endif %}
|
|
||||||
{% if show_additional %}
|
|
||||||
<hr />
|
|
||||||
{{ self::show_place(aisle_name = aisle_name, side_name = side_name, level = 6) }}
|
|
||||||
{{ self::show_place(aisle_name = aisle_name, side_name = side_name, level = 7) }}
|
|
||||||
{{ self::show_place(aisle_name = aisle_name, side_name = side_name, level = 8) }}
|
|
||||||
{{ self::show_place(aisle_name = aisle_name, side_name = side_name, level = 9) }}
|
|
||||||
{{ self::show_place(aisle_name = aisle_name, side_name = side_name, level = 10) }}
|
|
||||||
{{ self::show_place(aisle_name = aisle_name, side_name = side_name, level = 11) }}
|
|
||||||
{% endif %}
|
|
||||||
</ol>
|
|
||||||
</div>
|
|
||||||
{% endmacro show_side %}
|
|
||||||
{% macro show_aisle(name, last=false) %}
|
|
||||||
<div id="{{ name }}-aisle"
|
|
||||||
class="grid grid-cols-2 gap-4 {% if not last %}md:border-r{% endif %}">
|
|
||||||
<h1 class="col-span-2 text-center">
|
|
||||||
{% if name == "water" %}
|
|
||||||
🌊
|
|
||||||
{% elif name == "middle" %}
|
|
||||||
◯
|
|
||||||
{% else %}
|
|
||||||
⛰️
|
|
||||||
{% endif %}
|
|
||||||
- Gang
|
|
||||||
</h1>
|
|
||||||
{{ self::show_side(aisle_name = name, side_name = "mountain") }}
|
|
||||||
{{ self::show_side(aisle_name = name, side_name = "water") }}
|
|
||||||
</div>
|
|
||||||
{% endmacro show_aisle %}
|
|
||||||
{% block content %}
|
|
||||||
<div class="max-w-screen-lg w-full dark:text-white">
|
|
||||||
<h1 class="h1">Bootshaus</h1>
|
|
||||||
<div class="grid md:grid-cols-3 gap-4">
|
|
||||||
{{ self::show_aisle(name = "mountain") }}
|
|
||||||
{{ self::show_aisle(name = "middle") }}
|
|
||||||
{{ self::show_aisle(name = "water", last = true) }}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
{% endblock content %}
|
|
Loading…
x
Reference in New Issue
Block a user