resolve issues with new features
This commit is contained in:
@@ -28,7 +28,7 @@ import AddIcon from '@mui/icons-material/Add';
|
||||
import { useQuery, useMutation, useQueryClient } from '@tanstack/react-query';
|
||||
import { bannerApi } from '../../services/banners';
|
||||
import { useNotification } from '../../contexts/NotificationContext';
|
||||
import type { BannerLevel } from '../../types/banner.types';
|
||||
import type { BannerLevel, BannerShowAs } from '../../types/banner.types';
|
||||
|
||||
const LEVEL_LABEL: Record<BannerLevel, string> = {
|
||||
info: 'Info',
|
||||
@@ -53,6 +53,11 @@ function formatDateTime(iso: string | null | undefined): string {
|
||||
});
|
||||
}
|
||||
|
||||
const SHOW_AS_LABEL: Record<BannerShowAs, string> = {
|
||||
banner: 'Banner',
|
||||
widget: 'Widget',
|
||||
};
|
||||
|
||||
function BannerManagementTab() {
|
||||
const queryClient = useQueryClient();
|
||||
const { showSuccess, showError } = useNotification();
|
||||
@@ -60,6 +65,7 @@ function BannerManagementTab() {
|
||||
const [newMessage, setNewMessage] = useState('');
|
||||
const [newLevel, setNewLevel] = useState<BannerLevel>('info');
|
||||
const [newEndsAt, setNewEndsAt] = useState('');
|
||||
const [newShowAs, setNewShowAs] = useState<BannerShowAs>('banner');
|
||||
|
||||
const { data: banners, isLoading } = useQuery({
|
||||
queryKey: ['admin', 'banners'],
|
||||
@@ -72,6 +78,7 @@ function BannerManagementTab() {
|
||||
bannerApi.create({
|
||||
message: newMessage.trim(),
|
||||
level: newLevel,
|
||||
show_as: newShowAs,
|
||||
starts_at: new Date().toISOString(),
|
||||
ends_at: newEndsAt ? new Date(newEndsAt).toISOString() : null,
|
||||
}),
|
||||
@@ -83,6 +90,7 @@ function BannerManagementTab() {
|
||||
setNewMessage('');
|
||||
setNewLevel('info');
|
||||
setNewEndsAt('');
|
||||
setNewShowAs('banner');
|
||||
},
|
||||
onError: (error: any) => {
|
||||
const message = error?.response?.data?.message || 'Banner konnte nicht erstellt werden';
|
||||
@@ -113,6 +121,7 @@ function BannerManagementTab() {
|
||||
setNewMessage('');
|
||||
setNewLevel('info');
|
||||
setNewEndsAt('');
|
||||
setNewShowAs('banner');
|
||||
};
|
||||
|
||||
if (isLoading) {
|
||||
@@ -133,6 +142,7 @@ function BannerManagementTab() {
|
||||
<TableHead>
|
||||
<TableRow>
|
||||
<TableCell>Stufe</TableCell>
|
||||
<TableCell>Anzeige</TableCell>
|
||||
<TableCell>Nachricht</TableCell>
|
||||
<TableCell>Erstellt am</TableCell>
|
||||
<TableCell>Ablauf</TableCell>
|
||||
@@ -149,6 +159,13 @@ function BannerManagementTab() {
|
||||
size="small"
|
||||
/>
|
||||
</TableCell>
|
||||
<TableCell>
|
||||
<Chip
|
||||
label={SHOW_AS_LABEL[banner.show_as] ?? 'Banner'}
|
||||
variant="outlined"
|
||||
size="small"
|
||||
/>
|
||||
</TableCell>
|
||||
<TableCell sx={{ maxWidth: 400 }}>{banner.message}</TableCell>
|
||||
<TableCell>{formatDateTime(banner.created_at)}</TableCell>
|
||||
<TableCell>{formatDateTime(banner.ends_at)}</TableCell>
|
||||
@@ -166,7 +183,7 @@ function BannerManagementTab() {
|
||||
))}
|
||||
{(banners ?? []).length === 0 && (
|
||||
<TableRow>
|
||||
<TableCell colSpan={5} align="center">Keine Banner vorhanden</TableCell>
|
||||
<TableCell colSpan={6} align="center">Keine Banner vorhanden</TableCell>
|
||||
</TableRow>
|
||||
)}
|
||||
</TableBody>
|
||||
@@ -200,6 +217,17 @@ function BannerManagementTab() {
|
||||
<MenuItem value="critical">Kritisch</MenuItem>
|
||||
</Select>
|
||||
</FormControl>
|
||||
<FormControl fullWidth margin="dense">
|
||||
<InputLabel>Anzeige als</InputLabel>
|
||||
<Select
|
||||
value={newShowAs}
|
||||
label="Anzeige als"
|
||||
onChange={(e) => setNewShowAs(e.target.value as BannerShowAs)}
|
||||
>
|
||||
<MenuItem value="banner">Banner</MenuItem>
|
||||
<MenuItem value="widget">Widget</MenuItem>
|
||||
</Select>
|
||||
</FormControl>
|
||||
<TextField
|
||||
margin="dense"
|
||||
label="Ablaufdatum (optional)"
|
||||
|
||||
Reference in New Issue
Block a user