finished menu items
This commit is contained in:
86
front-ui/app/stores/menuItemStore.js
Normal file
86
front-ui/app/stores/menuItemStore.js
Normal file
@@ -0,0 +1,86 @@
|
||||
var AppDispatcher = require('../dispatcher/appDispatcher');
|
||||
var EventEmitter = require('events').EventEmitter;
|
||||
var MenuItemCollection = require('../models/menuItemCollection');
|
||||
var MenuItem = require('../models/menuItem');
|
||||
var MenuItemConstants = require('../constants/menuItemConstants');
|
||||
var _ = require('underscore');
|
||||
|
||||
var menuItemState = {
|
||||
menuItems : [],
|
||||
hoveredMenuItem : ''
|
||||
};
|
||||
|
||||
|
||||
var loadMenuItems = function() {
|
||||
var menuItems = new MenuItemCollection();
|
||||
menuItems.fetch({success: function() {
|
||||
menuItemState.menuItems = menuItems.models;
|
||||
// change will be called automatically when
|
||||
// action is run but we need to emit it again
|
||||
// when the data arive
|
||||
// it's a bit "unfluxy" but convenient.
|
||||
// "true philosophy" would be to run another "data arrived" action
|
||||
MenuItemStore.emitChange();
|
||||
}});
|
||||
};
|
||||
|
||||
var setHovered = function(id) {
|
||||
menuItemState.hoveredMenuItem = id;
|
||||
}
|
||||
|
||||
|
||||
// Extend MenuItemStore with EventEmitter to add eventing capabilities
|
||||
var MenuItemStore = _.extend({}, EventEmitter.prototype, {
|
||||
|
||||
// Return Single Item With Details
|
||||
getState: function() {
|
||||
return menuItemState;
|
||||
},
|
||||
// Emit Change event
|
||||
emitChange: function() {
|
||||
console.log("Emmiting MenuItemStore change!");
|
||||
this.emit('change');
|
||||
},
|
||||
|
||||
// Add change listener
|
||||
addChangeListener: function(callback) {
|
||||
this.on('change', callback);
|
||||
},
|
||||
|
||||
// Remove change listener
|
||||
removeChangeListener: function(callback) {
|
||||
this.removeListener('change', callback);
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
// Register callback with AppDispatcher
|
||||
AppDispatcher.register(function(payload) {
|
||||
var action = payload.action;
|
||||
var text;
|
||||
|
||||
switch(action.actionType) {
|
||||
|
||||
// Respond to SELECT_ITEM action
|
||||
case MenuItemConstants.LOAD_MENU_ITEMS:
|
||||
loadMenuItems();
|
||||
break;
|
||||
|
||||
case MenuItemConstants.SET_MENU_ITEM_HOVER:
|
||||
setHovered(action.menuItem.get('id'));
|
||||
break;
|
||||
|
||||
case MenuItemConstants.UNSET_MENU_ITEM_HOVER:
|
||||
setHovered('');
|
||||
break;
|
||||
default:
|
||||
return true;
|
||||
}
|
||||
|
||||
// If action was responded to, emit change event
|
||||
MenuItemStore.emitChange();
|
||||
return true;
|
||||
|
||||
});
|
||||
|
||||
module.exports = MenuItemStore;
|
||||
Reference in New Issue
Block a user