From a2a4696fdbd6440269d576aeba7b25b2ea40d9bf Mon Sep 17 00:00:00 2001 From: Kristóf Marussy Date: Tue, 12 Sep 2023 21:59:50 +0200 Subject: feat: connect model generator to UI --- .../frontend/src/editor/GeneratedModelStore.ts | 50 ++++++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 subprojects/frontend/src/editor/GeneratedModelStore.ts (limited to 'subprojects/frontend/src/editor/GeneratedModelStore.ts') diff --git a/subprojects/frontend/src/editor/GeneratedModelStore.ts b/subprojects/frontend/src/editor/GeneratedModelStore.ts new file mode 100644 index 00000000..d0181eed --- /dev/null +++ b/subprojects/frontend/src/editor/GeneratedModelStore.ts @@ -0,0 +1,50 @@ +/* + * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors + * + * SPDX-License-Identifier: EPL-2.0 + */ + +import { makeAutoObservable } from 'mobx'; + +import GraphStore from '../graph/GraphStore'; +import type { SemanticsSuccessResult } from '../xtext/xtextServiceResults'; + +export default class GeneratedModelStore { + title: string; + + message = 'Waiting for server'; + + error = false; + + graph: GraphStore | undefined; + + constructor() { + const time = new Date().toLocaleTimeString(undefined, { hour12: false }); + this.title = `Generated at ${time}`; + makeAutoObservable(this); + } + + get running(): boolean { + return !this.error && this.graph === undefined; + } + + setMessage(message: string): void { + if (this.running) { + this.message = message; + } + } + + setError(message: string): void { + if (this.running) { + this.error = true; + this.message = message; + } + } + + setSemantics(semantics: SemanticsSuccessResult): void { + if (this.running) { + this.graph = new GraphStore(); + this.graph.setSemantics(semantics); + } + } +} -- cgit v1.2.3-70-g09d2