{"version":3,"file":"../courseSearch.js","names":["CourseSearch","itemsPerPageitemsPerPage","searchParams","renderPartial","me","this","InitCourseSearch","_itemsPerPage","_renderPartial","isEmptyOrSpaces","alert","parseInt","itemsPerPage","RepopulateFiltersFromUrl","GetSearchResults","then","result","$","html","htmlResults","pagination","items","totalResultCount","itemsOnPage","cssStyle","onPageClick","pageNumber","event","preventDefault","DoAjaxSearch","scrollToAnchorIDOffset","bind","onInit","resultCount","DoPagination","click","ClearSiteSearch","keypress","keyCode","which","document","getElementById","addEventListener","is","val","value","inputId","target","id","inputNm","name","hiddenInput","split","hiddenInputValues","includes","push","filter","join","filterTrigger","filters","slideUp","css","hide","slideDown","window","urlParams","URLSearchParams","location","search","has","get","subjects","forEach","subject","prop","modes","mode","campuses","campus","levels","level","removeClass","currentPage","$pagination","console","log","show","pageNo","NoTrack","searchBox","subjectArea","studyMode","studyLocation","scqfLevel","availability","each","attr","UpdateParams","Promise","resolve","reject","BuildSiteSearchParams","fetch","body","JSON","stringify","method","headers","Accept","response","json","catch","error","currentResultPage","partialView","keywords","available","resultsPerPage","url","URL","set","history","pushState"],"sources":["courseSearch.js"],"sourcesContent":["var CourseSearch = { \r\n\r\n itemsPerPageitemsPerPage: 12,\r\n searchParams: null,\r\n renderPartial: null,\r\n me: this,\r\n\r\n // Init - Called from the script Utils.AddScript() tag in the template\r\n InitCourseSearch : function (_itemsPerPage, _renderPartial) {\r\n if (isEmptyOrSpaces(_renderPartial)) {\r\n alert('Need to pass in the partial name that will render the result');\r\n return;\r\n }\r\n this.renderPartial = _renderPartial;\r\n\r\n if (_itemsPerPage !== undefined && _itemsPerPage !== null && parseInt(_itemsPerPage) > 0) {\r\n this.itemsPerPage = parseInt(_itemsPerPage);\r\n }\r\n\r\n // Repopulate / Recheck the form fields on Init based on query strings\r\n this.RepopulateFiltersFromUrl();\r\n \r\n // Then do initial search, which should get the same results.\r\n var prom = this.GetSearchResults(1);\r\n prom.then(\r\n function (result) {\r\n $('#search__results').html(result.htmlResults);\r\n $('#pagination_search').pagination({\r\n items: result.totalResultCount,\r\n itemsOnPage: this.itemsPerPage,\r\n cssStyle: 'light-theme',\r\n onPageClick: function (pageNumber, event) {\r\n event.preventDefault(); // Prevent the default behaviour of adding the page to the url, which causes headaches with popstate event. \r\n //(May need to revisit this if we want to track pagination in the url but would mean moving the AjaxSearch logic to the popstate event and having to track the pagenumber there based off the hash?)\r\n this.DoAjaxSearch(pageNumber, true); // Pagination will not push to history.\r\n scrollToAnchorIDOffset('topOfSearch'); ('topOfSearch');\r\n }.bind(this),\r\n onInit: function () {\r\n var resultCount = 0;\r\n if (result.totalResultCount !== null) {\r\n resultCount = result.totalResultCount;\r\n }\r\n this.DoPagination(resultCount, 1);\r\n }.bind(this)\r\n });\r\n }.bind(this)\r\n );\r\n\r\n // Add events for search box\r\n\r\n $('#siteSearchButtonClear').click(function (event) {\r\n event.preventDefault();\r\n this.ClearSiteSearch();\r\n this.DoAjaxSearch(1);\r\n }.bind(this));\r\n\r\n $('#searchboxSite').keypress(function (event) {\r\n var keycode = event.keyCode ? event.keyCode : event.which;\r\n if (keycode === '13') {\r\n this.DoAjaxSearch(1);\r\n }\r\n }.bind(this));\r\n\r\n document.getElementById(\"searchboxSite\").addEventListener(\"search\", function (event) {\r\n this.DoAjaxSearch(1);\r\n }.bind(this));\r\n\r\n $('#siteSearchButtonSearch').click(function (event) {\r\n event.preventDefault();\r\n this.DoAjaxSearch(1);\r\n }.bind(this));\r\n\r\n // Add events for checkboxes\r\n $('#availability-filter').click(function (event) {\r\n if ($(this).is(':checked')) {\r\n $('#availability-filter').val(\"1\");\r\n document.getElementById('hsb-avail').value = 1;\r\n this.DoAjaxSearch(1);\r\n }\r\n else {\r\n $('#availability-filter').val(\"0\");\r\n document.getElementById('hsb-avail').value = 0;\r\n this.DoAjaxSearch(1);\r\n }\r\n }.bind(this));\r\n\r\n $(\".search__aggregation input[type='checkbox']\").click(function (event) {\r\n //Get the input ID and update the corresponding hidden input value:\r\n var inputId = event.target.id;\r\n var inputNm = event.target.name;\r\n\r\n if (inputId !== \"availability-filter\") {\r\n //The hidden input is one of the following: hsb-subject / hsb-mode / hsb-campus / hsb-level\r\n var hiddenInput = document.getElementById('hsb-' + inputId.split('checkbox_')[0]);\r\n var hiddenInputValues = hiddenInput.value ? hiddenInput.value.split(',') : [];\r\n if ($(event.target).is(':checked')) {\r\n if (!hiddenInputValues.includes(inputNm)) {\r\n hiddenInputValues.push(inputNm);\r\n }\r\n } else {\r\n hiddenInputValues = hiddenInputValues.filter(function (value) {\r\n return value !== inputNm;\r\n });\r\n }\r\n\r\n hiddenInput.value = hiddenInputValues.join(',');\r\n this.DoAjaxSearch(1);\r\n }\r\n }.bind(this));\r\n\r\n // Filter expand mobile\r\n var filterTrigger = $('.search__filter-button');\r\n var filters = $('.search__filters');\r\n \r\n filterTrigger.click(function () {\r\n if (filters.is(':visible')) {\r\n filters.slideUp();\r\n } else {\r\n filters.css('display', 'flex').hide().slideDown();\r\n }\r\n }.bind(this));\r\n\r\n // Listen for the popstate event to handle browser navigation\r\n window.addEventListener('popstate', function () {\r\n this.ClearSiteSearch(); // Clear filters...\r\n this.RepopulateFiltersFromUrl(); // Repopulate filters...\r\n this.DoAjaxSearch(1, true); // Get the results as they were when pushed to history\r\n }.bind(this));\r\n },\r\n\r\n RepopulateFiltersFromUrl: function () {\r\n var urlParams = new URLSearchParams(window.location.search);\r\n\r\n if (urlParams.has('query')) {\r\n $('#searchboxSite').val(urlParams.get('query'));\r\n }\r\n if (urlParams.has('subject')) {\r\n var subjects = urlParams.get('subject').split(',');\r\n subjects.forEach(function (subject) {\r\n $(\"input[name='\" + subject + \"'][id^='subjectcheckbox_']\").prop('checked', true);\r\n document.getElementById('hsb-subject').value = subjects.join(',');\r\n });\r\n }\r\n if (urlParams.has('mode')) {\r\n var modes = urlParams.get('mode').split(',');\r\n modes.forEach(function (mode) {\r\n $(\"input[name='\" + mode + \"'][id^='modecheckbox_']\").prop('checked', true);\r\n document.getElementById('hsb-mode').value = modes.join(',');\r\n });\r\n }\r\n if (urlParams.has('campus')) {\r\n var campuses = urlParams.get('campus').split(',');\r\n campuses.forEach(function (campus) {\r\n $(\"input[name='\" + campus + \"'][id^='campuscheckbox_']\").prop('checked', true);\r\n document.getElementById('hsb-campus').value = campuses.join(',');\r\n });\r\n }\r\n if (urlParams.has('level')) {\r\n var levels = urlParams.get('level').split(',');\r\n levels.forEach(function (level) {\r\n $(\"input[name='\" + level + \"'][id^='levelcheckbox_']\").prop('checked', true);\r\n document.getElementById('hsb-level').value = levels.join(',');\r\n });\r\n }\r\n if (urlParams.has('available') && urlParams.get('available') === '1') {\r\n $('#availability-filter').prop('checked', true);\r\n document.getElementById('hsb-avail').value = 1;\r\n } else {\r\n $('#availability-filter').prop('checked', false);\r\n document.getElementById('hsb-avail').value = 0;\r\n }\r\n },\r\n\r\n ClearSiteSearch : function () {\r\n // Clear all the filters\r\n $('.search__aggregation input[type=checkbox]').prop('checked', false);\r\n $('.search__aggregation .search__aggregation-icon').removeClass('search__aggregation-icon--active');\r\n // Clear hidden input fields associated with checkboxes\r\n $('#hsb-subject').val('');\r\n $('#hsb-mode').val('');\r\n $('#hsb-campus').val('');\r\n $('#hsb-level').val('');\r\n $('#hsb-avail').val('');\r\n $('#searchboxSite').val(''); // This too\r\n },\r\n\r\n DoPagination : function (resultCount, currentPage) {\r\n var $pagination = $('#pagination_search');\r\n\r\n console.log('Page results count : %o - Per page : %o', resultCount, this.itemsPerPage);\r\n\r\n if (resultCount !== null && resultCount > this.itemsPerPage) {\r\n $pagination.pagination('destroy');\r\n $pagination.pagination('updateItems', resultCount);\r\n $pagination.pagination('drawPage', currentPage);\r\n $pagination.show();\r\n } else {\r\n $pagination.hide();\r\n }\r\n },\r\n\r\n DoAjaxSearch: function (pageNo, NoTrack) {\r\n // Update url params\r\n var searchBox = $('#searchboxSite').val();\r\n var subjectArea = [];\r\n var studyMode = [];\r\n var studyLocation = [];\r\n var scqfLevel = [];\r\n var availability = $('#availability-filter').is(':checked') ? \"1\" : \"0\";\r\n\r\n $(\"input[id^='subjectcheckbox_']:checked\").each(function () {\r\n subjectArea.push($(this).attr('name'));\r\n });\r\n\r\n $(\"input[id^='modecheckbox_']:checked\").each(function () {\r\n studyMode.push($(this).attr('name'));\r\n });\r\n\r\n $(\"input[id^='campuscheckbox_']:checked\").each(function () {\r\n studyLocation.push($(this).attr('name'));\r\n });\r\n\r\n $(\"input[id^='levelcheckbox_']:checked\").each(function () {\r\n scqfLevel.push($(this).attr('name'));\r\n });\r\n if (NoTrack) {\r\n // Do not update url params\r\n } else {\r\n this.UpdateParams(searchBox, subjectArea, studyMode, studyLocation, scqfLevel, availability);\r\n }\r\n\r\n var prom = this.GetSearchResults(pageNo);\r\n prom.then(\r\n function (result) {\r\n console.log(\"Processing ajax results : %o\", result);\r\n $('#search__results').html(result.htmlResults);\r\n this.DoPagination(result.totalResultCount, pageNo);\r\n }.bind(this)\r\n );\r\n },\r\n\r\n // Do our ajax call to fetch the results\r\n GetSearchResults : function (pageNo) {\r\n return new Promise(function (resolve, reject) {\r\n var paramSource = \"\";\r\n paramSource = \"fields\";\r\n searchParams = this.BuildSiteSearchParams(pageNo);\r\n\r\n console.log('GetSearchResults with %o searchParams : %o', paramSource, searchParams);\r\n\r\n fetch('/umbraco/surface/courseSearch/DoCourseSearchView', {\r\n body: JSON.stringify(searchParams), method: 'post', headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' },\r\n })\r\n .then(function (response) {\r\n resolve(response.json());\r\n })\r\n .catch(error => {\r\n console.log('Failed', error);\r\n reject(error);\r\n });\r\n }.bind(this));\r\n },\r\n\r\n BuildSiteSearchParams: function (pageNo) {\r\n searchParams = {};\r\n searchParams.currentResultPage = pageNo;\r\n searchParams.partialView = this.renderPartial;\r\n\r\n // Query\r\n if ($('#searchboxSite').val() !== '') {\r\n searchParams.keywords = $('#searchboxSite').val();\r\n }\r\n\r\n // Subjects (collect checked subjects)\r\n searchParams.subjects = [];\r\n $(\"input[id^='subjectcheckbox_']:checked\").each(function () {\r\n searchParams.subjects.push($(this).attr('name'));\r\n });\r\n\r\n // Modes (collect checked modes)\r\n searchParams.modes = [];\r\n $(\"input[id^='modecheckbox_']:checked\").each(function () {\r\n searchParams.modes.push($(this).attr('name'));\r\n });\r\n\r\n // Campuses (collect checked campuses)\r\n searchParams.campuses = [];\r\n $(\"input[id^='campuscheckbox_']:checked\").each(function () {\r\n searchParams.campuses.push($(this).attr('name'));\r\n });\r\n\r\n // Levels (collect checked levels)\r\n searchParams.levels = [];\r\n $(\"input[id^='levelcheckbox_']:checked\").each(function () {\r\n searchParams.levels.push($(this).attr('name'));\r\n });\r\n\r\n // Availability filter (checkbox for available courses only)\r\n if ($('#availability-filter').is(':checked')) {\r\n searchParams.available = true;\r\n }\r\n\r\n searchParams.resultsPerPage = this.itemsPerPage;\r\n return searchParams;\r\n },\r\n\r\n UpdateParams: function (searchBox, subjectArea, studyMode, studyLocation, scqfLevel, availability)\r\n {\r\n var url = new URL(window.location);\r\n url.searchParams.set(\"query\", searchBox);\r\n url.searchParams.set(\"subject\", subjectArea.join(','));\r\n url.searchParams.set(\"mode\", studyMode.join(','));\r\n url.searchParams.set(\"campus\", studyLocation.join(','));\r\n url.searchParams.set(\"level\", scqfLevel.join(','));\r\n url.searchParams.set(\"available\", availability);\r\n console.log('UpdateParam');\r\n history.pushState(null, '', url);\r\n }\r\n}"],"mappings":"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"}