Added Automatic HistoryItems to more DataTypes

This commit is contained in:
2024-04-08 21:04:32 +02:00
parent ca62d492ba
commit 0f7555907b
7 changed files with 205 additions and 60 deletions

View File

@@ -30,7 +30,8 @@ export const useDataStore = defineStore('data', () => {
contacts: {
label: "Kontakte",
labelSingle: "Kontakt",
redirect:true
redirect:true,
historyItemHolder: "contact"
},
contracts: {
label: "Verträge",
@@ -45,7 +46,8 @@ export const useDataStore = defineStore('data', () => {
plants: {
label: "Objekte",
labelSingle: "Objekte",
redirect:true
redirect:true,
historyItemHolder: "plant"
},
products: {
label: "Artikel",
@@ -55,18 +57,21 @@ export const useDataStore = defineStore('data', () => {
projects: {
label: "Projekte",
labelSingle: "Projekt",
redirect:true
redirect:true,
historyItemHolder: "project"
},
vehicles: {
label: "Fahrzeuge",
labelSingle: "Fahrzeug",
redirect:true
redirect:true,
historyItemHolder: "vehicle"
},
vendors: {
label: "Lieferanten",
labelSingle: "Lieferant",
redirect:true,
numberRangeHolder: "vendorNumber"
numberRangeHolder: "vendorNumber",
historyItemHolder: "vendor"
},
messages: {
label: "Nachrichten",
@@ -109,7 +114,8 @@ export const useDataStore = defineStore('data', () => {
profiles: {
label: "Mitarbeiter",
labelSingle: "Mitarbeiter",
redirect: true
redirect: true,
historyItemHolder: "profile"
},
workingtimes: {
label: "Anwesenheiten",
@@ -410,14 +416,14 @@ export const useDataStore = defineStore('data', () => {
VALUE_UPDATED: 'updated',
VALUE_DELETED: 'deleted',
VALUE_UNCHANGED: 'unchanged',
map: function(obj1, obj2) {
map: function(obj1, obj2, k = null) {
if (this.isFunction(obj1) || this.isFunction(obj2)) {
throw 'Invalid argument. Function given, object expected.';
}
if (this.isValue(obj1) || this.isValue(obj2)) {
return {
type: this.compareValues(obj1, obj2),
data: {o: obj1, n: obj2}//obj1 === undefined ? obj2 : obj1
data: {o: obj1, n: obj2, k: k}//obj1 === undefined ? obj2 : obj1
};
}
@@ -432,14 +438,14 @@ export const useDataStore = defineStore('data', () => {
value2 = obj2[key];
}
diff[key] = this.map(obj1[key], value2);
diff[key] = this.map(obj1[key], value2,key);
}
for (var key in obj2) {
if (this.isFunction(obj2[key]) || diff[key] !== undefined) {
continue;
}
diff[key] = this.map(undefined, obj2[key]);
diff[key] = this.map(undefined, obj2[key],key);
}
return diff;
@@ -524,12 +530,16 @@ export const useDataStore = defineStore('data', () => {
name = "Link"
} else if(key === "start") {
name = "Start"
oldVal = dayjs(prop.data.o).format("DD.MM.YY HH:mm")
newVal = dayjs(prop.data.n).format("DD.MM.YY HH:mm")
oldVal = dayjs(prop.data.o).format("DD.MM.YYYY HH:mm")
newVal = dayjs(prop.data.n).format("DD.MM.YYYY HH:mm")
} else if(key === "end") {
name = "Ende"
oldVal = dayjs(prop.data.o).format("DD.MM.YY HH:mm")
newVal = dayjs(prop.data.n).format("DD.MM.YY HH:mm")
oldVal = dayjs(prop.data.o).format("DD.MM.YYYY HH:mm")
newVal = dayjs(prop.data.n).format("DD.MM.YYYY HH:mm")
} else if(key === "birthday") {
name = "Geburtstag"
oldVal = dayjs(prop.data.o).format("DD.MM.YYY")
newVal = dayjs(prop.data.n).format("DD.MM.YYY")
} else if(key === "resources") {
name = "Resourcen"
oldVal = prop.data.o.map(i => i.title).join(", ")
@@ -572,13 +582,61 @@ export const useDataStore = defineStore('data', () => {
name = "Telefon"
} else if(key === "ustid") {
name = "USt-ID"
} else if(key === "role") {
name = "Rolle"
} else if(key === "phoneHome") {
name = "Festnetz"
} else if(key === "phoneMobile") {
name = "Mobiltelefon"
} else if(key === "salutation") {
name = "Anrede"
} else if(key === "firstName") {
name = "Vorname"
} else if(key === "lastName") {
name = "Nachname"
} else if(key === "name") {
name = "Name"
} else if(key === "customer") {
name = "Kunde"
oldVal = customers.value.find(i => i.id === prop.data.o).name
newVal = customers.value.find(i => i.id === prop.data.n).name
} else if(key === "vendor") {
name = "Lieferant"
oldVal = vendors.value.find(i => i.id === prop.data.o).name
newVal = vendors.value.find(i => i.id === prop.data.n).name
} else if(key === "description") {
name = "Beschreibung"
} else if(key === "categorie") {
name = "Kategorie"
} else if(key === "profile") {
name = "Mitarbeiter"
oldVal = profiles.value.find(i => i.id === prop.data.o).fullName
newVal = profiles.value.find(i => i.id === prop.data.n).fullName
} else if(key === "plant") {
name = "Objekt"
oldVal = plants.value.find(i => i.id === prop.data.o).name
newVal = plants.value.find(i => i.id === prop.data.n).name
} else if(key === "annualPaidLeaveDays") {
name = "Urlaubstage"
} else if(key === "employeeNumber") {
name = "Mitarbeiternummer"
} else if(key === "weeklyWorkingDays") {
name = "Wöchentliche Arbeitstage"
} else if(key === "weeklyWorkingHours") {
name = "Wöchentliche Arbeitszeit"
} else if(key === "licensePlate") {
name = "Kennzeichen"
} else if(key === "driver") {
name = "Fahrer"
oldVal = profiles.value.find(i => i.id === prop.data.o).fullName
newVal = profiles.value.find(i => i.id === prop.data.n).fullName
}
let text = ""
if(prop.type === "updated" && newVal !== "-" && oldVal !== "-") {
text = `Verändert: ${name} von "${oldVal}" zu "${newVal}"`
text = `Gerändert: ${name} von "${oldVal}" zu "${newVal}"`
} else if(prop.type === "updated" && newVal !== "-" && oldVal === "-") {
text = `Hinzugefügt: ${name} "${newVal}"`
} else if(prop.type === "created") {
@@ -597,8 +655,18 @@ export const useDataStore = defineStore('data', () => {
historyItem[dataTypes[dataType].historyItemHolder] = newData.id
console.log(historyItem)
itemsToCreate.push(historyItem)
const checkIfNaN = (x) => {
return typeof x === "number" && x !== x;
}
console.log(key)
console.log(checkIfNaN(key))
if(key !== "fullName" && key !== "phases") {
console.log(historyItem)
itemsToCreate.push(historyItem)
}
}
if(oldData) {
@@ -611,6 +679,7 @@ export const useDataStore = defineStore('data', () => {
checkPropState(prop,result[prop])
//console.log(prop)
//console.log(result[prop])
@@ -637,13 +706,13 @@ export const useDataStore = defineStore('data', () => {
itemsToCreate.push(historyItem)
}
/*const {data,error} = await supabase.from("historyitems").insert(itemsToCreate)
const {data,error} = await supabase.from("historyitems").insert(itemsToCreate)
if(error) {
console.log(error)
} else {
fetchHistoryItems()
}*/
}
}
@@ -723,9 +792,19 @@ export const useDataStore = defineStore('data', () => {
}
async function updateItem (dataType, data, oldData = null) {
//Temporary Fix TODO: Remove and build Solution
data = JSON.parse(JSON.stringify(data))
delete data.users
if(oldData) {
oldData = JSON.parse(JSON.stringify(oldData))
delete oldData.users
}
const {tenants, ...newData} = data
console.log(newData)
await generateHistoryItems(dataType,data,oldData)
const {data:supabaseData,error: supabaseError} = await supabase