{"version":3,"sources":["src/js/uarctic.helpers.js","src/js/uarctic.search.researchinfrastructures.js"],"names":["UArctic","window","Helpers","Url","getParameterByName","name","url","location","href","toLowerCase","replace","results","RegExp","exec","decodeURIComponent","Search","ResearchInfrastructure","globalSettings","formSelector","searchButtonSelector","termFieldSelector","countryFieldSelector","institutionFieldSelector","disciplineFieldSelector","typeFieldSelector","toggleFilterButtonSelector","wrapperSelector","searchOnInit","initFullForm","options","settings","$","extend","doSearch","event","$form","stopImmediatePropagation","search","serialize","on","$btn","this","$searchWrapper","hasClass","removeClass","html","addClass","initLookupFields","each","i","ddctrl","children","removeAttr","attr","updateLookupData","termFieldId","lookup","data","updater","currentCountry","currentInstitution","currentType","selectLevel","val","buildSelect","selector","level","selectedValue","items","matchedSelected","item","Key","Value","ajax","type","country","institutionId","typeId","dataType","success","response","Institutions","InfrastructureTypes","Disciplines","error","console","log","alert","searchData","$msg","$result","hash","hide","fillResultTable","ResultList","gtag","event_label","SearchString","responseJSON","Message","show","$resultTable","length","row","Score","Teaser","DetailsUrl","Name","InstitutionUrl","InstitutionName","Country","InfrastructureType","append","bootstrapSortable","find","popover","container","placement","trigger","delay"],"mappings":"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","file":"uarctic.search.researchinfrastructures.min.js","sourcesContent":["/*!\r\n * Helper methods shared amongst the other js files.\r\n * Copyright (c) 2016 Frameworks AS\r\n */\r\n\r\nvar UArctic = window.UArctic || {}; //Creates a namespace to keep our method away from colliding with other code\r\nUArctic.Helpers = UArctic.Helpers || {};\r\n\r\nUArctic.Helpers.Url = {\r\n\t/*\r\n\t * Gets a named QueryString parameter. If no url is provided then it will use current location.href.\r\n\t */\r\n\tgetParameterByName: function (name, url) {\r\n\t\tif (!url) url = window.location.href;\r\n\t\turl = url.toLowerCase(); // This is just to avoid case sensitiveness\r\n\t\tname = name.replace(/[\\[\\]]/g, \"\\\\$&\");\r\n\t\tvar regex = new RegExp(\"[?&]\" + name + \"(=([^&#]*)|&|#|$)\"),\r\n\t\t\tresults = regex.exec(url);\r\n\t\tif (!results) return null;\r\n\t\tif (!results[2]) return ''; \r\n\t\treturn decodeURIComponent(results[2].replace(/\\+/g, \" \"));\r\n\t}\r\n};","/*!\r\n * Research Infrastructure Search Form 1.2\r\n * Copyright (c) 2015-2021 Frameworks AS\r\n */\r\n\r\nvar UArctic = window.UArctic || {}; // Creates a namespace to keep our method away from colliding with other code\r\nUArctic.Search = UArctic.Search || {};\r\n\r\nUArctic.Search.ResearchInfrastructure = {\r\n globalSettings: {\r\n formSelector: '#riSearchForm',\r\n searchButtonSelector: '#btnSearch',\r\n termFieldSelector: '#txtSearchTerm',\r\n countryFieldSelector: '#ddlCountry',\r\n institutionFieldSelector: '#ddlInstitution',\r\n disciplineFieldSelector: '#ddlDiscipline',\r\n typeFieldSelector: '#ddlType',\r\n toggleFilterButtonSelector: '#btn_collapse_form',\r\n wrapperSelector: '#searchbox',\r\n searchOnInit: 'false'\r\n },\r\n /*\r\n Default options:\r\n -- formSelector: '#riSearchForm',\r\n -- searchButtonSelector: '#btnSearch',\r\n -- termFieldSelector: '#txtSearchTerm',\r\n -- countryFieldSelector: '#ddlCountry',\r\n -- institutionFieldSelector: '#ddlInstitution',\r\n -- disciplineFieldSelector: '#ddlDiscipline',\r\n -- typeFieldSelector: '#ddlType',\r\n -- toggleFilterButtonSelector: '#btn_collapse_form',\r\n -- wrapperSelector: '#searchbox',\r\n -- searchOnInit: 'false'\r\n */\r\n initFullForm: function (options) {\r\n var settings = $.extend(UArctic.Search.ResearchInfrastructure.globalSettings, options);\r\n\r\n var doSearch = function (event) {\r\n var $form = $(settings.formSelector);\r\n event.stopImmediatePropagation();\r\n window.UArctic.Search.ResearchInfrastructure.search($form.serialize());\r\n return false;\r\n };\r\n\r\n $(settings.searchButtonSelector).on('click', function (event) {\r\n return doSearch(event);\r\n });\r\n\r\n $(settings.formSelector).on('submit', function (event) {\r\n return doSearch(event);\r\n });\r\n\r\n $(settings.toggleFilterButtonSelector).on('click', function () {\r\n var $btn = $(this);\r\n var $searchWrapper = $(settings.wrapperSelector);\r\n if ($searchWrapper.hasClass('form-collapsed')) {\r\n $searchWrapper.removeClass('form-collapsed');\r\n $btn.html(' Hide advanced filters ');\r\n } else {\r\n $searchWrapper.addClass('form-collapsed');\r\n $btn.html(' Show advanced filters ');\r\n }\r\n });\r\n\r\n UArctic.Search.ResearchInfrastructure.initLookupFields(options);\r\n\r\n if (settings.searchOnInit === 'true') {\r\n var $form = $(settings.formSelector);\r\n window.UArctic.Search.ResearchInfrastructure.search($form.serialize());\r\n }\r\n },\r\n /*\r\n Default options:\r\n -- formSelector: '#riSearchForm',\r\n -- searchButtonSelector: '#btnSearch',\r\n -- termFieldSelector: '#txtSearchTerm',\r\n -- countryFieldSelector: '#ddlCountry',\r\n -- institutionFieldSelector: '#ddlInstitution',\r\n -- disciplineFieldSelector: '#ddlDiscipline',\r\n -- typeFieldSelector: '#ddlType',\r\n -- toggleFilterButtonSelector: '#btn_collapse_form',\r\n -- wrapperSelector: '#searchbox'\r\n */\r\n initLookupFields: function (options) {\r\n var settings = $.extend(UArctic.Search.ResearchInfrastructure.globalSettings, options);\r\n\r\n $(settings.formSelector + ' button[type=reset]').on('click', function () {\r\n $(settings.formSelector + ' select').each(function (i, ddctrl) {\r\n $(ddctrl).children('option:selected').removeAttr('selected');\r\n $(ddctrl).children('option[value=\"\"]').attr('selected', 'selected');\r\n });\r\n\r\n window.UArctic.Search.ResearchInfrastructure.updateLookupData('Country');\r\n\r\n $('#' + settings.termFieldId).attr('value', '');\r\n });\r\n\r\n $('select[data-lookup]').on('change', function () {\r\n var lookup = $(this).data('lookup');\r\n window.UArctic.Search.ResearchInfrastructure.updateLookupData(lookup);\r\n });\r\n },\r\n updateLookupData: function (updater) {\r\n // This function is probably way over complicated, but it tries to only show dropdown options that actually will return results.\r\n var currentCountry = null;\r\n var currentInstitution = null;\r\n var currentType = null;\r\n var selectLevel = 0;\r\n var settings = UArctic.Search.ResearchInfrastructure.globalSettings;\r\n // eslint-disable-rule no-fallthrough\r\n switch (updater) {\r\n case 'disciplineId':\r\n return;\r\n case 'typeId':\r\n currentType = $(settings.typeFieldSelector).val();\r\n selectLevel++;\r\n case 'institutionId':\r\n currentInstitution = $(settings.institutionFieldSelector).val();\r\n selectLevel++;\r\n case 'country':\r\n currentCountry = $(settings.countryFieldSelector).val();\r\n selectLevel++;\r\n break;\r\n default:\r\n break;\r\n }\r\n var buildSelect = function (selector, data, level) {\r\n if (selectLevel >= level) {\r\n return;\r\n }\r\n var selectedValue = $(selector).val();\r\n var items = '';\r\n var matchedSelected = false;\r\n $.each(data, function (i, item) {\r\n items += '' + items;\r\n } else {\r\n items = '' + items;\r\n }\r\n $(selector).html(items);\r\n };\r\n\r\n $.ajax({\r\n url: '/Umbraco/Api/ResearchInfrastructureApi/GetFilterData',\r\n type: 'GET',\r\n data: { 'country': currentCountry, 'institutionId': currentInstitution, 'typeId': currentType },\r\n dataType: 'json',\r\n success: function (response) {\r\n buildSelect(settings.institutionFieldSelector, response.Institutions, 2);\r\n buildSelect(settings.typeFieldSelector, response.InfrastructureTypes, 3);\r\n buildSelect(settings.disciplineFieldSelector, response.Disciplines, 4);\r\n },\r\n error: function (error) {\r\n // TODO: Better error handling?\r\n console.log(error);\r\n alert('An unexpected error ocurred while fetching lookup data');\r\n }\r\n });\r\n },\r\n search: function (searchData) {\r\n var $msg = $('#search_message');\r\n var $result = $('#search_results');\r\n window.location.hash = \"\";\r\n $result.hide();\r\n $msg.hide();\r\n $.ajax({\r\n url: '/Umbraco/Api/ResearchInfrastructureApi/Search/',\r\n type: 'POST',\r\n data: searchData,\r\n dataType: 'json',\r\n success: function (response) {\r\n UArctic.Search.ResearchInfrastructure.fillResultTable(response.ResultList);\r\n window.gtag('event', 'search', {\r\n 'event_label': searchData.SearchString\r\n });\r\n // Old ga tag code: window.ga('send', 'pageview', location.pathname + '?q=' + searchData.SearchString);\r\n },\r\n error: function (error) {\r\n if (error.responseJSON.Message) {\r\n $msg.html('
' + error.responseJSON.Message + '
');\r\n $msg.show(300);\r\n } else {\r\n alert('An unexpected error occured when perfoming the search. Please reload this page and try again.');\r\n }\r\n }\r\n });\r\n //}\r\n },\r\n fillResultTable: function (data) {\r\n var $resultTable = $('#search_results tbody');\r\n var $result = $('#search_results');\r\n $resultTable.html('');\r\n if (data.length > 0) {\r\n $result.show();\r\n for (var i = 0; i < data.length; i++) {\r\n var row = '' + (i + 1) + '' + data[i].Name + '' + data[i].InstitutionName + '' + data[i].Country + '' + data[i].InfrastructureType + '';\r\n $resultTable.append(row);\r\n }\r\n $('#search_results table').addClass('sortable');\r\n $.bootstrapSortable();\r\n $resultTable.find('a.popover-trigger').popover({\r\n container: 'body',\r\n placement: 'auto',\r\n trigger: 'hover',\r\n delay: { show: 300 }\r\n });\r\n window.location.hash = \"search_results\";\r\n } else {\r\n $resultTable.html('The search didn\\'t return any results');\r\n $result.show();\r\n }\r\n\r\n }\r\n};"]}