{"version":3,"sources":["SiteSearch.js"],"names":["SiteSearch","itemsPerPage","SearchType","initialSearch","searchParams","renderPartial","me","this","InitSiteSearch","hasSearchTerm","_itemsPerPage","_renderPartial","isEmptyOrSpaces","alert","parseInt","GetSearchResults","then","result","console","log","$","html","htmlResults","pagination","items","totalResultCount","itemsOnPage","cssStyle","onPageClick","pageNumber","event","DoAjaxSearch","scrollToAnchorIDOffset","bind","onInit","resultCount","DoPagination","click","preventDefault","ClearSiteSearch","keypress","keyCode","which","document","getElementById","addEventListener","removeAttr","removeClass","prop","PopulateSiteSearch","fieldsObj","val","keywords","checkBoxesByValue","contentType","audience","health","services","CheckBoxesByValue","arrayOfValues","length","i","UncheckBoxesByValue","currentPage","$pagination","show","hide","pageNo","rootNode","Promise","resolve","reject","paramSource","Cookies","get","JSON","parse","fn","window","error","BuildSiteSearchParams","fetch","body","stringify","method","headers","Accept","response","json","catch","FilterToArray","collection","Array","j","push","currentResultPage","partialView","searchSpecificDocType","contentTypeCorM","rnv","undefined","dateFilterField","orderField","resultsPerPage","checks","people","nodeListToIds","startDate","endDate","set"],"mappings":"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","file":"../SiteSearch.js","sourcesContent":["var SiteSearch = {\r\n itemsPerPage: 12,\r\n SearchType: \"\",\r\n initialSearch: true,\r\n searchParams: null,\r\n renderPartial: null,\r\n\r\n me: this,\r\n\r\n // Init - Called from the script Utils.AddScript() tag in the template\r\n InitSiteSearch: function (hasSearchTerm, _itemsPerPage, _renderPartial) {\r\n this.SearchType = \"SiteSearch\";\r\n\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 if (hasSearchTerm === true) {\r\n this.initialSearch = false; // Prevent a keyword from the query string from being overwritten\r\n }\r\n\r\n var prom = this.GetSearchResults(1);\r\n prom.then(\r\n function (result) {\r\n console.log(\"Search results : %o\", result);\r\n\r\n $('#search__results').html(result.htmlResults);\r\n\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 this.DoAjaxSearch(pageNumber);\r\n scrollToAnchorIDOffset('topOfSearch'); ('topOfSearch');\r\n }.bind(this),\r\n onInit: function () {\r\n console.log('Init paging');\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 $('#siteSearchButtonSearch').click(function (event) {\r\n event.preventDefault();\r\n this.DoAjaxSearch(1);\r\n }.bind(this));\r\n $('#siteSearchButtonClear').click(function (event) {\r\n event.preventDefault();\r\n this.ClearSiteSearch();\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 // Add events for checkboxes\r\n $(\".search__aggregation input[type='checkbox']\").click(function () {\r\n this.DoAjaxSearch(1);\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\r\n ClearSiteSearch: function () {\r\n // Uncheck all the boxes\r\n //$('.search__aggregation input[type=checkbox]').prop('checked', false);\r\n $('.search__aggregation input[type=checkbox]').removeAttr('checked');\r\n $('.search__aggregation .search__aggregation-icon').removeClass('search__aggregation-icon--active');\r\n\r\n // Recheck the Content type boxes\r\n $('.search__aggregation input[type=checkbox][data-group=\"ContentType\"]').prop('checked', 'checked');\r\n\r\n this.DoAjaxSearch(1);\r\n },\r\n\r\n // The following groups are called by convention using searchType e.g. 'populate' + SearchType + '()'\r\n PopulateSiteSearch: function (fieldsObj) {\r\n console.log('Populate form from cookie object : %o', fieldsObj);\r\n $('#searchboxSite').val(fieldsObj.keywords);\r\n\r\n // Checked by default so in this case we need to disable all then apply the saved ones\r\n $('input[type=checkbox][data-group=\"ContentType\"]').prop('checked', '');\r\n this.checkBoxesByValue(fieldsObj.contentType);\r\n\r\n this.checkBoxesByValue(fieldsObj.audience);\r\n this.checkBoxesByValue(fieldsObj.health);\r\n this.checkBoxesByValue(fieldsObj.services);\r\n },\r\n\r\n // Takes an array of values and checks the corresponding boxes\r\n CheckBoxesByValue: function (arrayOfValues) {\r\n if (typeof arrayOfValues !== 'undefined') {\r\n if (arrayOfValues.length > 0) {\r\n for (var i = 0; i < arrayOfValues.length; i++) {\r\n $('input[type=checkbox][value=\"' + arrayOfValues[i] + '\"]').prop('checked', 'checked');\r\n }\r\n }\r\n }\r\n },\r\n\r\n // Some boxes are ticked by default and we need to untick\r\n UncheckBoxesByValue: function (arrayOfValues) {\r\n if (typeof arrayOfValues !== 'undefined') {\r\n if (arrayOfValues.length > 0) {\r\n for (var i = 0; i < arrayOfValues.length; i++) {\r\n $('input[type=checkbox][value=\"' + arrayOfValues[i] + '\"]').prop('checked', 'checked');\r\n }\r\n }\r\n }\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 DoAjaxSearch: function (pageNo) {\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\r\n $('#search__results').html(result.htmlResults);\r\n\r\n this.DoPagination(result.totalResultCount, pageNo);\r\n\r\n scrollToAnchorIDOffset('topOfSearch');\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, rootNode) {\r\n return new Promise(function (resolve, reject) {\r\n //var searchParams = null;\r\n var paramSource = \"\";\r\n\r\n // If we have a cookie use that object to search and populate the form\r\n if (this.initialSearch === \"disabled\" && Cookies.get(SearchType)) {\r\n // Get from cookie\r\n paramSource = \"cookie\";\r\n searchParams = JSON.parse(Cookies.get(SearchType));\r\n // default\r\n searchParams.rootNode = rootNode;\r\n var fn = window['this.populate' + SearchType];\r\n if (typeof fn === \"function\") {\r\n fn(searchParams);\r\n } else {\r\n console.error('Missing populate function %o so can\\'t populate form', 'populate' + SearchType);\r\n }\r\n } else {\r\n // Default\r\n paramSource = \"fields\";\r\n searchParams = this.BuildSiteSearchParams(pageNo);\r\n }\r\n\r\n console.log('GetSearchResults with %o searchParams : %o', paramSource, searchParams);\r\n this.initialSearch = false;\r\n\r\n fetch('/umbraco/surface/siteSearch/DoSiteSearchView', {\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 //console.log('response : %o', response.json());\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 FilterToArray: function (collection) {\r\n var result = new Array();\r\n var length = collection.length;\r\n\r\n for (var j = 0; j < length; j++) {\r\n result.push($(collection[j]).val());\r\n }\r\n\r\n return result;\r\n },\r\n\r\n BuildSiteSearchParams: function (pageNo) {\r\n searchParams = {};\r\n searchParams.currentResultPage = pageNo;\r\n\r\n searchParams.partialView = this.renderPartial;\r\n\r\n // Keywords\r\n if ($('#searchboxSite').val() !== '') {\r\n searchParams.keywords = $('#searchboxSite').val();\r\n }\r\n\r\n // Specific doc type(s) - Can be used to create a news or event only listing\r\n if ($('#searchSpecificDocType').val() !== '') {\r\n searchParams.searchSpecificDocType = $('#searchSpecificDocType').val();\r\n }\r\n\r\n // content type : \"content\" or \"media\" - (empty = both)\r\n if ($('#searchContentType').val() !== null && $('#searchContentType').val() !== '') {\r\n searchParams.contentTypeCorM = $('#searchContentType').val();\r\n }\r\n\r\n // Root node restriction . e.g. publications only look in the archive folder\r\n var rnv = $('#rootNode').val();\r\n if (rnv !== null && rnv !== '' && rnv !== undefined) {\r\n searchParams.rootNode = $('#rootNode').val();\r\n }\r\n\r\n // Date filter target field\r\n if ($('#dateFilterField').val() !== null && $('#dateFilterField').val() !== '') {\r\n searchParams.dateFilterField = $('#dateFilterField').val();\r\n }\r\n\r\n // Results order\r\n if ($('#orderField').val() !== null && $('#orderField').val() !== '') {\r\n searchParams.orderField = $('#orderField').val();\r\n }\r\n\r\n // Results per page\r\n //if ($('#resultsPerPage').val() !== null && $('#resultsPerPage').val() !== '') {\r\n // searchParams.resultsPerPage = $('#resultsPerPage').val();\r\n //}\r\n searchParams.resultsPerPage = this.itemsPerPage;\r\n\r\n /// =================================\r\n /// Custom taxonomy\r\n /// =================================\r\n\r\n // People\r\n var checks = $(\"input[type='checkbox'][data-group='people']\");\r\n if (checks.length) {\r\n searchParams.people = nodeListToIds(checks);\r\n }\r\n\r\n if (!isEmptyOrSpaces($('#startDate').val()) && !isEmptyOrSpaces($('#endDate').val())) {\r\n searchParams.startDate = $('#startDate').val();\r\n searchParams.endDate = $('#endDate').val();\r\n }\r\n\r\n // Save a cookie\r\n if (this.SearchType === \"\") {\r\n console.log('Search type not set so no cookie name available');\r\n } else {\r\n console.log('Setting %o cookie to %o', this.SearchType, searchParams);\r\n Cookies.set(this.SearchType, searchParams, {\r\n //expires: 1 - Session cookie\r\n });\r\n }\r\n\r\n return searchParams;\r\n }\r\n}"]}