var React = require('react'); var ErrorMessages = require('../ErrorMessages'); var FeatureList = require('./FeatureList'); var FeatureForm = require('./FeatureForm'); var FeatureActions = require('../../stores/FeatureToggleActions'); var FeatureToggleStore = require('../../stores/FeatureToggleStore'); var FeatureTogglesComponent = React.createClass({ getInitialState: function() { return { features: FeatureToggleStore.getFeatureToggles(), errors: [], createView: false }; }, onFeatureToggleChange: function() { this.setState({ features: FeatureToggleStore.getFeatureToggles() }); }, componentDidMount: function() { this.unsubscribe = FeatureToggleStore.listen(this.onFeatureToggleChange); }, componentWillUnmount: function() { this.unsubscribe(); }, handleError: function (error) { console.log(error); if (this.isClientError(error)) { var errors = JSON.parse(error.responseText) errors.forEach(function(e) { this.addError(e.msg); }.bind(this)) } else if (error.status === 0) { this.addError("server unreachable"); } else { this.addError(error); } }, updateFeature: function (feature) { FeatureActions.update.triggerPromise(feature) .catch(this.handleError); }, archiveFeature: function (feature) { FeatureActions.archive.triggerPromise(feature) .catch(this.handleError); }, createFeature: function (feature) { FeatureActions.create.triggerPromise(feature) .then(this.cancelNewFeature) .catch(this.handleError); }, newFeature: function() { this.setState({createView: true}); }, cancelNewFeature: function (feature) { this.setState({createView: false}); }, clearErrors: function() { this.setState({errors: []}); }, addError: function(msg) { var errors = this.state.errors; if (errors[errors.length - 1] !== msg) { errors.push(msg); this.setState(errors); } }, isClientError: function(error) { try { return error.status >= 400 && error.status < 500 && JSON.parse(error.responseText); } catch (e) { if (e instanceof SyntaxError) { // fall through; } else { throw e; } } return false; }, render: function() { return (
{this.state.createView ? this.renderCreateView() : this.renderCreateButton()}
); }, renderCreateView: function() { return }, renderCreateButton: function() { return } }); module.exports = FeatureTogglesComponent;