Logbuch Überarbeitung
This commit is contained in:
@@ -6,6 +6,149 @@ type ValueResolver = (
|
||||
ctx?: Record<string, any>
|
||||
) => { oldVal: any; newVal: any };
|
||||
|
||||
const TOKEN_TRANSLATIONS: Record<string, string> = {
|
||||
account: "Konto",
|
||||
active: "Aktiv",
|
||||
address: "Adresse",
|
||||
amount: "Betrag",
|
||||
archived: "Archiviert",
|
||||
article: "Artikel",
|
||||
bank: "Bank",
|
||||
barcode: "Barcode",
|
||||
birthday: "Geburtstag",
|
||||
category: "Kategorie",
|
||||
city: "Ort",
|
||||
color: "Farbe",
|
||||
comment: "Kommentar",
|
||||
company: "Firma",
|
||||
contact: "Kontakt",
|
||||
contract: "Vertrag",
|
||||
cost: "Kosten",
|
||||
country: "Land",
|
||||
created: "Erstellt",
|
||||
customer: "Kunde",
|
||||
date: "Datum",
|
||||
default: "Standard",
|
||||
deleted: "Gelöscht",
|
||||
delivery: "Lieferung",
|
||||
description: "Beschreibung",
|
||||
document: "Dokument",
|
||||
driver: "Fahrer",
|
||||
due: "Fällig",
|
||||
duration: "Dauer",
|
||||
email: "E-Mail",
|
||||
employee: "Mitarbeiter",
|
||||
enabled: "Aktiviert",
|
||||
end: "Ende",
|
||||
event: "Ereignis",
|
||||
file: "Datei",
|
||||
first: "Vorname",
|
||||
fixed: "Festgeschrieben",
|
||||
group: "Gruppe",
|
||||
hour: "Stunde",
|
||||
iban: "IBAN",
|
||||
id: "ID",
|
||||
incoming: "Eingang",
|
||||
invoice: "Rechnung",
|
||||
item: "Eintrag",
|
||||
language: "Sprache",
|
||||
last: "Nachname",
|
||||
license: "Kennzeichen",
|
||||
link: "Link",
|
||||
list: "Liste",
|
||||
location: "Standort",
|
||||
manufacturer: "Hersteller",
|
||||
markup: "Verkaufsaufschlag",
|
||||
message: "Nachricht",
|
||||
mobile: "Mobil",
|
||||
name: "Name",
|
||||
note: "Notiz",
|
||||
notes: "Notizen",
|
||||
number: "Nummer",
|
||||
order: "Bestellung",
|
||||
own: "Eigen",
|
||||
payment: "Zahlung",
|
||||
phone: "Telefon",
|
||||
plant: "Objekt",
|
||||
postal: "Post",
|
||||
price: "Preis",
|
||||
percentage: "%",
|
||||
product: "Produkt",
|
||||
profile: "Profil",
|
||||
project: "Projekt",
|
||||
purchase: "Kauf",
|
||||
quantity: "Menge",
|
||||
rate: "Satz",
|
||||
reference: "Referenz",
|
||||
requisition: "Anfrage",
|
||||
resource: "Ressource",
|
||||
role: "Rolle",
|
||||
serial: "Serien",
|
||||
service: "Leistung",
|
||||
selling: "Verkauf",
|
||||
sellign: "Verkauf",
|
||||
space: "Lagerplatz",
|
||||
start: "Start",
|
||||
statement: "Buchung",
|
||||
status: "Status",
|
||||
street: "Straße",
|
||||
surcharge: "Aufschlag",
|
||||
tax: "Steuer",
|
||||
tel: "Telefon",
|
||||
tenant: "Mandant",
|
||||
time: "Zeit",
|
||||
title: "Titel",
|
||||
total: "Gesamt",
|
||||
type: "Typ",
|
||||
unit: "Einheit",
|
||||
updated: "Aktualisiert",
|
||||
user: "Benutzer",
|
||||
ustid: "USt-ID",
|
||||
value: "Wert",
|
||||
vendor: "Lieferant",
|
||||
vehicle: "Fahrzeug",
|
||||
weekly: "Wöchentlich",
|
||||
working: "Arbeits",
|
||||
zip: "Postleitzahl",
|
||||
composed: "Zusammensetzung",
|
||||
material: "Material",
|
||||
worker: "Arbeit",
|
||||
};
|
||||
|
||||
function tokenizeKey(key: string): string[] {
|
||||
return key
|
||||
.replace(/([a-z0-9])([A-Z])/g, "$1_$2")
|
||||
.replace(/[^a-zA-Z0-9]+/g, "_")
|
||||
.split("_")
|
||||
.filter(Boolean)
|
||||
.map((p) => p.toLowerCase());
|
||||
}
|
||||
|
||||
function capitalize(word: string) {
|
||||
if (!word) return word;
|
||||
return word.charAt(0).toUpperCase() + word.slice(1);
|
||||
}
|
||||
|
||||
function fallbackLabelFromKey(key: string): string {
|
||||
const parts = tokenizeKey(key);
|
||||
if (!parts.length) return key;
|
||||
|
||||
if (parts.length > 1 && parts[parts.length - 1] === "id") {
|
||||
const base = parts.slice(0, -1).map((p) => TOKEN_TRANSLATIONS[p] || capitalize(p)).join(" ");
|
||||
return `${base} ID`.trim();
|
||||
}
|
||||
|
||||
return parts
|
||||
.map((p) => TOKEN_TRANSLATIONS[p] || capitalize(p))
|
||||
.join(" ")
|
||||
.replace(/\s+/g, " ")
|
||||
.trim();
|
||||
}
|
||||
|
||||
export function getDiffLabel(key: string): string {
|
||||
return diffTranslations[key]?.label || fallbackLabelFromKey(key);
|
||||
}
|
||||
|
||||
export const diffTranslations: Record<
|
||||
string,
|
||||
{ label: string; resolve?: ValueResolver }
|
||||
@@ -44,7 +187,7 @@ export const diffTranslations: Record<
|
||||
}),
|
||||
},
|
||||
resources: {
|
||||
label: "Resourcen",
|
||||
label: "Ressourcen",
|
||||
resolve: (o, n) => ({
|
||||
oldVal: Array.isArray(o) ? o.map((i: any) => i.title).join(", ") : "-",
|
||||
newVal: Array.isArray(n) ? n.map((i: any) => i.title).join(", ") : "-",
|
||||
@@ -86,6 +229,11 @@ export const diffTranslations: Record<
|
||||
approved: { label: "Genehmigt" },
|
||||
manufacturer: { label: "Hersteller" },
|
||||
purchasePrice: { label: "Kaufpreis" },
|
||||
markupPercentage: { label: "Verkaufsaufschlag in %" },
|
||||
markup_percentage: { label: "Verkaufsaufschlag in %" },
|
||||
sellingPrice: { label: "Verkaufspreis" },
|
||||
selling_price: { label: "Verkaufspreis" },
|
||||
sellingPriceComposed: { label: "Verkaufspreis Zusammensetzung" },
|
||||
purchaseDate: { label: "Kaufdatum" },
|
||||
serialNumber: { label: "Seriennummer" },
|
||||
usePlanning: { label: "In Plantafel verwenden" },
|
||||
@@ -108,6 +256,7 @@ export const diffTranslations: Record<
|
||||
|
||||
description: { label: "Beschreibung" },
|
||||
categorie: { label: "Kategorie" },
|
||||
category: { label: "Kategorie" },
|
||||
|
||||
profile: {
|
||||
label: "Mitarbeiter",
|
||||
|
||||
Reference in New Issue
Block a user