1
0
mirror of https://github.com/Unleash/unleash.git synced 2025-01-01 00:08:27 +01:00

#13 you can now enable features

This commit is contained in:
andsandv 2014-10-24 10:31:36 +02:00
parent 6804b91d48
commit cdf5bb54e8

View File

@ -19,9 +19,22 @@ var UnsavedFeature = React.createClass({
}); });
var SavedFeature = React.createClass({ var SavedFeature = React.createClass({
onChange: function(event) {
this.props.onChange({
name: this.props.feature.name,
field: 'enabled',
value: event.target.checked
});
},
render: function() { render: function() {
return ( return (
<div>{this.props.feature.name}</div> <div>
<span title='{this.props.feature.description}'>{this.props.feature.name}</span>
<span>{this.props.feature.strategy}</span>
<input type='checkbox' checked={this.props.feature.enabled} onChange={this.onChange} />
</div>
); );
} }
}); });
@ -32,16 +45,16 @@ var FeatureList = React.createClass({
this.props.unsavedFeatures.forEach(function(feature) { this.props.unsavedFeatures.forEach(function(feature) {
featureNodes.push(<UnsavedFeature feature={feature} onSubmit={this.props.onFeatureSubmit} />); featureNodes.push(<UnsavedFeature feature={feature} onSubmit={this.props.onFeatureSubmit} />);
}); }.bind(this));
this.props.savedFeatures.forEach(function(feature) { this.props.savedFeatures.forEach(function(feature) {
featureNodes.push( featureNodes.push(
<SavedFeature <SavedFeature
key={feature.name} key={feature.name}
feature={feature} feature={feature}
onChange={this.props.onFeatureChange} /> onChange={this.props.onFeatureChanged} />
); );
}); }.bind(this));
return (<div>{featureNodes}</div>); return (<div>{featureNodes}</div>);
} }
@ -55,7 +68,7 @@ var Unleash = React.createClass({
componentDidMount: function () { componentDidMount: function () {
this.loadFeaturesFromServer(); this.loadFeaturesFromServer();
setInterval(this.loadFeaturesFromServer, this.props.pollInterval); // setInterval(this.loadFeaturesFromServer, this.props.pollInterval);
}, },
loadFeaturesFromServer: function () { loadFeaturesFromServer: function () {
@ -67,12 +80,28 @@ var Unleash = React.createClass({
}, },
handleError: function (error) { handleError: function (error) {
// TODO: ErrorComponent // TODO: ErrorComponent could use <div class="alert alert-warning" role="alert">...</div>
window.alert(error); window.alert(error);
}, },
updateFeature: function (changeRequest) { updateFeature: function (changeRequest) {
console.log(changeRequest); var newFeatures = this.state.savedFeatures;
newFeatures.forEach(function(f){
if(f.name === changeRequest.name) {
f[changeRequest.field] = changeRequest.value;
}
});
this.setState({features: newFeatures});
reqwest({
url: 'features/' + changeRequest.name,
method: 'patch',
type: 'json',
contentType: 'application/json',
data: JSON.stringify(changeRequest)
}).then(function() {
}, this.handleError.bind(this));
}, },
createFeature: function (feature) { createFeature: function (feature) {
@ -82,12 +111,19 @@ var Unleash = React.createClass({
render: function() { render: function() {
return ( return (
<div> <div>
<Menu /> <Menu />
<FeatureList <div className='panel panel-primary'>
unsavedFeatures={this.state.unsavedFeatures} <div className='panel-heading'>
savedFeatures={this.state.savedFeatures} <h3 className='panel-title'>Features</h3>
onFeatureChanged={this.updateFeature} </div>
onFeatureSubmit={this.createFeature} /> <div className='panel-body'>
<FeatureList
unsavedFeatures={this.state.unsavedFeatures}
savedFeatures={this.state.savedFeatures}
onFeatureChanged={this.updateFeature}
onFeatureSubmit={this.createFeature} />
</div>
</div>
</div> </div>
); );
} }