Сервис позволяет рассчитать среднее оптимальное значение заработной платы по различным отраслям РФ для найма потенциальных сотрудников.
Мы анализируем данные крупнейших рекрутинговых площадок РФ в режиме реального времени.
Из отчета Вы узнаете:
- Сколько по Вашей вакансии просят заработную плату те кто хочет устроиться.
- Сколько предлагают З/П конкуренты в Вашем городе по аналогичной вакансии.
- Какая оптимальная З/П для получения откликов соискателей.
Вакансия
Вы предлагаете заработную плату
Город / регион
Средняя заработная плата предлагаемая работодателем
Минимальная ставка ${result.vac.min} |
Средняя з. Плата ${result.vac.avg} |
|
Миксимальная ставка ${result.vac.max} |
Популярная з. Плата ${result.vac.top} |
Ваша ставка заработной платы составляет ${salary}
Чаще запрашивают и предлагают ${result.medium}
Ваша вероятность конкуретноспопобности ${result.chance}%
`;
resultRootElement.appendChild(root);
}
function displayResult(result) {
createHeaderResultElement();
createListKeysElement();
createInfoStatElement(result);
createInfoVacElement(result);
createInfoCvElement(result);
createChanceStatElement(result);
}
function displayNotFound() {
const root = document.createElement("div");
root.className = "result_container__fail";
root.innerHTML = `
Ничего не найдено : (
`;
resultRootElement.appendChild(root);
}
function onFetchResult(result) {
resultRootElement.innerHTML = null;
pressButtonElemnet.disabled = false;
if (result.keys.length === 0) {
displayNotFound();
return;
}
const last = {
search: name[0].toUpperCase() + name.slice(1),
region: region_name,
ratio: result.ratio,
medium: result.medium,
vac: result.vac.count,
cv: result.cv.count
};
localStorage.setItem("salary_result", JSON.stringify(last));
for (let key in result.keys) {
keys.push([key[0].toUpperCase() + key.slice(1), result.keys[key]]);
}
keys.sort((a, b) => b[1] - a[1]);
displayResult(result);
}
function setInputValues() {
region_name = document.getElementById("region").value;
region_id = regions[region_name];
salary = document.getElementById("salary").value.replace(/\s+/g, String());
name = (document.getElementById("name").value).toLowerCase();
}
function displayNotValidForm(isReg, isName, isSal) {
const root = document.createElement("div");
root.className = "result_warnings__validation";
root.innerHTML = `
${isReg ? `Поле "Регион" не заполнено!
` : String()}
${isName ? `Поле "Название" не заполнено!
` : String()}
${isSal ? `Поле "Зарплата" не заполнено!
` : String()}
`;
warningsRootElement.appendChild(root);
}
function fetchSalaryResult() {
warningsRootElement.innerHTML = null;
setInputValues();
const doesRegionFail = region_id === undefined;
const doesNameFail = name.length < 1;
const doesSalaryFail = salary.length < 1;
if (doesSalaryFail || doesNameFail || doesRegionFail) {
displayNotValidForm(doesRegionFail, doesNameFail, doesSalaryFail);
return;
}
resultRootElement.innerHTML = "загрузка...
";
pressButtonElemnet.disabled = true;
keys = [];
cursor = 0;
fetch(`/app02/api.php?region_id=${region_id}&salary=${salary}&name=${name}`)
.then(r => r.json())
.then(onFetchResult);
}