Skip to content
Snippets Groups Projects
Commit 4b5f4548 authored by s1995588's avatar s1995588
Browse files

vgm doet die het nu, distributions zijn ook toegevoegd

parent 67e4988f
No related branches found
No related tags found
No related merge requests found
......@@ -135,6 +135,43 @@
ul.appendChild(li);
}
function addDistributionItem(ul, name, value) {
const li = document.createElement("li");
const nameBox = document.createElement("label");
nameBox.id = "name-" + name;
nameBox.appendChild(document.createTextNode(name));
nameBox.classList.add("name");
li.appendChild(nameBox);
const valueBox = document.createElement("input");
valueBox.id = "value-" + name;
valueBox.type = "text";
valueBox.value = value;
valueBox.classList.add("value");
valueBox.addEventListener("input", event => {
let oldState = vscode.getState();
for (const file of oldState.documentVars) {
if (file.uri === oldState.currentUri) {
for (const distribution of file.distributions) {
if (distribution.name === name) {
distribution.value = valueBox.value;
break;
}
}
break;
}
}
vscode.setState({ tools: oldState.tools, documentVars: oldState.documentVars, parameters: oldState.parameters, currentUri: oldState.currentUri, currentTool: oldState.currentTool });
});
li.appendChild(valueBox);
ul.appendChild(li);
}
function addParameterItem(ul, name, value) {
const li = document.createElement("li");
......@@ -178,9 +215,10 @@
*/
function updateDocumentVars(documentVars, uri) {
const constantsUl = document.querySelector("#constants");
const distributionsUl = document.querySelector("#distributions");
const oldState = vscode.getState();
// combines the oldstate constants with the "new" constants.
// combines the oldstate constants and distributions with the "new" constants and distributions.
for (const file of documentVars) {
const index = oldState.documentVars.findIndex(x => x.uri === file.uri);
if (index !== -1) {
......@@ -190,6 +228,12 @@
constant.value = oldState.documentVars[index].constants[oldConstantIndex].value;
}
}
for (const distribution of file.distributions) {
const oldDistributionIndex = oldState.documentVars[index].distributions.findIndex(x => x.name === distribution.name);
if (oldDistributionIndex !== -1) {
distribution.value = oldState.documentVars[index].distributions[oldDistributionIndex].value;
}
}
}
}
......@@ -201,19 +245,29 @@
}
constantsUl.innerHTML = "";
distributionsUl.innerHTML = "";
// adds the constants to the sidebar.
for (const file of documentVars) {
if (file.uri === uri) {
for (const constant of file.constants) {
addConstantItem(constantsUl, constant.name, constant.value);
}
break;
if (oldState.currentTool === "modes (simulate)") {
for (const distribution of file.distributions) {
addDistributionItem(distributionsUl, distribution.name, distribution.value);
}
}
}
break;
}
if (constantsUl.innerHTML === "") {
constantsUl.innerHTML = "There are no undefined constants.";
}
if (distributionsUl.innerHTML === "") {
distributionsUl.innerHTML = "There are no distributions.";
}
vscode.setState({ tools: oldState.tools, documentVars: documentVars, parameters: oldState.parameters, currentUri: uri, currentTool: oldState.currentTool });
}
......@@ -259,6 +313,7 @@
vscode.setState({ tools: oldState.tools, documentVars: oldState.documentVars, parameters: parameters, currentUri: oldState.currentUri, currentTool: oldState.currentTool });
}
vscode.setState({ tools: [], documentVars: [], parameters: [], currentUri: "", currentTool: "" });
const oldState = vscode.getState() || { tools: [], documentVars: [], parameters: [], currentUri: "", currentTool: "" };
......
......@@ -10,9 +10,9 @@ import {
import { analysisResultsProvider, client, provider } from './extension';
export let localToolNames: Array<string> | undefined;
export let localDocumentVars: Array<{ uri: string, constants: Array<{ name: string, value: string }>, distributions: Array<{ name: string, value: string }> }> = [];
export let localParameters: Array<{ toolName: string, parameters: Array<{ id: string, defaultValue: string, type: ParameterType, category: string }> }> = [];
let localToolNames: Array<string> | undefined;
let localDocumentVars: Array<{ uri: string, constants: Array<{ name: string, value: string }>, distributions: Array<{ name: string, value: string }> }> = [];
let localParameters: Array<{ toolName: string, parameters: Array<{ id: string, value: string, type: ParameterType, category: string }> }> = [];
//#region interfaces
interface ParameterDefinitions {
......@@ -89,7 +89,7 @@ function getParameters(toolName: string) {
client?.sendRequest<ParameterDefinitions>("modest/getParameters", jsonObject).then(data => {
const index = localParameters.findIndex(x => x.toolName === toolName);
const newParameters = data.parameterDefinitions.map(parameter => {
return { id: parameter.id, defaultValue: parameter.defaultValue, type: parameter.type, category: parameter.category };
return { id: parameter.id, value: parameter.defaultValue, type: parameter.type, category: parameter.category };
});
if (index === -1) {
localParameters.push({ toolName: toolName, parameters: newParameters });
......@@ -111,7 +111,7 @@ function runTool(uri: string, toolName: string, constants: { name: string; value
for (const parameter of suppliedParameters) {
const parameterIndex = localParameters[toolIndex].parameters.findIndex(x => x.id === parameter.id);
if (parameterIndex !== -1) {
if (localParameters[toolIndex].parameters[parameterIndex].defaultValue !== parameter.value) {
if (localParameters[toolIndex].parameters[parameterIndex].value !== parameter.value) {
serverParameters.push(parameter);
}
}
......@@ -195,10 +195,14 @@ export class ModestSidebarProvider implements vscode.WebviewViewProvider {
break;
}
case 'toolSelected': {
getParameters(data.toolName);
if (data.toolName !== "") {
getParameters(data.toolName);
}
if (vscode.window.activeTextEditor) {
getDocumentVars(vscode.window.activeTextEditor.document);
}
break;
}
case 'runTool': {
runTool(data.uri, data.toolName, data.constants, data.parameters);
break;
......@@ -257,12 +261,21 @@ export class ModestSidebarProvider implements vscode.WebviewViewProvider {
<div class="pane vertical">
<div class="pane-header">
<div class="codicon codicon-chevron-down"></div>
<h3 class="title" title="Open Editors">Open constants </h3>
<h3 class="title" title="Open Editors">Open constants</h3>
</div>
<div class="pane-body">
<ul class="option-list" id="constants">There are no undefined constants.</ul>
</div>
</div>
<div class="pane vertical">
<div class="pane-header">
<div class="codicon codicon-chevron-down"></div>
<h3 class="title" title="Open Editors">Distributions</h3>
</div>
<div class="pane-body">
<ul class="option-list" id="distributions">There are no distributions.</ul>
</div>
</div>
<div class="pane vertical">
<div class="pane-header">
<div class="codicon codicon-chevron-down"></div>
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment