From c01d3e4b009e521b2f441bbab779705b8cceac90 Mon Sep 17 00:00:00 2001
From: Sandro Weber <webers@in.tum.de>
Date: Mon, 10 Oct 2022 19:37:04 +0200
Subject: [PATCH] ExperimentWorkbenchService

---
 .../experiment-workbench-service.js           | 31 +++++++++++++++++++
 .../experiment-workbench.js                   |  4 +--
 2 files changed, 33 insertions(+), 2 deletions(-)
 create mode 100644 src/components/experiment-workbench/experiment-workbench-service.js

diff --git a/src/components/experiment-workbench/experiment-workbench-service.js b/src/components/experiment-workbench/experiment-workbench-service.js
new file mode 100644
index 0000000..f91156f
--- /dev/null
+++ b/src/components/experiment-workbench/experiment-workbench-service.js
@@ -0,0 +1,31 @@
+let _instance = null;
+const SINGLETON_ENFORCER = Symbol();
+
+/**
+ * Service handling server resources for simulating experiments.
+ */
+class ExperimentWorkbenchService {
+  constructor(enforcer) {
+    if (enforcer !== SINGLETON_ENFORCER) {
+      throw new Error('Use ' + this.constructor.name + '.instance');
+    }
+  }
+
+  static get instance() {
+    if (_instance == null) {
+      _instance = new ExperimentWorkbenchService(SINGLETON_ENFORCER);
+    }
+
+    return _instance;
+  }
+
+  get experimentInfo() {
+    return this.expInfo;
+  }
+  set experimentInfo(info) {
+    this.expInfo = info;
+    console.info(['ExperimentWorkbenchService - experimentInfo', this.expInfo]);
+  }
+}
+
+export default ExperimentWorkbenchService;
diff --git a/src/components/experiment-workbench/experiment-workbench.js b/src/components/experiment-workbench/experiment-workbench.js
index 6b3a668..1c0cf90 100644
--- a/src/components/experiment-workbench/experiment-workbench.js
+++ b/src/components/experiment-workbench/experiment-workbench.js
@@ -7,6 +7,7 @@ import { TiMediaRecord } from 'react-icons/ti';
 import { VscDebugRestart } from 'react-icons/vsc';
 
 import ExperimentToolsService from './experiment-tools-service';
+import ExperimentWorkbenchService from './experiment-workbench-service';
 import ServerResourcesService from '../../services/experiments/execution/server-resources-service.js';
 import ExperimentStorageService from '../../services/experiments/files/experiment-storage-service';
 import RunningSimulationService from '../../services/experiments/execution/running-simulation-service';
@@ -62,8 +63,7 @@ export default class ExperimentWorkbench extends React.Component {
     //await this.updateSimulationInfo();
     let experiments = await ExperimentStorageService.instance.getExperiments();
     this.experimentInfo = experiments.find(experiment => experiment.id === this.experimentID);
-    console.info('ExperimentWorkbench - experimentInfo');
-    console.info(this.experimentInfo);
+    ExperimentWorkbenchService.instance.experimentInfo = this.experimentInfo;
 
     let experimentName = this.experimentInfo.configuration.name;
     this.setState({experimentName: experimentName});
-- 
GitLab