-
-
Notifications
You must be signed in to change notification settings - Fork 26
/
Copy pathscript.js
119 lines (95 loc) · 3.98 KB
/
script.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
// Пауза
function delay(ms) {
return new Promise((resolve) => setTimeout(resolve, ms));
}
async function init() {
var vacancies = document.querySelectorAll('[data-qa="vacancy-serp__vacancy_response"]');
var vacancy = document.querySelector('[data-qa="vacancy-response-link-top"]');
var i = 0;
// Функция для автоматического выбора резюме
function selectResume() {
var resume = document.querySelector('#resume_ID_РЕЗЮМЕ');
var message = document.querySelector('[data-qa="vacancy-response-letter-toggle"]');
if (!message) {
resume.click();
} else {
resume.click();
message.click();
}
}
// Функция для автоматической отправки Сопроводительного письма
function handlerCoverLetter() {
// Шаблон Сопроводительного письма
var vacancyTitle = document.querySelector(
'.bloko-modal-header_outlined > div'
).textContent;
var vacancyName = vacancyTitle.slice(1, vacancyTitle.length - 1);
var messagesData = {
frontend: `Добрый день!
Меня заинтересовала предложенная Вами вакансия ${vacancyName}. Ознакомившись с перечнем требований к кандидатам, пришел к выводу, что мой опыт работы позволяют мне претендовать на данную должность.
Обладаю высоким уровнем фронтенд-разработки, свободно говорю по-английски. В работе ответствен, пунктуален и коммуникабелен.
Буду с нетерпением ждать ответа и возможности обсудить условия работы и взаимные ожидания на собеседовании. Спасибо, что уделили время.
Контактные данные прилагаю.`,
};
var messageArea = document.querySelector(
'[data-qa="vacancy-response-popup-form-letter-input"]'
);
messageArea.value = '';
messageArea.value = messagesData.frontend;
// Добавить изменения в поле текста
var evt = document.createEvent('HTMLEvents');
evt.initEvent('change', true, true);
messageArea.dispatchEvent(evt);
// Отправить отклик
var btnSubmit = document.querySelector('[data-qa="vacancy-response-submit-popup"]');
btnSubmit.click();
}
// Вызвать функцию на странице с вакансией
if (vacancy) {
vacancy.click();
await delay(1000);
selectResume();
await delay(500);
handlerCoverLetter();
}
// Иначе вызвать функцию на странице со списком вакансий
else {
while (i <= vacancies.length) {
vacancies[i].click();
await delay(1000);
selectResume();
await delay(500);
handlerCoverLetter();
i++;
await delay(1000);
}
}
}
// Добавить на панель доп. функционал
(async function addNavLinks() {
await delay(1000);
const navLinks = document.querySelectorAll(
'.supernova-navi-item.supernova-navi-item_lvl-2.supernova-navi-item_no-mobile'
);
const itemLetters = document.createElement('div');
function createElement(item, attribute, title) {
item.classList.add(
'supernova-navi-item',
'supernova-navi-item_lvl-2',
'supernova-navi-item_no-mobile'
);
item.innerHTML = `
<a
data-qa="mainmenu_vacancyResponses"
class="supernova-link"
${attribute}
>
${title}
</a>
<div class="supernova-navi-underline">${title}</div>
`;
}
createElement(itemLetters, 'handler-letters', 'Отправить отклики');
navLinks[2].append(itemLetters);
document.querySelector('[handler-letters]').addEventListener('click', init);
})();