diff --git a/public/js/components/strategy/CreateStrategy.jsx b/public/js/components/strategy/CreateStrategy.jsx
deleted file mode 100644
index 3e61f4e6f7..0000000000
--- a/public/js/components/strategy/CreateStrategy.jsx
+++ /dev/null
@@ -1,64 +0,0 @@
-var React = require('react');
-
-var CreateStrategy = React.createClass({
-
- getInitialState: function() {
- return {
- parameters: []
- };
- },
-
-
- onSubmit: function(event) {
- event.preventDefault();
- console.log(event);
- },
-
- handleAddParam: function(event) {
- event.preventDefault();
- var id = this.state.parameters.length + 1;
- var params = this.state.parameters.concat([{id:id, name: "param_" + id, label: "Parameter " +id}]);
- this.setState({parameters: params});
- },
-
- render: function() {
- var parameters = (this.state.parameters.map(function(param) {
- return
@@ -55,7 +64,7 @@ var StrategyComponent = React.createClass({
},
renderCreateView: function() {
- return (
)
+ return (
)
},
renderCreateButton: function() {
diff --git a/public/js/components/strategy/StrategyForm.jsx b/public/js/components/strategy/StrategyForm.jsx
new file mode 100644
index 0000000000..d153c0d339
--- /dev/null
+++ b/public/js/components/strategy/StrategyForm.jsx
@@ -0,0 +1,132 @@
+var React = require('react');
+
+var StrategyForm = React.createClass({
+
+ getDefaultProps: function() {
+ return {
+ maxParams: 4
+ };
+ },
+
+ getInitialState: function() {
+ return {
+ parameters: []
+ };
+ },
+
+ onSubmit: function(event) {
+ event.preventDefault();
+
+ var strategy = {};
+ strategy.name = this.refs.strategy_name.getDOMNode().value.trim();
+ strategy.parametersTemplate = {};
+
+ var that = this;
+
+ this.state.parameters.forEach(function(parameter) {
+ var name = that.refs[parameter.name].getDOMNode().value.trim();
+ if(name) {
+ strategy.parametersTemplate[name] = "string";
+ }
+ });
+
+ this.props.handleSave(strategy);
+ },
+
+ handleAddParam: function(event) {
+ event.preventDefault();
+ var id = this.state.parameters.length + 1;
+ var params = this.state.parameters.concat([{id:id, name: "param_" + id, label: "Parameter " +id}]);
+ this.setState({parameters: params});
+ },
+
+ handleRemoveParam: function(event) {
+ event.preventDefault();
+ var id = this.state.parameters.length + 1;
+ var params = this.state.parameters.slice(0, -1);
+
+ this.setState({parameters: params});
+ },
+
+ render: function() {
+ return (
+
+ );
+ },
+
+ renderParameters: function() {
+ return this.state.parameters.map(function(param) {
+ return (
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ )
+ });
+ },
+
+ renderAddLink: function() {
+ if(this.state.parameters.length < this.props.maxParams) {
+ return
+ Add required parameter;
+ }
+ },
+ renderRemoveLink: function() {
+ if(this.state.parameters.length > 0) {
+ return (
+
+ );
+ }
+ }
+});
+
+module.exports = StrategyForm;
\ No newline at end of file
diff --git a/webpack.config.js b/webpack.config.js
index 59f9d36289..4d256a7045 100644
--- a/webpack.config.js
+++ b/webpack.config.js
@@ -17,7 +17,7 @@ module.exports = {
module: {
loaders: [
- { test: /\.jsx$/, loader: 'jsx' }
+ { test: /\.jsx$/, loader: 'jsx?harmony' }
]
},