diff --git a/src/components/CreateTicketModal.jsx b/src/components/CreateTicketModal.jsx
index 573e268..82ab1d9 100644
--- a/src/components/CreateTicketModal.jsx
+++ b/src/components/CreateTicketModal.jsx
@@ -4,6 +4,7 @@ import { useAdminConfig } from '../hooks/useAdminConfig'
import { useEmployees } from '../hooks/useEmployees'
import { databases, DATABASE_ID, COLLECTIONS, Query, isDemoMode } from '../lib/appwrite'
import {
+ SERVICE_TYPES,
todayIso,
isoToGermanDate,
timeToWoms,
@@ -19,12 +20,6 @@ const TICKET_TYPES = [
{ value: 'Migration', label: 'Migration (Übernahme von anderem Anbieter)' },
]
-// Gespeichert werden die bisherigen Werte, angezeigt wird Deutsch
-const SERVICE_TYPES = [
- { value: 'Remote', label: 'Fernwartung (remote)' },
- { value: 'On Site', label: 'Vor Ort beim Kunden' },
-]
-
const DEFAULT_PRIORITIES = [
{ value: 0, label: 'None' },
{ value: 1, label: 'Low' },
diff --git a/src/components/TicketCard.jsx b/src/components/TicketCard.jsx
index 70fcf65..d687adc 100644
--- a/src/components/TicketCard.jsx
+++ b/src/components/TicketCard.jsx
@@ -5,7 +5,6 @@ import { de } from 'date-fns/locale'
import StatusDropdown from './StatusDropdown'
import PriorityDropdown from './PriorityDropdown'
import EditorDropdown from './EditorDropdown'
-import ResponseDropdown from './ResponseDropdown'
import CreateWorksheetModal from './CreateWorksheetModal'
import StatusHistoryModal from './StatusHistoryModal'
import WorksheetList from './WorksheetList'
@@ -21,6 +20,7 @@ import Badge from './ui/Badge'
import { StatusPill, PriorityPill } from './ui/StatusPill'
import { useWorksheets } from '../hooks/useWorksheets'
import { databases, DATABASE_ID, COLLECTIONS } from '../lib/appwrite'
+import { serviceTypeLabel } from '../lib/ticketForm'
const TABS = [
{ id: 'details', label: 'Details' },
@@ -82,7 +82,7 @@ export default function TicketCard({ ticket, onUpdate }) {
{ticket.customerName || 'Unbekannt'}
- {ticket.customerLocation && � {ticket.customerLocation}}
+ {ticket.customerLocation && · {ticket.customerLocation}}
{ticket.topic || ticket.title || 'Kein Betreff'}
@@ -90,7 +90,7 @@ export default function TicketCard({ ticket, onUpdate }) {
{ticket.type &&
{ticket.type}}
{ticket.systemType && ticket.systemType !== 'n/a' &&
{ticket.systemType}}
- {ticket.serviceType &&
{ticket.serviceType}}
+ {ticket.serviceType &&
{serviceTypeLabel(ticket.serviceType)}}
@@ -113,7 +113,6 @@ export default function TicketCard({ ticket, onUpdate }) {
{ticket.requestedBy && Angefragt von: {ticket.requestedBy}}
onUpdate(ticket.$id, { assignedTo: v })} />
- onUpdate(ticket.$id, { responseLevel: v })} />
diff --git a/src/lib/ticketForm.js b/src/lib/ticketForm.js
index 2f216c6..5dae260 100644
--- a/src/lib/ticketForm.js
+++ b/src/lib/ticketForm.js
@@ -1,8 +1,21 @@
-/* Hilfen fuer "Neues Ticket".
+/* Hilfen fuer "Neues Ticket" und die Anzeige der Tickets.
WOMS speichert Datum als Text "dd.mm.yyyy" und Uhrzeit als "hhmm"
(siehe planboard.js). Die Kalender-Felder des Browsers liefern dagegen
"yyyy-mm-dd" bzw. "hh:mm" - umgerechnet wird erst beim Speichern. */
+// Service Type: gespeichert werden die bisherigen Werte, angezeigt wird Deutsch
+export const SERVICE_TYPES = [
+ { value: 'Remote', label: 'Fernwartung (remote)' },
+ { value: 'On Site', label: 'Vor Ort beim Kunden' },
+]
+
+// Kurzform fuer Badges. Das alte "Off Site" meinte ebenfalls Arbeit aus der Ferne.
+const SERVICE_TYPE_SHORT = { remote: 'Fernwartung', 'off site': 'Fernwartung', 'on site': 'Vor Ort' }
+
+export function serviceTypeLabel(value) {
+ return SERVICE_TYPE_SHORT[String(value || '').trim().toLowerCase()] || value
+}
+
const pad = (n) => String(n).padStart(2, '0')
// Heutiges Datum in Ortszeit als "yyyy-mm-dd" (Wert fuer )
diff --git a/src/pages/AdminPage.jsx b/src/pages/AdminPage.jsx
index 15c6d14..95d1481 100644
--- a/src/pages/AdminPage.jsx
+++ b/src/pages/AdminPage.jsx
@@ -16,6 +16,9 @@ import { useCustomers } from '../hooks/useCustomers'
import { useEmployees } from '../hooks/useEmployees'
import './AdminPage.css'
+// Ticketarten, Systeme, Reaktions- und Leistungsarten gibt das Ticketformular
+// fest vor; sie sind hier nicht mehr editierbar, bleiben beim Speichern aber
+// im Config-Dokument erhalten. Editierbar sind nur noch die Prioritaeten.
const EMPTY_CONFIG = {
ticketTypes: [],
systems: [],
@@ -41,56 +44,11 @@ const EMPTY_EMPLOYEE = {
isAdmin: false,
}
-const CONFIG_GROUPS = [
- { field: 'ticketTypes', title: 'Ticketarten', placeholder: 'Neue Ticketart' },
- { field: 'systems', title: 'Betroffene Systeme', placeholder: 'Neues System' },
- { field: 'responseLevels', title: 'Reaktionsstufen', placeholder: 'Neue Stufe' },
- { field: 'serviceTypes', title: 'Leistungsarten', placeholder: 'Neue Leistungsart' },
-]
-
function Notice({ notice }) {
if (!notice?.text) return null
return {notice.text}
}
-function ConfigList({ title, field, values, placeholder, onAdd, onRemove, onChange }) {
- return (
-
-
-
-
{title}
- {values.length} Einträge
-
-
-
-
- {values.length === 0 &&
Noch keine Einträge.
}
- {values.map((value, index) => (
-
- onChange(field, index, event.target.value)}
- />
-
-
- ))}
-
-
- )
-}
-
export default function AdminPage() {
const { user, isAdmin } = useAuth()
const { config, loading, error, updateConfig } = useAdminConfig()
@@ -338,16 +296,6 @@ export default function AdminPage() {
) : (
<>
- {CONFIG_GROUPS.map((group) => (
-
- ))}
Prioritäten
{localConfig.priorities?.length || 0} Einträge
diff --git a/src/pages/CustomerDetailPage.jsx b/src/pages/CustomerDetailPage.jsx
index 743172e..4baf8ac 100644
--- a/src/pages/CustomerDetailPage.jsx
+++ b/src/pages/CustomerDetailPage.jsx
@@ -68,7 +68,7 @@ export default function CustomerDetailPage() {
{archived &&
Archiviert}
}
- subtitle={[customer.location, customer.email, customer.phone].filter(Boolean).join(' � ')}
+ subtitle={[customer.location, customer.email, customer.phone].filter(Boolean).join(' · ')}
actions={
<>
{isArchived(c) && Archiviert}