'use strict'; const React = require('react'); const TextInput = require('../form/TextInput'); const StrategyForm = React.createClass({ getDefaultProps() { return { maxParams: 4 }; }, getInitialState() { return { parameters: [] }; }, onSubmit(event) { event.preventDefault(); const strategy = {}; strategy.name = this.refs.name.getValue(); strategy.description = this.refs.description.getValue(); strategy.parametersTemplate = {}; const that = this; this.state.parameters.forEach(parameter => { const name = that.refs[parameter.name].getDOMNode().value.trim(); if(name) { strategy.parametersTemplate[name] = "string"; } }); this.props.onSave(strategy); }, onCancel(event) { event.preventDefault(); this.props.onCancelNewStrategy(); }, onAddParam(event) { event.preventDefault(); const id = this.state.parameters.length + 1; const params = this.state.parameters.concat([{id, name: `param_${id}`, label: `Parameter ${id}`}]); this.setState({parameters: params}); }, onRemoveParam(event) { event.preventDefault(); const params = this.state.parameters.slice(0, -1); this.setState({parameters: params}); }, render() { return (
Create strategy {this.renderParameters()} {this.renderRemoveLink()}
{this.renderAddLink()}
); }, renderParameters() { return this.state.parameters.map(param =>
); }, renderAddLink() { if(this.state.parameters.length < this.props.maxParams) { return + Add required parameter; } }, renderRemoveLink() { if(this.state.parameters.length > 0) { return (
- Remove parameter
); } } }); module.exports = StrategyForm;