{"version":3,"sources":["newsLanding.js"],"names":["$","Object","Array","undefined","router","newsRouter","KeywordFilterManager","searchBox","this","prototype","updateUi","val","value","getSearchTerms","searchTerms","replace","setSearchTerms","removeSearchTerm","breadcrumb","breadcrumbValue","children","text","index","indexOf","splice","DropdownFilterManager","dropdown","isType","resultsMap","Map","typeMap","textElement","prev","length","setValues","values","isUUID","size","forEach","x","addToMap","getDropdownByText","find","removeFromMap","addValue","dropdownValue","dropdownGuid","has","set","setType","clear","addType","typeValue","typeGuid","removeValue","delete","uuid","s","match","key","keys","includes","selector","filter","BreadcrumbManager","breadcrumbContainer","updateBreadcrumbs","filterType","i","typeContainer","breadcrumbs","bound","eq","remove","additional","slice","append","getBreadcrumbs","css","clearAll","FilterManager","bm","kfm","ifm","pfm","tfm","page","init","recentNewsUrl","filteredNewsUrl","callback","filters","bindEvents","console","log","keywords","industries","practices","type","handlePopstate","isEmptySearch","getRecentNews","from","next","getFilteredNews","reset","getState","loadAllUpToPage","pageNumber","readState","beforeNewSearch","handleSearch","isProgrammatic","state","push","ajax","url","data","JSON","stringify","contentType","success","_this","on","keyword","e","which","parent","attr","extend","filterManager","jQuery"],"mappings":"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","file":"newsLanding.js","sourcesContent":["; (function ($, Object, Array, undefined) {\r\n router = newsRouter;\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 this.value = searchTerms;\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.splice(index, 1);\r\n this.updateUi();\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 this.resultsMap = new Map();\r\n this.typeMap = new Map();\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\r\n if (this.isType)\r\n textElement = textElement.prev();\r\n\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 if (values.length !== 0 && !this.isUUID(...values)) {\r\n if (values.length > this.resultsMap.size) {\r\n values.forEach(x => this.addToMap(x, this.getDropdownByText(this.dropdown.find('option'), x).val()));\r\n }\r\n else {\r\n this.removeFromMap(values);\r\n }\r\n\r\n this.value = this.resultsMap;\r\n }\r\n else {\r\n this.value = values;\r\n }\r\n\r\n this.updateUi();\r\n },\r\n addValue: function (dropdownValue, dropdownGuid) {\r\n if (!this.resultsMap.has(dropdownValue)) {\r\n this.resultsMap.set(dropdownValue, dropdownGuid);\r\n }\r\n\r\n this.value = this.resultsMap;\r\n this.updateUi();\r\n },\r\n setType: function (value) {\r\n if (value && !this.isUUID(value)) {\r\n this.typeMap.clear();\r\n this.typeMap.set(value, this.getDropdownByText(this.dropdown.find('option'), value).val());\r\n this.value = this.typeMap;\r\n }\r\n else {\r\n this.typeMap.clear();\r\n this.value = '';\r\n }\r\n\r\n this.updateUi(value);\r\n },\r\n addType: function (typeValue, typeGuid) {\r\n this.typeMap.clear();\r\n this.typeMap.set(typeValue, typeGuid);\r\n\r\n this.value = this.typeMap;\r\n this.updateUi(typeValue);\r\n },\r\n removeValue: 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 addToMap: function (dropdownValue, dropdownGuid) {\r\n if (!this.resultsMap.has(dropdownValue)) {\r\n this.resultsMap.set(dropdownValue, dropdownGuid);\r\n }\r\n },\r\n removeFromMap: function (values) {\r\n for (var key of this.resultsMap.keys()) {\r\n if (!values.includes(key)) {\r\n this.value.delete(key);\r\n }\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 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 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 DropdownFilterManager($(\".filter-dropdown.industries select\"));\r\n this.pfm = new DropdownFilterManager($(\".filter-dropdown.practices select\"));\r\n this.tfm = new DropdownFilterManager($(\".select-dropdown.types select\"), true);\r\n this.page = -1;\r\n };\r\n\r\n FilterManager.prototype = {\r\n init: function (recentNewsUrl, filteredNewsUrl, callback, filters) {\r\n // init manager\r\n this.recentNewsUrl = recentNewsUrl;\r\n this.filteredNewsUrl = filteredNewsUrl;\r\n this.callback = callback;\r\n this.bindEvents();\r\n console.log('filters')\r\n console.log(filters)\r\n\r\n // init keywords\r\n this.kfm.setSearchTerms(filters.keywords);\r\n if (filters.keywords !== \"Keywords\") {\r\n this.bm.updateBreadcrumbs(\"keyword\", [this.kfm.value]);\r\n }\r\n\r\n // init industries\r\n this.ifm.setValues(filters.industries);\r\n this.bm.updateBreadcrumbs(\"industry\", this.ifm.value);\r\n\r\n // init practices\r\n this.pfm.setValues(filters.practices);\r\n this.bm.updateBreadcrumbs(\"practice\", this.pfm.value);\r\n\r\n // init types\r\n this.tfm.setType(filters.type);\r\n this.bm.updateBreadcrumbs(\"type\", this.tfm.value);\r\n },\r\n handlePopstate: function (filters, isEmptySearch) {\r\n //empty search? getRecentNews, otherwise getFilteredNews\r\n if (isEmptySearch) {\r\n this.clearAll(true);\r\n this.getRecentNews(true);\r\n console.log('popstate triggered empty search:');\r\n }\r\n else {\r\n this.page = filters.page;\r\n this.kfm.setSearchTerms(filters.keywords);\r\n if (filters.keywords !== \"Keywords\") {\r\n this.bm.updateBreadcrumbs(\"keyword\", [this.kfm.value]);\r\n }\r\n\r\n // init industries\r\n this.ifm.setValues(filters.industries);\r\n this.bm.updateBreadcrumbs(\"industry\", Array.from(this.ifm.value.keys()));\r\n\r\n // init practices\r\n this.pfm.setValues(filters.practices);\r\n this.bm.updateBreadcrumbs(\"practice\", Array.from(this.pfm.value.keys()));\r\n\r\n // init types\r\n this.tfm.setType(filters.type);\r\n this.bm.updateBreadcrumbs(\"type\", this.tfm.value?.size == undefined ? this.tfm.value : [this.tfm.value.keys().next().value]);\r\n\r\n this.getFilteredNews(true);\r\n console.log('popstate triggered search:');\r\n console.log(filters);\r\n }\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\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?.size == undefined ? this.tfm.value : this.tfm.value.values().next().value,\r\n pageNumber: 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?.size == undefined ? this.tfm.value : this.tfm.value.keys().next().value,\r\n page: this.page\r\n };\r\n },\r\n clearAll: function (beforeNewSearch) {\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.typeMap.clear();\r\n this.tfm.setValues('');\r\n this.reset();\r\n if (!beforeNewSearch) {\r\n this.getRecentNews();\r\n }\r\n },\r\n handleSearch: function (isProgrammatic) {\r\n this.kfm.getSearchTerms();\r\n this.bm.updateBreadcrumbs(\"keyword\", [this.kfm.value]);\r\n this.reset();\r\n this.getFilteredNews(isProgrammatic);\r\n },\r\n getRecentNews: 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.recentNewsUrl,\r\n data: JSON.stringify(this.getState(false)),\r\n contentType: \"application/json\",\r\n success: this.callback\r\n });\r\n\r\n this.reset();\r\n },\r\n getFilteredNews: 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.filteredNewsUrl,\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\r\n var keyword = $(\".search-box input[type='text']\").val();\r\n if (keyword != \"\" && keyword != \"Keywords\") {\r\n _this.clearAll(true);\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.clearAll(true);\r\n $(\".search-box input[type='text']\").val(keyword);\r\n _this.handleSearch();\r\n }\r\n return false;\r\n }\r\n });\r\n\r\n _this.ifm.dropdown.on(\"change\", function () {\r\n _this.ifm.addValue($(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.getFilteredNews();\r\n });\r\n\r\n _this.pfm.dropdown.on(\"change\", function () {\r\n _this.pfm.addValue($(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.getFilteredNews();\r\n });\r\n\r\n _this.tfm.dropdown.on(\"change\", function () {\r\n _this.tfm.addType($(this).children(\":selected\").text(), $(this).children(\":selected\").val());\r\n _this.bm.updateBreadcrumbs(\"type\", Array.from(_this.tfm.value.keys()));\r\n _this.reset();\r\n _this.getFilteredNews();\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(false);\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.removeValue($(this));\r\n break;\r\n case \"practice\":\r\n _this.pfm.removeValue($(this));\r\n break;\r\n case \"type\":\r\n _this.tfm.removeValue($(this));\r\n break;\r\n }\r\n\r\n $(this).remove();\r\n _this.reset();\r\n _this.getFilteredNews();\r\n }\r\n });\r\n\r\n _this.bm.breadcrumbContainer.on(\"click\", \".btn-clear\", function () {\r\n _this.clearAll(false);\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);"]}