mirror of
https://github.com/Unleash/unleash.git
synced 2025-02-23 00:22:19 +01:00
loadsh to simplify store
This commit is contained in:
parent
f2617220d0
commit
9576968043
@ -46,6 +46,7 @@
|
|||||||
"jsx-loader": "0.12.2",
|
"jsx-loader": "0.12.2",
|
||||||
"jsxhint": "0.4.15",
|
"jsxhint": "0.4.15",
|
||||||
"knex": "^0.7.3",
|
"knex": "^0.7.3",
|
||||||
|
"lodash": "^3.5.0",
|
||||||
"log4js": "0.6.21",
|
"log4js": "0.6.21",
|
||||||
"moment": "^2.9.0",
|
"moment": "^2.9.0",
|
||||||
"nconf": "0.6.9",
|
"nconf": "0.6.9",
|
||||||
|
@ -2,12 +2,18 @@ var Reflux = require('reflux');
|
|||||||
var FeatureActions = require('./FeatureToggleActions');
|
var FeatureActions = require('./FeatureToggleActions');
|
||||||
var Server = require('./FeatureToggleServerFacade');
|
var Server = require('./FeatureToggleServerFacade');
|
||||||
var Timer = require('../utils/Timer');
|
var Timer = require('../utils/Timer');
|
||||||
|
var filter = require('lodash/collection/filter');
|
||||||
|
var sortBy = require('lodash/collection/sortBy');
|
||||||
|
var findIndex = require('lodash/array/findIndex');
|
||||||
|
|
||||||
|
//TODO: have archived toggles in seperate store.
|
||||||
var _featureToggles = [];
|
var _featureToggles = [];
|
||||||
var _archivedToggles = [];
|
var _archivedToggles = [];
|
||||||
|
|
||||||
// Creates a DataStore
|
// Creates a DataStore
|
||||||
var FeatureStore = Reflux.createStore({
|
var FeatureStore = Reflux.createStore({
|
||||||
|
//The store should be split in two: toggleStore && archivedToggleStore!
|
||||||
|
|
||||||
// Initial setup
|
// Initial setup
|
||||||
init: function() {
|
init: function() {
|
||||||
this.listenTo(FeatureActions.create.completed, this.onCreate);
|
this.listenTo(FeatureActions.create.completed, this.onCreate);
|
||||||
@ -15,11 +21,13 @@ var FeatureStore = Reflux.createStore({
|
|||||||
this.listenTo(FeatureActions.archive.completed, this.onArchive);
|
this.listenTo(FeatureActions.archive.completed, this.onArchive);
|
||||||
this.listenTo(FeatureActions.revive.completed, this.onRevive);
|
this.listenTo(FeatureActions.revive.completed, this.onRevive);
|
||||||
|
|
||||||
|
//TODO: this should not be part of the store!
|
||||||
this.timer = new Timer(this.loadDataFromServer, 30*1000);
|
this.timer = new Timer(this.loadDataFromServer, 30*1000);
|
||||||
this.timer.start();
|
this.timer.start();
|
||||||
},
|
},
|
||||||
|
|
||||||
loadDataFromServer: function() {
|
loadDataFromServer: function() {
|
||||||
|
//TODO: this should not be part of the store!
|
||||||
Server.getFeatures(function(err, featureToggles) {
|
Server.getFeatures(function(err, featureToggles) {
|
||||||
this.setToggles(featureToggles);
|
this.setToggles(featureToggles);
|
||||||
}.bind(this));
|
}.bind(this));
|
||||||
@ -35,30 +43,22 @@ var FeatureStore = Reflux.createStore({
|
|||||||
},
|
},
|
||||||
|
|
||||||
setToggles: function(toggles) {
|
setToggles: function(toggles) {
|
||||||
_featureToggles = toggles;
|
_featureToggles = sortBy(toggles, 'name');
|
||||||
this.trigger();
|
this.trigger();
|
||||||
},
|
},
|
||||||
|
|
||||||
onUpdate: function(feature) {
|
onUpdate: function(feature) {
|
||||||
var idx;
|
var idx = findIndex(_featureToggles, 'name', feature.name);
|
||||||
_featureToggles.forEach(function(item, i) {
|
|
||||||
if(item.name === feature.name) {
|
|
||||||
idx = i;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
_featureToggles[idx] = feature;
|
_featureToggles[idx] = feature;
|
||||||
this.trigger();
|
this.trigger();
|
||||||
},
|
},
|
||||||
|
|
||||||
onArchive: function(feature) {
|
onArchive: function(feature) {
|
||||||
var idx;
|
var featureToggles = filter(_featureToggles, function(item) {
|
||||||
_featureToggles.forEach(function(item, i) {
|
return item.name !== feature.name;
|
||||||
if(item.name === feature.name) {
|
|
||||||
idx = i;
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
_featureToggles.splice(idx, 1);
|
|
||||||
_archivedToggles.unshift(feature);
|
_archivedToggles.unshift(feature);
|
||||||
|
this.setToggles(featureToggles);
|
||||||
this.trigger();
|
this.trigger();
|
||||||
},
|
},
|
||||||
|
|
||||||
@ -67,7 +67,7 @@ var FeatureStore = Reflux.createStore({
|
|||||||
return f.name !== item.name;
|
return f.name !== item.name;
|
||||||
});
|
});
|
||||||
_archivedToggles = newStore;
|
_archivedToggles = newStore;
|
||||||
_featureToggles.push(item);
|
this.setToggles(_featureToggles.concat([item]));
|
||||||
this.trigger();
|
this.trigger();
|
||||||
},
|
},
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user