'use strict'; const React = require('react'); const Router = require('react-router'); const Menu = require('./components/Menu'); const ErrorMessages = require('./components/ErrorMessages'); const initalizer = require('./stores/initalizer'); const FeatureToggleStore = require('./stores/FeatureToggleStore'); const StrategyStore = require('./stores/StrategyStore'); const ArchiveStore = require('./stores/ArchivedToggleStore'); const Link = Router.Link; const RouteHandler = Router.RouteHandler; const UnleashApp = React.createClass({ contextTypes: { router: React.PropTypes.func, }, getInitialState () { return { features: FeatureToggleStore.getFeatureToggles(), strategies: StrategyStore.getStrategies(), archivedFeatures: ArchiveStore.getArchivedToggles(), }; }, onFeatureToggleChange () { this.setState({ features: FeatureToggleStore.getFeatureToggles(), }); }, onStrategiesChange () { this.setState({ strategies: StrategyStore.getStrategies(), }); }, onArchiveChange () { this.setState({ archivedFeatures: ArchiveStore.getArchivedToggles(), }); }, componentDidMount () { this.unsubscribeFS = FeatureToggleStore.listen(this.onFeatureToggleChange); this.unsubscribeSS = StrategyStore.listen(this.onStrategiesChange); this.unsubscribeAS = ArchiveStore.listen(this.onArchiveChange); }, componentWillUnmount () { this.unsubscribeFS(); this.unsubscribeSS(); this.unsubscribeAS(); }, componentWillMount () { initalizer(30); }, renderLink (id, label) { return ( <Link to={id} className="nav-element centerify" activeClassName="nav-active"> <span className="topbar-nav-svg-caption caption showbydefault no-break">{label}</span> </Link> ); }, render () { return ( <div> <Menu> {this.renderLink('features', 'Toggles')} {this.renderLink('strategies', 'Strategies')} {this.renderLink('log', 'Log')} {this.renderLink('archive', 'Archive')} </Menu> <div className="container"> <div className="page"> <ErrorMessages /> <div className="mod shadow mrn pan"> <div className="inner pan"> <div className="bd"> <RouteHandler features={this.state.features} strategies={this.state.strategies} archivedFeatures={this.state.archivedFeatures} /> </div> </div> </div> </div> </div> </div> ); }, }); module.exports = UnleashApp;