{"version":3,"file":"js/initCaseStudiesContainer.bundle.js","mappings":"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","sources":["webpack://webpack-workflow/./src/scripts/helpers/isEmpty.js","webpack://webpack-workflow/./src/scripts/models/PagedResponse.js","webpack://webpack-workflow/./src/scripts/helpers/buildQuery.js","webpack://webpack-workflow/./src/scripts/exceptions/ProblemDetailsException.js","webpack://webpack-workflow/./src/scripts/models/CaseStudyModel.js","webpack://webpack-workflow/./src/scripts/initCaseStudiesContainer.js","webpack://webpack-workflow/./src/scripts/api/caseStudiesFetch.js","webpack://webpack-workflow/./src/scripts/helpers/buildUrl.js","webpack://webpack-workflow/./src/scripts/helpers/buildUrlLocation.js","webpack://webpack-workflow/./src/scripts/helpers/fetchClient.js"],"sourcesContent":["/**\n * Checks if provided object/array is empty\n * \n * @param {Object} variable - variable to check if is set\n * @return {boolean}\n */\nexport default (variable) => {\n if (Array.isArray(variable) && variable.length) {\n return false;\n }\n if (\n typeof variable === \"object\" &&\n variable !== null &&\n !Array.isArray(variable) &&\n Object.keys(variable).length\n ) {\n return false;\n }\n\n return true;\n};\n","class PagedResponse {\n constructor(data = {}) {\n this.pageSize = data.pageSize || 1;\n this.totalItemsCount = data.totalItemsCount || 0;\n this.currentPageNumber = data.currentPageNumber || 1;\n this.lastPageNumber = data.lastPageNumber || 1;\n this.results = [];\n }\n\n /**\n * Set paged response data\n *\n * @param {Array} results\n */\n setResults(results) {\n this.results = results;\n }\n\n /**\n * Create pagination component\n *\n * @param {HTMLElement} currentPagination - current pagination html element\n * @param {HTMLElement} container - html data container\n * @param {Function} callback - callback function\n * @returns {HTMLElement} new pagination element\n */\n createPagination(currentPagination, container, callback) {\n if (\n currentPagination &&\n currentPagination.classList.contains(\"pagination\")\n ) {\n currentPagination.parentElement.removeChild(currentPagination);\n }\n const pagination = document.createElement(\"div\");\n pagination.classList.add(\"pagination\");\n pagination.dataset.page = this.currentPageNumber;\n pagination.dataset.perPage = this.pageSize;\n pagination.dataset.total = this.lastPageNumber;\n\n const nextButton = document.createElement(\"span\");\n nextButton.innerHTML = \"»\";\n const previousButton = document.createElement(\"span\");\n previousButton.innerHTML = \"«\";\n\n const currentPage = document.createElement(\"span\");\n currentPage.classList.add(\"active\");\n currentPage.innerHTML = this.currentPageNumber;\n const previousPage = document.createElement(\"span\");\n previousPage.innerHTML = this.currentPageNumber - 1;\n const nextPage = document.createElement(\"span\");\n nextPage.innerHTML = this.currentPageNumber + 1;\n\n nextButton.addEventListener(\"click\", (e) =>\n this.fetchCallback(e, container, this.currentPageNumber + 1, callback)\n );\n nextPage.addEventListener(\"click\", (e) =>\n this.fetchCallback(e, container, this.currentPageNumber + 1, callback)\n );\n previousButton.addEventListener(\"click\", (e) =>\n this.fetchCallback(e, container, this.currentPageNumber - 1, callback)\n );\n previousPage.addEventListener(\"click\", (e) =>\n this.fetchCallback(e, container, this.currentPageNumber - 1, callback)\n );\n\n if (this.currentPageNumber > 1) {\n pagination.appendChild(previousButton);\n pagination.appendChild(previousPage);\n }\n if (this.lastPageNumber !== 1) {\n pagination.appendChild(currentPage);\n }\n if (this.currentPageNumber < this.lastPageNumber) {\n pagination.appendChild(nextPage);\n pagination.appendChild(nextButton);\n }\n\n return pagination;\n }\n\n /**\n * Create inifnity scroll component\n *\n * @param {HTMLElement} currentInfinityScroll - current infinity scroll html element\n * @param {HTMLElement} container - html data container\n * @param {Function} callback - callback function\n * @returns {(HTMLElement|null)} new infinity scroll element\n */\n createInfinityScroll(currentInfinityScroll, container, callback) {\n if (\n currentInfinityScroll &&\n currentInfinityScroll.classList.contains(\"infinity-scroll-pagination\")\n ) {\n currentInfinityScroll.parentElement.removeChild(currentInfinityScroll);\n }\n\n const infinityScroll = document.createElement(\"div\");\n infinityScroll.classList.add(\"infinity-scroll-pagination\");\n infinityScroll.dataset.page = this.currentPageNumber;\n infinityScroll.dataset.perPage = this.pageSize;\n infinityScroll.dataset.total = this.lastPageNumber;\n\n const nextButton = document.createElement(\"button\");\n const arrowDown = document.createElement(\"i\");\n nextButton.appendChild(arrowDown);\n infinityScroll.appendChild(nextButton);\n\n nextButton.addEventListener(\"click\", (e) =>\n this.fetchCallback(e, container, this.currentPageNumber + 1, callback)\n );\n\n if (this.currentPageNumber >= this.lastPageNumber) {\n infinityScroll.style.display = \"none\";\n }\n\n return infinityScroll;\n }\n\n /**\n * Invoke callback when page is changed\n *\n * @param {Event} event\n * @param {HTMLElement} container\n * @param {number} page\n * @param {Function} callback\n */\n fetchCallback(event, container, page, callback) {\n event.preventDefault();\n container.dataset.page = page;\n callback();\n }\n\n /**\n * Generate html when no results found\n *\n * @param {string} perRow - dataset parameter per-row\n * @param {number} fallbackPerRow - if dataset per-row was not provided\n * @returns {string} html in string\n */\n generateNoResults(perRow, fallbackPerRow) {\n const perRowString = `--perRowColumn: ${parseInt(perRow) + 1}`;\n const fallbackString = `--fallbackPerRow: ${fallbackPerRow}`;\n return `\n
\n Could not find any results \n
\n `;\n }\n}\n\nexport default PagedResponse;\n","import isEmpty from \"./isEmpty\";\n\n/**\n * Build query from provided params\n *\n * @param {Object} params - build query string from provided params, ex. {page: 1, perPage: 3}\n * @returns {string} query string\n */\nexport default (params) => {\n if (!isEmpty(params)) {\n return Object.keys(params)\n .reduce(\n (query, currentParam) =>\n params[currentParam]\n ? `${query}${currentParam}=${params[currentParam]}&`\n : query,\n \"?\"\n )\n .replace(/&$/g, \"\")\n .replace(/^\\?$/g, \"\");\n } else {\n return \"\";\n }\n};\n","/**\n * \n * @param {Object} exception - exception object \n * @returns {Error} custom exception for problems details\n */\nfunction ProblemDetailsException(exception) {\n console.log(exception)\n if (!exception) {\n return new Error(\"Error occured but problem details response is empty\");\n }\n const error = new Error(exception.detail || \"Error\");\n error.code = \"PROBLEM_DETAILS\";\n error.name = exception.title || \"Problem details response\";\n error.statusCode = exception.status || 500;\n error.invalidProperties = exception.errors || {};\n\n return error;\n};\n\nProblemDetailsException.prototype = Error.prototype;\n\nexport default ProblemDetailsException;\n","class CaseStudyModel {\n constructor(data) {\n this.id = data.id || \"\";\n this.title = data.title || \"\";\n this.text = data.text || \"\";\n this.link = data.link || \"\";\n this.linkText = data.linkText || \"\";\n this.solutionId = data.solutionId || \"\";\n this.sectorialSolutionId = data.sectorialSolutionId || \"\";\n this.image = data.image || \"\";\n }\n\n /**\n * Generate case study card\n *\n * @returns {string} html in string format\n */\n generateCaseStudyCard() {\n return `
\n \n
`;\n }\n}\n\nexport default CaseStudyModel;\n","import isEmpty from \"./helpers/isEmpty\";\nimport PagedResponse from \"./models/PagedResponse\";\nimport caseStudiesFetch from \"./api/caseStudiesFetch\";\nimport CaseStudyModel from \"./models/CaseStudyModel\";\n\n/**\n * Init case studies container\n *\n * @param {string} htmlContainerId\n * @param {string} htmlCaseStudiesListId\n * @param {string} htmlFilterButtonId\n * @param {string} htmlSolutionSelectId\n * @param {string} htmlSectorialSelectId\n * @returns\n */\nconst initCaseStudiesContainer = (\n htmlContainerId,\n htmlCaseStudiesListId,\n htmlFilterButtonId,\n htmlSolutionSelectId,\n htmlSectorialSelectId\n) => {\n const container = document.getElementById(htmlContainerId);\n if (!container) return;\n\n fetchData(container, htmlCaseStudiesListId);\n\n $(document).ready(() => {\n $(\"#loadMorePress\").on(\"click\", function (e) {\n e.preventDefault();\n\n if (window.currentPageNumber < window.lastPageNumber) {\n getDataPress(window.currentPageNumber + 1, PerPageQuery);\n }\n\n if (window.currentPageNumber == window.lastPageNumber) {\n $(\"#loadMorePress\").text(\"No more content\").addClass(\"noContent\");\n }\n });\n\n $(`#${htmlFilterButtonId}`).on(\"click\", (e) => {\n e.preventDefault();\n const solutionSelect = document.getElementById(htmlSolutionSelectId);\n const sectorialSelect = document.getElementById(htmlSectorialSelectId);\n if (solutionSelect && sectorialSelect) {\n container.dataset.page = 1;\n container.dataset.solutionId = solutionSelect.value;\n container.dataset.sectorialSolutionId = sectorialSelect.value;\n fetchData(container, htmlCaseStudiesListId);\n }\n });\n });\n};\n\n/**\n * Load case studies content.\n *\n * @param {HTMLElement} container - container containing html data variables\n * @param {string} htmlCaseStudiesListId - id of html container containing insights cards\n */\nconst fetchData = async (container, htmlCaseStudiesListId) => {\n const {\n protocol,\n host,\n apiSuffix,\n folderId,\n page,\n perPage,\n solutionId,\n sectorialSolutionId,\n } = container.dataset;\n\n const response = await caseStudiesFetch(\n protocol,\n host,\n apiSuffix,\n folderId,\n page,\n perPage,\n solutionId,\n sectorialSolutionId\n );\n\n if (response.success) {\n const data = !isEmpty(response.data) ? response.data : new PagedResponse();\n printDataPress(container, data, htmlCaseStudiesListId, data.currentPageNumber === 1);\n } else {\n printDataPress(container, new PagedResponse(), htmlCaseStudiesListId, true);\n }\n};\n\n/**\n *\n * @param {HTMLElement} container - container containing html data variables\n * @param {PagedResponse} pagedResponse - class model of paged response\n * @param {string} htmlCaseStudiesListId - id of html container containing news cards\n * @param {bool} resetHtml - should html containing card be reset\n */\nfunction printDataPress(\n container,\n pagedResponse,\n htmlCaseStudiesListId,\n resetHtml = false\n) {\n const caseStudiesListContainer = document.getElementById(\n htmlCaseStudiesListId\n );\n if (!caseStudiesListContainer) return;\n\n if (container.dataset.perRow) {\n caseStudiesListContainer.style.setProperty(\n \"--perRow\",\n container.dataset.perRow\n );\n }\n\n let html = !resetHtml ? caseStudiesListContainer.innerHTML : \"\";\n if (pagedResponse && pagedResponse.results && pagedResponse.results.length) {\n pagedResponse.results.forEach((element) => {\n if (element instanceof CaseStudyModel) {\n html += element.generateCaseStudyCard();\n }\n });\n } else {\n html = pagedResponse.generateNoResults(container.dataset.perRow, 4);\n }\n caseStudiesListContainer.innerHTML = html;\n const infinityScroll = pagedResponse.createInfinityScroll(\n caseStudiesListContainer.nextElementSibling,\n container,\n () => fetchData(container, htmlCaseStudiesListId)\n );\n caseStudiesListContainer.insertAdjacentElement(\"afterend\", infinityScroll);\n}\n\ninitCaseStudiesContainer(\n \"caseStudiesContainer\",\n \"caseStudiesGeneralList\",\n \"caseStudiesFilterButton\",\n \"caseStudiesSolution\",\n \"caseStudiesSectorial\"\n);\n\nexport default initCaseStudiesContainer;\n","import buildUrl from \"../helpers/buildUrl\";\nimport buildUrlLocation from \"../helpers/buildUrlLocation\";\nimport fetchClient from \"../helpers/fetchClient\";\nimport isEmpty from \"../helpers/isEmpty\";\nimport CaseStudyModel from \"../models/CaseStudyModel\";\nimport PagedResponse from \"../models/PagedResponse\";\n\n/**\n * Fetch case studies from api\n *\n * @param {string} protocol - protocol of the request, i.e. http:// or https://\n * @param {string} host - host of the request, i.e. loomis.en-gb.dev.docker\n * @param {string} apiSuffix - api suffix, i.e. /api/loomis/news\n * @param {string} folderId - folder id, i.e. {FF005073-5F75-488C-8242-3E83FFC239AA}\n * @param {number} page - page to fetch\n * @param {number} perPage - how many per page\n * @param {string} solutionId - solution id\n * @param {string} sectorialSolutionId - sectorial solution id\n * @return {Object} json response\n */\nconst caseStudiesFetch = async (\n protocol,\n host,\n apiSuffix,\n folderId,\n page,\n perPage,\n solutionId,\n sectorialSolutionId\n) => {\n let url = \"\";\n if (protocol && host && apiSuffix) {\n url = buildUrl(protocol, host, apiSuffix, [folderId], {\n page,\n perPage,\n solutionId,\n sectorialSolutionId,\n });\n } else {\n url = buildUrlLocation(\n [apiSuffix, folderId],\n {\n page,\n perPage,\n solutionId,\n sectorialSolutionId,\n },\n true\n );\n }\n\n const response = await fetchClient(url);\n if (response.success && response.data) {\n const pagedResponse = new PagedResponse(response.data);\n const caseStudies = [];\n if (\n !isEmpty(response.data.caseStudies) &&\n Array.isArray(response.data.caseStudies)\n ) {\n response.data.caseStudies.forEach((caseStudy) =>\n caseStudies.push(new CaseStudyModel(caseStudy))\n );\n pagedResponse.setResults(caseStudies);\n }\n response.data = pagedResponse;\n }\n return response;\n};\n\nexport default caseStudiesFetch;\n","import buildQuery from \"./buildQuery\";\n\n/**\n * Build valid url from provided parameters\n * \n * @param {string} protocol - url protocol, ex. https://\n * @param {string} host - url host, ex. loomis.en-gb.dev.docker\n * @param {string} apiSuffix - api suffix, ex. /api/loomis/news\n * @param {Array} additionalParams - additional parameters to join at the end after /\n * @param {Object} queryParams - query params, ex. ?page=1&perPage=3\n * @returns {string} valid url\n */\nexport default (\n protocol,\n host,\n apiSuffix,\n additionalParams = [],\n queryParams = {}\n) => {\n const baseUrl = `${host}/${apiSuffix}/${\n additionalParams ? additionalParams.join(\"/\") : \"\"\n }`.replace(/\\/\\//g, \"/\");\n const query = buildQuery(queryParams);\n\n return `${protocol}${baseUrl}${query}`;\n};\n","import buildQuery from \"./buildQuery\";\n\n/**\n * Build valid url from current location\n *\n * @param {Array} additionalParams - additional parameters to join at the end after /\n * @param {Object} queryParams - query params, ex. ?page=1&perPage=3\n * @param {boolean} onlyOrigin - use only window location origin\n * @returns {string} valid url\n */\nexport default (\n additionalParams = [],\n queryParams = {},\n onlyOrigin = false\n) => {\n let location = \"\";\n if (onlyOrigin) {\n location = window.location.origin.replace(/\\/$/g, \"\");\n } else {\n location = window.location.href.replace(/\\/$/g, \"\").replace(\".html\", \"\");\n }\n const pathname = `${\n additionalParams ? additionalParams.join(\"/\") : \"\"\n }`.replace(/\\/$/g, \"\");\n const query = buildQuery(queryParams);\n return `${location}/${pathname}${query}`.replace(/(? {\n try {\n const response = await fetch(url, options);\n\n if (!response) {\n throw new Error(\"Response is not defined\");\n }\n if (!response.status) {\n throw new Error(\"Response status is not defined\");\n }\n\n const data = await response.json();\n\n if (response.status !== 200) {\n throw new ProblemDetailsException(data);\n }\n if (response.status === 200) {\n return {\n success: true,\n data,\n };\n }\n\n return {\n success: false,\n data: null,\n };\n } catch (error) {\n console.error(error);\n if (error instanceof ProblemDetailsException && error.invalidProperties) {\n const invalidProperties = error.invalidProperties;\n const errors = Object.keys(invalidProperties).map((key) =>\n Array.isArray(invalidProperties[key])\n ? invalidProperties[key].join(\" | \")\n : invalidProperties[key]\n );\n return {\n success: false,\n data: null,\n errors,\n };\n } else {\n return {\n success: false,\n data: null,\n };\n }\n }\n};\n"],"names":["variable","Array","isArray","length","Object","keys","constructor","data","this","pageSize","totalItemsCount","currentPageNumber","lastPageNumber","results","setResults","createPagination","currentPagination","container","callback","classList","contains","parentElement","removeChild","pagination","document","createElement","add","dataset","page","perPage","total","nextButton","innerHTML","previousButton","currentPage","previousPage","nextPage","addEventListener","e","fetchCallback","appendChild","createInfinityScroll","currentInfinityScroll","infinityScroll","arrowDown","style","display","event","preventDefault","generateNoResults","perRow","fallbackPerRow","perRowString","parseInt","params","isEmpty","reduce","query","currentParam","replace","ProblemDetailsException","exception","console","log","Error","error","detail","code","name","title","statusCode","status","invalidProperties","errors","prototype","id","text","link","linkText","solutionId","sectorialSolutionId","image","generateCaseStudyCard","fetchData","async","htmlCaseStudiesListId","protocol","host","apiSuffix","folderId","response","url","additionalParams","queryParams","join","buildQuery","buildUrl","onlyOrigin","location","window","origin","href","buildUrlLocation","options","fetch","json","success","map","key","fetchClient","pagedResponse","caseStudies","forEach","caseStudy","push","printDataPress","resetHtml","caseStudiesListContainer","getElementById","setProperty","html","element","nextElementSibling","insertAdjacentElement","htmlContainerId","htmlFilterButtonId","htmlSolutionSelectId","htmlSectorialSelectId","$","ready","on","getDataPress","PerPageQuery","addClass","solutionSelect","sectorialSelect","value","initCaseStudiesContainer"],"sourceRoot":""}