diff --git a/src/scenario/scenario-store.js b/src/scenario/scenario-store.js index 777475c..75c77ee 100644 --- a/src/scenario/scenario-store.js +++ b/src/scenario/scenario-store.js @@ -19,4 +19,37 @@ import ScenariosDataManager from './scenarios-data-manager'; import ArrayStore from '../common/array-store'; -export default new ArrayStore('scenarios', ScenariosDataManager); +//export default new ArrayStore('scenarios', ScenariosDataManager); + +class ScenarioStore extends ArrayStore { + constructor() { + super('scenarios', ScenariosDataManager); + } + + getInitialState() { + return { + state: super.getInitialState(), + users: null + }; + } + + getUsers(token, id) { + ScenariosDataManager.getUsers(token, id); + } + + reduce(state, action) { + switch (action.type) { + case 'scenarios/users': + state.users = action.users; + return state; + case 'scenarios/users-error': + return state; + + default: + return super.reduce(state, action); + } + } + +} + +export default new ScenarioStore(); \ No newline at end of file diff --git a/src/scenario/scenario.js b/src/scenario/scenario.js index 005b859..11c2739 100644 --- a/src/scenario/scenario.js +++ b/src/scenario/scenario.js @@ -21,6 +21,7 @@ import { Button } from 'react-bootstrap'; import FileSaver from 'file-saver'; import ScenarioStore from './scenario-store'; +//import ScenariosDataManager from './scenarios-data-manager'; import ICStore from '../ic/ic-store'; import DashboardStore from '../dashboard/dashboard-store'; import ConfigStore from '../componentconfig/config-store'; @@ -43,6 +44,10 @@ import FileStore from "../file/file-store" import WidgetStore from "../widget/widget-store"; class Scenario extends React.Component { + constructor(props) { + super(props); + this.getUsers = true; + } static getStores() { return [ ScenarioStore, ConfigStore, DashboardStore, ICStore, LoginStore, SignalStore, FileStore, WidgetStore]; @@ -51,7 +56,7 @@ class Scenario extends React.Component { static calculateState(prevState, props) { // get selected scenario const sessionToken = LoginStore.getState().token; - + const scenario = ScenarioStore.getState().find(s => s.id === parseInt(props.match.params.scenario, 10)); if (scenario == null) { AppDispatcher.dispatch({ @@ -60,6 +65,21 @@ class Scenario extends React.Component { token: sessionToken }); } + let users = null; + let sc = ScenarioStore.getState().users; + /* + if (sc) { + users = sc.users; + if (users == null && this.getUsers ) { + ScenarioStore.getUsers(sessionToken, props.match.params.scenario); + this.getUsers = false; + } + } + */ + + + + // ScenariosDataManager.getUsers(sessionToken, props.match.params.scenario); // obtain all dashboards of a scenario let dashboards = DashboardStore.getState().filter(dashb => dashb.scenarioID === parseInt(props.match.params.scenario, 10)); @@ -85,6 +105,7 @@ class Scenario extends React.Component { return { scenario, + users, sessionToken, configs, dashboards, @@ -111,6 +132,9 @@ class Scenario extends React.Component { } componentDidMount() { + // get users of scenario + ScenarioStore.getUsers(this.state.sessionToken, this.state.scenario.id); + //load selected scenario AppDispatcher.dispatch({ type: 'scenarios/start-load', @@ -140,6 +164,9 @@ class Scenario extends React.Component { } componentDidUpdate(prevProps, prevState) { +// if (this.state.users) { +// this.getUsers = false; +// } if (this.state.dashboards.length > prevState.dashboards.length) { if (this.addWidgets) { // add widgets // this can only be true after dashboard import, so there is only one dashboard @@ -461,6 +488,17 @@ class Scenario extends React.Component { return