Removes Saved Job Posts from showing up & Allows select Job Posts via Arrow Keys
当前为
// ==UserScript==
// @name Indeed UX+
// @namespace http://tampermonkey.net/
// @version 2024-11-11
// @description Removes Saved Job Posts from showing up & Allows select Job Posts via Arrow Keys
// @author TigerYT
// @include *://*.indeed.tld/*
// @icon https://uk.indeed.com/images/favicon.ico
// @grant none
// @license The Unlicense
// ==/UserScript==
(function checkDocumentReady() { document.readyState === 'complete' ? executeUsercript() : setTimeout(checkDocumentReady, 0); })();
function executeUsercript() {
'use strict';
let getViewJobPanelElem = () => document.getElementById('jobsearch-JobFullDetailsTitle')?.nextElementSibling;
let getJobResultsPanelElem = () => document.getElementById('mosaic-provider-jobcards').firstElementChild;
let allPosts = Array.from(getJobResultsPanelElem().children);
let getJobPosts = () => allPosts.filter((jobPost) => jobPost.firstElementChild.classList.contains('tapItem')).map((({firstElementChild}) => firstElementChild));
let getVisiblePosts = () => getJobPosts().filter((jobPostElem) => !jobPostElem.classList.contains('disliked'));
let getCurrentJobPostId = () => getViewJobPanelElem()?.querySelector('.jobsearch-HeaderContainer a').href.split("&fromjk=")[1];
let getCurrentJobPostElem = () => getVisiblePosts().find((jobPostElem) => getCurrentJobPostId() == getjobPostId(jobPostElem));
let getCurrentJobPostElemIndex = () => getVisiblePosts().findIndex((jobPostElem) => getCurrentJobPostId() == getjobPostId(jobPostElem));
let getjobPostId = (jobPostElem) => jobPostElem.className.split(' ').find((classStr) => classStr.startsWith('job_'))?.slice(4);
/* Hide All Saved Job Posts */
getJobPosts().forEach((jobPostElem) => {
let jobPostId = getjobPostId(jobPostElem);
if (jobPostElem.querySelector('div.underShelfFooter span').textContent.startsWith('Saved ') && !jobPostElem.classList.contains('disliked')) {
jobPostElem.classList.add('disliked');
if (jobPostId == getCurrentJobPostId() || !getCurrentJobPostElem()) getViewJobPanelElem().firstElementChild.click();
} else if (jobPostId == getCurrentJobPostId()) getCurrentJobPostElem().classList.add('vjs-highlight');
});
/* Allow Arrow Keys to Select Job Posts */
let newJobPostElemIndex, currentJobPostElemIndex
newJobPostElemIndex = currentJobPostElemIndex = getCurrentJobPostElemIndex();
let jobPostSelector = (e) => {
let upKey = ['ArrowUp', 'ArrowLeft'].includes(e.key);
let downKey = ['ArrowDown', 'ArrowRight'].includes(e.key);
if (!getCurrentJobPostElem()) getViewJobPanelElem()?.firstElementChild.click();
if (currentJobPostElemIndex > 0 && upKey) newJobPostElemIndex--;
else if (currentJobPostElemIndex < (getVisiblePosts().length - 1) && downKey) newJobPostElemIndex++;
else return;
console.log(newJobPostElemIndex);
console.log(getVisiblePosts());
let newJobPostElem = getVisiblePosts()[newJobPostElemIndex];
newJobPostElem.scrollIntoView({ behavior: 'auto', block: 'center', inline: 'center' });
console.log(getjobPostId(newJobPostElem));
document.getElementById('sj_' + getjobPostId(newJobPostElem)).click();
currentJobPostElemIndex = newJobPostElemIndex;
}
window.addEventListener('keydown', (e) => jobPostSelector(e));
}