{"version":3,"sources":["webpack://BirnPartners/./Src/Scripts/components/overview-controller.js"],"names":["constructor","elm","args","catLabel","querySelector","topLabel","container","loadMoreButton","querySelectorAll","forEach","x","onclick","event","preventDefault","setFilter","innerHTML","dataset","categoryId","topicId","pageNr","FetchAndLoad","parseInt","page","setUrlParams","dropdownHeadingButtons","window","addEventListener","dropdownButton","target","closest","classList","toggle","remove","urlParams","getUrlParams","fetchAndLoadFlag","currentCategoryId","categoryLabel","activeLabel","currentTopicId","topicLabel","url","fetchApi","fetchMethod","universe","culture","fetch","method","headers","then","response","json","html","Result","totalPages","currentPage","filterType","filterLabel","filterId","key","value","currentUrlParams","URL","location","origin","pathname","Object","keys","label","searchParams","set","history","pushState","href","url_string","get"],"mappings":"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","file":"402.90467cc49a10e4e502ef.js","sourcesContent":["export default class OverviewController {\n constructor(elm, args) {\n var catLabel = elm.querySelector('[data-category-label]');\n var topLabel = elm.querySelector('[data-topic-label]');\n let container = elm.querySelector('[data-container]');\n var loadMoreButton = elm.querySelector('[data-load-more]');\n\n const categoryItemList = elm.querySelectorAll('[data-category-id]')\n categoryItemList.forEach(x => x.onclick = (event) => {\n event.preventDefault();\n setFilter(\"category\", x.innerHTML, x.dataset.categoryId);\n });\n\n const topicItemList = elm.querySelectorAll('[data-topic-id]')\n topicItemList.forEach(x => x.onclick = (event) => {\n event.preventDefault();\n setFilter(\"topic\", x.innerHTML, x.dataset.topicId);\n });\n\n loadMoreButton.onclick = (event) => {\n event.preventDefault();\n loadMore(parseInt(elm.dataset.page) + 1);\n }\n \n var dropdownHeadingButtons = elm.querySelectorAll('.dropdown');\n window.addEventListener('click', x => {\n var dropdownButton = x.target.closest('.dropdown')\n if (dropdownButton) {\n dropdownButton.classList.toggle('dropdown--active')\n } else {\n dropdownHeadingButtons.forEach(x => x.classList.remove('dropdown--active'))\n }\n })\n\n const urlParams = getUrlParams()\n const categoryId = urlParams.categoryId\n const topicId = urlParams.topicId\n\n let fetchAndLoadFlag = false\n if (categoryId !== null) \n {\n elm.dataset.currentCategoryId = categoryId;\n\n fetchAndLoadFlag = true\n\n const categoryLabel = elm.querySelector('[data-category-label]');\n const activeLabel = elm.querySelector('[data-category-id=\"' + categoryId + '\"]');\n\n if (activeLabel) {\n categoryLabel.innerHTML = activeLabel.innerHTML\n }\n } \n\n if (topicId !== null) \n {\n elm.dataset.currentTopicId = topicId;\n \n fetchAndLoadFlag = true\n\n const topicLabel = elm.querySelector('[data-topic-label]');\n const activeLabel = elm.querySelector('[data-topic-id=\"' + topicId + '\"]');\n \n if (activeLabel) {\n topicLabel.innerHTML = activeLabel.innerHTML\n }\n \n }\n\n // if (fetchAndLoadFlag) {\n // FetchAndLoad(0)\n // }\n\n function FetchAndLoad(page) {\n // console.log(page)\n\n elm.dataset.page = page;\n const url = `/umbraco/surface/${elm.dataset.fetchApi}/${elm.dataset.fetchMethod}?categoryId=${elm.dataset.currentCategoryId}&topicId=${elm.dataset.currentTopicId}&Page=${page}&Universe=${elm.dataset.universe}&culture=${elm.dataset.culture}`;\n fetch(url, {\n method: 'GET',\n headers: {\n 'Content-Type': 'application/json',\n },\n })\n .then(response => response.json())\n .then(json => {\n if (page == 1) {\n container.innerHTML = json.html.Result;\n } else {\n container.innerHTML += json.html.Result;\n }\n loadMoreButton.classList.toggle('d-none', parseInt(json.totalPages) <= parseInt(json.currentPage));\n });\n }\n\n function setFilter(filterType, filterLabel, filterId) {\n const pageNr = 1\n \n if (filterType === \"category\") {\n catLabel.innerHTML = filterLabel;\n elm.dataset.currentCategoryId = filterId;\n setUrlParams(\"categoryId\", filterId)\n }\n if (filterType === \"topic\") {\n topLabel.innerHTML = filterLabel;\n elm.dataset.currentTopicId = filterId;\n setUrlParams(\"topicId\", filterId)\n }\n \n FetchAndLoad(pageNr)\n }\n\n function loadMore(pageNr) {\n FetchAndLoad(pageNr);\n setUrlParams(\"p\", pageNr);\n }\n\n function setUrlParams(key, value) {\n const currentUrlParams = getUrlParams()\n currentUrlParams[key] = value\n\n const url = new URL(window.location.origin + window.location.pathname)\n\n Object.keys(currentUrlParams).forEach(label => {\n url.searchParams.set(label, currentUrlParams[label]);\n });\n \n window.history.pushState({}, '', url.href)\n }\n\n function getUrlParams() {\n const url_string = window.location.href\n const url = new URL(url_string);\n\n const searchParams = {}\n\n const categoryId = url.searchParams.get(\"categoryId\");\n if (categoryId !== null && categoryId !== \"\") {\n searchParams[\"categoryId\"] = categoryId\n }\n \n const topicId = url.searchParams.get(\"topicId\");\n if (topicId !== null && topicId !== \"\") {\n searchParams[\"topicId\"] = topicId\n }\n \n return searchParams\n }\n }\n}\n"],"sourceRoot":""}