{"version":3,"file":"js/pages/home.js","mappings":"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","sources":["webpack://ReLondon.Web/./src/js/admin/category_utils.js","webpack://ReLondon.Web/./src/js/home/homePage.js"],"sourcesContent":["import { notFound } from \"../utils/notFoundImage\";\n\nexport function generateCardForCategory(cat, isModal = false) {\n const col = document.createElement(\"div\");\n col.classList.add(\"col\", \"mb-3\", \"animate-up-3\");\n\n const imgSrc = cat.image || \"\";\n\n const attributes = {\n href: isModal ? \"#\" : cat.searchLink,\n \"data-modal\": isModal ? \"Edit\" : null,\n \"data-category-id\": cat.id,\n \"data-category-name\": isModal ? cat.categoryName : null,\n \"data-provided-categories\": isModal? JSON.stringify(cat.providerCategories) : null,\n \"data-category-image\": isModal ? imgSrc : null,\n };\n\n var attrs = Object.entries(attributes)\n .map(([name, val]) => val ? `${name}=\"${val}\"`: null)\n .filter(x => x);\n\n col.innerHTML = `
`;\n\n return col;\n}\n\nexport function generateModalCard(cat){\n return generateCardForCategory(cat, true);\n}\n\nexport function updateCategoryCard(cat, eleToAddTo, modalEle, isModal = false) {\n const cardLink = document.querySelector(`div.col div.card a[data-category-id=\"${cat.id}\"]`);\n\n if (!cardLink) {\n if(eleToAddTo){\n eleToAddTo.appendChild(generateCardForCategory(cat, isModal)); \n }\n //document.getElementById(\"currentCategoryCards\").appendChild(generateCardForCategory(cat));\n return;\n }\n\n cardLink.setAttribute(\"data-category-name\", cat.categoryName);\n cardLink.setAttribute(\"data-provided-categories\", JSON.stringify(cat.providerCategories));\n\n if (cat.image) {\n cardLink.setAttribute(\"data-category-image\", cat.image);\n cardLink.querySelector(\"img\").src = cat.image;\n } else if (modalEle?.querySelector(\"form [data-file-type]\")?.dataset.fileType == \"delete\") {\n cardLink.setAttribute(\"data-category-image\", \"\");\n cardLink.querySelector(\"img\").src = notFound;\n }\n\n cardLink.querySelector(\"img\").alt = cat.categoryName + \" category image\";\n\n cardLink.querySelector(\"p.h5\").innerText = cat.categoryName;\n}","import { generateCardForCategory } from \"../admin/category_utils\";\n//import { ajaxErrorPopUp } from \"../utils/alerts\";\nimport { JsPaginationController } from \"../utils/pagination\";\n\nconst paginationController = new JsPaginationController(\"nav ul.pagination\", () => {}, 0, 5);\nconst CATEGORIES_PER_PAGE = 8;\n\nfunction hideAllContainersBut(type) {\n document.querySelectorAll(`#categoriesContainer div[data-container-type]:not([data-container-type='${type}'])`).forEach(e => e.classList.toggle(\"d-none\", true));\n document.querySelectorAll(`#categoriesContainer div[data-container-type='${type}']`).forEach(e => e.classList.toggle(\"d-none\", false));\n}\n\nasync function fetchCategories(page = 1){\n hideAllContainersBut(\"loading\");\n\n const params = new URLSearchParams();\n params.set(\"page\", page);\n params.set(\"pageSize\", CATEGORIES_PER_PAGE);\n\n const urlStr = document.querySelector(\"#categoriesContainer [data-categories-api]\").dataset.categoriesApi;\n const url = new URL(urlStr, window.location.origin);\n url.search = params;\n\n try{\n const resp = await fetch(url);\n const data = await resp.json();\n\n if(!resp.ok){\n console.error(\"Error getting categories\", resp.status, resp.statusText);\n // Commented out the alert: I think it's a better experience for the user if we don't show an error if we fail to get the categories, \n // just fall back to showing the \"nodata\" container..\n //ajaxErrorPopUp(resp.status, data.detail, data.title);\n hideAllContainersBut(\"nodata\");\n return;\n }\n\n const cardContainer = document.querySelector(\"#categoriesContainer [data-container-type='data'] #categoryCards\");\n if(!cardContainer){\n console.log(\"No card container found..\");\n hideAllContainersBut(\"nodata\");\n return;\n }\n\n const totalPages = Math.ceil(data.total / CATEGORIES_PER_PAGE);\n if(paginationController.totalPages !== totalPages){\n paginationController.updateTotal(totalPages);\n }\n\n cardContainer.innerHTML =\"\";\n \n data.results.forEach(cat => cardContainer.appendChild(generateCardForCategory(cat)));\n hideAllContainersBut(\"data\");\n }catch(e){\n // TODO: Notify the user... idk\n console.error(e);\n hideAllContainersBut(\"nodata\");\n }\n}\n\nwindow.addEventListener(\"DOMContentLoaded\", async function(e){\n await fetchCategories();\n\n\n paginationController.updateOnPageSelect(async function(newPageNumber){\n await fetchCategories(newPageNumber);\n });\n\n});"],"names":["generateCardForCategory","cat","isModal","col","document","createElement","classList","add","imgSrc","image","attributes","href","searchLink","id","categoryName","JSON","stringify","providerCategories","attrs","Object","entries","map","name","val","filter","x","innerHTML","join","notFound","updateCategoryCard","eleToAddTo","modalEle","cardLink","querySelector","setAttribute","src","dataset","fileType","alt","innerText","appendChild","paginationController","JsPaginationController","hideAllContainersBut","type","querySelectorAll","forEach","e","toggle","fetchCategories","page","params","URLSearchParams","set","urlStr","categoriesApi","url","URL","window","location","origin","search","fetch","resp","json","data","ok","console","error","status","statusText","cardContainer","log","totalPages","Math","ceil","total","updateTotal","results","addEventListener","updateOnPageSelect","newPageNumber"],"sourceRoot":""}