mirror of
				https://github.com/Unleash/unleash.git
				synced 2025-10-27 11:02:16 +01:00 
			
		
		
		
	Add React + a few components
This commit is contained in:
		
							parent
							
								
									7419e06986
								
							
						
					
					
						commit
						44ed6a9162
					
				@ -18,7 +18,7 @@
 | 
				
			|||||||
    "private": true,
 | 
					    "private": true,
 | 
				
			||||||
    "scripts": {
 | 
					    "scripts": {
 | 
				
			||||||
        "start": "node server.js",
 | 
					        "start": "node server.js",
 | 
				
			||||||
        "start-dev": "NODE_ENV=local supervisor --ignore ./node_modules/ server.js",
 | 
					        "start-dev": "NODE_ENV=local supervisor --ignore ./node_modules/,./public/js server.js",
 | 
				
			||||||
        "test": "jshint server.js lib public/scripts test && mocha test test/*",
 | 
					        "test": "jshint server.js lib public/scripts test && mocha test test/*",
 | 
				
			||||||
        "tdd": "mocha --watch test test/*",
 | 
					        "tdd": "mocha --watch test test/*",
 | 
				
			||||||
        "test-bamboo-ci": "mocha test test/*",
 | 
					        "test-bamboo-ci": "mocha test test/*",
 | 
				
			||||||
 | 
				
			|||||||
@ -0,0 +1,4 @@
 | 
				
			|||||||
 | 
					/* .container { */
 | 
				
			||||||
 | 
					/*     padding: 0 2em; */
 | 
				
			||||||
 | 
					/* } */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -11,6 +11,10 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    <link rel="stylesheet" type="text/css" media="screen,projection,handheld,print" href="//finncdn.no/bb/css/so/5.5.18/so.css" />
 | 
					    <link rel="stylesheet" type="text/css" media="screen,projection,handheld,print" href="//finncdn.no/bb/css/so/5.5.18/so.css" />
 | 
				
			||||||
    <link rel="stylesheet" type="text/css" href="css/unleash.css" />
 | 
					    <link rel="stylesheet" type="text/css" href="css/unleash.css" />
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    <script src="//cdnjs.cloudflare.com/ajax/libs/react/0.11.2/react.min.js"></script>
 | 
				
			||||||
 | 
					    <script src="//fb.me/JSXTransformer-0.11.2.js"></script>
 | 
				
			||||||
 | 
					    <script src="//cdnjs.cloudflare.com/ajax/libs/reqwest/1.1.4/reqwest.js"></script>
 | 
				
			||||||
  </head>
 | 
					  </head>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  <body>
 | 
					  <body>
 | 
				
			||||||
@ -26,19 +30,10 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    <div class="container r-mtm" style="padding-top:100px;">
 | 
					    <div class="container r-mtm" style="padding-top:100px;">
 | 
				
			||||||
      <div class="page">
 | 
					      <div class="page">
 | 
				
			||||||
	<div class="mod shadow">
 | 
					        <div id="content">Loading...</div>
 | 
				
			||||||
	  <div class="inner">
 | 
					 | 
				
			||||||
	    <div class="bd">
 | 
					 | 
				
			||||||
              <div class="line r-margin">
 | 
					 | 
				
			||||||
                <div class="unit size1of2 t3">
 | 
					 | 
				
			||||||
                </div>
 | 
					 | 
				
			||||||
              </div>
 | 
					 | 
				
			||||||
            </div>
 | 
					 | 
				
			||||||
          </div>
 | 
					 | 
				
			||||||
        </div>
 | 
					 | 
				
			||||||
      </div>
 | 
					      </div>
 | 
				
			||||||
    </div>
 | 
					    </div>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    <script src="js/unleash.js"></script>
 | 
					    <script type="text/jsx" src="js/unleash.js"></script>
 | 
				
			||||||
  </body>
 | 
					  </body>
 | 
				
			||||||
</html>
 | 
					</html>
 | 
				
			||||||
 | 
				
			|||||||
@ -0,0 +1,116 @@
 | 
				
			|||||||
 | 
					/** @jsx React.DOM */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					//   FeatureList
 | 
				
			||||||
 | 
					//     Feature
 | 
				
			||||||
 | 
					//       - name
 | 
				
			||||||
 | 
					//       - status
 | 
				
			||||||
 | 
					//       - description
 | 
				
			||||||
 | 
					//       - button-edit
 | 
				
			||||||
 | 
					//       - button-delete
 | 
				
			||||||
 | 
					//       - toggle-status
 | 
				
			||||||
 | 
					//   FeatureForm
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					//    StrategyList
 | 
				
			||||||
 | 
					//      Strategy
 | 
				
			||||||
 | 
					//    StrategyForm
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					var FeatureList = React.createClass({
 | 
				
			||||||
 | 
					    getInitialState: function() {
 | 
				
			||||||
 | 
					        return {
 | 
				
			||||||
 | 
					            features: []
 | 
				
			||||||
 | 
					        };
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    componentDidMount: function () {
 | 
				
			||||||
 | 
					        reqwest("/features").then(this.setFeatures);
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    render: function () {
 | 
				
			||||||
 | 
					        var featureNodes = this.state.features.map(function (feature) {
 | 
				
			||||||
 | 
					            return (
 | 
				
			||||||
 | 
					                <Feature feature={feature} />
 | 
				
			||||||
 | 
					            );
 | 
				
			||||||
 | 
					        });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        return (
 | 
				
			||||||
 | 
					            <div className="mod shadow">
 | 
				
			||||||
 | 
					              <div className="inner">
 | 
				
			||||||
 | 
					                <div className="bd">
 | 
				
			||||||
 | 
					                  {featureNodes}
 | 
				
			||||||
 | 
					                </div>
 | 
				
			||||||
 | 
					              </div>
 | 
				
			||||||
 | 
					            </div>
 | 
				
			||||||
 | 
					        );
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    setFeatures: function (data) {
 | 
				
			||||||
 | 
					        this.setState({features: data.features});
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					var Feature = React.createClass({
 | 
				
			||||||
 | 
					    // TODO: validate props?
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    handleStatusChange: function (event) {
 | 
				
			||||||
 | 
					        console.log(event);
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    render: function () {
 | 
				
			||||||
 | 
					        return (
 | 
				
			||||||
 | 
					            <div>
 | 
				
			||||||
 | 
					              <div className="line">
 | 
				
			||||||
 | 
					                <div className="unit r-size1of3">
 | 
				
			||||||
 | 
					                  <div className="mod">
 | 
				
			||||||
 | 
					                    <div className="inner">
 | 
				
			||||||
 | 
					                       <div className="bd">
 | 
				
			||||||
 | 
					                         <p>{this.props.feature.name}</p>
 | 
				
			||||||
 | 
					                         <p className="neutral">{this.props.feature.description}</p>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                       </div>
 | 
				
			||||||
 | 
					                    </div>
 | 
				
			||||||
 | 
					                  </div>
 | 
				
			||||||
 | 
					                </div>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                <div className="unit r-size1of3">
 | 
				
			||||||
 | 
					                  <div className="mod">
 | 
				
			||||||
 | 
					                    <div className="inner">
 | 
				
			||||||
 | 
					                       <div className="bd">
 | 
				
			||||||
 | 
					                         <p>
 | 
				
			||||||
 | 
					                           <label>
 | 
				
			||||||
 | 
					                              {this.props.feature.status}
 | 
				
			||||||
 | 
					                              <input
 | 
				
			||||||
 | 
					                                 type="checkbox"
 | 
				
			||||||
 | 
					                                 checked={this.props.feature.status === 'on'}
 | 
				
			||||||
 | 
					                                 className="mll"
 | 
				
			||||||
 | 
					                                 onChange={this.handleStatusChange}
 | 
				
			||||||
 | 
					                              />
 | 
				
			||||||
 | 
					                           </label>
 | 
				
			||||||
 | 
					                         </p>
 | 
				
			||||||
 | 
					                       </div>
 | 
				
			||||||
 | 
					                    </div>
 | 
				
			||||||
 | 
					                  </div>
 | 
				
			||||||
 | 
					                </div>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                <div className="unit r-size1of3">
 | 
				
			||||||
 | 
					                  <div className="mod">
 | 
				
			||||||
 | 
					                    <div className="inner">
 | 
				
			||||||
 | 
					                       <div className="bd">
 | 
				
			||||||
 | 
					                         <button className="pam mtl mll">Edit</button>
 | 
				
			||||||
 | 
					                         <button className="pam mtl mll">Delete</button>
 | 
				
			||||||
 | 
					                       </div>
 | 
				
			||||||
 | 
					                    </div>
 | 
				
			||||||
 | 
					                  </div>
 | 
				
			||||||
 | 
					                </div>
 | 
				
			||||||
 | 
					              </div>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					              <hr />
 | 
				
			||||||
 | 
					            </div>
 | 
				
			||||||
 | 
					        );
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					React.renderComponent(
 | 
				
			||||||
 | 
					    FeatureList(null),
 | 
				
			||||||
 | 
					    document.getElementById('content')
 | 
				
			||||||
 | 
					);
 | 
				
			||||||
		Loading…
	
		Reference in New Issue
	
	Block a user