var AppDispatcher = require('../dispatcher/appDispatcher'); var EventEmitter = require('events').EventEmitter; var CategoryCollection = require('../models/categoryCollection'); var Category = require('../models/category'); var CategoryConstants = require('../constants/categoryConstants'); var _ = require('underscore'); var _categoryDetails = new Category(); //var loadSections = function() { //var sections = new SectionCollection(); //sections.fetch({success: function() { //sectionState.sections = sections.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 //SectionStore.emitChange(); //}}); //}; var loadCategoryDetails = function(categoryId) { var category = new Category({id : categoryId}); category.fetch({ success: function() { _categoryDetails = category; CategoryStore.emitChange(); } }); }; //var setHovered = function(id) { //sectionState.hoveredSection = id; //} // Extend SectionStore with EventEmitter to add eventing capabilities var CategoryStore = _.extend({}, EventEmitter.prototype, { getCategoryDetails: function() { return _categoryDetails; }, // Emit Change event emitChange: function() { 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 SectionConstants.LOAD_SECTIONS: //loadSections(); //break; //case SectionConstants.SET_SECTION_HOVER: //setHovered(action.section.get('id')); //break; //case SectionConstants.UNSET_SECTION_HOVER: //setHovered(''); //break; case CategoryConstants.LOAD_CATEGORY_DETAILS: loadCategoryDetails(action.categoryId); break; default: return true; } // If action was responded to, emit change event CategoryStore.emitChange(); return true; }); module.exports = CategoryStore;