var AppDispatcher = require('../dispatcher/appDispatcher'); var EventEmitter = require('events').EventEmitter; var ItemConstants = require('../constants/itemConstants'); var ItemCollection = require('../models/itemCollection'); var ItemWithDetails = require('../models/itemWithDetails'); var _ = require('underscore'); // Define initial data points var _items = new ItemCollection(), _selectedItem = new ItemWithDetails(); var loadItemsForFrontpage = function() { items = _items items.setClassificationType(0); items.setLimit(30); items.setOffset(0); items.fetch({success: function() { ItemStore.emitChange(); }}); }; var setSelected = function(id) { var item = new ItemWithDetails({id: this.itemId }); item.fetch({ success: function() { _selectedItem = item; ItemStore.emitChange(); } } ); } // Extend ItemStore with EventEmitter to add eventing capabilities var ItemStore = _.extend({}, EventEmitter.prototype, { // Return Single Item With Details getSelectedItem: function() { return _selectedItem; }, // Return All Items getItems: function() { return _items; }, // Emit Change event emitChange: function() { console.log("Emitting 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 ItemConstants.SELECT_ITEM: <<<<<<< HEAD setSelected(action.item.id); ======= var router = require('../router'); // use this instead: action.item.getFrontEndUrl() router.transitionTo('/artikal/' + action.item.get('id') +'/' + action.item.get('name')); >>>>>>> 8d885694cfe8307d42a9a5201ff5357f57909012 break; case ItemConstants.LOAD_FOR_FRONTPAGE: loadItemsForFrontpage(); break; default: return true; } // If action was responded to, emit change event ItemStore.emitChange(); return true; }); module.exports = ItemStore;