From fdd093b8aaec3a4a61e7cc912a5f2180cbf5e76b Mon Sep 17 00:00:00 2001 From: TekH Date: Wed, 9 Jul 2025 10:38:13 +0200 Subject: [PATCH] feat(ui): Verbesserung von CreateFilterModal mit Validierung und dynamischer Filtererstellung MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Validierung für `name` und `type` vor der Filtererstellung hinzugefügt - Verbinden der Felder `label`, `name` und `type` mit dem Formularstatus - Hardcodierte Werte im Aufruf `createFiltersAsync` durch Benutzereingaben ersetzt - Einführung der Funktion `tryCreateFilter` für eine bessere Struktur - Falsche Verwendung von `Name` und `Label` behoben --- .../dd-hub-react/src/api/filter-service.ts | 2 +- .../document/view/create-filter-modal.tsx | 25 +++++++++++++++---- 2 files changed, 21 insertions(+), 6 deletions(-) diff --git a/src/client/dd-hub-react/src/api/filter-service.ts b/src/client/dd-hub-react/src/api/filter-service.ts index 95e26e3..5dd7827 100644 --- a/src/client/dd-hub-react/src/api/filter-service.ts +++ b/src/client/dd-hub-react/src/api/filter-service.ts @@ -13,7 +13,7 @@ export const filterTypes: Type[] = [ ]; export type FilterCreateDto = { - label?: string; + label?: string | undefined; name: string; type: Type; }; diff --git a/src/client/dd-hub-react/src/sections/document/view/create-filter-modal.tsx b/src/client/dd-hub-react/src/sections/document/view/create-filter-modal.tsx index 087d79f..0c3c31b 100644 --- a/src/client/dd-hub-react/src/sections/document/view/create-filter-modal.tsx +++ b/src/client/dd-hub-react/src/sections/document/view/create-filter-modal.tsx @@ -1,3 +1,5 @@ +import { useState } from 'react'; + import Box from '@mui/material/Box'; import Modal from '@mui/material/Modal'; import Button from '@mui/material/Button'; @@ -7,7 +9,6 @@ import Autocomplete from '@mui/material/Autocomplete'; import { Iconify } from 'src/components/iconify/iconify'; import { createFiltersAsync, FilterCreateDto, filterTypes, Type } from '../../../api/filter-service'; -import { useState } from 'react'; const style = { position: 'absolute', @@ -26,8 +27,21 @@ type ModalProps = { } export default function CreateFilterModal({ open, handleClose }: ModalProps) { - const [name, setName] = useState(''); - const [label, setLabel] = useState(''); + const [name, setName] = useState(undefined); + const [label, setLabel] = useState(undefined); + const [selectedType, setSelectedType] = useState(undefined); + + async function tryCreateFilter(): Promise { + if (!name) { + alert('No name.'); + } + else if (!selectedType) { + alert('No type.'); + } + else { + await createFiltersAsync({ name: name, type: selectedType, label: label }).then(() => handleClose()); + } + } return (
@@ -43,13 +57,15 @@ export default function CreateFilterModal({ open, handleClose }: ModalProps) { setSelectedType(newValue ?? undefined)} renderInput={params => } /> @@ -58,4 +74,3 @@ export default function CreateFilterModal({ open, handleClose }: ModalProps) {
); } -