From ce26514758be550df4096480de1efc1333096ff7 Mon Sep 17 00:00:00 2001 From: Sonja Happ Date: Tue, 2 Jun 2020 17:16:13 +0200 Subject: [PATCH] Button widget toggles input signal #218 --- src/ic/ic-data-store.js | 2 +- src/widget/widget.js | 23 +++++++++++++++++++---- 2 files changed, 20 insertions(+), 5 deletions(-) diff --git a/src/ic/ic-data-store.js b/src/ic/ic-data-store.js index 6de8669..bca9a95 100644 --- a/src/ic/ic-data-store.js +++ b/src/ic/ic-data-store.js @@ -109,7 +109,7 @@ class ICDataStore extends ReduceStore { // update message properties state[action.ic].input.timestamp = Date.now(); state[action.ic].input.sequence++; - state[action.ic].input.values[action.signal] = action.data; + state[action.ic].input.values[action.signal-1] = action.data; ICDataDataManager.send(state[action.ic].input, action.ic); diff --git a/src/widget/widget.js b/src/widget/widget.js index a2eb294..c611d52 100644 --- a/src/widget/widget.js +++ b/src/widget/widget.js @@ -72,8 +72,12 @@ class Widget extends React.Component { for (let id of props.data.signalIDs){ let signal = signals.find(s => s.id === id); - let config = configs.find(m => m.id === signal.configID); - icIDs[signal.id] = config.icID; + if (signal !== undefined) { + let config = configs.find(m => m.id === signal.configID); + if (config !== undefined){ + icIDs[signal.id] = config.icID; + } + } } return { @@ -90,10 +94,21 @@ class Widget extends React.Component { inputDataChanged(widget, data) { // The following assumes that a widget modifies/ uses exactly one signal + + // get the signal with the selected signal ID + let signalID = widget.signalIDs[0]; + let signal = this.state.signals.filter(s => s.id === signalID) + if (signal.length === 0){ + console.warn("Unable to send signal for signal ID", signalID, ". Signal not found."); + return; + } + // determine ID of infrastructure component related to signal[0] + // Remark: there is only one selected signal for an input type widget + let icID = this.state.icIDs[signal[0].id]; AppDispatcher.dispatch({ type: 'icData/inputChanged', - ic: this.state.icIDs[0], - signal: this.state.signals[0].index, + ic: icID, + signal: signal[0].index, data }); }