{"version":3,"file":"chunks/fca421925792e2.js","mappings":"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","sources":["webpack:///./resources/js/components/shared/partner-event-filtering.ts"],"sourcesContent":["import * as $ from \"jquery\";\nimport _ from \"underscore\";\nimport url from '../../utils/url';\n\nexport default class PartnerEventFiltering {\n $domRoot: JQuery<HTMLElement>;\n $searchColumn: any;\n $filterColumn: any;\n $contentColumn: any;\n $loadingIcon: any;\n customMobileBreakPoint: number;\n params: any;\n countryList: never[];\n filterCategories?: { market: { groups: never[]; isCollapsed: boolean; }; eventTypXXXe: { groups: never[]; isCollapsed: boolean; }; eventProductFocus: { groups: never[]; isCollapsed: boolean; }; locations: { groups: never[]; isCollapsed: boolean; }; };\n state?: {\n filters: {}; page: number; name: string;\n };\n\n pendingStateChange: any;\n constructor(domRoot: HTMLElement, params: any) {\n this.$domRoot = $(domRoot);\n this.$searchColumn = this.$domRoot.find(\".imkt-experts--search\");\n this.$filterColumn = this.$domRoot.find(\".imkt-experts--filters\");\n this.$contentColumn = this.$domRoot.find(\".imkt-experts--content\");\n this.$loadingIcon = this.$domRoot.find(\".imkt-experts--loading\");\n this.customMobileBreakPoint = 800;\n this.params = {\n // define default params here\n perPageCount: 10,\n ...params\n };\n this.countryList = [];\n this.init();\n }\n \n init() {\n this.getInitialState();\n this.render();\n this.bindEvents();\n }\n\n getInitialState() {\n var urlParams = url.getUrlParams() || {};\n var self = this;\n var filters = {};\n\n this.filterCategories = {\n market: {\n groups: [],\n isCollapsed: false\n },\n eventTypXXXe: {\n groups: [],\n isCollapsed: false\n },\n eventProductFocus: {\n groups: [],\n isCollapsed: false\n },\n locations: {\n groups: [],\n isCollapsed: false\n }\n };\n\n // pull valid filter keys off of urlParams\n filters = _.pick(urlParams, function (val, key) {\n return self.filterCategories.hasOwnProperty(key);\n });\n\n\n var mapFilters = _.mapObject(filters, function (val) {\n return val.split(\",\");\n });\n \n this.state = {\n // convert filters from url into arrays\n filters: mapFilters,\n page: parseInt(urlParams.page) || 1,\n name: urlParams.name ? urlParams.name.replace(/\\+/g, \" \") : \"\"\n };\n\n // Render search form\n var searchName = this.state.name || \"\";\n var searchTemplate = _.template(\n $(\"script.imkt-experts--filters-search\").html()\n );\n this.$searchColumn.html(\n searchTemplate({\n labels: this.params.labels,\n searchName: searchName,\n })\n );\n }\n\n isAllFilter(type) {\n var activeFilters = this.state.filters;\n\n if (typeof activeFilters[type] !== \"undefined\") {\n return activeFilters[type].length === 0;\n }\n return true;\n }\n\n isActiveFilter(type, value) {\n var activeFilters = this.state.filters;\n if (typeof activeFilters[type] !== \"undefined\") {\n return activeFilters[type].indexOf(value) >= 0;\n }\n return false;\n }\n\n getUniqueValuesFromEventTypesArray(arrayOfStrings) {\n let mappedArrayStringObject = new Map(\n arrayOfStrings.map((arrValue) => {\n const cleanedArrayValue = arrValue\n .trim()\n .split(\" \")\n .filter((x) => x != \"\")\n .join(\" \");\n return [cleanedArrayValue.toLowerCase(), cleanedArrayValue];\n })\n );\n return [...mappedArrayStringObject.values()];\n }\n\n // This will only work if the array looks like this [ string, string, string ]\n // Takes in an array object, return a new array object\n getArrayWithLowerCaseStrings(arrayObject) {\n return arrayObject.map((stringObject) => stringObject.toLowerCase());\n }\n\n bindEvents() {\n var self = this;\n\n this.$domRoot\n .on(\"click\", \"input[type='checkbox']\", function (e) {\n var $target = $(e.currentTarget),\n filterType = $target.attr(\"data-filter-type\"),\n filterValue = $target.attr(\"data-filter-value\"),\n filter = {};\n\n // filterValue is a *, we're toggling all\n if (filterValue === \"*\") {\n filterValue = self.state.filters[filterType];\n } else {\n filterValue = filterValue.split(\",\");\n }\n\n filter[filterType] = filterValue;\n self.action_toggleFilter(filter);\n })\n .on(\"click\", \".imkt-experts--pager li\", function () {\n var pageNumber = $(this).attr(\"data-page-number\");\n self.state.page = pageNumber;\n $(\"html, body\").animate(\n {\n scrollTop: $(\"#imkt-experts\").offset().top,\n },\n \"slow\"\n );\n self.registerStateChange();\n })\n .on(\"click\", \".imkt-experts--filters-form h5\", function () {\n var category = $(this).attr(\"data-filter-category\");\n\n $(this).toggleClass(\"collapsed\");\n\n if (category) {\n self.filterCategories[category].isCollapsed =\n !self.filterCategories[category].isCollapsed;\n }\n })\n .on(\"change\", \"select\", function (e) {\n var targeter = e.target.selectedOptions[0];\n var filterType = targeter.dataset.filterType;\n var filterValue = targeter.dataset.filterValue;\n var filter = {};\n\n // filterValue is a *, we're toggling all\n if (filterValue === \"*\") {\n filterValue = self.state.filters[filterType];\n filter[filterType] = filterValue;\n self.action_toggleFilter(filter);\n } else {\n filterValue = filterValue.split(\",\");\n filter[filterType] = filterValue;\n self.action_setFilter(filter);\n }\n }\n );\n }\n\n multiSort(left, right) {\n var sort_by_start_date = function () {\n var value = \"startDate\";\n var now = new Date().getTime();\n var leftSide = new Date(left[value]).getTime();\n var rightSide = new Date(right[value]).getTime();\n var shouldbebefore = now - leftSide;\n var shouldbebefore2 = now - rightSide;\n if (shouldbebefore > 0 && shouldbebefore2 > 0) {\n // alert('boom');\n console.log(\"this date is in the past\");\n } else {\n // alert(left[value] + ' substraction '+ shouldbebefore + '+++ currentdate: '+ leftSide + \" now: \"+ now);\n return leftSide ==\n rightSide\n ? 0\n : leftSide < rightSide\n ? -1\n : 1;\n }\n };\n\n return sort_by_start_date();\n }\n\n render() {\n this.$loadingIcon.hide();\n\n // Render filter form\n var filterTemplate = _.template(\n $(\"script.imkt-experts--filters-template\").html()\n );\n this.$filterColumn.html(\n filterTemplate({\n eventProductsFocus: this.params.eventProductFocus,\n markets: this.params.market,\n eventTypes: this.getUniqueValuesFromEventTypesArray(\n this.params.eventType\n ),\n locations: this.params.locations,\n methods: this,\n labels: this.params.labels\n })\n );\n\n // Render filtered expert list\n var expertList = this.params.experts;\n expertList.sort(this.multiSort);\n\n var currentExperts = this.getListFiltered(expertList);\n var contentTemplate;\n\n if (currentExperts.length) {\n var currentExpertsPaged = this.getListPaginated(currentExperts);\n\n var currentPage =\n this.state.page > currentExpertsPaged.length\n ? currentExpertsPaged.length\n : parseInt(this.state.page, 10);\n var currentPageIndex = currentPage - 1;\n var maxPerPage = currentExpertsPaged[currentPageIndex].length;\n\n var pageStart = currentPageIndex * this.params.perPageCount + 1;\n var pageEnd = pageStart + maxPerPage - 1;\n\n // Calc pager range links\n var pagerRange = [];\n var pagerLinkStart = 1;\n var pagerLinkCount = 5;\n var pagerLinkCountMiddle = parseInt(pagerLinkCount / 2, 10);\n\n if (currentPage > pagerLinkCount - pagerLinkCountMiddle) {\n pagerLinkStart = currentPage - pagerLinkCountMiddle;\n }\n\n if (currentPage + pagerLinkCountMiddle > currentExpertsPaged.length) {\n pagerLinkStart = currentExpertsPaged.length - pagerLinkCount + 1;\n }\n\n if (currentExpertsPaged.length < pagerLinkCount) {\n pagerLinkStart = 1;\n pagerLinkCount = currentExpertsPaged.length;\n }\n\n for (var i = pagerLinkStart; i < pagerLinkStart + pagerLinkCount; i++) {\n pagerRange.push(i);\n }\n\n var selectedFilters = this.getSelectedFilters();\n contentTemplate = _.template(\n $(\"script.imkt-experts--content-template\").html()\n );\n this.$contentColumn.html(\n contentTemplate({\n experts: currentExpertsPaged[currentPageIndex],\n expertStart: pageStart,\n expertEnd: pageEnd,\n expertCount: currentExperts.length,\n currentPage: currentPage,\n maxPages: currentExpertsPaged.length,\n pagerRange: pagerRange,\n tags: selectedFilters,\n labels: this.params.labels,\n methods: this,\n })\n );\n } else {\n // No results\n contentTemplate = _.template(\n $(\"script.imkt-experts--content-template\").html()\n );\n this.$contentColumn.html(\n contentTemplate({\n experts: [],\n expertStart: 0,\n expertEnd: 0,\n expertCount: 0,\n currentPage: 1,\n maxPages: 1,\n pagerRange: [],\n tags: [],\n labels: this.params.labels,\n methods: this,\n })\n );\n }\n\n this.updateURL();\n }\n\n // Get a flat list of filters selected (to show as UX tags in render)\n getSelectedFilters() {\n var result = [];\n var stateFilters = this.state.filters;\n _.each(_.keys(stateFilters), function (key) {\n if (!_.isEmpty(stateFilters[key])) {\n var filterLabel = stateFilters[key];\n // Some filters are true/false, so want to show the filter key instead of the value\n if (filterLabel == 1) {\n filterLabel = key.replace(\"is\", \"\");\n }\n\n result.push(filterLabel);\n }\n });\n return this.flattenDeep(result);\n }\n\n hasRequiredInput() {\n if (\n this.state.name ||\n (typeof this.state.filters[\"locations\"] !== \"undefined\" &&\n this.state.filters[\"locations\"].length)\n ) {\n return true;\n }\n return false;\n }\n\n checkForMobile() {\n if (window.innerWidth < this.customMobileBreakPoint) {\n return true;\n }\n }\n\n collapseFilters() {\n this.$filterColumn.find(\"h5\").each(function () {\n $(this).toggleClass(\"collapsed\");\n });\n }\n\n isCategoryCollapsed(category) {\n return this.filterCategories[category].isCollapsed;\n }\n\n getListPaginated(list) {\n var pages = [];\n var pageLength = Math.ceil(list.length / this.params.perPageCount);\n\n for (var i = 0; i < pageLength; i++) {\n var pageSet = list.slice(\n i * this.params.perPageCount,\n (i + 1) * this.params.perPageCount\n );\n pages.push(pageSet);\n }\n\n return pages;\n }\n\n getListFiltered(list) {\n const matchName = (matchVal) =>\n matchVal.trim().toLowerCase().includes(this.state.name.toLowerCase());\n\n return _.filter(\n list,\n (item) => {\n var r = true;\n const { title, summary, partnerName, locations } = item;\n\n // Check for a searched name in title, summary, partner name, and locations\n if (this.state.name) {\n if (\n ![title, summary, partnerName].concat(locations).some(matchName)\n ) {\n return false;\n }\n }\n\n // Check for matching filters\n _.each(\n _.keys(this.state.filters),\n (key) => {\n if (r && !_.isEmpty(this.state.filters[key])) {\n if (\n !_.isEmpty(this.filterCategories[key]) &&\n this.filterCategories[key].isBoolean\n ) {\n // If a filter is Boolean, we need to just check the value on the list item property\n r = item[key];\n } else {\n // Not a boolean filter, so check for a string match (modified to make filters AND, uncomment below to make filters OR)\n // r = _.intersection(typeof item[key] === \"string\" ? [item[key]] : item[key], this.state.filters[key]).length;\n var intersection = _.intersection(\n typeof item[key] === \"string\"\n ? this.getArrayWithLowerCaseStrings([item[key]])\n : this.getArrayWithLowerCaseStrings(item[key]),\n this.getArrayWithLowerCaseStrings(this.state.filters[key])\n );\n r = intersection.length == this.state.filters[key].length;\n return r;\n }\n }\n },\n this\n );\n\n return r;\n },\n this\n );\n }\n\n action_toggleFilter(filter) {\n _.each(\n _.keys(filter),\n (key) => {\n _.each(\n filter[key],\n (filterVal) => {\n var singleFilter = {};\n singleFilter[key] = [filterVal];\n if (_.includes(this.state.filters[key], filterVal)) {\n this.action_removeFilter(singleFilter);\n } else {\n this.action_applyFilter(singleFilter);\n }\n },\n this\n );\n },\n this\n );\n }\n\n action_applyFilter(filter) {\n _.each(\n _.keys(filter),\n (key) => {\n this.state.filters[key] = _.union(this.state.filters[key], filter[key]);\n },\n this\n );\n this.filterChange();\n this.registerStateChange();\n }\n\n action_removeFilter(filter) {\n _.each(\n _.keys(filter),\n (key) => {\n this.state.filters[key] = _.difference(\n this.state.filters[key],\n filter[key]\n );\n },\n this\n );\n this.filterChange();\n this.registerStateChange();\n }\n\n action_setFilter(filter) {\n var keys = Object.keys(filter);\n keys.forEach(key => {\n this.state.filters[key] = filter[key];\n })\n this.filterChange();\n this.registerStateChange();\n }\n\n registerStateChange() {\n if (!this.pendingStateChange) {\n this.pendingStateChange = true;\n setTimeout(this.stateChange.bind(this), 0);\n }\n }\n\n stateChange() {\n this.render();\n this.pendingStateChange = false;\n }\n\n filterChange() {\n this.state.page = 1;\n }\n\n /* replacing underscore */\n flattenDeep(array) {\n return Array.isArray(array)\n ? array.reduce( (a, b) => a.concat(this.flattenDeep(b)) , [])\n : [array];\n }\n\n pickBy(object) {\n const obj = {};\n for (const key in object) {\n if (object[key]) {\n obj[key] = object[key];\n }\n }\n return obj;\n }\n\n updateURL() {\n var filters, urlParams;\n\n if (window.history && window.history.replaceState) {\n filters = _.clone(this.state.filters);\n // replace any empty filters with null, which removes them from the url\n _.each(_.keys(filters), function (key) {\n if (!filters[key].length) {\n filters[key] = null;\n }\n });\n\n urlParams = Object.assign(filters, this.pickBy(this.state, \"page\"));\n window.history.replaceState(\n urlParams,\n document.title,\n url.addUrlParams(urlParams)\n );\n }\n }\n}"],"names":["PartnerEventFiltering","domRoot","params","_classCallCheck","this","$domRoot","$","$searchColumn","find","$filterColumn","$contentColumn","$loadingIcon","customMobileBreakPoint","_objectSpread","perPageCount","countryList","init","key","value","getInitialState","render","bindEvents","filters","urlParams","url","self","filterCategories","market","groups","isCollapsed","eventTypXXXe","eventProductFocus","locations","_","val","hasOwnProperty","mapFilters","split","state","page","parseInt","name","replace","searchName","searchTemplate","html","labels","type","activeFilters","length","indexOf","arrayOfStrings","Map","map","arrValue","cleanedArrayValue","trim","filter","x","join","toLowerCase","values","arrayObject","stringObject","on","e","$target","currentTarget","filterType","attr","filterValue","action_toggleFilter","pageNumber","animate","scrollTop","offset","top","registerStateChange","category","toggleClass","targeter","target","selectedOptions","dataset","action_setFilter","left","right","now","Date","getTime","leftSide","rightSide","console","log","sort_by_start_date","hide","filterTemplate","eventProductsFocus","markets","eventTypes","getUniqueValuesFromEventTypesArray","eventType","methods","expertList","experts","sort","multiSort","contentTemplate","currentExperts","getListFiltered","currentExpertsPaged","getListPaginated","currentPage","currentPageIndex","maxPerPage","pageStart","pageEnd","pagerRange","pagerLinkStart","pagerLinkCount","pagerLinkCountMiddle","i","push","selectedFilters","getSelectedFilters","expertStart","expertEnd","expertCount","maxPages","tags","updateURL","result","stateFilters","filterLabel","flattenDeep","window","innerWidth","each","list","pages","pageLength","Math","ceil","pageSet","slice","_this","matchName","matchVal","includes","item","r","title","summary","partnerName","concat","some","isBoolean","intersection","getArrayWithLowerCaseStrings","_this2","filterVal","singleFilter","action_removeFilter","action_applyFilter","_this3","filterChange","_this4","_this5","Object","keys","forEach","pendingStateChange","setTimeout","stateChange","bind","array","_this6","Array","isArray","reduce","a","b","object","obj","history","replaceState","assign","pickBy","document"],"sourceRoot":""}