Kurzmeldungen als Overlay, Liniendiagramm fuellt die Karte, Zeitraum ab 1 Tag
Meldungen: "Gespeichert", "Anordnung gespeichert" und die uebrigen Erfolgsmeldungen standen als Leiste mitten in der Seite - beim Speichern sprang dadurch das ganze Layout ein Stueck nach unten. Sie erscheinen jetzt als Overlay am unteren Rand und verschwinden nach fuenf Sekunden von selbst; ein Kreuz blendet sie sofort aus. Umgestellt in Uebersicht, Einstellungen, Gefahrenbereich, Benutzer, Produktformular sowie Ein- und Auslagern. Bewusst NICHT umgestellt: Fehlermeldungen. Ein Fehler, der nach fuenf Sekunden verschwindet, ist genau dann weg, wenn man ihn noch braucht - der bleibt an seiner Stelle stehen. Rollbalken beim Liniendiagramm: Den hatte ich mir mit der Zeitraum-Auswahl selbst eingebaut. Das Diagramm hatte eine feste Hoehe von 200 px; zusammen mit der Auswahl darueber passte das nicht mehr in die Karte. Jetzt wird auch die Hoehe gemessen, das Diagramm fuellt den verbleibenden Platz. Zeitraum "1 Tag": Ein einzelner Tag ergibt genau einen Messpunkt - eine Linie aus einem Punkt waere unsinnig. Das Diagramm zeigt in dem Fall die blanke Zahl. Die Backend-Begrenzung laesst jetzt einen Tag zu. Geprueft: "npm run build" laeuft durch; kein Verweis mehr auf die entfernten Meldungszustaende. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -2,6 +2,7 @@ import { useEffect, useState } from "react";
|
||||
import { api } from "../api";
|
||||
import { useConfirm } from "../confirm";
|
||||
import Icon from "../components/Icon";
|
||||
import { useToast } from "../toast";
|
||||
import BrandingUpload from "../components/BrandingUpload";
|
||||
import DangerAction from "../components/DangerAction";
|
||||
import { DATE_FORMAT_KEY, useSettings } from "../settings";
|
||||
@@ -12,10 +13,10 @@ const EXPIRY_KEY = "expiry_warning_days";
|
||||
|
||||
export default function Settings() {
|
||||
const { reload } = useSettings();
|
||||
const toast = useToast();
|
||||
const [days, setDays] = useState("");
|
||||
const [dateFormat, setDateFormat] = useState("de");
|
||||
const [error, setError] = useState(null);
|
||||
const [info, setInfo] = useState(null);
|
||||
const [busy, setBusy] = useState(false);
|
||||
|
||||
async function load() {
|
||||
@@ -32,12 +33,12 @@ export default function Settings() {
|
||||
|
||||
async function save(e) {
|
||||
e.preventDefault();
|
||||
setError(null); setInfo(null); setBusy(true);
|
||||
setError(null); setBusy(true);
|
||||
try {
|
||||
await api.setSetting(EXPIRY_KEY, String(parseInt(days, 10)));
|
||||
await api.setSetting(DATE_FORMAT_KEY, dateFormat);
|
||||
await reload();
|
||||
setInfo("Gespeichert.");
|
||||
toast("Gespeichert.");
|
||||
} catch (err) {
|
||||
setError(err.message);
|
||||
} finally {
|
||||
@@ -57,7 +58,6 @@ export default function Settings() {
|
||||
</div>
|
||||
</div>
|
||||
{error && <div className="alert error"><Icon name="alert" size={16} />{error}</div>}
|
||||
{info && <div className="alert ok"><Icon name="check" size={16} />{info}</div>}
|
||||
|
||||
<form className="card form-narrow" onSubmit={save}>
|
||||
<div className="card-head"><Icon name="clock" /><h2>Ablaufwarnung</h2></div>
|
||||
@@ -233,9 +233,9 @@ rest:
|
||||
* Einstellungen und das eigene Logo bleiben in allen Stufen erhalten.
|
||||
*/
|
||||
function DangerZoneCard() {
|
||||
const toast = useToast();
|
||||
const [zahlen, setZahlen] = useState(null);
|
||||
const [error, setError] = useState(null);
|
||||
const [info, setInfo] = useState(null);
|
||||
|
||||
async function load() {
|
||||
try {
|
||||
@@ -250,10 +250,9 @@ function DangerZoneCard() {
|
||||
function run(aktion, meldung) {
|
||||
return async () => {
|
||||
setError(null);
|
||||
setInfo(null);
|
||||
try {
|
||||
setZahlen(await aktion());
|
||||
setInfo(meldung);
|
||||
toast(meldung);
|
||||
} catch (err) {
|
||||
setError(err.message);
|
||||
}
|
||||
@@ -276,7 +275,6 @@ function DangerZoneCard() {
|
||||
</p>
|
||||
|
||||
{error && <div className="alert error"><Icon name="alert" size={16} />{error}</div>}
|
||||
{info && <div className="alert ok"><Icon name="check" size={16} />{info}</div>}
|
||||
|
||||
<DangerAction
|
||||
title="Alle Bestände löschen"
|
||||
|
||||
Reference in New Issue
Block a user