var Backbone = require('backbone'), Item = require('./item'), Globals = require('../globals'); var ItemCollection = Backbone.Collection.extend({ initialize: function() { $.ajaxPrefilter( function(options, originalOptions, jqXHR) { options.xhrFields = { withCredentials: true } } ); }, setTotalCount: function(total) { this.totalCount = total; }, addFilter: function(name, value) { this.filters = this.filters || {}; this.filters[name] = value; }, clearFilter: function() { this.filters = []; }, setLimit: function(limit) { this.queryLimit = limit; }, setOffset: function(offset) { this.offset = offset; }, classificationTypeUrlParts: ['', 'section', 'category', 'sub_category', 'item_group'], setClassificationType: function(type) { this.classificationType = type; }, setClassificationId: function(id) { this.classificationId = id; }, setFromCart: function(fromCart) { this.fromCart = fromCart; }, model: Item, url: function() { if (this.fromCart === true) { return Globals.ApiUrl + "/cart/item/display"; } var path = '/item'; if (this.classificationType > 0) { // eg. http://localhost:4567/item/section/1/offset/0/limit/10 var urlPart = this.classificationTypeUrlParts[this.classificationType]; path += "/" + urlPart + "/" + this.classificationId; } // else eg. http://localhost:4567/item/offset/0/limit/10 path += "/offset/" + this.offset + "/limit/" + this.queryLimit; var queryParts = []; for (var key in this.filters) { if (this.filters.hasOwnProperty(key)) { queryParts.push(key + '=' + this.filters[key]); } } var query = ''; if (queryParts.length > 0) { query = '?' + queryParts.join('&'); } return Globals.ApiUrl + path + query; } }); module.exports = ItemCollection;