1 | import 'babel-core/polyfill';
|
2 |
|
3 | import React from 'react';
|
4 | import { render } from 'react-dom';
|
5 | import { Router, Route, IndexRoute } from 'react-router';
|
6 |
|
7 | import { createStore, combineReducers, applyMiddleware } from 'redux';
|
8 | import { Provider } from 'react-redux';
|
9 |
|
10 | import createBrowserHistory from 'history/lib/createBrowserHistory';
|
11 | import { syncReduxAndRouter, routeReducer } from 'redux-simple-router';
|
12 | import thunk from 'redux-thunk';
|
13 | import reducers from './reducers';
|
14 |
|
15 | import App from './containers/app';
|
16 | import Index from './containers/index';
|
17 | import Edit from './containers/edit';
|
18 | import New from './containers/new';
|
19 | import NotFound from './components/notfound';
|
20 | import { setOptions, setValidators, setNormalizers, eventSubscribe } from './actions';
|
21 |
|
22 | const reducer = combineReducers(Object.assign({}, { directory: reducers }, {
|
23 | routing: routeReducer
|
24 | }));
|
25 |
|
26 | const store = applyMiddleware(thunk)(createStore)(reducer);
|
27 | const history = createBrowserHistory();
|
28 |
|
29 | export default class TeamDirectory {
|
30 | constructor(id, options) {
|
31 | syncReduxAndRouter(history, store);
|
32 | options = options || {};
|
33 |
|
34 |
|
35 | store.dispatch(setOptions(options));
|
36 |
|
37 | const container = typeof id === 'string' ?
|
38 | document.getElementById(id) : id;
|
39 |
|
40 | render(
|
41 | <Provider store={store}>
|
42 | <Router history={history}>
|
43 | <Route path='/' component={App}>
|
44 | <IndexRoute component={Index} />
|
45 | <Route path='/edit/:user' component={Edit} />
|
46 | <Route path='/new' component={New} />
|
47 | <Route path='/*' component={NotFound} />
|
48 | </Route>
|
49 | </Router>
|
50 | </Provider>,
|
51 | container
|
52 | );
|
53 | }
|
54 |
|
55 | sorts(fn) {
|
56 | store.dispatch(setSorts(fn));
|
57 | return this;
|
58 | }
|
59 |
|
60 | validators(fn) {
|
61 | store.dispatch(setValidators(fn));
|
62 | return this;
|
63 | }
|
64 |
|
65 | normalizers(fn) {
|
66 | store.dispatch(setNormalizers(fn));
|
67 | return this;
|
68 | }
|
69 |
|
70 | listingTemplate(fn) {
|
71 | store.dispatch(setListingTemplate(fn));
|
72 | return this;
|
73 | }
|
74 |
|
75 | statsTemplate(fn) {
|
76 | store.dispatch(setstatstemplate(fn));
|
77 | return this;
|
78 | }
|
79 |
|
80 | on(type, fn) {
|
81 | store.dispatch(eventSubscribe(type, fn));
|
82 | return this;
|
83 | }
|
84 | }
|