@abi-software/simulationvuer 2.0.4 → 2.0.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/simulationvuer.js +3631 -3631
- package/dist/simulationvuer.umd.cjs +2 -2
- package/dist/style.css +1 -1
- package/package.json +1 -1
- package/src/App.vue +5 -5
- package/src/components/SimulationVuer.vue +17 -17
|
@@ -3,8 +3,8 @@
|
|
|
3
3
|
<p v-if="!hasValidSimulationUiInfo && !showUserMessage" class="default error"><span class="error">Error:</span> an unknown or invalid model was provided.</p>
|
|
4
4
|
<div class="main" v-if="hasValidSimulationUiInfo">
|
|
5
5
|
<div class="main-left">
|
|
6
|
-
<p class="default name" v-if="
|
|
7
|
-
<el-divider v-if="
|
|
6
|
+
<p class="default name" v-if="!libopencorSet">{{name}}</p>
|
|
7
|
+
<el-divider v-if="!libopencorSet"></el-divider>
|
|
8
8
|
<p class="default input-parameters">Input parameters</p>
|
|
9
9
|
<div class="input scrollbar">
|
|
10
10
|
<SimulationVuerInput v-for="(input, index) in simulationUiInfo.input"
|
|
@@ -19,16 +19,16 @@
|
|
|
19
19
|
/>
|
|
20
20
|
</div>
|
|
21
21
|
<div class="primary-button">
|
|
22
|
-
<el-button type="primary" size="small" @click="startSimulation()" v-if="
|
|
22
|
+
<el-button type="primary" size="small" @click="startSimulation()" v-if="!libopencorSet">Run Simulation</el-button>
|
|
23
23
|
</div>
|
|
24
24
|
<div class="secondary-button" v-if="uuid">
|
|
25
25
|
<el-button size="small" @click="runOnOsparc()">Run on oSPARC</el-button>
|
|
26
26
|
</div>
|
|
27
27
|
<div class="secondary-button">
|
|
28
|
-
<el-button size="small" @click="viewDataset()" v-if="
|
|
28
|
+
<el-button size="small" @click="viewDataset()" v-if="!libopencorSet">View Dataset</el-button>
|
|
29
29
|
</div>
|
|
30
30
|
<div class="secondary-button">
|
|
31
|
-
<el-button size="small" @click="viewWorkspace()" v-if="
|
|
31
|
+
<el-button size="small" @click="viewWorkspace()" v-if="libopencorSet">View Workspace</el-button>
|
|
32
32
|
</div>
|
|
33
33
|
<p class="default note" v-if="uuid">Additional parameters are available on oSPARC</p>
|
|
34
34
|
</div>
|
|
@@ -57,7 +57,7 @@ import { ElButton, ElDivider, ElLoading } from "element-plus";
|
|
|
57
57
|
import { evaluateValue, finaliseUi, OPENCOR_SOLVER_NAME } from "./common.js";
|
|
58
58
|
import { validJson } from "./json.js";
|
|
59
59
|
import libOpenCOR from "./libopencor.js";
|
|
60
|
-
import {
|
|
60
|
+
import { markRaw } from "vue";
|
|
61
61
|
import { create, all } from "mathjs";
|
|
62
62
|
|
|
63
63
|
const LIBOPENCOR_SOLVER = "libOpenCOR";
|
|
@@ -126,6 +126,7 @@ export default {
|
|
|
126
126
|
isSimulationValid: true,
|
|
127
127
|
layout: [],
|
|
128
128
|
libopencor: undefined,
|
|
129
|
+
libopencorSet: false,
|
|
129
130
|
name: null,
|
|
130
131
|
opencorBasedSimulation: true,
|
|
131
132
|
output: undefined,
|
|
@@ -188,7 +189,7 @@ export default {
|
|
|
188
189
|
* @arg `fileContents`
|
|
189
190
|
*/
|
|
190
191
|
manageFile(url, fileContents) {
|
|
191
|
-
let file =
|
|
192
|
+
let file = this.fileManager.file(url);
|
|
192
193
|
|
|
193
194
|
if (file === null) {
|
|
194
195
|
file = new this.libopencor.File(url);
|
|
@@ -213,29 +214,27 @@ export default {
|
|
|
213
214
|
if (this.instance === undefined) {
|
|
214
215
|
// Retrieve an instance of the model.
|
|
215
216
|
|
|
216
|
-
const document = new this.libopencor.SedDocument(
|
|
217
|
+
const document = new this.libopencor.SedDocument(this.fileManager.file(PMR_URL + this.id));
|
|
217
218
|
|
|
218
|
-
this.instance = document.instantiate();
|
|
219
|
+
this.instance = markRaw(document.instantiate());
|
|
219
220
|
|
|
220
221
|
document.delete();
|
|
221
222
|
}
|
|
222
223
|
|
|
223
224
|
// Run the simulation after passing some initial conditions to it, if any.
|
|
224
225
|
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
instance.removeAllInitialConditions();
|
|
226
|
+
this.instance.removeAllInitialConditions();
|
|
228
227
|
|
|
229
228
|
for (const [parameter, value] of Object.entries(this.parametersData())) {
|
|
230
|
-
instance.addInitialCondition(parameter, value);
|
|
229
|
+
this.instance.addInitialCondition(parameter, value);
|
|
231
230
|
}
|
|
232
231
|
|
|
233
|
-
instance.run();
|
|
232
|
+
this.instance.run();
|
|
234
233
|
|
|
235
234
|
// Retrieve the simulation results.
|
|
236
235
|
|
|
237
236
|
const res = {};
|
|
238
|
-
const instanceTask = instance.tasks().get(0);
|
|
237
|
+
const instanceTask = this.instance.tasks().get(0);
|
|
239
238
|
|
|
240
239
|
for (const output of this.outputData()) {
|
|
241
240
|
if (output === instanceTask.voiName()) {
|
|
@@ -663,8 +662,9 @@ export default {
|
|
|
663
662
|
if (xmlhttp.readyState === 4) {
|
|
664
663
|
if (xmlhttp.status === 200) {
|
|
665
664
|
libOpenCOR().then((libopencor) => {
|
|
666
|
-
this.libopencor = libopencor;
|
|
667
|
-
this.
|
|
665
|
+
this.libopencor = markRaw(libopencor);
|
|
666
|
+
this.libopencorSet = true;
|
|
667
|
+
this.fileManager = markRaw(this.libopencor.FileManager.instance());
|
|
668
668
|
|
|
669
669
|
const fileContents = Uint8Array.from(atob(xmlhttp.response), (c) => c.charCodeAt(0));
|
|
670
670
|
const file = this.manageFile(PMR_URL + this.id, fileContents);
|