mirror of
				https://github.com/Unleash/unleash.git
				synced 2025-10-27 11:02:16 +01:00 
			
		
		
		
	Inital rewrite of feature-store to reflux
This commit is contained in:
		
							parent
							
								
									94f78797df
								
							
						
					
					
						commit
						ff579303fd
					
				| @ -51,6 +51,7 @@ | ||||
|     "nconf": "0.6.9", | ||||
|     "pg": "3.6.1", | ||||
|     "react": "^0.12.0", | ||||
|     "reflux": "^0.2.5", | ||||
|     "reqwest": "^1.1.4", | ||||
|     "webpack": "1.4.15", | ||||
|     "webpack-dev-middleware": "^1.0.11" | ||||
|  | ||||
| @ -4,33 +4,20 @@ var ErrorMessages = require('../ErrorMessages'); | ||||
| var FeatureList   = require('./FeatureList'); | ||||
| var FeatureForm   = require('./FeatureForm'); | ||||
| var FeatureStore  = require('../../stores/FeatureStore'); | ||||
| var FeatureStore2 = require('../../stores/FeatureStore2'); | ||||
| var FeatureActions = require('../../stores/FeatureActions'); | ||||
| var Reflux        = require('reflux'); | ||||
| 
 | ||||
| var FeatureTogglesComponent = React.createClass({ | ||||
|     getInitialState: function() { | ||||
|         return { | ||||
|             features: [], | ||||
|             errors: [], | ||||
|             createView: false, | ||||
|             featurePoller: new Timer(this.loadFeaturesFromServer, this.props.pollInterval) | ||||
|         }; | ||||
|     }, | ||||
| 
 | ||||
|     componentDidMount: function () { | ||||
|         this.loadFeaturesFromServer(); | ||||
|         this.startFeaturePoller(); | ||||
|     }, | ||||
| 
 | ||||
|     componentWillUnmount: function () { | ||||
|         this.stopFeaturePoller(); | ||||
|     }, | ||||
| 
 | ||||
|     loadFeaturesFromServer: function () { | ||||
|         FeatureStore.getFeatures().then(this.setFeatures).catch(this.handleError); | ||||
|     }, | ||||
| 
 | ||||
|     setFeatures: function (data) { | ||||
|         this.setState({features: data.features}); | ||||
|     }, | ||||
|     mixins: [Reflux.connect(FeatureStore2,"features")], | ||||
| 
 | ||||
|     handleError: function (error) { | ||||
|         if (this.isClientError(error)) { | ||||
| @ -78,13 +65,20 @@ var FeatureTogglesComponent = React.createClass({ | ||||
|     }, | ||||
| 
 | ||||
|     createFeature: function (feature) { | ||||
|         this.stopFeaturePoller(); | ||||
|         //this.stopFeaturePoller(); | ||||
| 
 | ||||
|         FeatureActions.addToggle.triggerPromise(feature) | ||||
|           .then(this.cancelNewFeature) | ||||
|           .catch(this.handleError); | ||||
| 
 | ||||
| /* | ||||
| 
 | ||||
|         FeatureStore | ||||
|           .createFeature(feature) | ||||
|           .then(this.cancelNewFeature) | ||||
|           .then(this.startFeaturePoller) | ||||
|           .catch(this.handleError); | ||||
| */ | ||||
|     }, | ||||
| 
 | ||||
|     newFeature: function() { | ||||
| @ -150,4 +144,4 @@ var FeatureTogglesComponent = React.createClass({ | ||||
|     } | ||||
| }); | ||||
| 
 | ||||
| module.exports = FeatureTogglesComponent; | ||||
| module.exports = FeatureTogglesComponent; | ||||
|  | ||||
							
								
								
									
										4
									
								
								public/js/stores/FeatureActions.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										4
									
								
								public/js/stores/FeatureActions.js
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,4 @@ | ||||
| var Reflux = require("reflux"); | ||||
| module.exports = { | ||||
|   addToggle: Reflux.createAction({ asyncResult: true }) | ||||
| }; | ||||
							
								
								
									
										69
									
								
								public/js/stores/FeatureStore2.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										69
									
								
								public/js/stores/FeatureStore2.js
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,69 @@ | ||||
| var reqwest = require('reqwest'); | ||||
| var Reflux = require('reflux'); | ||||
| var FeatureActions = require('./FeatureActions'); | ||||
| 
 | ||||
| var TYPE         = 'json'; | ||||
| var CONTENT_TYPE = 'application/json'; | ||||
| 
 | ||||
| function getFeatures() { | ||||
|   return reqwest({ | ||||
|       url: 'features', | ||||
|       method: 'get', | ||||
|       type: CONTENT_TYPE | ||||
|   }); | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| var _toggles = []; | ||||
| 
 | ||||
| // Creates a DataStore
 | ||||
| var FeatureStore = Reflux.createStore({ | ||||
|   // Initial setup
 | ||||
|   init: function() { | ||||
|     this.listenTo(FeatureActions.addToggle, this.onAddToggle); | ||||
| 
 | ||||
|     getFeatures() | ||||
|       .then(function(data) { | ||||
|         this.setToggles(JSON.parse(data.response).features); | ||||
|       }.bind(this)) | ||||
|       .catch(this.handleError); | ||||
|   }, | ||||
| 
 | ||||
|   onAddToggle: function(feature) { | ||||
|     reqwest({ | ||||
|         url: 'features', | ||||
|         method: 'post', | ||||
|         type: TYPE, | ||||
|         contentType: CONTENT_TYPE, | ||||
|         data: JSON.stringify(feature), | ||||
|         error: function (error) { | ||||
|           FeatureActions.addToggle.failed(error); | ||||
|         }, | ||||
|         success: function () { | ||||
|           this.setToggles(_toggles.concat([feature])); | ||||
|           FeatureActions.addToggle.completed(); | ||||
|         }.bind(this) | ||||
|     }); | ||||
|   }, | ||||
| 
 | ||||
|   setToggles: function(toggles) { | ||||
|     _toggles = toggles; | ||||
|     this.trigger(_toggles); | ||||
|   }, | ||||
| 
 | ||||
|   handleError: function(er) { | ||||
|     console.log("error: "+ er); | ||||
|   }, | ||||
| 
 | ||||
|   //getter for notes
 | ||||
|   getToggles: function() { | ||||
|     return _toggles; | ||||
|   }, | ||||
| 
 | ||||
|   getInitialState: function() { | ||||
|     return _toggles; | ||||
|   } | ||||
| 
 | ||||
| }); | ||||
| 
 | ||||
| module.exports = FeatureStore; | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user