{"version":3,"sources":["app.js"],"names":["Vue","config","devtools","app","el","data","isMobile","interestList","open","body","draggable","plots","elemToIndex","countdowns","document","querySelectorAll","countDown","endDate","isActive","days","hours","minutes","seconds","computed","interestedPlotsNboIds","map","plot","NboId","mounted","_this","this","localStorage","getItem","JSON","parse","getElementsByTagName","checkWindowWidth","window","addEventListener","i","length","dataset","Date","getTime","setInterval","calculateTimeLeft","filters","formatCurrency","input","toLocaleString","style","currency","minimumFractionDigits","methods","startDate","timeRemaining","parseInt","isNaN","slice","toggleInterestList","_this2","innerWidth","classList","add","remove","nextTick","createDraggable","querySelector","addPlot","_this3","plotNotInInterestList","plotIsSold","push","updateLocalStorage","removePlot","filter","p","removePlotQuestion","comfirmMsg","deleteMsg","answer","confirm","setItem","stringify","removeItem","duplicatePlot","Status","submitInterestedForm","e","interestedForm","target","$","valid","moveItem","item","closest","elemTo","contains","previousElementSibling","nextElementSibling","fromIndex","index","toIndex","splice","blur","outerWidth"],"mappings":"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","file":"../app.js","sourcesContent":["Vue.config.devtools = true;\r\n\r\nconst app = new Vue({\r\n el: '.js-app',\r\n data: {\r\n isMobile: true,\r\n interestList: {\r\n open: false,\r\n body: null,\r\n draggable: false,\r\n plots: [],\r\n elemToIndex: null\r\n },\r\n countdowns: document.querySelectorAll('.js-countdown'),\r\n countDown: {\r\n // endDate: 'Dec 31, 2018 00:00:01',\r\n endDate: null,\r\n isActive: false,\r\n days: null,\r\n hours: null,\r\n minutes: null,\r\n seconds: null\r\n } \r\n },\r\n computed: {\r\n interestedPlotsNboIds() {\r\n return app.interestList.plots.map(plot => (plot.NboId));\r\n }\r\n },\r\n mounted() {\r\n // Gets the plots saved in LocalStorage\r\n if(localStorage.getItem('interestedPlots') !== null) {\r\n this.interestList.plots = JSON.parse(localStorage.getItem('interestedPlots'));\r\n }\r\n this.body = document.getElementsByTagName(\"BODY\")[0];\r\n this.isMobile = this.checkWindowWidth();\r\n window.addEventListener('resize', () => {\r\n this.isMobile = this.checkWindowWidth();\r\n })\r\n\r\n for(let i = 0; i < this.countdowns.length; i+=1) {\r\n this.countDown.endDate = this.countdowns[i].dataset.endDate;\r\n this.countDown.endDate = new Date(this.countDown.endDate).getTime();\r\n setInterval(this.calculateTimeLeft, 1000);\r\n }\r\n },\r\n filters: {\r\n formatCurrency(input) {\r\n return input.toLocaleString(\"nl-NL\", {style: 'currency', currency: 'EUR', minimumFractionDigits: 0});\r\n }\r\n },\r\n methods: {\r\n calculateTimeLeft() {\r\n let startDate = new Date();\r\n startDate = startDate.getTime();\r\n\r\n let timeRemaining = parseInt((this.countDown.endDate - startDate) / 1000);\r\n\r\n if(isNaN(timeRemaining)) {\r\n return;\r\n } else {\r\n if(timeRemaining > 0) {\r\n this.countDown.isActive = true;\r\n this.countDown.days = ('0' + parseInt(timeRemaining / 86400)).slice(-2);\r\n timeRemaining = timeRemaining % 86400;\r\n\r\n this.countDown.hours = ('0' + parseInt(timeRemaining / 3600)).slice(-2);\r\n\t\t\t\t\ttimeRemaining = (timeRemaining % 3600);\r\n\r\n\t\t\t\t\tthis.countDown.minutes = ('0' + parseInt(timeRemaining / 60)).slice(-2);\r\n\t\t\t\t\ttimeRemaining = (timeRemaining % 60);\r\n\r\n\t\t\t\t\tthis.countDown.seconds = ('0' + parseInt(timeRemaining)).slice(-2);\r\n } else {\r\n this.countDown.isActive = false;\r\n }\r\n }\r\n },\r\n toggleInterestList() {\r\n app.interestList.open = !app.interestList.open;\r\n if(window.innerWidth < 768) {\r\n if(app.interestList.open) {\r\n app.body.classList.add('no-scroll');\r\n } else {\r\n app.body.classList.remove('no-scroll');\r\n }\r\n }\r\n\r\n Vue.nextTick(() => {\r\n if (!this.interestList.draggable) {\r\n draggable.createDraggable(document.querySelector('.interests__list__drag'));\r\n this.interestList.draggable = true;\r\n }\r\n });\r\n },\r\n addPlot(plot) {\r\n //if (plot.PriceFrom == 0) {\r\n // plot.PriceFrom = 'n.n.b.'\r\n //}\r\n\r\n //check if in list\r\n // Add Plot to the InterestList\r\n if (this.plotNotInInterestList(plot) || !this.plotIsSold(plot)) {\r\n app.interestList.plots.push(plot);\r\n app.updateLocalStorage();\r\n // app.interestList.open = true;\r\n // this.toggleInterestList();\r\n\r\n if(!app.interestList.open) {\r\n app.interestList.open = true;\r\n if(window.innerWidth < 768) {\r\n app.body.classList.add('no-scroll');\r\n }\r\n }\r\n\r\n Vue.nextTick(() => {\r\n // if (!this.interestList.draggable) {\r\n draggable.createDraggable(document.querySelector('.interests__list__drag'));\r\n this.interestList.draggable = true;\r\n // }\r\n });\r\n }\r\n },\r\n removePlot(plot) {\r\n // Remove Plot from InterestList based on NboId\r\n app.interestList.plots = app.interestList.plots.filter((p) => p.NboId != plot.NboId);\r\n app.updateLocalStorage();\r\n if(app.interestList.plots.length === 0) {\r\n this.toggleInterestList();\r\n }\r\n\r\n draggable.createDraggable(document.querySelector('.interests__list__drag'));\r\n this.interestList.draggable = true;\r\n },\r\n removePlotQuestion(plot) {\r\n let comfirmMsg = document.querySelector('.js-interestlist-delete').dataset.deleteMsg;\r\n let answer = confirm(comfirmMsg);\r\n if(answer) {\r\n this.removePlot(plot);\r\n }\r\n },\r\n updateLocalStorage() {\r\n // Update LocalStorage with new InterestedPlots array\r\n if(app.interestList.plots.length > 0) {\r\n localStorage.setItem('interestedPlots', JSON.stringify(app.interestList.plots));\r\n } else {\r\n localStorage.removeItem('interestedPlots');\r\n }\r\n },\r\n plotNotInInterestList(plot) {\r\n const duplicatePlot = this.interestList.plots.filter((p) => {\r\n return p.NboId === plot.NboId;\r\n });\r\n\r\n if(duplicatePlot.length) {\r\n return false;\r\n }\r\n return true;\r\n },\r\n plotIsSold(plot) {\r\n if (plot.Status === \"IsSold\") {\r\n return true;\r\n }\r\n return false;\r\n },\r\n submitInterestedForm(e) {\r\n const interestedForm = e.target;\r\n if($(interestedForm).valid()) {\r\n localStorage.removeItem('interestedPlots');\r\n }\r\n },\r\n moveItem(e) {\r\n // this.interestList.sortableItems = document.querySelectorAll('.js-interestlist-row');\r\n let item = e.target.closest('.interestlist-sort__row');\r\n let elemTo = e.target.classList.contains('move-up') ? item.previousElementSibling : item.nextElementSibling;\r\n\r\n let fromIndex = parseInt(item.dataset.index, 10);\r\n let toIndex = e.target.classList.contains('move-up') ? fromIndex - 1 : fromIndex + 1;\r\n this.interestList.elemToIndex = toIndex;\r\n\r\n if (item !== null && elemTo !== null) {\r\n this.interestList.plots.splice(toIndex, 0, this.interestList.plots.splice(fromIndex, 1)[0]);\r\n }\r\n\r\n e.target.blur();\r\n },\r\n checkWindowWidth() {\r\n return (window.outerWidth < 1400 && !this.body.classList.contains('non-touch-device'));\r\n }\r\n }\r\n});"]}