diff --git a/src/ic/edit-ic.js b/src/ic/edit-ic.js index 49ffd79..f2bd679 100644 --- a/src/ic/edit-ic.js +++ b/src/ic/edit-ic.js @@ -119,20 +119,20 @@ class EditICDialog extends React.Component { render() { let typeOptions = []; switch(this.state.category){ - case "Simulator": - typeOptions = ["Dummy","Generic","DPsim","RTLAB","RSCAD"]; - break; - case "Controller": - typeOptions = ["Kubernetes","VILLAS-controller"]; + case "simulator": + typeOptions = ["dummy","generic","dpsim","rtlab","rscad"]; break; - case "Gateway": - typeOptions = ["VILLASnode","VILLASrelay"]; + case "controller": + typeOptions = ["kubernetes","villas-controller"]; break; - case "Service": - typeOptions = ["EMS","Custom"]; + case "gateway": + typeOptions = ["villas-node","villas-relay"]; break; - case "Equipment": - typeOptions = ["Chroma-emulator","Chroma-loads","SMA-sunnyboy","FLEPS","Sonnenbatterie"]; + case "service": + typeOptions = ["ems","custom"]; + break; + case "equipment": + typeOptions = ["chroma-emulator","chroma-loads","sma-sunnyboy","fleps","sonnenbatterie"]; break; default: typeOptions =[]; @@ -157,11 +157,11 @@ class EditICDialog extends React.Component { Category this.handleChange(e)}> - - - - - + + + + + diff --git a/src/ic/new-ic.js b/src/ic/new-ic.js index b5848bd..45ccc91 100644 --- a/src/ic/new-ic.js +++ b/src/ic/new-ic.js @@ -118,20 +118,20 @@ class NewICDialog extends React.Component { render() { let typeOptions = []; switch(this.state.category){ - case "Simulator": - typeOptions = ["Dummy","Generic","DPsim","RTLAB","RSCAD"]; + case "simulator": + typeOptions = ["dummy","generic","dpsim","rtlab","rscad"]; break; - case "Controller": - typeOptions = ["Kubernetes","VILLAS-controller"]; + case "controller": + typeOptions = ["kubernetes","villas-controller"]; break; - case "Gateway": - typeOptions = ["VILLAS-node","VILLAS-relay"]; + case "gateway": + typeOptions = ["villas-node","villas-relay"]; break; - case "Service": - typeOptions = ["EMS","Custom"]; + case "service": + typeOptions = ["ems","custom"]; break; - case "Equipment": - typeOptions = ["Chroma-emulator","Chroma-loads","SMA-sunnyboy","FLEPS","Sonnenbatterie"]; + case "equipment": + typeOptions = ["chroma-emulator","chroma-loads","sma-sunnyboy","fleps","sonnenbatterie"]; break; default: typeOptions =[]; @@ -155,11 +155,11 @@ class NewICDialog extends React.Component { Category of component this.handleChange(e)}> - - - - - + + + + + diff --git a/src/scenario/scenario.js b/src/scenario/scenario.js index 43e33e0..33f1edd 100644 --- a/src/scenario/scenario.js +++ b/src/scenario/scenario.js @@ -465,7 +465,7 @@ class Scenario extends React.Component { let componentConfig = this.state.configs[index]; // determine apiurl of infrastructure component let ic = this.state.ics.find(ic => ic.id === componentConfig.icID) - if(!ic.type.includes("VILLASnode") && !ic.type.includes("villasnode") && !ic.type.includes("VILLASNODE")){ + if(!ic.type.includes("villas-node")){ let message = "Cannot autoconfigure signals for IC type " + ic.type + " of category " + ic.category + ". This is only possible for gateway ICs of type 'VILLASnode'." console.warn(message); @@ -479,14 +479,10 @@ class Scenario extends React.Component { } let splitWebsocketURL = ic.websocketurl.split("/") - let request = {}; - request["id"] = this.uuidv4(); - request["action"] = "nodes" AppDispatcher.dispatch({ type: 'signals/start-autoconfig', - data: request, - url: ic.apiurl, + url: ic.apiurl+"/nodes", socketname: splitWebsocketURL[splitWebsocketURL.length -1], token: this.state.sessionToken, configID: componentConfig.id diff --git a/src/signal/signal-store.js b/src/signal/signal-store.js index ff4d228..82ce6bf 100644 --- a/src/signal/signal-store.js +++ b/src/signal/signal-store.js @@ -34,12 +34,11 @@ class SignalStore extends ArrayStore{ return super.reduce(state, action); case 'signals/start-autoconfig': - this.dataManager.startAutoConfig(action.data, action.url, action.socketname, action.token, action.configID) + this.dataManager.startAutoConfig(action.url, action.socketname, action.token, action.configID) return super.reduce(state, action); case 'signals/autoconfig-loaded': console.log("AutoConfig Loaded: ", action.data) - // TODO save signal config contained in action.data this.dataManager.saveSignals(action.data, action.token, action.configID, action.socketname); return super.reduce(state, action); diff --git a/src/signal/signals-data-manager.js b/src/signal/signals-data-manager.js index 83d9a9e..9d61584 100644 --- a/src/signal/signals-data-manager.js +++ b/src/signal/signals-data-manager.js @@ -37,13 +37,13 @@ class SignalsDataManager extends RestDataManager{ } - startAutoConfig(data, url, socketname, token, configID){ + startAutoConfig(url, socketname, token, configID){ // This function queries the VILLASnode API to obtain the configuration of the VILLASnode located at url // Endpoint: http[s]://server:port/api/v1 (to be generated based on IC API URL, port 4000) // data contains the request data: { action, id, (request)} // See documentation of VILLASnode API: https://villas.fein-aachen.org/doc/node-dev-api-node.html - RestAPI.post(url, data).then(response => { + RestAPI.get(url, null).then(response => { AppDispatcher.dispatch({ type: 'signals/autoconfig-loaded', data: response, @@ -59,13 +59,12 @@ class SignalsDataManager extends RestDataManager{ }) } - saveSignals(data, token, configID, socketname){ - // data.response contains the response from the VILLASnode API, an array of node configurations + saveSignals(nodes, token, configID, socketname){ - if(!data.hasOwnProperty("response")){ + if(nodes.length === 0){ const SIGNAL_AUTOCONF_ERROR_NOTIFICATION = { - title: 'Failed to load signal config ', - message: 'VILLASnode returned no response field.', + title: 'Failed to load nodes ', + message: 'VILLASnode returned empty response', level: 'error' }; NotificationsDataManager.addNotification(SIGNAL_AUTOCONF_ERROR_NOTIFICATION); @@ -74,7 +73,8 @@ class SignalsDataManager extends RestDataManager{ let configured = false; let error = false; - for(let nodeConfig of data.response){ + for(let nodeConfig of nodes){ + console.log("parsing node config: ", nodeConfig) if(!nodeConfig.hasOwnProperty("name")){ console.warn("Could not parse the following node config because it lacks a name parameter:", nodeConfig); } else if(nodeConfig.name === socketname){ @@ -88,7 +88,6 @@ class SignalsDataManager extends RestDataManager{ continue; } // signals are not yet configured: - console.log("Adding signals of websocket: ", nodeConfig); let index_in = 1 let index_out = 1 @@ -104,9 +103,10 @@ class SignalsDataManager extends RestDataManager{ // add all in signals for(let inSig of nodeConfig.in.signals) { - console.log("adding input signal:", inSig); if (inSig.enabled) { + console.log("adding input signal:", inSig); + let newSignal = { configID: configID, direction: 'in', @@ -140,9 +140,9 @@ class SignalsDataManager extends RestDataManager{ // add all out signals for (let outSig of nodeConfig.out.signals) { - console.log("adding output signal:", outSig); if (outSig.enabled) { + console.log("adding output signal:", outSig); let newSignal = { configID: configID, direction: 'out', @@ -165,8 +165,11 @@ class SignalsDataManager extends RestDataManager{ console.log("Configured", index_in-1, "input signals and", index_out-1, "output signals"); configured=true; + } else { + console.log("ignoring node with name ",nodeConfig.name, " expecting ", socketname ) } + } if(!error) {