diff --git a/src/containers/users.js b/src/containers/users.js
index 531f112..b8773be 100644
--- a/src/containers/users.js
+++ b/src/containers/users.js
@@ -25,20 +25,33 @@ import { Button, Modal, Glyphicon } from 'react-bootstrap';
import AppDispatcher from '../app-dispatcher';
import UserStore from '../stores/user-store';
+import UsersStore from '../stores/users-store';
import Table from '../components/table';
import TableColumn from '../components/table-column';
-import NewProjectDialog from '../components/dialog/new-project';
-import EditProjectDialog from '../components/dialog/edit-project';
+// import NewUserDialog from '../components/dialog/new-user';
+// import EditUserDialog from '../components/dialog/edit-user';
-class Projects extends Component {
+class Users extends Component {
static getStores() {
- return [ UserStore ];
+ return [ UserStore, UsersStore ];
}
- static calculateState() {
+ static calculateState(prevState, props) {
+
+ let tokenState = UserStore.getState().token;
+
+ // If there is a token available and this method was called as a result of loading users
+ if (!prevState && tokenState) {
+ AppDispatcher.dispatch({
+ type: 'users/start-load',
+ token: tokenState
+ });
+ }
+
return {
- users: UserStore.getState().users,
+ token: tokenState,
+ users: UsersStore.getState(),
newModal: false,
editModal: false,
@@ -47,18 +60,12 @@ class Projects extends Component {
};
}
- componentWillMount() {
- AppDispatcher.dispatch({
- type: 'users/start-load'
- });
- }
-
// closeNewModal(data) {
// this.setState({ newModal: false });
// if (data) {
// AppDispatcher.dispatch({
- // type: 'projects/start-add',
+ // type: 'users/start-add',
// data: data
// });
// }
@@ -95,8 +102,6 @@ class Projects extends Component {
// }
render() {
-
- this.state.users.map( (user) => console.log('User: %o', user));
return (
@@ -108,11 +113,11 @@ class Projects extends Component {
this.setState({ editModal: true, modalData: this.state.users[index] })} onDelete={index => this.setState({ deleteModal: true, modalData: this.state.users[index] })} />
- {/*
+
- this.closeNewModal(data)} simulations={this.state.simulations} />
+ {/* this.closeNewModal(data)} />*/}
- this.closeEditModal(data)} project={this.state.modalData} simulations={this.state.simulations} />
+ {/* this.closeEditModal(data)} project={this.state.modalData} simulations={this.state.simulations} />
@@ -133,4 +138,4 @@ class Projects extends Component {
}
}
-export default Container.create(Projects);
+export default Container.create(Users);
diff --git a/src/data-managers/users-data-manager.js b/src/data-managers/users-data-manager.js
index 08c3138..b20c3c2 100644
--- a/src/data-managers/users-data-manager.js
+++ b/src/data-managers/users-data-manager.js
@@ -59,12 +59,12 @@ class UsersDataManager extends RestDataManager {
getUsers(token) {
RestAPI.get(this.makeURL('/users'), token).then(response => {
AppDispatcher.dispatch({
- type: 'users/users-loaded',
- users: response.users
+ type: 'users/loaded',
+ data: response.users
});
}).catch(error => {
AppDispatcher.dispatch({
- type: 'users/users-load-error',
+ type: 'users/load-error',
error: error
});
});
diff --git a/src/stores/user-store.js b/src/stores/user-store.js
index 9acf4d2..0c3a70a 100644
--- a/src/stores/user-store.js
+++ b/src/stores/user-store.js
@@ -79,21 +79,7 @@ class UserStore extends ReduceStore {
}
- return state;
-
- case 'users/start-load':
- console.log('Sending request');
- UsersDataManager.getUsers(state.token);
-
- return state;
-
- case 'users/users-loaded':
-
- return Object.assign({}, state, { users: action.users });
-
- case 'users/users-load-error':
- // Users couldn't be loaded. Keep same state
- return state;
+ return state;
default:
return state;
diff --git a/src/stores/users-store.js b/src/stores/users-store.js
new file mode 100644
index 0000000..3eb1595
--- /dev/null
+++ b/src/stores/users-store.js
@@ -0,0 +1,45 @@
+/**
+ * File: users-store.js
+ * Author: Markus Grigull
+ * Date: 15.03.2017
+ *
+ * This file is part of VILLASweb.
+ *
+ * VILLASweb is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * VILLASweb is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with VILLASweb. If not, see .
+ ******************************************************************************/
+
+import ArrayStore from './array-store';
+import UsersDataManager from '../data-managers/users-data-manager';
+
+class UsersStore extends ArrayStore {
+ constructor() {
+ super('users', UsersDataManager);
+ }
+
+ reduce(state, action) {
+ switch (action.type) {
+
+ // Override ArrayStore's start-load to pass token
+ case 'users/start-load':
+ UsersDataManager.getUsers(action.token);
+ return state;
+
+ default:
+ return super.reduce(state, action);
+ }
+ }
+
+}
+
+export default new UsersStore();