Add: Ticket Benutzer-Filter, Dropdown-Styling, User Model Felder fix
This commit is contained in:
@@ -172,6 +172,8 @@ const TicketsPage = () => {
|
||||
const [statusFilter, setStatusFilter] = useState('');
|
||||
const [priorityFilter, setPriorityFilter] = useState('');
|
||||
const [categoryFilter, setCategoryFilter] = useState('');
|
||||
const [userFilter, setUserFilter] = useState('');
|
||||
const [allUsers, setAllUsers] = useState([]);
|
||||
const [viewMode, setViewMode] = useState(() => localStorage.getItem('ticketsViewMode') || 'table');
|
||||
|
||||
// Drag & Drop
|
||||
@@ -195,7 +197,10 @@ const TicketsPage = () => {
|
||||
});
|
||||
const [formLoading, setFormLoading] = useState(false);
|
||||
|
||||
useEffect(() => { loadAll(); }, [statusFilter, priorityFilter, categoryFilter, searchTerm]);
|
||||
useEffect(() => { loadAll(); }, [statusFilter, priorityFilter, categoryFilter, searchTerm, userFilter]);
|
||||
useEffect(() => {
|
||||
userService.getAll().then(setAllUsers).catch(() => {});
|
||||
}, []);
|
||||
|
||||
// Auto-refresh alle 30 Sekunden
|
||||
useEffect(() => {
|
||||
@@ -233,6 +238,7 @@ const TicketsPage = () => {
|
||||
priority: priorityFilter || undefined,
|
||||
category: categoryFilter || undefined,
|
||||
search: searchTerm || undefined,
|
||||
assigned_to: userFilter || undefined,
|
||||
}),
|
||||
ticketService.getStats(),
|
||||
]);
|
||||
@@ -417,6 +423,14 @@ const TicketsPage = () => {
|
||||
</button>
|
||||
))}
|
||||
</div>
|
||||
<select className="form-select" value={userFilter} onChange={(e) => setUserFilter(e.target.value)} style={{ width: 'auto', minWidth: '160px' }}>
|
||||
<option value="">👤 Alle Mitarbeiter</option>
|
||||
{allUsers.map(u => (
|
||||
<option key={u.id} value={u.id}>
|
||||
{u.first_name || u.last_name ? `${u.first_name || ''} ${u.last_name || ''}`.trim() : u.username}
|
||||
</option>
|
||||
))}
|
||||
</select>
|
||||
<select className="form-select" value={priorityFilter} onChange={(e) => setPriorityFilter(e.target.value)} style={{ width: 'auto', minWidth: '130px' }}>
|
||||
<option value="">Priorität (alle)</option>
|
||||
<option value="kritisch">🔴 Kritisch</option>
|
||||
|
||||
@@ -971,7 +971,7 @@ const EditModal = ({ user, allUsers, onClose, onSaved }) => {
|
||||
))}
|
||||
<div className="bv-form-row">
|
||||
<label className="bv-form-label">Beschäftigungsart</label>
|
||||
<select className="form-input" value={form.employment_type} onChange={e => setForm(p => ({...p, employment_type: e.target.value}))}>
|
||||
<select className="bv-modal-select" value={form.employment_type} onChange={e => setForm(p => ({...p, employment_type: e.target.value}))}>
|
||||
<option>Vollzeit</option><option>Teilzeit</option><option>Minijob</option><option>Werkstudent</option>
|
||||
</select>
|
||||
</div>
|
||||
@@ -985,7 +985,7 @@ const EditModal = ({ user, allUsers, onClose, onSaved }) => {
|
||||
</div>
|
||||
<div className="bv-form-row">
|
||||
<label className="bv-form-label">Vorgesetzter</label>
|
||||
<select className="form-input" value={form.manager_id} onChange={e => setForm(p => ({...p, manager_id: e.target.value}))}>
|
||||
<select className="bv-modal-select" value={form.manager_id} onChange={e => setForm(p => ({...p, manager_id: e.target.value}))}>
|
||||
<option value="">— kein Vorgesetzter —</option>
|
||||
{allUsers.filter(u => u.id !== user.id).map(u => (
|
||||
<option key={u.id} value={u.id}>{u.first_name} {u.last_name} ({u.username})</option>
|
||||
|
||||
Reference in New Issue
Block a user