Enhance Service Messages by Config & activeUntil #9

This commit is contained in:
nocnico
2025-07-03 19:26:17 +02:00
parent e137b0c75e
commit ffe0d45ab6
9 changed files with 159 additions and 78 deletions

View File

@@ -2,25 +2,24 @@
import { zodResolver } from "@hookform/resolvers/zod";
import { Notam } from "@repo/db";
import {
NotamOptionalDefaults,
NotamOptionalDefaultsSchema,
} from "@repo/db/zod";
import { NotamOptionalDefaults, NotamOptionalDefaultsSchema } from "@repo/db/zod";
import { useForm } from "react-hook-form";
import { addMessage, disableMessage } from "../action";
import { useState } from "react";
import { DateInput } from "_components/ui/DateInput";
import "react-datepicker/dist/react-datepicker.css"; // <-- Add this line at the top if using react-datepicker
export const MessageForm = ({ message }: { message?: Notam }) => {
const [isSubmitting, setIsSubmitting] = useState(false);
const getDefaultShowUntilDate = () => {
const date = new Date();
date.setDate(date.getDate() + 5);
return date;
};
const disableMessageClient = async () => {
disableMessage();
await disableMessage();
window.location.reload();
};
const form = useForm<NotamOptionalDefaults>({
@@ -28,8 +27,9 @@ export const MessageForm = ({ message }: { message?: Notam }) => {
defaultValues: {
message: message?.message,
color: message?.color,
isMainMsg: true,
active: true,
wartungsmodus: message?.wartungsmodus,
disableHPG: message?.disableHPG,
showUntil: getDefaultShowUntilDate(),
},
});
@@ -39,7 +39,8 @@ export const MessageForm = ({ message }: { message?: Notam }) => {
onSubmit={form.handleSubmit(async (values) => {
setIsSubmitting(true);
try {
const msg = await addMessage(values);
await addMessage(values);
window.location.reload();
} catch (error) {
setIsSubmitting(false);
console.error("Failed to add message", error);
@@ -57,51 +58,76 @@ export const MessageForm = ({ message }: { message?: Notam }) => {
/>
</label>
<div className="gap-2 flex justify-between col-span-6">
<div className="content-center">
<input
type="radio"
value="INFO"
{...form.register("color")}
className="radio radio-info ml-2 mr-2"
/>
<span>Info</span>
<input
type="radio"
value="SUCCESS"
{...form.register("color")}
className="radio radio-success ml-2 mr-2"
/>
<span>Success</span>
<input
type="radio"
value="WARNING"
{...form.register("color")}
className="radio radio-warning ml-2 mr-2"
/>
<span>Warning</span>
<input
type="radio"
value="ERROR"
{...form.register("color")}
className="radio radio-error ml-2 mr-2"
/>
<span>Error</span>
<div className="flex flex-col gap-4">
<div className="content-center">
<input
type="radio"
value="INFO"
{...form.register("color")}
className="radio radio-info ml-2 mr-2"
/>
<span>Info</span>
<input
type="radio"
value="SUCCESS"
{...form.register("color")}
className="radio radio-success ml-2 mr-2"
/>
<span>Success</span>
<input
type="radio"
value="WARNING"
{...form.register("color")}
className="radio radio-warning ml-2 mr-2"
/>
<span>Warning</span>
<input
type="radio"
value="ERROR"
{...form.register("color")}
className="radio radio-error ml-2 mr-2"
/>
<span>Error</span>
</div>
<div className="flex flex-col gap-2 ml-2">
<label className="label">
<input
type="checkbox"
className="checkbox checkbox-primary"
{...form.register("wartungsmodus")}
/>
Wartungsmodus einschalten
</label>
<label className="label">
<input
type="checkbox"
className="checkbox checkbox-primary"
{...form.register("disableHPG")}
/>
HPG Alarmierung deaktivieren
</label>
</div>
<div className="flex flex-col gap-2 ml-2">
<label className="label">Nachricht & Effekte bis (optional)</label>
<DateInput
control={form.control}
name="showUntil"
showTimeInput
timeCaption="Uhrzeit"
showTimeCaption
className="input input-md"
/>
</div>
</div>
<div>
<button
type="submit"
className="btn btn-soft mr-2"
onClick={disableMessageClient}
>
Aktuelle Nachricht deaktivieren
</button>
<button
type="submit"
className="btn btn-primary"
disabled={isSubmitting}
>
Speichern
</button>
<div className="flex flex-col justify-end">
<div className="flex justify-center gap-2">
<button type="submit" className="btn btn-soft" onClick={disableMessageClient}>
Aktuelle Nachricht deaktivieren
</button>
<button type="submit" className="btn btn-primary" disabled={isSubmitting}>
Speichern
</button>
</div>
</div>
</div>
</form>