{"version":3,"sources":["journey-results.js"],"names":["journeyResults","$","checkPageFields","params","isArray","i","each","prop","toggleQueryListItem","pageElement","updateQuery","query","map","this","attr","get","fuelTypes","doors","split","transmissions","element","show","$itemTemplate","clone","$li","empty","updateSearchResults","searchType","updateModelSearchResults","length","addClass","$checked","queryString","index","value","elements","filter","slice","removeClass","vehicles","$carsAvailableCount","text","vehicle","$vehicleTemplate","updateAPISearchResults","find","manufacturerName","rangeName","modelName","derivativeName","done","fuelTypeName","transmissionName","$journeyResultsList","html","mrp","url","removeAttr","console","lowerPrice","upperPrice","bodyStyles","engineSizes","init","window","location","search","initialiseQueryParamsFromUrl","deparam","replace","on","data","jQuery"],"mappings":"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","file":"journey-results.min.js","sourcesContent":["// This module manages scripted events for site aesthetics.\r\nvar journeyResults = (function ($) {\r\n \"use strict\";\r\n\r\n const $journeyResultsList = $(\"#journey-results-list\");\r\n const $carsAvailableCount = $(\"#cars-available-count\");\r\n const $itemTemplate = $('#result-item-template');\r\n\r\n let searchType = $('#filter-header').attr(\"data-filter-type\");\r\n let queryString = \"\";\r\n\r\n let query = {\r\n lowerPrice: 0,\r\n upperPrice: 0,\r\n bodyStyles: [],\r\n fuelTypes: [],\r\n transmissions: [],\r\n engineSizes: [],\r\n doors: [],\r\n includeVehicleSiteContentDetails: true\r\n };\r\n\r\n function initialiseQueryParamsFromUrl() {\r\n var url = window.location.search;\r\n url = url.replace(\"?\", '');\r\n $.deparam(url);\r\n query = $.deparam(url);\r\n\r\n checkPageFields(query.fuelTypes);\r\n checkPageFields(query.transmissions);\r\n checkPageFields(query.engineSizes);\r\n checkPageFields(query.doors);\r\n }\r\n\r\n function checkPageFields(params) {\r\n if ($.isArray(params)) {\r\n $.each(params, function (i) {\r\n var pageElement = $(\"#\" + params[i]);\r\n pageElement.prop('checked', true);\r\n toggleQueryListItem(pageElement, true);\r\n });\r\n }\r\n else {\r\n var pageElement = $(\"#\" + params);\r\n pageElement.prop('checked', true);\r\n toggleQueryListItem(pageElement, true);\r\n }\r\n }\r\n\r\n function updateQuery() {\r\n query.fuelTypes = $(\"input[type='checkbox'][data-fuel-type]:checked\").map(function () { return $(this).attr(\"id\"); }).get();\r\n query.engineSizes = $(\"input[type='checkbox'][data-engine-size]:checked\").map(function () { return $(this).attr(\"id\"); }).get();\r\n query.doors = $(\"input[type='checkbox'][data-doors]:checked\").map(function () { return $(this).attr(\"id\").split(\"-\")[0]; }).get();\r\n query.transmissions = $(\"input[type='checkbox'][data-transmission]:checked\").map(function () { return $(this).attr(\"id\"); }).get();\r\n }\r\n\r\n function updateAPISearchResults() {\r\n jQuery.get(\"umbraco/api/vehicleSearch/getDerivatives\", query).done(function (vehicles) {\r\n $carsAvailableCount.text(vehicles.length);\r\n $journeyResultsList.empty();\r\n if (vehicles.length > 0) {\r\n for (let i = 0; i < vehicles.length; i++) {\r\n var vehicle = vehicles[i];\r\n let $vehicleTemplate = $itemTemplate.clone();\r\n\r\n $vehicleTemplate.find('.js-derivative-name').text(`${vehicle.manufacturerName} ${vehicle.rangeName} ${vehicle.modelName} ${vehicle.derivativeName}`);\r\n $vehicleTemplate.find('.js-derivative-fuel').text(vehicle.fuelTypeName);\r\n $vehicleTemplate.find('.js-derivative-transmission').text(vehicle.transmissionName);\r\n $vehicleTemplate.find('.js-derivative-mrp').html(vehicle.mrp >= 5000 ? `£${vehicle.mrp}` : 'Price coming soon');\r\n $vehicleTemplate.find('.js-derivative-url').attr('href', vehicle.url);\r\n $vehicleTemplate.removeAttr('style');\r\n $vehicleTemplate.removeAttr('id');\r\n\r\n if (vehicle.mrp < 1000) {\r\n console.log(vehicle);\r\n }\r\n\r\n $journeyResultsList.append($vehicleTemplate);\r\n }\r\n } else {\r\n var $li = $itemTemplate.clone();\r\n $li.empty();\r\n $li.text('Nothing found...')\r\n $journeyResultsList.append($li);\r\n }\r\n });\r\n }\r\n\r\n function toggleQueryListItem(element, show) {\r\n $(\"[data-query-item='\" + $(element).attr(\"id\") + \"']\")\r\n .parent(\".list__item\")\r\n .toggleClass(\"hidden-xs-up\", !show);\r\n }\r\n\r\n function updateSearchResults() {\r\n if (searchType === \"model\") {\r\n updateModelSearchResults();\r\n }\r\n else {\r\n updateAPISearchResults();\r\n }\r\n }\r\n\r\n function updateModelSearchResults() {\r\n\r\n // Check if any are checked\r\n var $checked = $('input[type=\"checkbox\"]:checked');\r\n\r\n if ($checked.length) {\r\n\r\n // Hide all\r\n $('.filter__item').addClass('hidden-xs-up');\r\n\r\n // Get all the result items\r\n var elements = $('.filter__item');\r\n\r\n // Show fuel filters\r\n if (query.fuelTypes.length) {\r\n queryString = \"\";\r\n $.each(query.fuelTypes, function (index, value) {\r\n queryString += '[data-fuel-type=\"' + value + '\"],';\r\n });\r\n elements = elements.filter(queryString.slice(0, -1));\r\n }\r\n\r\n // Show door filters\r\n if (query.doors.length) {\r\n queryString = \"\";\r\n $.each(query.doors, function (index, value) {\r\n queryString += '[data-doors-number=\"' + value + '\"],';\r\n });\r\n elements = elements.filter(queryString.slice(0, -1));\r\n }\r\n\r\n // Show transmissions filters\r\n if (query.transmissions.length) {\r\n queryString = \"\";\r\n $.each(query.transmissions, function (index, value) {\r\n queryString += '[data-transmission=\"' + value + '\"],';\r\n });\r\n elements = elements.filter(queryString.slice(0, -1));\r\n }\r\n\r\n // Only show the results from the filters\r\n elements.removeClass('hidden-xs-up');\r\n\r\n } else {\r\n\r\n // No filter show all\r\n $('.filter__item').removeClass('hidden-xs-up');\r\n }\r\n\r\n }\r\n\r\n return {\r\n init: () => {\r\n\r\n initialiseQueryParamsFromUrl();\r\n updateSearchResults();\r\n $(\"[data-engine-size], [data-fuel-type], [data-transmission], [data-doors]\").on(\"change\", function () {\r\n toggleQueryListItem($(this), $(this).prop(\"checked\"));\r\n updateQuery();\r\n updateSearchResults();\r\n });\r\n\r\n $(\"[data-query-item]\").on(\"click\", function () {\r\n $(this).parent(\".list__item\").addClass(\"hidden-xs-up\");\r\n $(\"#\" + $(this).data(\"query-item\")).prop(\"checked\", false);\r\n updateQuery();\r\n updateSearchResults();\r\n });\r\n }\r\n };\r\n\r\n}(jQuery));\r\n\r\njourneyResults.init();"]}