(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: "
" + user.full_name + "
", 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.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);