{"version":3,"file":"timetableWithSearch.js","names":["TimeTableWithSearch","t","target","routeElement","querySelector","fromText","toText","dateText","routeLargeSelect","dateElement","routeSelect","init","initRoutes","initEvents","array","id","find","item","Id","getDefaultRoute","then","route","mapRoutes","_","loadCrossings","LargeSelectList","dispatchEvent","Event","addEventListener","evt","innerHTML","options","selectedIndex","dataset","fromValue","toValue","locations","selectedRoute","get","routes","filter","findById","DepartureId","DestinationId","map","value","Departure","Destination","Value","Selected","data","location","DeparturePoint","departureId","destinationId","year","month","day","getHtml","closest","date","Date","moment","isSameOrAfter","undefined","format","classList","add","tableBody","loader","style","departure","split","destination","pop","dateNumber","getDate","getMonth","getFullYear","getCrossings","html","remove","cb","context","text","Name","dataValue","option","Option","appendChild","getDepartureLocations","getRoutes","forEachAsync","addRouteOption","x","uri","window","fetch","response","json","document","container"],"sources":["../timetableWithSearch.js"],"sourcesContent":["TimeTableWithSearch = class {\r\n constructor(t) {\r\n this.target = t;\r\n this.routeElement = this.target.querySelector(\"[name=route]\");\r\n this.fromText = this.target.querySelector(\"span[data-route-from-text]\");\r\n this.toText = this.target.querySelector(\"span[data-route-to-text]\");\r\n this.dateText = this.target.querySelector(\"span[data-date-text]\");\r\n this.routeLargeSelect = this.target.querySelector(\"[data-select-type=list]\");\r\n this.dateElement = this.target.querySelector(\"input[name=outboundDate]\");\r\n this.routeSelect = {};\r\n\r\n this.init();\r\n }\r\n \r\n init() { \r\n this.initRoutes();\r\n this.initEvents();\r\n }\r\n \r\n findById(array, id) {\r\n return array.find(item => item.Id === id);\r\n }\r\n\r\n initRoutes() {\r\n this.getDefaultRoute()\r\n .then(route => this.mapRoutes(route)\r\n .then(_ => this.loadCrossings(route)))\r\n .then(_ => {\r\n this.routeSelect = new LargeSelectList(this.routeLargeSelect);\r\n })\r\n .then(_ => this.routeElement.dispatchEvent(new Event(\"change\")));\r\n }\r\n\r\n initEvents() {\r\n this.routeElement.addEventListener(\"change\", (evt) => {\r\n this.fromText.innerHTML = evt.target.options[evt.target.selectedIndex].dataset.fromValue;\r\n this.toText.innerHTML = evt.target.options[evt.target.selectedIndex].dataset.toValue;\r\n \r\n this.loadCrossings();\r\n });\r\n \r\n this.dateElement.addEventListener(\"change\", (evt) => {\r\n \r\n this.loadCrossings(evt);\r\n });\r\n \r\n }\r\n \r\n getRoutes(locations, selectedRoute) {\r\n return this.get(\"/api/data/routes\")\r\n .then(routes => {\r\n return routes\r\n .filter(route => this.findById(locations, route.DepartureId))\r\n .filter(route => this.findById(locations, route.DestinationId))\r\n .map(route => {\r\n let value = `${route.DepartureId},${route.DestinationId}`;\r\n\r\n return {\r\n Departure: this.findById(locations, route.DepartureId),\r\n Destination: this.findById(locations, route.DestinationId),\r\n Value: value,\r\n Selected: value === selectedRoute\r\n };\r\n });\r\n });\r\n }\r\n\r\n getDefaultRoute() {\r\n return this.get(\"/api/data/variables/B2CDefaultRoute\");\r\n }\r\n\r\n getLocation(id) {\r\n return this.get(`/api/data/Location/${id}`);\r\n }\r\n\r\n getDepartureLocations() {\r\n return this.get(\"/api/data/DeparturePoints\")\r\n .then(data => data.filter(location => location.DeparturePoint));\r\n }\r\n \r\n getCrossings(departureId, destinationId, year, month, day){\r\n return this.getHtml(`/api/data/TimetableCrossings/${year}/${month}/${day}/${departureId}/${destinationId}`);\r\n }\r\n\r\n loadCrossings(evt){\r\n const dateElement = this.dateElement.closest(\".date-time-picker--date-only\");\r\n const date = new Date(this.dateElement.value);\r\n if(moment(date).isSameOrAfter(moment(new Date()),\"day\")){\r\n if(evt !== undefined && evt.target !== undefined){\r\n \r\n this.dateText.innerHTML = new moment(evt.target.value).format(\"Do MMMM YYYY\");\r\n }\r\n const routeElement = this.routeLargeSelect.closest(\".large-select-list\");\r\n dateElement.classList.add(\"disabled\");\r\n routeElement.classList.add(\"disabled\");\r\n\r\n const tableBody = this.target.querySelector(\"[data-timetable]\");\r\n const loader = this.target.querySelector(\"#processingwait\");\r\n\r\n tableBody.innerHTML = \"\";\r\n loader.style = \"\";\r\n\r\n const route = this.routeElement.value;\r\n\r\n const departure = route.split(',')[0];\r\n const destination = route.split(',').pop();\r\n\r\n if (departure && destination && date){\r\n const dateNumber = date.getDate();\r\n const month = date.getMonth() + 1;\r\n const year = date.getFullYear();\r\n return this.getCrossings(departure, destination, year, month, dateNumber)\r\n .then(html => {\r\n tableBody.innerHTML = html;\r\n loader.style = \"display:none;\"\r\n dateElement.classList.remove(\"disabled\");\r\n routeElement.classList.remove(\"disabled\");\r\n });\r\n }\r\n }\r\n \r\n }\r\n\r\n addRouteOption(route, cb, context = this) {\r\n let text = `${route.Departure.Name} to ${route.Destination.Name}`;\r\n let dataValue = `${route.Departure.Name} ${\r\n route.Destination.Name\r\n }`;\r\n\r\n let option = new Option(text, route.Value, route.Selected);\r\n\r\n if (route.Selected) {\r\n context.routeElement.value = route.Value;\r\n }\r\n\r\n option.dataset[\"textvalue\"] = dataValue;\r\n \r\n option.dataset[\"fromValue\"] = route.Departure.Name;\r\n option.dataset[\"toValue\"] = route.Destination.Name;\r\n\r\n context.routeElement.appendChild(option);\r\n cb();\r\n }\r\n\r\n mapRoutes(selectedRoute) {\r\n return this.getDepartureLocations()\r\n .then(locations => this.getRoutes(locations, selectedRoute))\r\n .then(routes => routes.forEachAsync(this.addRouteOption, this)\r\n .then(_ => (this.routeElement.value = routes.find(x => x.Selected).Value))\r\n );\r\n }\r\n \r\n get(uri) {\r\n return window.fetch(uri)\r\n .then(response => response.json());\r\n } \r\n \r\n getHtml(uri) {\r\n return window.fetch(uri)\r\n .then(response => response.text());\r\n }\r\n};\r\n\r\ndocument.addEventListener(\"DOMContentLoaded\",\r\n function () {\r\n const container = document.querySelector(\"div[data-timetable-container]\");\r\n \r\n if (container){\r\n new TimeTableWithSearch(container);\r\n }\r\n });"],"mappings":"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"}