{"version":3,"file":"filter-shows.js","mappings":";;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,qBAAqB;AACrB,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C,yBAAyB,QAAQ,kBAAkB;AAC7F;AACA,uDAAuD,YAAY;AACnE;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA,sCAAsC,yBAAyB,QAAQ,kBAAkB;AACzF,mDAAmD,YAAY;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC;AACjC,6BAA6B;AAC7B,yBAAyB;AACzB;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA,yBAAyB;AACzB,iBAAiB;AACjB;AACA;AACA;AACA;AACA,qCAAqC,6CAA6C,OAAO;AACzF;AACA;AACA,iBAAiB;AACjB;AACA,4DAA4D;AAC5D,oCAAoC,sBAAsB;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,iBAAiB;AACjB;AACA,SAAS;AACT,KAAK;AACL;AACA,CAAC","sources":["webpack://nv-base-template/./src/js/filter-shows.js"],"sourcesContent":["/**\r\n * Filter Shows\r\n * @description : Filtered view of all shows\r\n */\r\n\r\nconst nvMedia = Vue.component('nv-media', {\r\n data: function () {\r\n return {\r\n }\r\n },\r\n props: ['media'],\r\n methods: {\r\n markAsLoaded: function (e) {\r\n window.markAsLoaded(e.srcElement);\r\n }\r\n },\r\n mounted: function () {\r\n\r\n }\r\n});\r\n\r\n(() => {\r\n\r\n const filterShowsEls = document.querySelectorAll('.js-filter-shows');\r\n\r\n filterShowsEls.forEach((filterShowsEl) => {\r\n const filterShowsVue = new Vue({\r\n el: filterShowsEl,\r\n\r\n data: {\r\n loading: false, // Initial loading state\r\n loadingMore: false, // Loading after 'load more' button clicked\r\n pagesLoaded: 0,\r\n maxPages: null,\r\n canLoadMore: true,\r\n showTypes: [],\r\n genres: [],\r\n venues: [],\r\n checkedDates: [],\r\n selectedType: null,\r\n selectedGenre: null,\r\n selectedVenue: null,\r\n firstLoad:true,\r\n requestFilters: {\r\n // Do not change these property names\r\n // Names required in api post request\r\n PageNo: 1,\r\n PageCount: filterShowsEl.dataset.maxShows,\r\n FilterType: null,\r\n FilterGenre: null,\r\n FilterVenue: null,\r\n FilterDateFrom: null,\r\n FilterDateTo: null,\r\n FilterCheckedDates: null\r\n },\r\n shows: [],\r\n gridView: true,\r\n cookieName: 'saved-events',\r\n cookieDayLength: 365,\r\n dateSlider: null,\r\n filterPanel: null,\r\n filterPanelDateSlider: null\r\n },\r\n methods: {\r\n seraliseToQueryString: function (obj) {\r\n return Object.keys(obj).map(function (key) {\r\n return key + '=' + obj[key];\r\n }).join('&');\r\n },\r\n fetchShows: function () {\r\n var cookie = this.getCookie(this.cookieName);\r\n var savedEvents = cookie ? cookie.split(',') : [];\r\n var self = this;\r\n self.requestFilters.FilterType = self.selectedType;\r\n self.requestFilters.FilterGenre = self.selectedGenre;\r\n self.requestFilters.FilterVenue = self.selectedVenue;\r\n self.requestFilters.FilterDateFrom = self.filterDateFrom;\r\n self.requestFilters.FilterDateTo = self.filterDateTo;\r\n self.requestFilters.FilterCheckedDates = self.checkedDates;\r\n\r\n self.loading = true;\r\n self.requestFilters.PageNo = 1;\r\n\r\n if (self.firstLoad == true) {\r\n if (self.selectedType != null) {\r\n var path = `${window.location.pathname}?type=${self.selectedType}`;\r\n console.log(path)\r\n window.history.pushState({ path: path }, document.title, path); \r\n }\r\n const queryString = window.location.search;\r\n const urlParams = new URLSearchParams(queryString);\r\n const type = urlParams.get('type')\r\n self.requestFilters.FilterType = type;\r\n self.selectedType = type;\r\n } else {\r\n \r\n var path = `${window.location.pathname}?type=${self.selectedType}`;\r\n window.history.pushState({ path: path }, document.title, path);\r\n const queryString = window.location.search;\r\n const urlParams = new URLSearchParams(queryString);\r\n const type = urlParams.get('type')\r\n self.requestFilters.FilterType = type;\r\n self.selectedType = type;\r\n\t\t\t\t\t\r\n\t\t\t\t\t}\r\n axios({\r\n method: 'get',\r\n url: '/api/shows/get?' + self.seraliseToQueryString(self.requestFilters)\r\n })\r\n .then(response => {\r\n self.firstLoad = false;\r\n self.showTypes = response.data.FilterTypes;\r\n self.genres = response.data.FilterGenres;\r\n self.venues = response.data.FilterVenues;\r\n self.shows = response.data.Shows;\r\n console.log('Shows:', self.shows);\r\n self.loading = false;\r\n self.pagesLoaded = self.pagesLoaded + 1;\r\n self.canLoadMore = response.data.ShowLoadMore;\r\n self.shows.forEach(function (show) {\r\n show.Selected = savedEvents.filter(function (eventId) {\r\n return eventId === show.Id.toString();\r\n }).length > 0;\r\n });\r\n })\r\n .catch(error => {\r\n self.errored = true;\r\n self.loading = false;\r\n });\r\n\r\n console.log(self.firstLoad)\r\n },\r\n reset: function () {\r\n this.checkedDates = [];\r\n this.selectedType = null;\r\n this.selectedGenre = null;\r\n this.selectedVenue = null;\r\n\r\n this.fetchShows();\r\n },\r\n setGridView: function () {\r\n this.gridView = true;\r\n },\r\n setRowView: function () {\r\n this.gridView = false;\r\n },\r\n loadMore: function () {\r\n var self = this;\r\n self.loading = true;\r\n self.requestFilters.PageNo = self.pagesLoaded + 1;\r\n\r\n axios({\r\n method: 'get',\r\n url: '/api/shows/get?' + self.seraliseToQueryString(self.requestFilters)\r\n })\r\n .then(response => {\r\n self.shows = self.shows.concat(response.data.Shows);\r\n self.loading = false;\r\n self.pagesLoaded = self.pagesLoaded + 1;\r\n self.canLoadMore = response.data.ShowLoadMore;\r\n })\r\n .catch(error => {\r\n self.errored = true;\r\n self.loading = false;\r\n });\r\n },\r\n setCookie: function (name, value, daysToLive) {\r\n var cookie = name + \"=\" + encodeURIComponent(value);\r\n console.log(cookie);\r\n if (typeof daysToLive === \"number\") {\r\n cookie += \"; max-age=\" + (daysToLive * 24 * 60 * 60) + \"; path=/;\";\r\n document.cookie = cookie;\r\n }\r\n },\r\n getCookie: function (name) {\r\n var cookieArr = document.cookie.split(\";\");\r\n for (var i = 0; i < cookieArr.length; i++) {\r\n var cookiePair = cookieArr[i].split(\"=\");\r\n if (name === cookiePair[0].trim()) {\r\n return decodeURIComponent(cookiePair[1]);\r\n }\r\n }\r\n return null;\r\n },\r\n manageSavedEvents: function (eventId, isSelected) {\r\n var cookie = this.getCookie(this.cookieName);\r\n var savedEvents = cookie ? cookie.split(',') : [];\r\n // Remove any spurious empty values\r\n savedEvents = savedEvents.filter(Boolean);\r\n\r\n if (eventId) {\r\n if (isSelected) {\r\n // event is currently saved - remove from saved\r\n savedEvents = savedEvents.filter(function (event) {\r\n return event !== eventId;\r\n });\r\n this.setCookie(this.cookieName, savedEvents.join(','), this.cookieDayLength);\r\n\r\n this.shows.filter(x => x.Id.toString() === eventId)[0].Selected = false;\r\n\r\n console.log('event removed from saved. Cookie value: ' + this.getCookie(this.cookieName));\r\n\r\n } else {\r\n // event is not saves - let's save it!\r\n\r\n if (savedEvents.indexOf(eventId) === -1) {\r\n // New event ID to be added to the cookie\r\n\r\n savedEvents.push(eventId);\r\n this.setCookie(this.cookieName, savedEvents.join(','), this.cookieDayLength);\r\n }\r\n\r\n // GLEN: feel free to update these mutations \r\n this.shows.filter(x => x.Id.toString() === eventId)[0].Selected = true;\r\n\r\n console.log('event saved! Cookie value: ' + this.getCookie(this.cookieName));\r\n\r\n }\r\n }\r\n }\r\n },\r\n mounted: function () {\r\n var self = this;\r\n\r\n if (this.$refs.dateSlider) {\r\n this.dateSlider = window.setUpDateSlider(this.$refs.dateSlider);\r\n }\r\n if (this.$refs.filterPanel) {\r\n this.filterPanel = window.setUpFilterPanel(this.$refs.filterPanel);\r\n }\r\n if (this.$refs.filterPanelDateSlider) {\r\n this.filterPanelDateSlider = window.setUpDateSlider(this.$refs.filterPanelDateSlider);\r\n }\r\n\r\n self.fetchShows();\r\n },\r\n computed: {\r\n filterCategory() {\r\n var self = this;\r\n\r\n return self.selectedCategory == null ? [] : self.selectedCategory;\r\n },\r\n filterLocation() {\r\n var self = this;\r\n\r\n return self.selectedLocation == null ? [] : self.selectedLocation;\r\n },\r\n filterDiscountType() {\r\n var self = this;\r\n return self.selectedDiscountType == null ? [] : self.selectedDiscountType;\r\n },\r\n }\r\n });\r\n });\r\n\r\n})();\r\n"],"names":[],"sourceRoot":""}