🏠 Home 

Greasy Fork is available in English.

Indeed UX+

Removes Archived, Saved & Applied Job Posts from showing up & Allows select Job Posts via Arrow Keys


安装此脚本?
// ==UserScript==
// @name         Indeed UX+
// @namespace    http://tampermonkey.net/
// @version      0.3.1
// @description  Removes Archived, Saved & Applied 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
// @run-at       context-menu
// ==/UserScript==
(function checkDocumentReady() { document.readyState === 'complete' ? executeUsercript() : setTimeout(checkDocumentReady, 0); })();
function executeUsercript() {
'use strict';
let getViewJobPanelElem = () => document.getElementById('jobsearch-JobFullDetailsTitle')?.nextElementSibling;
let getJobR###ltsPanelElem = () => document.getElementById('mosaic-provider-jobcards')?.firstElementChild;
let allPosts = Array.from(getJobR###ltsPanelElem()?.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.querySelector('div.underShelfFooter span')?.textContent.startsWith('Archived ') || jobPostElem.querySelector('.mainContentTable div[data-testid="appliedSnippet"]')?.textContent == 'Applied') && !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;
let newJobPostElem = getVisiblePosts()[newJobPostElemIndex];
let newJobPostId = getjobPostId(newJobPostElem);
newJobPostElem.scrollIntoView({ behavior: 'auto', block: 'center', inline: 'center' });
document.querySelector(`#sj_${newJobPostId}, #job_${newJobPostId}`).click();
currentJobPostElemIndex = newJobPostElemIndex;
}
window.addEventListener('keydown', (e) => jobPostSelector(e));
}