Commit 9dcc6c2f authored by Sergey's avatar Sergey

Resumes list and resumes map is done

parent c26c3d30
......@@ -6880,6 +6880,11 @@
"resolved": "https://registry.npmjs.org/normalize.css/-/normalize.css-8.0.1.tgz",
"integrity": "sha512-qizSNPO93t1YUuUhP22btGOo3chcvDFqFaj2TRybP0DMxkHOCTYwp3n34fel4a31ORXy4m1Xq0Gyqpb5m33qIg=="
},
"nouislider": {
"version": "14.5.0",
"resolved": "https://registry.npmjs.org/nouislider/-/nouislider-14.5.0.tgz",
"integrity": "sha512-EzI2Y0pO+x20c8yHLvhmT9HXexkbncXHKcnNb6abN48a3F8QEGb73v2W6aPolQytoyjCalUrozSeHBTlpz2jfg=="
},
"npm-run-path": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz",
......
......@@ -298,7 +298,7 @@
<img src="./img/icon_profile.svg" alt="">
Петров Василий Иванович
</p> -->
<a href="mailto:i_ivanov@mail.ru" class="brief-information-block__email">
<!-- <a href="mailto:i_ivanov@mail.ru" class="brief-information-block__email">
<img src="./img/icon_mail.svg" alt="">
i_ivanov@mail.ru
</a>
......@@ -311,22 +311,28 @@
<img src="./img/icon_phone.svg" alt="">
+71234567890
<p>Номер близкого знакомого</p>
</a>
</a> -->
<div class="show-contacts-block block-mt-green">
<a href="#" class="other-button">Показать контакты</a>
<span class="block-tooltip" data-info="Всплывающий тултип с кратким пояснительным текстом, появляющийся при наведении курсора на иконку">
<img class="img-svg" src="./img/icon_info.svg" alt="">
</span>
</div>
</div>
</div>
</div>
<div class="block-to-edit">
<a href="#" class="button-text">
<img class="img-svg" src="./img/icon_edit.svg" alt="">
Редактировать
<img class="img-svg" src="./img/icon_add_vacancy.svg" alt="">
В избранное
</a>
<a href="#" class="button-text">
<img class="img-svg" src="./img/icon_publish.svg" alt="">
Опубликовать
<img class="img-svg" src="./img/icon_mail.svg" alt="">
Пригласить
</a>
<a href="#" class="button-text">
<img class="img-svg" src="./img/icon_garbage.svg" alt="">
Удалить
<img class="img-svg" src="./img/icon_print.svg" alt="">
Распечатать
</a>
</div>
</div>
......
<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M7.2 5.1L10.3 8.2L18.6 0L20 1.4L10.3 11.1L5.8 6.5L7.2 5.1ZM18 18H2V2H10V0C3.6 0 4.4 0 0 0C0 8.6 0 10.6 0 20C11.1 20 10.5 20 20 20C20 14.2 20 15.6 20 10H18V18Z" fill="#262262"/>
</svg>
<svg width="20" height="19" viewBox="0 0 20 19" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M17 7L13 0L11.3 1L14.7 7H5.3L8.8 1L7 0L3 7C2 7 1.1 7 0 7V9H1.3L3 19H17L18.7 9H20V7C18.9 7 18 7 17 7ZM15.3 17H4.7L3.4 9C6.4 9 13.7 9 16.9 9L15.3 17Z" fill="#262262"/>
</svg>
<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M18 6V0H2V6H0V18H3V20H17V18H20V6H18ZM4 2H16V6H4V2ZM15 18H5C5 16.6 5 15.4 5 14H15C15 15.4 15 16.6 15 18ZM18 8C18 10.8 18 13.1 18 16H17V12H3V16H2C2 13.2 2 10.9 2 8C5 8 14.5 8 18 8ZM5.2 9.8C5.2 10.4 4.8 10.8 4.2 10.8C3.6 10.8 3.2 10.4 3.2 9.8C3.2 9.2 3.6 8.8 4.2 8.8C4.7 8.8 5.2 9.3 5.2 9.8ZM9.2 9.8C9.2 10.4 8.8 10.8 8.2 10.8C7.6 10.8 7.2 10.4 7.2 9.8C7.2 9.2 7.6 8.8 8.2 8.8C8.7 8.8 9.2 9.3 9.2 9.8Z" fill="#262262"/>
</svg>
<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M7 20H13V10H7V20ZM9 12H11V18H9V12ZM0 20H6V4H0V20ZM2 6H4V18H2V6ZM14 0V20H20V0H14ZM18 18H16V2H18V18Z" fill="#262262"/>
</svg>
<svg width="16" height="18" viewBox="0 0 16 18" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M14 10C14 13 11.3 16 8 16C4.7 16 2 13.3 2 10C2 6.7 4.7 4 8 4V6L13 3L8 0V2C3.6 2 0 5.6 0 10C0 14.4 3.6 18 8 18C12.4 18 16 15 16 10H14ZM7 7C7 8.4 7 8.4 7 11C9.8 11 6.6 11 13 11V9H9V7H7Z" fill="#262262"/>
</svg>
......@@ -4,6 +4,7 @@ import '../scss/style.scss';
import Choices from '../../node_modules/choices.js/src/scripts/choices';
import 'owl.carousel';
import datepicker from 'js-datepicker';
import noUiSlider from "nouislider";
(function()
{
......@@ -378,6 +379,7 @@ document.addEventListener('DOMContentLoaded', () => {
let vacanciesMap = document.querySelector('#vacancies-map');
let companiesMap = document.querySelector('#companies-map');
let favoritesVacanciesMap = document.querySelector('#favorites-vacancies-map');
let resumesMap = document.querySelector('#resumes-map');
if(vacanciesMap)
{
......@@ -598,6 +600,106 @@ document.addEventListener('DOMContentLoaded', () => {
};
let MyBalloonContentLayout = ymaps.templateLayoutFactory.createClass(
'<div class="balloon-header-vacancy"><div class="balloon-header-vacancy__left"><p>$[properties.nameWork]</p><p>$[properties.salary]</p></div><div class="balloon-header-vacancy__right"><a class="button-text" href="current-vacancy.html"><img class="img-svg" src="./img/arrow_balloon.svg"></a></div></div>' +
'<div class="balloon-content-vacancy"><div class="balloon-content-vacancy-block"><div class="balloon-content-vacancy-block__image"><img src="$[properties.logoCompany]"></div><p class="balloon-content-vacancy-block__name">$[properties.nameCompany]</p></div></div>'
);
data.forEach((item, index) => {
let featureObj = {
"type": "Feature",
"id": index,
"geometry": {
"type": "Point",
"coordinates": item.coords
},
"properties": {
"nameWork": item.nameWork,
"salary": item.salary,
"nameCompany": item.nameCompany,
"logoCompany":item.logoCompany
},
"options": {
"iconLayout": "default#image",
"iconColor": "#dc3535",
"iconImageHref": "./img/icon_pin.svg",
"iconImageSize": [33, 47],
"balloonOffset": [-70, -45],
"balloonContentLayout": MyBalloonContentLayout,
"hideIconOnBalloonOpen": false,
"balloonCloseButton": false,
"zIndex": 100,
"zIndexHover": 500,
"zIndexActive": 1000
}
};
objectManagerData["features"].push(featureObj);
});
let objectManager = new ymaps.ObjectManager({
clusterize: true,
gridSize: 128,
clusterIconLayout: "default#pieChart",
clusterIconPieChartStrokeWidth: 0
});
map.geoObjects.add(objectManager);
objectManager.add(objectManagerData);
map.setBounds(map.geoObjects.getBounds());
objectManager.objects.events.add('click', function (e) {
var objectId = e.get('objectId');
if (objectManager.objects.balloon.isOpen(objectId)) {
objectManager.objects.balloon.close();
}
map.events.add('click', function (e)
{
if(e.get('target') === map)
{
objectManager.objects.balloon.close();
}
});
});
objectManager.objects.events.add('balloonopen', function(e) {
objectManager.objects.setObjectOptions(e.get('target')._objectIdWithOpenBalloon, {'iconImageHref': './img/icon_pin_active.svg', 'zIndex': 1000});
});
objectManager.objects.events.add('balloonclose', function(e) {
objectManager.objects.setObjectOptions(e.get('target')._objectIdWithOpenBalloon, {'iconImageHref': './img/icon_pin.svg', 'zIndex': 250});
});
})
})
});
}
if(resumesMap)
{
fetch('./php/favorites-vacancies.php')
.then(response => response.json())
.then(data => {
let apiKey = 'e158c5a2-b717-4552-9b2d-e21a7b7d540b';
getScript('https://api-maps.yandex.ru/2.1/?lang=ru_RU&apikey=' + apiKey, function(){
ymaps.ready(function ()
{
let map = new ymaps.Map('resumes-map', {
center: [55.751574, 37.573856],
zoom: 12,
controls: []
})
let objectManagerData = {
"type": "FeatureCollection",
"features": []
};
let MyBalloonContentLayout = ymaps.templateLayoutFactory.createClass(
'<div class="balloon-header-vacancy"><div class="balloon-header-vacancy__left"><p>$[properties.nameWork]</p><p>$[properties.salary]</p></div><div class="balloon-header-vacancy__right"><a class="button-text" href="current-vacancy.html"><img class="img-svg" src="./img/arrow_balloon.svg"></a></div></div>' +
'<div class="balloon-content-vacancy"><div class="balloon-content-vacancy-block"><div class="balloon-content-vacancy-block__image"><img src="$[properties.logoCompany]"></div><p class="balloon-content-vacancy-block__name">$[properties.nameCompany]</p></div></div>'
......@@ -1411,7 +1513,11 @@ if(responses.length)
if(window.matchMedia('(max-width: 650px)').matches)
{
let submitButton = document.querySelector('.quick-job-search-block-content form input[type="submit"]');
submitButton.value = ''
if(submitButton)
{
submitButton.value = ''
}
}
......@@ -1515,6 +1621,57 @@ if(tabs.length)
}
// Range Slider
let blockRangeSliders = document.querySelectorAll('.block-range-slider');
if(blockRangeSliders.length)
{
blockRangeSliders.forEach(block =>
{
let rangeSlider = block.querySelector('[data-id="range-slider"]');
let snapValues = [
block.querySelector('input[name="min-value-range"]'),
block.querySelector('input[name="max-value-range"]')
];
noUiSlider.create(rangeSlider, {
start: [18, 52],
tooltips: false,
step: 1,
connect: true,
range: {
'min': 18,
'max': 99
}
});
rangeSlider.noUiSlider.on('update', function (values, handle) {
snapValues[handle].value = Math.round(values[handle]);
});
snapValues.forEach((field, index) =>
{
field.addEventListener('change', function(e)
{
let value = field.value;
if(index === 0)
{
rangeSlider.noUiSlider.set([value, null]);
}
else
{
rangeSlider.noUiSlider.set([null, value]);
}
});
});
});
}
......
......@@ -399,6 +399,15 @@
<li>
<a href="current-resume-employer.html">Резюме детальная</a>
</li>
<li>
<a href="resume-paid.html">Резюме оплаченное</a>
</li>
<li>
<a href="resumes-list.html">Список резюме</a>
</li>
<li>
<a href="resumes-map.html">Резюме на карте</a>
</li>
</ul>
</div>
</div>
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
......@@ -4,5 +4,6 @@
@import '~bootstrap/scss/bootstrap.scss';
@import '../../node_modules/choices.js/src/styles/choices.scss';
@import '~js-datepicker/src/datepicker';
@import '~nouislider/distribute/nouislider.min.css';
@import '~normalize.css';
// @import '~tiny-slider/dist/tiny-slider.css';
\ No newline at end of file
......@@ -144,7 +144,7 @@
{
display: none;
}
.main-search .search-list-row-vacancies .col-4
.main-search .search-list-row .col-4
{
flex: 0 0 50%;
max-width: 50%;
......@@ -379,7 +379,7 @@
flex: 0 0 100%;
max-width: 100%;
}
.main-search .search-list-row-vacancies .col-4
.main-search .search-list-row .col-4
{
flex: 0 0 50%;
max-width: 50%;
......@@ -734,12 +734,12 @@
padding-left: 16px;
padding-right: 16px;
}
.main-search .search-list-row-vacancies .col-4
.main-search .search-list-row .col-4
{
padding-left: 16px;
padding-right: 16px;
}
.main-search .search-list-row-vacancies
.main-search .search-list-row
{
margin-left: -16px;
margin-right: -16px;
......@@ -1010,7 +1010,7 @@
flex: 0 0 100%;
max-width: 100%;
}
.main-search .search-list-row-vacancies .col-4
.main-search .search-list-row .col-4
{
max-width: 100%;
flex: 0 0 100%;
......@@ -1031,7 +1031,7 @@
{
margin-bottom: 10px;
}
.main-search .search-list-row-vacancies .col-4
.main-search .search-list-row .col-4
{
flex: 0 0 100%;
max-width: 100%;
......
......@@ -286,9 +286,8 @@ button
display: flex;
justify-content: center;
align-items: center;
font-family: Montserrat Bold;
font-size: 14px;
font-family: Montserrat Bold !important;
font-size: 14px !important;
font-stretch: normal;
font-style: normal;
line-height: normal;
......@@ -604,6 +603,73 @@ select
border-top-color: #dddce8;
}
// Стили для range-slider
.range-slider
{
margin-top: 22px;
margin-bottom: 22px;
padding-right: 16px;
// width: 250px;
&__title
{
font-family: Montserrat Bold;
font-size: 15px;
font-stretch: normal;
font-style: normal;
line-height: normal;
letter-spacing: normal;
color: $color-primary;
}
&__values
{
display: flex;
justify-content: space-between;
input
{
width: 80px;
}
}
}
.noUi-connect
{
background: $color-ref;
}
.noUi-target
{
background: $color-disabled;
border: 0;
border-radius: 3px;
box-shadow: none;
}
.noUi-horizontal, .noUi-base, .noUi-connects
{
height: 4px;
}
.noUi-horizontal .noUi-handle
{
right: -16px;
}
.noUi-handle
{
width: 16px !important;
height: 16px !important;
border-radius: 6px !important;
box-shadow: 0 2px 5px 0 rgba(15, 20, 91, 0.1) !important;
border: solid 1px #dddce8 !important;
background-color: #fff !important;
outline: none;
}
.noUi-handle:before, .noUi-handle:after
{
display: none;
}
// Стили для блока с файлом
.block-file
......@@ -2984,7 +3050,7 @@ button
.main-search
{
margin-top: 32px;
.search-list-row-vacancies
.search-list-row
{
margin-left: -10px;
margin-right: -10px;
......@@ -3960,6 +4026,16 @@ ymaps[class$='pie-chart-content']
margin-left: 42px;
}
}
.show-contacts-block
{
display: flex;
align-items: center;
.other-button
{
margin-right: 10px;
margin-bottom: 0;
}
}
}
}
}
......@@ -5273,6 +5349,26 @@ input[type="submit"]
margin: 0;
}
.base-resume
{
position: relative;
}
.base-resume:after
{
content: attr(data-count);
position: relative;
margin-left: 10px;
font-family: Montserrat Regular;
font-size: 15px;
font-weight: normal;
font-stretch: normal;
font-style: normal;
line-height: normal;
letter-spacing: normal;
color: $color-disabled;
}
// Футер
......
......@@ -451,7 +451,7 @@
</div>
<div class="col-9">
<div class="additional-search">
<a href="#" class="button-text vacancies-map">
<a href="#" class="button-text">
<img class="img-svg" src="./img/icon_map.svg" alt="">
Показать на карте
</a>
......@@ -464,7 +464,7 @@
</form>
</div>
<div class="main-search">
<div class="row search-list-row-vacancies">
<div class="row search-list-row">
<div class="col-4">
<a href="#" class="image-vacancies" style="background-image: url(./img/img_banner3.png);"></a>
</div>
......
......@@ -10,7 +10,7 @@ const pages = ['index', 'articles', 'faq', 'vacancies-list', 'current-article',
'favorites-vacancies-map', 'response', 'response-resume', 'response-vacancy', 'response-vacancy-not-reg', 'subscription',
'post-resume-step1', 'post-resume-step2', 'post-resume-step3', 'post-resume-step4', 'current-resume', 'index-employer', 'articles-employer', 'faq-employer',
'current-article-employer', 'service-rules-employer', 'access-account-employer', 'tariffs', 'password-recovery-employer', 'registration-employer',
'resumes-list', 'resumes-map', 'current-resume-employer'];
'resumes-list', 'resumes-map', 'current-resume-employer', 'resume-paid'];
const webpackConfig = {
context: path.resolve(__dirname, 'src'),
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment