;(function(Retailers,InstantGame,_, session){ /** * @class Games * @extends Backbone.View * @requires portalGGA.models.Draws * @view */ portalGGA.views.LuckyLocations = Backbone.View.extend( /** @lends portalGGA.views.DrawResults.prototype */{ events: { "click .luckylocations-pagination a" : "changePage", "click .sortable" : "sortData" }, /** * Rename object, and render on init. * @author mulleti.satyanarayana@gtech.com * @param {Object} options * @param {portalGGA.models.Draws} [options.draws] Draws collection, if not given new one will be created. * @param {Object} options.betslipLinks Map of betslip links, one per each ESA game name. */ constructor: function LuckyLocations( options ){ Backbone.View.apply(this, arguments); this.instantGameID = options.instantGameID; this.retailers = options.retailers || new Retailers(); this.requestedPageNumber = 0; var self = this; this.retailers.url = "/api/v1/locations/luckylocations/page"; this.currentPage = 0; this.sortField = "Retailer"; this.sortType = "asc"; this.RetailLocationHeaderTemplate = _.template($('.retaillocation-header').html() ); this.RetailLocationTemplate = _.template($('.retailerresult-transactionTemplate').html() ); var luckylocations = $.when(this.retailers.fetch( { data : { "game-id" : parseInt(self.instantGameID), "size" : 20, "page" : 0 } } )); _.bindAll(this,"_populateHeader", "_populateResults","_populatePagination","sortData","_loadTable"); luckylocations.then(self._populateHeader,this) .then(this._populatePagination,this); }, /** * Render all Retailer locations from collection * @author mulleti.satyanarayana@gtech.com * @return {jQuery} #$el */ _populateResults: function _populateResults(){ console.info('_displayLuckyLocations', this); var self = this; var rows = ""; if(self.retailers.length){ for(var txNo=0; txNo0){ $('#luckylocationsData').show(); $('.searchGames-header').html(this.RetailLocationHeaderTemplate({ 'sortField': this.sortField, 'sortType': this.sortType })); this._populateResults(); } }, /** * [_populatePagination description] * @author mulleti.satyanarayana@gtech.com */ _populatePagination : function populatePagination(){ console.info("_populatePagination",this); var self = this; var valArr = []; var keyArr =[]; var listArr = []; if(self.retailers && self.retailers.length>0){ _.each(self.retailers.pageUrls,function(val,key,list){ valArr.push(val); keyArr.push(key); }); var pager = luckyLocationsPaginationTemplate( { prevPageUrl : self.retailers.prevPageUrl, nextPageUrl : self.retailers.nextPageUrl, pageUrls : self.retailers.pageUrls, keyIndex : keyArr[self.requestedPageNumber], hrefValue: valArr[self.requestedPageNumber], currentPage : self.requestedPageNumber }); this.$('.pagination-container').fadeIn(); this.$('.luckylocations-pagination').addClass('pagination'); this.$('.luckylocations-pagination').html(pager); } }, sortData: function sortData( event, data ){ event && event.preventDefault(); var self=this; var target = $(event.target).closest('th'); this.sortField = target.attr('data-column-id'); var sortValue= null; if(this.sortField== "Retailer" ) sortValue="name"; if(this.sortField== "Address" ) sortValue="address1"; if(this.sortField== "Town" ) sortValue="city"; if(this.sortField== "Top prize" ) sortValue="prize"; var retailArr=self.retailers.toJSON(); if(this.sortField=="Retailer" || this.sortField=="Address" || this.sortField=="Town" || this.sortField=="Top Prize") retailArr=portalGGA.utils._sortByName(retailArr,sortValue, target.attr('data-sort-type')); if(target.attr('data-sort-type') && target.attr('data-sort-type') == 'asc') { target.attr('data-sort-type','desc'); target.attr('class',"header headerSortDown"); this.sortType = "desc"; } else {target.attr('data-sort-type','asc'); target.attr('class',"header headerSortUp"); this.sortType = "asc"; } self._loadTable(retailArr); }, _loadTable: function _loadTable(instantGameArr) { var self = this; var rows = ""; if(instantGameArr.length){ for(var txNo=0; txNo