{"version":3,"sources":["resultsLanding.js"],"names":["$","Object","Array","undefined","router","resultsRouter","KeywordFilterManager","searchBox","this","prototype","updateUi","val","value","getSearchTerms","searchTerms","replace","setSearchTerms","isArray","length","removeSearchTerm","breadcrumb","breadcrumbValue","children","text","indexOf","PracticeFilterManager","dropdown","resultsMap","Map","prev","setPractices","practices","isUUID","forEach","x","addValueToMap","getDropdownByText","find","addPractice","practiceName","practiceGuid","has","set","removePractice","delete","uuid","s","match","dropdownValue","dropdownGuid","selector","filter","DropdownFilterManager","isType","textElement","setValues","values","addValue","push","removeValue","index","splice","BreadcrumbManager","breadcrumbContainer","updateBreadcrumbs","filterType","i","typeContainer","breadcrumbs","bound","Boolean","eq","remove","additional","slice","append","getBreadcrumbs","css","clearAll","FilterManager","bm","kfm","ifm","pfm","tfm","page","init","url","callback","filters","bindEvents","keywords","industries","type","handlePopstate","from","keys","getFilteredResults","console","log","reset","getState","loadAllUpToPage","readState","clear","clearAllNoSearch","handleSearch","isProgrammatic","state","ajax","data","JSON","stringify","contentType","success","_this","on","keyword","e","which","parent","attr","extend","filterManager","jQuery"],"mappings":"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","file":"resultsLanding.js","sourcesContent":["; (function ($, Object, Array, undefined) {\r\n router = resultsRouter;\r\n\r\n var KeywordFilterManager = function (searchBox) {\r\n this.searchBox = searchBox;\r\n };\r\n\r\n KeywordFilterManager.prototype = {\r\n updateUi: function () {\r\n this.searchBox.val(this.value);\r\n },\r\n getSearchTerms: function () {\r\n var searchTerms = this.searchBox.val();\r\n searchTerms = searchTerms.replace(\"‘\", \"'\");\r\n searchTerms = searchTerms.replace(\"’\", \"'\");\r\n\r\n if (searchTerms !== \"\" && searchTerms !== \"Keywords\") {\r\n this.value = searchTerms;\r\n }\r\n else {\r\n this.value = \"\";\r\n }\r\n },\r\n setSearchTerms: function (searchTerms) {\r\n if (Array.isArray(searchTerms)) {\r\n this.value = searchTerms.length ? searchTerms[0] : \"\";\r\n }\r\n else {\r\n this.value = searchTerms;\r\n }\r\n this.updateUi();\r\n },\r\n removeSearchTerm: function (breadcrumb) {\r\n var breadcrumbValue = breadcrumb.children(\".text\").text(),\r\n index = this.value.indexOf(breadcrumbValue);\r\n\r\n this.value = \"\";\r\n this.updateUi();\r\n }\r\n };\r\n\r\n var PracticeFilterManager = function (dropdown) {\r\n this.dropdown = dropdown;\r\n this.resultsMap = new Map();\r\n };\r\n\r\n PracticeFilterManager.prototype = {\r\n updateUi: function () {\r\n this.dropdown.val(\"\");\r\n this.dropdown.prev().text(this.dropdown.children(\"[value='']\").text());\r\n },\r\n setPractices: function (practices) {\r\n if (practices.length !== 0 && !this.isUUID(...practices)) {\r\n practices.forEach(x => this.addValueToMap(x, this.getDropdownByText(this.dropdown.find('option'), x).val()));\r\n this.value = this.resultsMap;\r\n }\r\n else {\r\n this.value = practices;\r\n }\r\n\r\n this.updateUi();\r\n },\r\n addPractice: function (practiceName, practiceGuid) {\r\n if (!this.resultsMap.has(practiceName)) {\r\n this.resultsMap.set(practiceName, practiceGuid);\r\n }\r\n\r\n this.value = this.resultsMap;\r\n this.updateUi();\r\n },\r\n removePractice: function (breadcrumb) {\r\n var breadcrumbValue = breadcrumb.children(\".text\").text();\r\n\r\n this.value.delete(breadcrumbValue);\r\n this.updateUi();\r\n },\r\n isUUID: function (uuid) {\r\n let s = \"\" + uuid;\r\n s = s.match('^[0-9a-fA-F]{32}$');\r\n\r\n return s === null ? false : true;\r\n },\r\n addValueToMap: function (dropdownValue, dropdownGuid) {\r\n if (!this.resultsMap.has(dropdownValue)) {\r\n this.resultsMap.set(dropdownValue, dropdownGuid);\r\n }\r\n },\r\n getDropdownByText: function (selector, value) {\r\n return $(selector).filter(function () { return $(this).text() == value });\r\n }\r\n };\r\n\r\n var DropdownFilterManager = function (dropdown, isType) {\r\n this.dropdown = dropdown;\r\n this.isType = isType;\r\n };\r\n\r\n DropdownFilterManager.prototype = {\r\n updateUi: function (value) {\r\n this.dropdown.val(\"\");\r\n let textElement = this.dropdown.prev();\r\n if (this.isType)\r\n textElement = textElement.prev();\r\n if (value && value.length > 0 && this.isType)\r\n textElement.text(value);\r\n else\r\n textElement.text(this.dropdown.children(\"[value='']\").text());\r\n },\r\n setValues: function (values) {\r\n this.value = values;\r\n this.updateUi(values);\r\n },\r\n addValue: function (value) {\r\n if (this.value.indexOf(value) < 0) {\r\n this.value.push(value);\r\n }\r\n this.updateUi();\r\n },\r\n removeValue: function (breadcrumb) {\r\n var breadcrumbValue = breadcrumb.children(\".text\").text(),\r\n index = this.value.indexOf(breadcrumbValue);\r\n\r\n this.value.splice(index, 1);\r\n this.updateUi();\r\n }\r\n };\r\n\r\n var BreadcrumbManager = function (breadcrumbContainer) {\r\n this.breadcrumbContainer = breadcrumbContainer;\r\n };\r\n\r\n BreadcrumbManager.prototype = {\r\n updateBreadcrumbs: function (filterType, values) {\r\n var typeContainer = this.breadcrumbContainer.children(\"[data-type='\" + filterType + \"']\"),\r\n breadcrumbs = typeContainer.children(),\r\n bound = breadcrumbs.length,\r\n i;\r\n\r\n //remove empty elements from values \r\n values = values.filter(Boolean);\r\n\r\n if (values.length < bound) {\r\n bound = values.length;\r\n\r\n for (i = breadcrumbs.length - 1; i >= bound; i--) {\r\n breadcrumbs.eq(i).remove();\r\n }\r\n }\r\n else if (values.length > bound) {\r\n var additional = values.slice(bound - values.length);\r\n\r\n for (i = 0; i < additional.length; i++) {\r\n if (additional[i] !== \"\") {\r\n typeContainer.append(\"\");\r\n }\r\n }\r\n }\r\n\r\n for (i = 0; i < bound; i++) {\r\n if (values[i] !== \"\") {\r\n breadcrumbs.eq(i).children(\".text\").text(values[i]);\r\n }\r\n }\r\n\r\n if (this.getBreadcrumbs().length > 0) {\r\n this.breadcrumbContainer.css(\"visibility\", \"visible\");\r\n }\r\n else {\r\n this.breadcrumbContainer.css(\"visibility\", \"hidden\");\r\n }\r\n },\r\n getBreadcrumbs: function () {\r\n return this.breadcrumbContainer.find(\".search-criteria-item\");\r\n },\r\n clearAll: function () {\r\n this.getBreadcrumbs().remove();\r\n this.breadcrumbContainer.css(\"visibility\", \"hidden\");\r\n }\r\n };\r\n\r\n var FilterManager = function () {\r\n this.bm = new BreadcrumbManager($(\".search-criteria-breadcrumbs\"));\r\n this.kfm = new KeywordFilterManager($(\".search-box input[type='text']\"));\r\n this.ifm = new PracticeFilterManager($(\".filter-dropdown.industry select\"));\r\n this.pfm = new PracticeFilterManager($(\".filter-dropdown.practice select\"));\r\n this.tfm = new DropdownFilterManager($(\".select-dropdown.types select\"), true);\r\n this.page = 0;\r\n };\r\n\r\n FilterManager.prototype = {\r\n init: function (url, callback, filters) {\r\n // init manager\r\n this.url = url;\r\n this.callback = callback;\r\n this.bindEvents();\r\n\r\n // init keywords\r\n this.kfm.setSearchTerms(filters.keywords);\r\n this.bm.updateBreadcrumbs(\"keyword\", [this.kfm.value]);\r\n\r\n // init industries\r\n this.ifm.setPractices(filters.industries);\r\n this.bm.updateBreadcrumbs(\"industry\", this.ifm.value);\r\n\r\n // init practices\r\n this.pfm.setPractices(filters.practices);\r\n this.bm.updateBreadcrumbs(\"practice\", this.pfm.value);\r\n\r\n // init types\r\n this.tfm.setValues(filters.type);\r\n this.bm.updateBreadcrumbs(\"type\", [this.tfm.value]);\r\n },\r\n handlePopstate: function (filters) {\r\n this.page = filters.page;\r\n\r\n // init keywords\r\n this.kfm.setSearchTerms(filters.keywords);\r\n this.bm.updateBreadcrumbs(\"keyword\", [this.kfm.value]);\r\n\r\n // init industries\r\n this.ifm.setPractices(filters.industries);\r\n this.bm.updateBreadcrumbs(\"industry\", Array.from(this.ifm.value.keys()));\r\n\r\n // init practices\r\n this.pfm.setPractices(filters.practices);\r\n this.bm.updateBreadcrumbs(\"practice\", Array.from(this.pfm.value.keys()));\r\n\r\n // init types\r\n this.tfm.setValues(filters.type);\r\n this.bm.updateBreadcrumbs(\"type\", [this.tfm.value]);\r\n\r\n this.getFilteredResults(false);\r\n\r\n console.log('popstate triggered search:');\r\n console.log(filters);\r\n },\r\n reset: function () {\r\n this.page = -1;\r\n },\r\n getState: function (loadAllUpToPage) {\r\n this.page++;\r\n\r\n if (this.kfm.value == \"Keywords\")\r\n this.kfm.value = null;\r\n return {\r\n keywords: this.kfm.value,\r\n industries: Array.from(this.ifm.value.values()),\r\n practices: Array.from(this.pfm.value.values()),\r\n type: this.tfm.value,\r\n page: this.page,\r\n loadAllUpToPage: loadAllUpToPage,\r\n };\r\n },\r\n readState: function () {\r\n return {\r\n keywords: this.kfm.value,\r\n industries: Array.from(this.ifm.value.keys()),\r\n practices: Array.from(this.pfm.value.keys()),\r\n type: this.tfm.value,\r\n page: this.page,\r\n };\r\n },\r\n clearAll: function () {\r\n this.bm.clearAll();\r\n this.kfm.setSearchTerms(\"\");\r\n this.ifm.resultsMap.clear();\r\n this.pfm.resultsMap.clear();\r\n this.tfm.setValues('');\r\n this.reset();\r\n this.getFilteredResults();\r\n },\r\n clearAllNoSearch: function () {\r\n this.bm.clearAll();\r\n this.kfm.setSearchTerms(\"\");\r\n this.ifm.resultsMap.clear();\r\n this.pfm.resultsMap.clear();\r\n this.tfm.setValues('');\r\n this.reset();\r\n },\r\n handleSearch: function () {\r\n this.kfm.getSearchTerms();\r\n this.bm.updateBreadcrumbs(\"keyword\", [this.kfm.value]);\r\n this.reset();\r\n this.getFilteredResults();\r\n },\r\n getFilteredResults: function (isProgrammatic) {\r\n if (!isProgrammatic) {\r\n router.state = this.readState();\r\n router.push();\r\n }\r\n\r\n $.ajax({\r\n type: \"POST\",\r\n url: this.url,\r\n data: JSON.stringify(this.getState(isProgrammatic)),\r\n contentType: \"application/json\",\r\n success: this.callback\r\n });\r\n },\r\n bindEvents: function () {\r\n var _this = this;\r\n\r\n $(\".search-box button\").on(\"click\", function () {\r\n var keyword = $(\".search-box input[type='text']\").val();\r\n if (keyword != \"\" && keyword != \"Keywords\") {\r\n _this.clearAllNoSearch();\r\n $(\".search-box input[type='text']\").val(keyword);\r\n _this.handleSearch();\r\n }\r\n });\r\n\r\n _this.kfm.searchBox.on(\"keydown\", function (e) {\r\n if (e.which === 13) {\r\n var keyword = $(\".search-box input[type='text']\").val();\r\n if (keyword != \"\" && keyword != \"Keywords\") {\r\n _this.clearAllNoSearch();\r\n $(\".search-box input[type='text']\").val(keyword);\r\n _this.handleSearch();\r\n }\r\n\r\n return false;\r\n }\r\n });\r\n\r\n _this.ifm.dropdown.on(\"change\", function () {\r\n _this.ifm.addPractice($(this).children(\":selected\").text(), $(this).children(\":selected\").val());\r\n _this.bm.updateBreadcrumbs(\"industry\", Array.from(_this.ifm.value.keys()));\r\n _this.reset();\r\n _this.getFilteredResults();\r\n });\r\n\r\n _this.pfm.dropdown.on(\"change\", function () {\r\n _this.pfm.addPractice($(this).children(\":selected\").text(), $(this).children(\":selected\").val());\r\n _this.bm.updateBreadcrumbs(\"practice\", Array.from(_this.pfm.value.keys()));\r\n _this.reset();\r\n _this.getFilteredResults();\r\n });\r\n\r\n _this.tfm.dropdown.on(\"change\", function () {\r\n _this.tfm.setValues($(this).children(\":selected\").text());\r\n _this.bm.updateBreadcrumbs(\"type\", [_this.tfm.value]);\r\n _this.reset();\r\n _this.getFilteredResults();\r\n });\r\n\r\n _this.bm.breadcrumbContainer.on(\"click\", \".search-criteria-item\", function () {\r\n if (_this.bm.getBreadcrumbs().length === 1) {\r\n _this.clearAll();\r\n }\r\n else {\r\n var filterType = $(this).parent().attr(\"data-type\");\r\n\r\n switch (filterType) {\r\n case \"keyword\":\r\n _this.kfm.removeSearchTerm($(this));\r\n break;\r\n case \"industry\":\r\n _this.ifm.removePractice($(this));\r\n break;\r\n case \"practice\":\r\n _this.pfm.removePractice($(this));\r\n break;\r\n case \"type\":\r\n _this.tfm.setValues('');\r\n break;\r\n }\r\n\r\n $(this).remove();\r\n _this.reset();\r\n _this.getFilteredResults();\r\n }\r\n });\r\n\r\n _this.bm.breadcrumbContainer.on(\"click\", \".btn-clear\", function () {\r\n _this.clearAll();\r\n });\r\n }\r\n };\r\n\r\n $.extend({\r\n filterManager: new FilterManager()\r\n });\r\n\r\n router.init();\r\n\r\n})(jQuery, Object, Array);"]}