{"version":3,"names":[],"mappings":"","sources":["search.js"],"sourcesContent":["import * as capSvc from './services/capService.js';\r\nimport searchRequestModel from './models/searchRequestModel.js'\r\nimport searchDisplayModel from \"./models/searchDisplayModel.js\";\r\nimport {footer} from \"./searchFooter.js\";\r\nimport {keyTabNavigation} from \"../utilities/navigation.js\";\r\n\r\nwindow.loadJobDetail = loadJobDetail;\r\nwindow.hideCaliNotice = hideCaliNotice;\r\nwindow.acceptGdpr = acceptGdpr;\r\ncapSvc.checkReferral();\r\nlet prevBrandId = sessionStorage.getItem('prevBrandId')\r\nlet brandId;\r\nbrandId = capSvc.getBrand();\r\ncapSvc.injectTags(\"JobSearch\");\r\n\r\nlet direction = \"asc\"\r\nconst columns = [\r\n {path: \"title\", name: \"Title\", justification: \"text-left\"},\r\n {path: \"id\", name: \"ID\", justification: \"text-left\"},\r\n {path: \"positionType\", name: \"Position Type\", justification: \"text-left\"},\r\n {path: \"city\", name: \"City\", justification: \"text-left\"},\r\n {path: \"stateProvince\", name: \"State\", justification: \"text-center\"},\r\n {path: \"datePosted\", name: \"Date Posted\", justification: \"text-center\"}\r\n];\r\nif(sessionStorage.getItem('brandId') === 'staffmarkgroup') {\r\n columns.push({path: \"brandName\", name: \"Brand\", justification: \"text-left\"})\r\n};\r\n\r\ncolumns.push({path: \"isRemote\", name: \"Remote\", justification: \"text-center\"})\r\n\r\nlet bodyRequest = null\r\nif(sessionStorage.getItem('bodyRequest') === null || brandId !== prevBrandId){\r\n console.log('reset search params')\r\n bodyRequest = searchRequestModel\r\n sessionStorage.setItem('bodyRequest', JSON.stringify(bodyRequest))\r\n}else{\r\n bodyRequest = JSON.parse(sessionStorage.getItem('bodyRequest'))\r\n}\r\n\r\nlet displayData = searchDisplayModel\r\nconst searchDiv = document.getElementById(\"brandBody\");\r\n\r\nsearchDiv.innerHTML =\r\n `\r\n
\r\n \r\n \"${sessionStorage.getItem('brandName')}\r\n \r\n
\r\n ${sessionStorage.getItem('headerHtml')}\r\n`\r\n\r\n const tableSearchDisplayDiv = document.createElement(\"div\")\r\n tableSearchDisplayDiv.setAttribute(\"id\", \"searchTableDiv\")\r\n tableSearchDisplayDiv.setAttribute(\"class\", \"container clearfix pb-1\")\r\n\r\n const searchTable = document.createElement(\"div\")\r\n searchTable.setAttribute(\"id\", \"searchTable\")\r\n searchTable.setAttribute(\"class\", \"container\")\r\n tableSearchDisplayDiv.appendChild(searchTable)\r\n\r\n const s = document.createElement(\"script\")\r\n s.type = 'module'\r\n s.src = '../assets/js/searchFilter.js'\r\n s.defer = true\r\n tableSearchDisplayDiv.appendChild(s)\r\n\r\nconsole.log(bodyRequest)\r\nconst jobs = capSvc.getJobs(bodyRequest)\r\n const jobs2 = jobs.then(res => res.json())\r\n jobs2.then(json => {\r\n console.log(json)\r\n displayData = json\r\n if (displayData.searchResults !== null) {\r\n populateSearchTable(displayData)\r\n footer(displayData.totalResults, bodyRequest[\"resultsPerPage\"], bodyRequest[\"page\"] + 1)\r\n setSortHeader()\r\n keyTabNavigation()\r\n }\r\n })\r\n searchDiv.appendChild(tableSearchDisplayDiv)\r\n// jobDescriptionRow\r\n removePreloader();\r\n capSvc.addGdprNotice();\r\n if (!sessionStorage.getItem('cookiesAccepted') || sessionStorage.getItem('cookiesAccepted') === 'false') {\r\n\r\n $('#gdprNotice').show();\r\n }\r\n\r\nfunction loadJobDetail(jobId, brandCode, stateProvince) {\r\n let jobDetailUrl\r\n let queryParams = \"\";\r\n let queryCandidateId = sessionStorage.getItem(\"candidateId\");\r\n let queryReferralAdSourceId = sessionStorage.getItem(\"referralAdSourceId\");\r\n if(brandCode == 'staffmark' || brandCode == 'staffmarkdrivers'){\r\n jobDetailUrl = 'https://staffmark.com/jobs/detail/' + jobId + '/'\r\n } else {\r\n if (window.location.origin.includes('localhost')) {\r\n jobDetailUrl = window.location.origin + '/' + brandCode + '/' + jobId + '.html';\r\n } else {\r\n jobDetailUrl = window.location.origin + '/jobs/' + brandCode + '/' + jobId;\r\n }\r\n }\r\n if (queryCandidateId !== null){\r\n if(queryParams !== \"\") {\r\n queryParams += \"&\"\r\n } else {\r\n queryParams += \"?\"\r\n }\r\n queryParams += 'cid=' + queryCandidateId\r\n }\r\n if (queryReferralAdSourceId !== null){\r\n if(queryParams !== \"\") {\r\n queryParams += \"&\"\r\n } else {\r\n queryParams += \"?\"\r\n }\r\n queryParams += 'source=' + queryReferralAdSourceId\r\n }\r\n if(queryParams !== \"\") {\r\n jobDetailUrl += queryParams\r\n }\r\n console.log('jobDetailUrl: ' + jobDetailUrl)\r\n if (stateProvince === 'CA') {\r\n capSvc.showCaliNotice(jobDetailUrl);\r\n } else {\r\n window.open(jobDetailUrl, \"_self\");\r\n }\r\n}\r\n\r\nfunction populateSearchTable(displayData, pageSize = null) {\r\n let totalResults = displayData['totalResults'].toString().replace(/\\B(?=(\\d{3})+(?!\\d))/g, ',');\r\n displayData.searchResults.forEach(r => {\r\n r.isRemote = r.isRemote ? 'Yes' : 'No'\r\n })\r\n searchTable.innerHTML = `\r\n
\r\n

${totalResults} Positions Found

\r\n
\r\n
\r\n \t\t\t\t\t\r\n\t\t\t\t\t \r\n\t\t\t\t\t\t\t\r\n ${columns.map(({path, name, justification}) => (\r\n ``\r\n )).join('')}\r\n\t\t\t\t\t\t \r\n\t\t\t\t\t \r\n\t\t\t\t\t \r\n ${displayData['searchResults'].map((rowData) => (\r\n `\r\n ${columns.map(({path, justification}) => (\r\n formatData(path, rowData, justification))).join('')}\r\n `)).join('')}\r\n\t\t\t\t\t \r\n\t\t\t\t
${name}\r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n
PRIVACY NOTICE TO CALIFORNIA EMPLOYEES AND JOB APPLICANTS REGARDING THE COLLECTION OF PERSONAL INFORMATION
\r\n \r\n
\r\n
\r\n ${sessionStorage.getItem('ccpaContent')}\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n`\r\n}\r\n\r\nfunction formatData(path, rowData, justification) {\r\n return (`\r\n ${rowData[path]}\r\n `)\r\n}\r\n\r\nexport function setSortHeader() {\r\n const table = document.getElementById('jobSearchTable');\r\n\r\n // Query the headers\r\n const headers = table.querySelectorAll('th');\r\n\r\n // Loop over the headers\r\n [].forEach.call(headers, function (header, index) {\r\n header.addEventListener('click', function () {\r\n // This function will sort the column\r\n sortColumn(index, header.id);\r\n });\r\n });\r\n\r\n const tableBody = table.querySelector('tbody');\r\n const rows = tableBody.querySelectorAll('tr');\r\n\r\n // Track sort directions\r\n let directions = Array.from(headers).map(function (header) {\r\n return '';\r\n });\r\n\r\n const sortColumn = function (index, id) {\r\n if ($('#' + id)[0].classList.contains('sorting_asc')) {\r\n direction = \"asc\"\r\n } else {\r\n direction = \"desc\"\r\n }\r\n\r\n // \r\n\r\n // console.log($('#' + id)[0].querySelector('.fa').classList);\r\n\r\n // // Get the current direction\r\n // const direction = directions[index] || 'asc';\r\n\r\n switch (id){\r\n case 'ID':\r\n searchRequestModel['sortColumn'] = \"ERecruitId\"\r\n break\r\n case 'title':\r\n searchRequestModel['sortColumn'] = \"Title\"\r\n break\r\n case 'positionType':\r\n searchRequestModel['sortColumn'] = \"PositionType\"\r\n break\r\n case 'city':\r\n searchRequestModel['sortColumn'] = \"City\"\r\n break\r\n case 'state':\r\n searchRequestModel['sortColumn'] = \"StateProvince\"\r\n break\r\n case 'brand':\r\n searchRequestModel['sortColumn'] = \"Brand\"\r\n break\r\n default:\r\n searchRequestModel['sortColumn'] = \"DatePosted\"\r\n break\r\n }\r\n searchRequestModel['sortDirection'] = direction\r\n\r\n capSvc.getJobs(bodyRequest)\r\n .then(res => res.json())\r\n .then(json => {\r\n displayData = json\r\n bindSearchTable(displayData)\r\n if (direction === 'asc') {\r\n $('#' + id)[0].classList.remove('sorting_asc');\r\n $('#' + id)[0].classList.add('sorting_desc');\r\n $('#' + id)[0].querySelector('.fa').classList.remove('fa-chevron-up');\r\n $('#' + id)[0].querySelector('.fa').classList.add('fa-chevron-down');\r\n\r\n } else {\r\n $('#' + id)[0].classList.remove('sorting_desc');\r\n $('#' + id)[0].classList.add('sorting_asc');\r\n $('#' + id)[0].querySelector('.fa').classList.remove('fa-chevron-down');\r\n $('#' + id)[0].querySelector('.fa').classList.add('fa-chevron-up');\r\n }\r\n })\r\n\r\n // Reverse the direction\r\n directions[index] = direction === 'asc' ? 'desc' : 'asc';\r\n };\r\n}\r\n\r\nexport function resetFilter(){\r\n bodyRequest = searchRequestModel\r\n sessionStorage.setItem('bodyRequest', JSON.stringify(bodyRequest))\r\n window.location.reload()\r\n}\r\n\r\nexport function filterSearch(event) {\r\n event.preventDefault()\r\n const state = document.getElementById(\"inputState\").value === \"\" ? null : document.getElementById(\"inputState\").value\r\n let distance = null\r\n let keyword = null\r\n let eRecruitId = null\r\n let city = null\r\n let ZipCode = null\r\n let isRemote = false\r\n let resultsPerPage = 10\r\n if (!document.getElementById(\"radiusMiles\").disabled) {\r\n distance = document.getElementById(\"radiusMiles\").value\r\n }\r\n if (document.getElementById(\"inputTitle\").value !== \"\") {\r\n keyword = document.getElementById(\"inputTitle\").value\r\n }\r\n if (document.getElementById(\"inputId\").value !== \"\") {\r\n eRecruitId = document.getElementById(\"inputId\").value\r\n }\r\n\r\n if (document.getElementById(\"inputCity\").value) {\r\n city = document.getElementById(\"inputCity\").value\r\n }\r\n\r\n if (document.getElementById(\"inputZipRadius\").value !== \"\") {\r\n ZipCode = document.getElementById(\"inputZipRadius\").value\r\n }\r\n\r\n if (document.getElementById(\"isRemote\").checked) {\r\n isRemote = document.getElementById(\"isRemote\").checked\r\n }\r\n sessionStorage.setItem('searchBrandId', $(\"#inputBrand\").val());\r\n\r\n bodyRequest = {\r\n keywords: keyword,\r\n campaignCode: null,\r\n department: null,\r\n erecruitid: eRecruitId,\r\n city: city,\r\n state: state,\r\n positionType: null,\r\n postalCode: ZipCode,\r\n distanceInMiles: distance,\r\n page: 0,\r\n resultsPerPage: 10,\r\n isRemote: isRemote,\r\n sortColumn: \"DatePosted\",\r\n sortDirection: \"desc\"\r\n }\r\n\r\nsessionStorage.setItem('bodyRequest', JSON.stringify(bodyRequest))\r\n const jobs = capSvc.getJobs(bodyRequest)\r\n console.log(jobs)\r\n const jobs2 = jobs.then(res => res.json())\r\n jobs2.then(json => {\r\n console.log(json)\r\n displayData = json\r\n bindSearchTable(displayData)\r\n })\r\n}\r\n\r\nexport function setPageNumber(pageNumber) {\r\n bodyRequest[\"page\"] = pageNumber - 1\r\n sessionStorage.setItem('bodyRequest', JSON.stringify(bodyRequest))\r\n capSvc.getJobs(bodyRequest)\r\n .then(res => res.json())\r\n .then(json => {\r\n displayData = json\r\n bindSearchTable(displayData)\r\n })\r\n}\r\n\r\nexport function setPageDisplaySize(event) {\r\n bodyRequest[\"resultsPerPage\"] = event.currentTarget.value\r\n sessionStorage.setItem('bodyRequest', JSON.stringify(bodyRequest))\r\n document.getElementsByName(\"pageDisplaySize\").value = bodyRequest[\"resultsPerPage\"]\r\n capSvc.getJobs(bodyRequest)\r\n .then(res => res.json())\r\n .then(json => {\r\n displayData = json\r\n bindSearchTable(displayData)\r\n })\r\n}\r\n\r\nfunction bindSearchTable(displayData) {\r\n if (displayData.searchResults !== null) {\r\n if(displayData.searchResults.length > 0){\r\n populateSearchTable(displayData)\r\n document.getElementById(\"tableFooter\").remove()\r\n footer(displayData.totalResults, bodyRequest[\"resultsPerPage\"], bodyRequest[\"page\"] + 1)\r\n setSortHeader()\r\n keyTabNavigation()\r\n }\r\n }else{\r\n $('#noJobsFound')[0].removeAttribute('hidden')\r\n $('#jobCountDisplay').addClass('hidden')\r\n $('#jobSearchTable').addClass(\"hidden\")\r\n $('#searchFilter').addClass('hidden')\r\n document.getElementById(\"tableFooter\").remove()\r\n }\r\n}\r\n\r\nfunction hideCaliNotice() {\r\n $(\"#caliNoticeModal\").modal(\"hide\");\r\n}\r\n\r\nfunction acceptGdpr() {\r\n // console.log('accepted')\r\n sessionStorage.setItem('cookiesAccepted','true')\r\n $('#gdprNotice').hide();\r\n}\r\n"],"file":"search.js"}