mirror of
https://github.com/Unleash/unleash.git
synced 2025-01-25 00:07:47 +01:00
Inital rewrite of feature-store to reflux
This commit is contained in:
parent
30c764bb31
commit
cbf884dd76
@ -51,6 +51,7 @@
|
|||||||
"nconf": "0.6.9",
|
"nconf": "0.6.9",
|
||||||
"pg": "3.6.1",
|
"pg": "3.6.1",
|
||||||
"react": "^0.12.0",
|
"react": "^0.12.0",
|
||||||
|
"reflux": "^0.2.5",
|
||||||
"reqwest": "^1.1.4",
|
"reqwest": "^1.1.4",
|
||||||
"webpack": "1.4.15",
|
"webpack": "1.4.15",
|
||||||
"webpack-dev-middleware": "^1.0.11"
|
"webpack-dev-middleware": "^1.0.11"
|
||||||
|
@ -4,33 +4,20 @@ var ErrorMessages = require('../ErrorMessages');
|
|||||||
var FeatureList = require('./FeatureList');
|
var FeatureList = require('./FeatureList');
|
||||||
var FeatureForm = require('./FeatureForm');
|
var FeatureForm = require('./FeatureForm');
|
||||||
var FeatureStore = require('../../stores/FeatureStore');
|
var FeatureStore = require('../../stores/FeatureStore');
|
||||||
|
var FeatureStore2 = require('../../stores/FeatureStore2');
|
||||||
|
var FeatureActions = require('../../stores/FeatureActions');
|
||||||
|
var Reflux = require('reflux');
|
||||||
|
|
||||||
var FeatureTogglesComponent = React.createClass({
|
var FeatureTogglesComponent = React.createClass({
|
||||||
getInitialState: function() {
|
getInitialState: function() {
|
||||||
return {
|
return {
|
||||||
features: [],
|
|
||||||
errors: [],
|
errors: [],
|
||||||
createView: false,
|
createView: false,
|
||||||
featurePoller: new Timer(this.loadFeaturesFromServer, this.props.pollInterval)
|
featurePoller: new Timer(this.loadFeaturesFromServer, this.props.pollInterval)
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
|
|
||||||
componentDidMount: function () {
|
mixins: [Reflux.connect(FeatureStore2,"features")],
|
||||||
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});
|
|
||||||
},
|
|
||||||
|
|
||||||
handleError: function (error) {
|
handleError: function (error) {
|
||||||
if (this.isClientError(error)) {
|
if (this.isClientError(error)) {
|
||||||
@ -78,13 +65,20 @@ var FeatureTogglesComponent = React.createClass({
|
|||||||
},
|
},
|
||||||
|
|
||||||
createFeature: function (feature) {
|
createFeature: function (feature) {
|
||||||
this.stopFeaturePoller();
|
//this.stopFeaturePoller();
|
||||||
|
|
||||||
|
FeatureActions.addToggle.triggerPromise(feature)
|
||||||
|
.then(this.cancelNewFeature)
|
||||||
|
.catch(this.handleError);
|
||||||
|
|
||||||
|
/*
|
||||||
|
|
||||||
FeatureStore
|
FeatureStore
|
||||||
.createFeature(feature)
|
.createFeature(feature)
|
||||||
.then(this.cancelNewFeature)
|
.then(this.cancelNewFeature)
|
||||||
.then(this.startFeaturePoller)
|
.then(this.startFeaturePoller)
|
||||||
.catch(this.handleError);
|
.catch(this.handleError);
|
||||||
|
*/
|
||||||
},
|
},
|
||||||
|
|
||||||
newFeature: function() {
|
newFeature: function() {
|
||||||
|
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