diff --git a/src/components/dialogs/edit-widget-control-creator.js b/src/components/dialogs/edit-widget-control-creator.js index c686b34..fdce7e5 100644 --- a/src/components/dialogs/edit-widget-control-creator.js +++ b/src/components/dialogs/edit-widget-control-creator.js @@ -48,7 +48,7 @@ export default function createControls(widgetType = null, widget = null, session validateForm(id)} handleChange={e => handleChange(e)} />, validateForm(id)} handleChange={e => handleChange(e)} />, validateForm(id)} simulationModels={simulationModels} handleChange={(e) => handleChange(e)} />, - handleChange(e)} /> + handleChange(e)} /> ) break; case 'Action': diff --git a/src/components/widget-factory.js b/src/components/widget-factory.js index 6169867..4ab6731 100644 --- a/src/components/widget-factory.js +++ b/src/components/widget-factory.js @@ -41,15 +41,20 @@ class WidgetFactory { // set type specific properties switch(type) { case 'CustomAction': - widget.action = { - action: 'start', - model: { - url: 'ftp://user:pass@example.com/projectA/model.zip' + widget.actions = [ + { + action: 'stop' }, - parameters: { - timestep: 50e-6 + { + action: 'pause', + model: { + url: 'ftp://user:pass@example.com/projectA/model.zip' + }, + parameters: { + timestep: 50e-6 + } } - }; + ]; widget.name = 'Action'; widget.icon = 'star'; widget.width = 100; diff --git a/src/components/widgets/custom-action.js b/src/components/widgets/custom-action.js index 2e91154..4a1a7cb 100644 --- a/src/components/widgets/custom-action.js +++ b/src/components/widgets/custom-action.js @@ -54,7 +54,7 @@ class WidgetCustomAction extends Component { AppDispatcher.dispatch({ type: 'simulators/start-action', simulator: this.state.simulator, - data: this.props.widget.action, + data: this.props.widget.actions, token: this.state.sessionToken }); } diff --git a/src/data-managers/simulators-data-manager.js b/src/data-managers/simulators-data-manager.js index dc7c879..df45f34 100644 --- a/src/data-managers/simulators-data-manager.js +++ b/src/data-managers/simulators-data-manager.js @@ -28,7 +28,7 @@ class SimulatorsDataManager extends RestDataManager { super('simulator', '/simulators'); } - doAction(simulator, action, token = null) { + doActions(simulator, action, token = null) { // TODO: Make only simulator id dependent RestAPI.post(this.makeURL(this.url + '/' + simulator._id), action, token).then(response => { AppDispatcher.dispatch({ @@ -39,7 +39,7 @@ class SimulatorsDataManager extends RestDataManager { AppDispatcher.dispatch({ type: 'simulators/action-error', error - }); + }); }); } } diff --git a/src/stores/simulator-store.js b/src/stores/simulator-store.js index 2bd4410..00b8635 100644 --- a/src/stores/simulator-store.js +++ b/src/stores/simulator-store.js @@ -65,7 +65,10 @@ class SimulatorStore extends ArrayStore { return state; case 'simulators/start-action': - SimulatorsDataManager.doAction(action.simulator, action.data, action.token); + if (!Array.isArray(action.data)) + action.data = [ action.data ] + + SimulatorsDataManager.doActions(action.simulator, action.data, action.token); return state; case 'simulators/action-error':