From fac7665f8f8f48b2bae24ac2397780a5f212be42 Mon Sep 17 00:00:00 2001 From: Timo Reichl Date: Sat, 26 Apr 2025 00:05:45 +0200 Subject: [PATCH] Webservice auf neue Logik umgebaut --- src/modules/process/models/process/Process.js | 4 ++- src/modules/process/models/process/View.js | 22 ++++++++++++++ .../pages/ProcessOverviewComponent.vue | 29 +++++++++++++------ src/pages/DevelopmentDashboard.vue | 4 ++- 4 files changed, 48 insertions(+), 11 deletions(-) create mode 100644 src/modules/process/models/process/View.js diff --git a/src/modules/process/models/process/Process.js b/src/modules/process/models/process/Process.js index 4f080ef..7545cfe 100644 --- a/src/modules/process/models/process/Process.js +++ b/src/modules/process/models/process/Process.js @@ -1,11 +1,13 @@ import { BaseModel } from "@/modules/shared/models/Basemodel"; +import { View } from "./View"; export class Process extends BaseModel { - constructor({ id, name, description } = {}) { + constructor({ id, name, description, views = [] } = {}) { super(); this.id = id; this.name = name; this.description = description; + this.views = views.map((view) => new View(view)); this.topic = "system_process"; } diff --git a/src/modules/process/models/process/View.js b/src/modules/process/models/process/View.js new file mode 100644 index 0000000..2112c8c --- /dev/null +++ b/src/modules/process/models/process/View.js @@ -0,0 +1,22 @@ +import { BaseModel } from "@/modules/shared/models/Basemodel"; + +export class View extends BaseModel { + constructor({ id, name, layout } = {}) { + super(); + this.id = id ?? null; + this.name = name ?? ""; + this.layout = layout ?? {}; // Layout-JSON oder ähnliche Struktur + this.topic = "system_processView"; + } + + getPublicFields() { + return ["id", "name", "layout"]; + } + + toJSON() { + return this.getPublicFields().reduce((obj, key) => { + obj[key] = this[key]; + return obj; + }, {}); + } +} diff --git a/src/modules/process/pages/ProcessOverviewComponent.vue b/src/modules/process/pages/ProcessOverviewComponent.vue index bef3530..d0ee339 100644 --- a/src/modules/process/pages/ProcessOverviewComponent.vue +++ b/src/modules/process/pages/ProcessOverviewComponent.vue @@ -9,7 +9,7 @@ v-model="processObject.description" > import ProcessTableComponent from "@/modules/process/components/process/ProcessTableComponent.vue"; -import { getObject } from "@/utils/getObject.js"; -//import { getSpecificObject } from "@/utils/getSpecificObject"; +import socketService from "@/modules/shared/services/WebSocketService"; +import { View } from "@/modules/process/models/process/View"; + export default { name: "ProcessOverviewComponent", // Verwendete Komponenten @@ -45,7 +46,7 @@ export default { data() { return { processObject: {}, - objectData: {}, + objectData: [], }; }, @@ -59,17 +60,27 @@ export default { mounted() { this.processObject = { ...this.object }; console.log(this.processObject); - this.wsHandler = getObject( + socketService.subscribe( + "system_processView", + "_id", + { "processLink.transientValue": this.processObject.id }, + (val) => { + val.forEach((element) => { + let curView = new View({ id: element }).makeReactive(); + curView.subscribe(["name"]); + this.processObject.views.push(curView); + }); + } + ); + /*this.wsHandler = getObject( "system_processView", ["name", "description"], (id, updated) => { this.objectData = { ...this.objectData, [id]: updated }; } - ); - }, - beforeUnmount() { - this.specificObjectHandler?.unsubscribe(); + );*/ }, + beforeUnmount() {}, }; diff --git a/src/pages/DevelopmentDashboard.vue b/src/pages/DevelopmentDashboard.vue index e151e04..dcea920 100644 --- a/src/pages/DevelopmentDashboard.vue +++ b/src/pages/DevelopmentDashboard.vue @@ -75,7 +75,9 @@ export default { );*/ }, - beforeUnmount() {}, + beforeUnmount() { + console.log(this.objectData); + }, };