{ "version": 3, "sources": [ "../../../../../Foundation/JavascriptCommon/code/scripts/common/urlUtils.js", "LearningLibrarySearchResults/searchCount.js", "../../../../../Foundation/JavascriptCommon/code/scripts/common/formUtils.js", "LearningLibrarySearchResults/learningLibrarySearchResults.js", "LearningLibrarySearchResults/main.js" ], "names": [], "mappings": "AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AC1KA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AChEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,ACrHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AClOA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA", "file": "LearningLibrarySearchResults.js", "sourcesContent": [ "define('common/urlUtils',[\r\n],\r\n function () {\r\n\r\n // Takes the url and parses the query string parameters out of it.\r\n // Returns the parameters and their string values as object { paramName1: value1, paramName2: value2, ...},\r\n // or an empty object in case there are no parameters in url.\r\n function parseQueryParamsFromUrl(url) {\r\n url = url ? url : window.location.search; // default url parameter if not set\r\n // take just the query search part of url (lose the leading question mark)\r\n var query = decomposeUrl(url).search;\r\n if (query.indexOf(\"?\") >= 0) query = query.substring(query.indexOf(\"?\") + 1);\r\n var urlParams = {},\r\n match,\r\n search = /([^&=]+)=?([^&]*)/g,\r\n decode = function (s) { return decodeURI(decodeURIComponent(s)); };\r\n\r\n while (match = search.exec(query))\r\n urlParams[decode(match[1])] = decode(match[2]);\r\n\r\n return urlParams;\r\n }\r\n\r\n // Takes the url, decomposes it into three components: path, search, hash,\r\n // and returns those three components in an object.\r\n // When searching for hash string which is directly after path (without search parameters) we're ignoring '#/'.\r\n // That is not a hash, that is Angular routing and it's actually part of the path.\r\n function decomposeUrl(url) {\r\n var path = '';\r\n var search = '';\r\n var hash = '';\r\n if (url.indexOf('?') >= 0) {\r\n // there is search string already in the url\r\n path = url.substring(0, url.indexOf('?'));\r\n search = url.substring(url.indexOf('?'));\r\n if (search.indexOf('#') >= 0) {\r\n // there is also a hash string in the url\r\n hash = search.substring(search.indexOf('#'));\r\n search = search.substring(0, search.indexOf('#'));\r\n }\r\n } else if (url.indexOf('#') >= 0 && url.indexOf('#') != url.indexOf('#/')) {\r\n // no search string, but there is hash string\r\n path = url.substring(0, url.indexOf('#'));\r\n hash = url.substring(url.indexOf('#'));\r\n } else {\r\n // no search string, no hash string\r\n path = url ? url : '';\r\n }\r\n return {\r\n path: path, // path also includes the protocol and hostname (if they existed in the given url)\r\n search: search,\r\n hash: hash\r\n }\r\n }\r\n\r\n // Adds a new query string parameter into the given url.\r\n // Returns the newly constructed url.\r\n function putParamIntoUrl(paramName, paramValue, url) {\r\n // first we'll split the url into 3 components\r\n var urlComp = decomposeUrl(url);\r\n // add the new query string parameter into search string\r\n urlComp.search = (urlComp.search ? urlComp.search + '&' : '?') + paramName + '=' + encodeURIComponent(paramValue);\r\n // return the new url\r\n return urlComp.path + urlComp.search + urlComp.hash;\r\n }\r\n\r\n // Reads the specified query string parameter from a given url.\r\n // Returns the value of that parameter (a string value). \r\n function getParamFromUrl(paramName, url) {\r\n return parseQueryParamsFromUrl(url)[paramName];\r\n }\r\n\r\n // Modifies the given DOM element's href property, or the current page's URL (if\r\n // no domElement has been given) by adding new query string parameter with the\r\n // given value. \r\n function pushParamIntoLink(paramName, paramValue, domElement) {\r\n var url;\r\n if (domElement) url = $(domElement).attr('href'); // url from DOM element\r\n else url = window.location.href; // current page url\r\n\r\n var params = parseQueryParamsFromUrl(url);\r\n\r\n // making sure that we find the parameter no matter how it's written (case insensitive)\r\n for (var p in params) {\r\n if (p.toLowerCase() === paramName.toLowerCase()) {\r\n paramName = p;\r\n break;\r\n }\r\n }\r\n\r\n params[paramName] = paramValue; // update (or add) the parameter\r\n var newSearchString = $.param(params); // and construct a new search string.\r\n\r\n var urlComp = decomposeUrl(url);\r\n if (domElement) {\r\n // set new href property on DOM element\r\n var newHref = urlComp.path + (newSearchString ? ('?' + newSearchString) : '') + urlComp.hash;\r\n $(domElement).attr('href', newHref);\r\n } else {\r\n if (history && history.pushState) { // because some older browsers (IE 9 or older) don't support this\r\n // for other pages put new URL to browser's address bar using window.history\r\n history.replaceState(\r\n null,\r\n null,\r\n urlComp.path +\r\n (newSearchString ? ('?' + newSearchString) : '') +\r\n urlComp.hash\r\n );\r\n }\r\n }\r\n }\r\n\r\n // Reads the query string parameter from the domElement's href property, or from\r\n // the current page's URL (if no domElement has been given). Removes the parameter\r\n // from the URL and puts new URL into the domElement's href property, or into the\r\n // browser's address bar.\r\n // Returns the value of that parameter (a string value).\r\n function popParamFromLink(paramName, domElement) {\r\n var url;\r\n if (domElement) url = $(domElement).attr('href'); // url from DOM element\r\n else url = window.location.href; // current page url\r\n\r\n var params = parseQueryParamsFromUrl(url);\r\n var retVal;\r\n\r\n // making sure that we find the parameter no matter how it's written (case insensitive)\r\n for (var p in params) {\r\n if (p.toLowerCase() === paramName.toLowerCase()) {\r\n paramName = p;\r\n break;\r\n }\r\n }\r\n\r\n if (params[paramName]) {\r\n // the requested parameter exists in the url\r\n retVal = params[paramName]; // Its value will be returned from the function.\r\n delete params[paramName]; // Remove the parameter from the array,\r\n var newSearchString = $.param(params); // and construct a new search string.\r\n var urlComp = decomposeUrl(url);\r\n if (domElement) {\r\n // set new href property on DOM element\r\n var newHref = urlComp.path + (newSearchString ? ('?' + newSearchString) : '') + urlComp.hash;\r\n $(domElement).attr('href', newHref);\r\n } else {\r\n if (history && history.pushState) { // because some older browsers (IE 9 or older) don't support this\r\n // for other pages put new URL to browser's address bar using window.history\r\n history.replaceState(\r\n null,\r\n null,\r\n urlComp.path +\r\n (newSearchString ? ('?' + newSearchString) : '') +\r\n urlComp.hash\r\n );\r\n }\r\n }\r\n }\r\n return retVal;\r\n }\r\n\r\n\r\n return {\r\n parseQueryParamsFromUrl: parseQueryParamsFromUrl,\r\n decomposeUrl: decomposeUrl,\r\n putParamIntoUrl: putParamIntoUrl,\r\n getParamFromUrl: getParamFromUrl,\r\n pushParamIntoLink: pushParamIntoLink,\r\n popParamFromLink: popParamFromLink\r\n }\r\n });\r\n\n", "define('LearningLibrarySearchResults/searchCount',[ \r\n],\r\n function () {\r\n \r\n function displayCountResults(count, keyword, tagsInfo) { \r\n if (!$(\"#searchCount\").length) return;\r\n if (count)\r\n $(\"#searchCount\").html($(\"#searchCountComponent\").data(\"resultsCountText\").replace(\"{count}\", count));\r\n if (keyword)\r\n $(\"#searchKeywordTag\").html($(\"#searchCountComponent\").data(\"resultsKeywordText\").replace(\"{keywords}\", generateTagSpans(keyword, null)));\r\n else\r\n $(\"#searchKeywordTag\").html(\"\"); \r\n if (tagsInfo && tagsInfo.length > 0) {\r\n var tags = tagsInfo.filter((x) => x.TagGroupName != \"Products\"); \r\n displayFilterCondition(tags, \"#searchTags\", \"resultsTagsText\", \"{tags}\");\r\n var products = tagsInfo.filter((x) => x.TagGroupName == \"Products\"); \r\n displayFilterCondition(products, \"#searchProducts\", \"resultsByProductsText\", \"{products}\");\r\n }\r\n else {\r\n $(\"#searchTags\").html(\"\");\r\n $(\"#searchProducts\").html(\"\");\r\n }\r\n }\r\n\r\n tagSpanClick = function (element) { \r\n var id = $(element).data(\"value\"); \r\n if ($(element).hasClass(\"remove-keyboard-span\")) {\r\n $(\"#searchkeywordstxt\").val(\"\");\r\n $(\"#searchkeywordicon\").trigger(\"click\"); \r\n }\r\n else if ($(element).hasClass(\"remove-tag-span\")) { \r\n $(\"#\" + id).trigger(\"click\"); \r\n } \r\n\r\n $(element).parent().remove();\r\n }\r\n\r\n function displayFilterCondition(tags, id, dataAttrFieldname, token) {\r\n if (tags && tags.length > 0)\r\n $(id).html($(\"#searchCountComponent\").data(dataAttrFieldname).replace(token, generateTagSpans(null, tags)));\r\n else\r\n $(id).html(\"\");\r\n }\r\n\r\n function generateTagSpans(keyword, tags) { \r\n var tagSpans = \"\";\r\n if (keyword) {\r\n tagSpans = '' + keyword + '';\r\n }\r\n if (tags) {\r\n for (var i = 0; i < tags.length; i++) {\r\n var tagInfo = tags[i];\r\n tagSpans += '' + tagInfo.TagGroupName + ': ' + tagInfo.TagText + '';\r\n }\r\n }\r\n\r\n return tagSpans;\r\n }\r\n\r\n return {\r\n displayCountResults: displayCountResults\r\n };\r\n});\r\n\n", "define('common/formUtils',[\r\n],\r\n function () {\r\n\r\n // Clears and deactivates all invalid feedback text on form fields\r\n function clearInvalidFeedback(formId) {\r\n if (!formId.startsWith(\"#\")) formId = \"#\" + formId;\r\n $(formId + \" .is-invalid\").removeClass(\"is-invalid\");\r\n $(formId + \" .invalid-feedback\").empty();\r\n }\r\n\r\n // Fills in and activates invalid feedback text on form fields\r\n function displayInvalidFeedback(invalidFields, formId) {\r\n if (!formId.startsWith(\"#\")) formId = \"#\" + formId;\r\n if (invalidFields) {\r\n invalidFields.forEach(function (fieldMessage) {\r\n var field = $(formId + \" [name='\" + fieldMessage.FieldName + \"']\");\r\n field.addClass(\"is-invalid\");\r\n field.siblings(\".invalid-feedback\").append(fieldMessage.MessageText);\r\n });\r\n }\r\n }\r\n\r\n // Collects the data from all form fields and returns them as object,\r\n // using \"name\" attribute values from form fields as object property names.\r\n function collectFormData(formId) {\r\n if (!formId.startsWith(\"#\")) formId = \"#\" + formId;\r\n // the serializeArray() jQuery method doesn't take the values from disabled fields, so first I'll\r\n // temporarily enable all disabled fields, and then disable them again\r\n var disabledFields = $(formId).find(\":input:disabled\").prop(\"disabled\", false);\r\n var serializedData = $(formId).serializeArray();\r\n disabledFields.prop(\"disabled\", true);\r\n var formData = {};\r\n serializedData.forEach(function (data) {\r\n formData[data.name] = data.value;\r\n });\r\n // serializeArray does not return anything for unchecked checkboxes, so we'll add them now with value false\r\n $(formId + \" input[type='checkbox']:not(:checked)\").each(function (index, element) {\r\n formData[element.name] = false;\r\n });\r\n // serializeArray returns \"on\" for checked checkboxes, so we'll set them to true now\r\n $(formId + \" input[type='checkbox']:checked\").each(function (index, element) {\r\n formData[element.name] = true;\r\n });\r\n return formData;\r\n }\r\n\r\n // Goes through all input elements on the form and fills them with data from the\r\n // given object, matching \"name\" attribute of the input element with object property name.\r\n function populateFormWithData(formId, data) {\r\n if (!formId.startsWith(\"#\")) formId = \"#\" + formId;\r\n $(formId + \" :input\").each(function (index, element) { \r\n if (element.type === \"radio\" ||\r\n element.type === \"checkbox\")\r\n {\r\n if (data[element.name] !== undefined)\r\n $(element).prop(\"checked\", $(element).val().toString() === data[element.name].toString());\r\n }\r\n else if (element.type === \"text\" ||\r\n element.type === \"email\" ||\r\n element.type === \"tel\" ||\r\n element.type === \"password\" ||\r\n element.type === \"textarea\" ||\r\n element.type === \"select-one\")\r\n {\r\n if (data[element.name] !== undefined)\r\n $(element).val(data[element.name]);\r\n else\r\n $(element).val(null);\r\n }\r\n });\r\n }\r\n\r\n function disableFields(formId) {\r\n if (!formId.startsWith(\"#\")) formId = \"#\" + formId;\r\n $(formId + \" :input\").prop(\"disabled\", true);\r\n }\r\n\r\n function enableFields(formId) {\r\n if (!formId.startsWith(\"#\")) formId = \"#\" + formId;\r\n $(formId + \" :input\").prop(\"disabled\", false);\r\n }\r\n\r\n function initializeFloatingLabels(formId) {\r\n if (!formId.startsWith(\"#\")) formId = \"#\" + formId;\r\n $(formId + \" .floating-label-container\").each(function (index, element) {\r\n var inputElement = $(element).find(\":input\")[0];\r\n if (inputElement.value) $(element).addClass(\"active\");\r\n else $(element).removeClass(\"active\");\r\n });\r\n }\r\n\r\n function setFocus(selector, delay) {\r\n // sometimes focus has to be set with a delay, so that some other processes have time to finish before that (e.g. initializing floating labels)\r\n if (delay) setTimeout(() => { $(selector).focus(); }, delay);\r\n else $(selector).focus();\r\n }\r\n\r\n //adds the form token to the object for use with [ValidateAntiforgeryToken] attribute\r\n function useToken(data) { \r\n var token = $('input[name=\"__RequestVerificationToken\"]').val();\r\n data.__RequestVerificationToken = token;\r\n }\r\n\r\n return {\r\n clearInvalidFeedback: clearInvalidFeedback,\r\n displayInvalidFeedback: displayInvalidFeedback,\r\n collectFormData: collectFormData,\r\n populateFormWithData: populateFormWithData,\r\n disableFields: disableFields,\r\n enableFields: enableFields,\r\n initializeFloatingLabels: initializeFloatingLabels,\r\n setFocus: setFocus,\r\n useToken: useToken\r\n };\r\n });\r\n\n", "define('LearningLibrarySearchResults/learningLibrarySearchResults',[\r\n \"common/urlUtils\", \r\n \"LearningLibrarySearchResults/searchCount\",\r\n \"common/formUtils\"\r\n],\r\n function (urlUtils, searchCount, formUtils) {\r\n\r\n var lastSearch;\r\n var firstLoad = true;\r\n\r\n function getSearchResults(keyword, topics, tags, contentTypes, products, pageNumber, tagsInfo, scrollToTop) { \r\n var queryParams = urlUtils.parseQueryParamsFromUrl();\r\n setParametersOnResultsComponent(queryParams, keyword, topics, tags, contentTypes, products);\r\n var searchParams = getSearchParams(queryParams, pageNumber); \r\n var setSearchParamsIntoUrl = $(\"#search-results-container\").data(\"putSearchParametersIntoUrl\");\r\n setUrlWithoutPageLoading(searchParams, setSearchParamsIntoUrl);\r\n if (firstLoad) {\r\n firstLoad = false;\r\n refreshSearchCountComponent(searchParams.Keyword, tagsInfo, searchParams);\r\n refreshFacetsCount();\r\n HandlePagingText();\r\n return;\r\n }\r\n \r\n lastSearch = searchParams; \r\n var placeholdersDiv = $(\".placeholders\").clone(); \r\n $(\"#search-results\").find('div:not(\".search-paging\")').remove();\r\n $(\"#search-results\").prepend(placeholdersDiv); \r\n $(\"#search-results .placeholders\").css(\"display\", \"\"); \r\n if (scrollToTop)\r\n $(\"#content\").get(0).scrollIntoView(); \r\n formUtils.useToken(searchParams); \r\n $.ajax({\r\n type: \"POST\",\r\n url: \"/customapi/LearningLibrary/LearningLibraryAjaxSearchResults\",\r\n dataType: \"text\",\r\n data: searchParams,\r\n success: function (data) { \r\n if (lastSearch !== searchParams) {\r\n return;\r\n } \r\n $(\"#search-results\").html(data); \r\n refreshSearchCountComponent(searchParams.Keyword, tagsInfo, searchParams);\r\n refreshFacetsCount();\r\n //if (scrollToTop)\r\n // $(\"#content\").get(0).scrollIntoView(); \r\n var hasResults = $(\"#hdnSearchHasResults\").val();\r\n if (hasResults == \"False\")\r\n $(\".no-results\").show();\r\n else\r\n $(\".no-results\").hide();\r\n HandlePagingText();\r\n },\r\n error: function (jq, status, errorThrown) {\r\n if (lastSearch !== searchParams) {\r\n return;\r\n }\r\n },\r\n complete: function () { \r\n if (lastSearch !== searchParams) {\r\n return;\r\n }\r\n $(\"#search-results .placeholders\").hide(); \r\n }\r\n });\r\n }\r\n\r\n function refreshFacetsCount() { \r\n $('span[id^=\"span_\"]').each(function (index, element) { \r\n $(element).text(\"\"); \r\n }); \r\n\r\n if (resultFacets) {\r\n for (var i = 0; i < resultFacets.length; i++) {\r\n var facet = resultFacets[i];\r\n var facetTextElement = $(\"#span_\" + facet.Name); \r\n if (facetTextElement.length) {\r\n if (facet.Count != 0)\r\n facetTextElement.text(\" (\" + facet.Count + \")\");\r\n else\r\n facetTextElement.text(\"\");\r\n }\r\n }\r\n }\r\n }\r\n\r\n function getTagInfoObjects(queryParam, tagsInfo) {\r\n if (queryParam) {\r\n const urlParamSeparator = \"|\";\r\n var parameterValues = queryParam.split(urlParamSeparator); \r\n for (var i = 0; i < parameterValues.length; i++) {\r\n $(\"#\" + parameterValues[i]).prop(\"checked\", true); \r\n var spantextElement = $(\"#spantext_\" + parameterValues[i]);\r\n if (spantextElement.length) {\r\n var label = $(\"#spantext_\" + parameterValues[i]).text();\r\n tagsInfo.push({ \"TagId\": $(\"#\" + parameterValues[i]).val(), \"TagGroupName\": $(\"#\" + parameterValues[i]).attr(\"title\"), \"TagText\": label });\r\n }\r\n }\r\n }\r\n }\r\n\r\n function refreshSearchCountComponent(keyword, tagsInfo, searchParams) { \r\n if (tagsInfo == null || tagsInfo == undefined) {\r\n tagsInfo = [];\r\n if (searchParams.Tags)\r\n getTagInfoObjects(searchParams.Tags, tagsInfo);\r\n if (searchParams.ContentTypes)\r\n getTagInfoObjects(searchParams.ContentTypes, tagsInfo); \r\n if (searchParams.Products)\r\n getTagInfoObjects(searchParams.Products, tagsInfo); \r\n }\r\n searchCount.displayCountResults($(\"#hdnTotalResults\").val(), keyword, tagsInfo);\r\n }\r\n\r\n function setUrlWithoutPageLoading(searchParams, setSearchParamsIntoUrl) { \r\n var url = window.location.pathname;\r\n if (setSearchParamsIntoUrl == \"True\") {\r\n if (searchParams.Keyword)\r\n url = urlUtils.putParamIntoUrl(\"keyword\", searchParams.Keyword, url);\r\n //to remove topics from url comment this\r\n //if (searchParams.Topics)\r\n // url = urlUtils.putParamIntoUrl(\"topics\", searchParams.Topics, url); \r\n if (searchParams.Tags)\r\n url = urlUtils.putParamIntoUrl(\"tags\", searchParams.Tags, url);\r\n if (searchParams.Products)\r\n url = urlUtils.putParamIntoUrl(\"products\", searchParams.Products, url);\r\n if (searchParams.ContentTypes) { \r\n if (searchParams.ContentTypes != $(\"#search-results-container\").data(\"predefinedContentTypes\"))\r\n url = urlUtils.putParamIntoUrl(\"contenttypes\", searchParams.ContentTypes, url); \r\n }\r\n }\r\n\r\n if (searchParams.PageNumber) \r\n url = urlUtils.putParamIntoUrl(\"page\", (searchParams.PageNumber + 1).toString(), url);\r\n \r\n history.replaceState(\"\", document.title, url);\r\n }\r\n\r\n function HandlePagingText() {\r\n $(\"#paging-first\").text($(\"#search-results-container\").data(\"pagingFirst\"));\r\n $(\"#paging-previous\").text($(\"#search-results-container\").data(\"pagingPrevious\"));\r\n $(\"#paging-next\").text($(\"#search-results-container\").data(\"pagingNext\"));\r\n $(\"#paging-last\").text($(\"#search-results-container\").data(\"pagingLast\"));\r\n }\r\n\r\n function htmlEncode(value) {\r\n //create a in-memory div, set it's inner text(which jQuery automatically encodes)\r\n //then grab the encoded contents back out. The div never exists on the page.\r\n return $('
').text(value).html();\r\n }\r\n\r\n function htmlDecode(value) {\r\n return $('
').html(value).text();\r\n }\r\n\r\n function setParametersOnResultsComponent(queryParams, keyword, topics, tags, contentTypes, products) { \r\n if (queryParams) {\r\n if (!$.isEmptyObject(queryParams)) {\r\n if (queryParams.keyword)\r\n $(\"#search-results-container\").data(\"keyword\", htmlEncode(queryParams.keyword)); \r\n if (queryParams.topics)\r\n $(\"#search-results-container\").data(\"topics\", queryParams.topics);\r\n if (queryParams.tags)\r\n $(\"#search-results-container\").data(\"tags\", queryParams.tags);\r\n if (queryParams.contenttypes)\r\n $(\"#search-results-container\").data(\"contentTypes\", queryParams.contenttypes);\r\n if (queryParams.products)\r\n $(\"#search-results-container\").data(\"products\", queryParams.products);\r\n }\r\n }\r\n \r\n if (keyword != null)\r\n $(\"#search-results-container\").data(\"keyword\", htmlEncode(keyword));\r\n if (topics != null)\r\n $(\"#search-results-container\").data(\"topics\", topics);\r\n if (tags != null)\r\n $(\"#search-results-container\").data(\"tags\", tags);\r\n if (contentTypes != null)\r\n $(\"#search-results-container\").data(\"contentTypes\", contentTypes);\r\n if (products != null)\r\n $(\"#search-results-container\").data(\"products\", products);\r\n }\r\n\r\n function getSearchParams(queryParams, pageNumber) { \r\n var mustHaveAnyTopicString = $(\"#search-results-container\").data(\"mustHaveAnyTopic\");\r\n var mustHaveAnyTopic = false;\r\n if (mustHaveAnyTopicString && mustHaveAnyTopicString == \"True\")\r\n mustHaveAnyTopic = true;\r\n\r\n var productSupportContentOnlyString = $(\"#search-results-container\").data(\"productSupportContentOnly\");\r\n var productSupportContentOnly = false;\r\n if (productSupportContentOnlyString && productSupportContentOnlyString == \"True\")\r\n productSupportContentOnly = true;\r\n\r\n var searchParams = {\r\n \"Keyword\": htmlDecode($(\"#search-results-container\").data(\"keyword\")),\r\n \"PageSize\": $(\"#search-results-container\").data(\"pageSize\"),\r\n \"Topics\": $(\"#search-results-container\").data(\"topics\"),\r\n \"Tags\": $(\"#search-results-container\").data(\"tags\"),\r\n \"Products\": $(\"#search-results-container\").data(\"products\"),\r\n \"ContentTypes\": $(\"#search-results-container\").data(\"contentTypes\"),\r\n \"NumberOfTilesPerRow\": $(\"#search-results-container\").data(\"numberOfTilesInRow\"),\r\n \"MustHaveAnyTopic\": mustHaveAnyTopic,\r\n \"ProductSupportContentOnly\": productSupportContentOnly,\r\n \"AuthorId\": $(\"#search-results-container\").data(\"authorId\")\r\n };\r\n\r\n if (queryParams.page)\r\n searchParams.PageNumber = parseInt(queryParams.page) -1;\r\n if (pageNumber != null && pageNumber != undefined)\r\n searchParams.PageNumber = pageNumber; \r\n if (!searchParams.ContentTypes)\r\n searchParams.ContentTypes = $(\"#search-results-container\").data(\"predefinedContentTypes\");\r\n\r\n return searchParams;\r\n }\r\n\r\n goToPage = function (pageNumber) {\r\n getSearchResults(null, null, null, null, null, pageNumber, null, true);\r\n }\r\n\r\n return {\r\n getSearchResults: getSearchResults\r\n };\r\n});\r\n\n", "require([\r\n \"LearningLibrarySearchResults/learningLibrarySearchResults\"\r\n],\r\n function (learningLibrarySearchResults) { \r\n learningLibrarySearchResults.getSearchResults();\r\n});\r\n\ndefine(\"LearningLibrarySearchResults/main\", function(){});\n\n" ] }