Files
station-manager-2.0/src/mixins/changeMixin.ts
T
2022-08-17 23:07:21 +02:00

50 lines
1.8 KiB
TypeScript

import { defineComponent } from 'vue';
import { useStore } from '../store';
export default defineComponent({
setup() {
return {
store: useStore(),
};
},
methods: {
addChange(stationName: string, propName: string, oldValue: any, newValue: any) {
if (oldValue === newValue) return;
if (this.store.changeList[stationName] === null || !(stationName in this.store.changeList))
this.store.changeList[stationName] = {};
if (propName === 'name') {
const station = this.store.stationList[this.store.stationList.findIndex((v) => v.name == newValue)];
console.log(oldValue, newValue, station);
this.store.changeBackupList[oldValue] = { ...station, name: oldValue };
this.store.changeBackupList[newValue] = null;
this.store.changeList[oldValue] = null;
this.store.changeList[newValue] = { ...station };
} else {
this.store.changeList[stationName][propName] = newValue;
if (!this.store.changeBackupList[stationName]) this.store.changeBackupList[stationName] = {};
if (this.store.changeBackupList[stationName][propName] === undefined)
this.store.changeBackupList[stationName][propName] = oldValue;
}
if (this.store.changeList[stationName][propName] == this.store.changeBackupList[stationName][propName]) {
delete this.store.changeList[stationName][propName];
delete this.store.changeBackupList[stationName][propName];
if (Object.keys(this.store.changeList[stationName]).length == 0) delete this.store.changeList[stationName];
if (Object.keys(this.store.changeBackupList[stationName]).length == 0)
delete this.store.changeBackupList[stationName];
}
this.store.unsavedChanges = Object.keys(this.store.changeList).length != 0;
},
},
});