(function ($) {
var instructorFinderMap;
function handleMap() {
const mapContainer = $('#instructorFinderMap');
const mapOption = {
dragging: true,
zoomControl: true,
scrollWheelZoom: false,
};
const lat = mapContainer.attr('data-latitude');
const lng = mapContainer.attr('data-longitude');
const zoom = mapContainer.attr('data-zoom');
instructorFinderMap = L.map('instructorFinderMap', mapOption).setView([lat, lng], zoom);
L.tileLayer(leafletApiPath, {
maxZoom: 18,
minZoom: 3,
tileSize: 512,
zoomOffset: -1,
attribution: '© OpenStreetMap'
}).addTo(instructorFinderMap);
let countryMarkers = [];
let provinceMarkers = [];
let cityMarkers = [];
if (mapUsers && Array.isArray(mapUsers)) {
var myMarkersGroup = L.markerClusterGroup({
showCoverageOnHover: false,
});
for (const mapUser of mapUsers) {
const marker = makeUserMarker(mapUser);
myMarkersGroup.addLayer(marker);
}
instructorFinderMap.addLayer(myMarkersGroup);
}
feather.replace();
}
handleMap();
function makeUserMarker(user) {
const userMarker = L.divIcon({
html: "

",
iconAnchor: [25, 50],
iconSize: [50, 50],
className: 'rounded-circle bg-white border-0'
});
const marker = L.marker([user.location[0], user.location[1]], {icon: userMarker});
marker.bindPopup(handleUserMapCardHtml(user), {
className: 'map-instructor-card-popup'
});
return marker;
}
function getStarIconHtml() {
return ``;
}
function handleUserRateHtml(rate) {
let i = 5;
let html = ``;
while (--i >= 5 - rate) {
html += `${getStarIconHtml()}`;
}
while (i-- >= 0) {
html += `${getStarIconHtml()}`;
}
html += `
`;
return html;
}
function handleUserMapCardHtml(user) {
return `
${user.full_name ?? ''}
${user.bio ?? ''}
${handleUserRateHtml(user.rate)}
${
user.price ?
`
${currency}${user.price ?? ''}
/${hourLang}
`
:
`
${freeLang}
`
}
${profileLang}
`;
}
$(document).ready(function () {
var rangeTimeOut = undefined;
function handleDoubleRange($el, item) {
if ($el && $el.length) {
const minLimit = $el.attr('data-minLimit');
const maxLimit = $el.attr('data-maxLimit');
const minTimeEl = $el.find('input[name="min_' + item + '"]');
const maxTimeEl = $el.find('input[name="max_' + item + '"]');
const minValue = minTimeEl.val();
const maxValue = maxTimeEl.val();
const range = $el.wRunner({
type: 'range',
limits: {
minLimit,
maxLimit,
},
rangeValue: {
minValue,
maxValue,
},
step: 1,
});
range.onValueUpdate(function (values) {
minTimeEl.val(values.minValue);
maxTimeEl.val(values.maxValue);
if (rangeTimeOut !== undefined) {
clearTimeout(rangeTimeOut);
}
rangeTimeOut = setTimeout(() => {
$('#filtersForm').trigger('submit');
}, 1500);
});
}
}
handleDoubleRange($('#priceRange'), 'price');
handleDoubleRange($('#instructorAgeRange'), 'age');
handleDoubleRange($('#timeRangeInstructorPage'), 'time');
});
$('body').on('change', '#topFilters input,#topFilters select', function (e) {
e.preventDefault();
$('#filtersForm').trigger('submit');
});
})(jQuery);