1
0
mirror of https://github.com/Unleash/unleash.git synced 2024-10-18 20:09:08 +02:00
unleash.unleash/public/js/components/feature/FeatureForm.jsx

111 lines
3.8 KiB
React
Raw Normal View History

2014-10-30 18:25:38 +01:00
var React = require('react');
var TextInput = require('../form/TextInput');
2014-11-12 13:47:21 +01:00
var strategyStore = require('../../stores/StrategyStore');
2014-10-30 18:25:38 +01:00
2014-11-03 13:54:06 +01:00
var FeatureForm = React.createClass({
2014-11-12 13:47:21 +01:00
getInitialState: function() {
return {strategyOptions: []};
},
componentWillMount: function() {
2014-11-12 13:47:21 +01:00
strategyStore.getStrategies().then(this.handleStrategyResponse);
},
handleStrategyResponse: function(response) {
2014-11-25 13:54:25 +01:00
var strategyNames = response.strategies.map(function(s) { return s.name; });
2014-11-12 13:47:21 +01:00
this.setState({strategyOptions: strategyNames});
},
2014-10-30 18:25:38 +01:00
render: function() {
var feature = this.props.feature || {
name: '',
strategy: 'default',
enabled: false
};
2014-10-30 18:25:38 +01:00
return (
<div className="bg-lilac-xlt r-pam">
<form ref="form" className="r-size1of2">
<fieldset>
2014-11-29 12:16:53 +01:00
{this.props.feature ? "" : <legend>Create new toggle</legend>}
<TextInput
id="name"
name="name"
label="Name"
value={feature.name}
disabled={feature.name.length}
ref="name"
placeholder="Toggle name" />
<TextInput
id="description"
name="description"
label="Description"
value={feature.description}
ref="description"
placeholder="Enter description" />
<div className="formelement">
<label htmlFor="strategy">Strategy</label>
<div class="input select">
<select id="strategy" ref="strategy" defaultValue={feature.strategy}>
{this.renderStrategyOptions()}
</select>
</div>
</div>
<div className="formelement">
<div className="input">
<ul className="inputs-list">
<li>
<input id="active" ref="enabled" type="checkbox" defaultChecked={feature.enabled} />
<label htmlFor="active">Active</label>
</li>
</ul>
</div>
</div>
</fieldset>
<div className="actions">
<button className="primary mrs" onClick={this.saveFeature}>Save</button>
<button className="" onClick={this.cancelFeature}>Cancel</button>
</div>
</form>
2014-10-31 10:30:23 +01:00
</div>
2014-10-30 18:25:38 +01:00
);
},
2014-11-25 13:54:25 +01:00
renderStrategyOptions: function() {
var currentStrategy = this.props.feature ? this.props.feature.strategy : "default";
2014-11-25 13:54:25 +01:00
return this.state.strategyOptions.map(function(name) {
return (
<option key={name} value={name} selected={name === currentStrategy}>
{name}
</option>
);
});
},
2014-10-30 18:25:38 +01:00
saveFeature: function(e) {
e.preventDefault();
2014-11-03 13:54:06 +01:00
var feature = {
name: this.refs.name.getValue(),
description: this.refs.description.getValue(),
2014-11-03 13:54:06 +01:00
strategy: this.refs.strategy.getDOMNode().value,
enabled: this.refs.enabled.getDOMNode().checked
2014-11-25 13:54:25 +01:00
};
2014-10-30 18:25:38 +01:00
2014-11-03 13:54:06 +01:00
this.props.onSubmit(feature);
2014-10-30 18:25:38 +01:00
},
cancelFeature: function(e) {
e.preventDefault();
2014-11-03 13:54:06 +01:00
this.props.onCancel();
2014-10-30 18:25:38 +01:00
}
});
2014-11-03 13:54:06 +01:00
module.exports = FeatureForm;