mirror of
https://gitlab.dit.htwk-leipzig.de/htwk-software/htwkalender-pwa.git
synced 2025-08-03 10:19:16 +02:00
43 lines
1.0 KiB
TypeScript
43 lines
1.0 KiB
TypeScript
import { Module } from "../model/module.ts";
|
|
import { defineStore } from "pinia";
|
|
|
|
const moduleStore = defineStore("moduleStore", {
|
|
state: () => ({
|
|
modules: new Map<string, Module>(),
|
|
}),
|
|
actions: {
|
|
addModule(module: Module) {
|
|
this.modules.set(module.uuid, module);
|
|
},
|
|
removeModule(module: Module) {
|
|
this.modules.delete(module.uuid);
|
|
},
|
|
hasModule(module: Module): boolean {
|
|
return (
|
|
this.modules.has(module.uuid) &&
|
|
(this.modules.get(module.uuid)?.isEqual(module) ?? false)
|
|
);
|
|
},
|
|
removeAllModules() {
|
|
this.modules.clear();
|
|
},
|
|
overwriteModules(modules: Module[]) {
|
|
this.modules.clear();
|
|
modules.forEach((module) => {
|
|
this.modules.set(module.uuid, module);
|
|
});
|
|
},
|
|
countModules(): number {
|
|
return this.modules.size;
|
|
},
|
|
getAllModules(): Module[] {
|
|
return Array.from(this.modules.values());
|
|
},
|
|
containsModule(module: Module): boolean {
|
|
return this.modules.has(module.uuid);
|
|
}
|
|
},
|
|
});
|
|
|
|
export default moduleStore;
|