{"version":3,"file":"js/1121-9b89c09ff2e52f8a0e5f.js","mappings":"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","sources":["webpack://lionwheel/./app/javascript/src/actions/drivers.js","webpack://lionwheel/./app/javascript/src/constants/index.js","webpack://lionwheel/./app/javascript/src/helpers/date.js","webpack://lionwheel/./app/javascript/src/helpers/drivers/confirmations.js","webpack://lionwheel/./app/javascript/src/helpers/external_deliveries/external_deliveries.js","webpack://lionwheel/./app/javascript/src/helpers/external_deliveries/get_package.js","webpack://lionwheel/./app/javascript/src/helpers/external_deliveries/gett.js","webpack://lionwheel/./app/javascript/src/helpers/external_deliveries/wolt.js","webpack://lionwheel/./app/javascript/src/helpers/leaflet.js","webpack://lionwheel/./app/javascript/src/helpers/notifications.js","webpack://lionwheel/./app/javascript/src/helpers/view.js","webpack://lionwheel/./app/javascript/src/helpers/metronic/sticky_card.js","webpack://lionwheel/./app/javascript/src/helpers/visits/popups.js","webpack://lionwheel/./app/javascript/src/services/map.js","webpack://lionwheel/./node_modules/moment/locale/ sync en%7Che%7Car%7Ces"],"sourcesContent":["export const saveDailyVisitsSchedule = (e, inputName) => {\n $(window).unbind('beforeunload')\n const visitRows = $('.visit-row')\n const form = $('.daily-route-form')\n const visits = {}\n\n for (let i = 0; i < visitRows.length; i++) {\n visits[i] = visitRows[i].getAttribute('visit-id')\n }\n form.find(inputName).val(JSON.stringify(visits))\n form.attr('action', e.currentTarget.dataset.url).submit()\n}\n\nexport const saveDailyRoutePlanVisitsSchedule = (e, inputName, pendingVisitsChanged) => {\n $(window).unbind('beforeunload');\n const form = $('.daily-route-form');\n const visits = {};\n const visitsRowKlass = pendingVisitsChanged ? '.pending-deliveries-row' : '.all-deliveries-row';\n const visitsRows = $(visitsRowKlass);\n const allVisits = [];\n\n visitsRows.each((_i, row) => allVisits.push(row.getAttribute('visit-id')));\n allVisits.forEach((val, i) => visits[i] = val);\n form.find(inputName).val(JSON.stringify(visits));\n form.attr('action', e.currentTarget.dataset.url).submit();\n}\n\nexport const fetchCurrentLocations = async (url) => {\n const res = await fetch(url, {\n method: 'GET',\n headers: { 'Content-Type': 'application/json' }\n })\n if (res.status === 200) {\n return res.json()\n } else if (res.status === 401) {\n return 'unauthorized'\n } else {\n return false\n }\n}\n","import { i18n } from \"../helpers/i18n\";\n\nexport const ISRAEL_CITIES_URL = '/israel_cities'\nexport const APP_HOST = 'https://members.lionwheel.com'\nexport const STRIPE_PUB_KEY = 'pk_live_51JDb5qClWmUXHuCwu7IMElXsZOWtdzMTmkQkxshRhMIUBtaNtcO8y2C5ZeKOAzjUQOSn0CJLn23YJAOrzco4orDr00rpn4tuA6'\nexport const EMPTY_LINE = '.'\nexport const STATUSES = {\n UNASSIGNED: {\n color: '#e7505a',\n name: () => (i18n.t('models.task.status_enum.UNASSIGNED'))\n },\n ASSIGNED: {\n color: '#c49f47',\n name: () => (i18n.t('models.task.status_enum.ASSIGNED'))\n },\n ACTIVE: {\n color: '#32c5d2',\n name: () => (i18n.t('models.task.status_enum.ACTIVE'))\n },\n COMPLETED: {\n color: '#3598dc',\n name: () => (i18n.t('models.task.status_enum.COMPLETED'))\n },\n CANCELED: {\n color: '#e7ecf1',\n name: () => (i18n.t('models.task.status_enum.CANCELED'))\n },\n ROUNDTRIP_DELIVERED: {\n color: '#800080',\n name: () => (i18n.t('models.task.status_enum.ROUNDTRIP_DELIVERED'))\n },\n FAILED: {\n color: '#6d3030',\n name: () => (i18n.t('models.task.status_enum.FAILED'))\n },\n FINAL_FAILED: {\n color: '#000000',\n name: () => (i18n.t('models.task.status_enum.FINAL_FAILED'))\n },\n IN_TRANSFER: {\n color: '#f70268',\n name: () => (i18n.t('models.task.status_enum.IN_TRANSFER'))\n },\n IN_INVENTORY: {\n color: '#bf5a08bf',\n name: () => (i18n.t('models.task.status_enum.IN_INVENTORY'))\n },\n OUT_INVENTORY: {\n color: '#ffa800',\n name: () => (i18n.t('models.task.status_enum.OUT_INVENTORY'))\n },\n}\n\nexport const RATES = {\n 1: {\n color: '#d10000',\n name: () => (i18n.t('views.task_review.rating_enum.1'))\n },\n 2: {\n color: '#ed7014',\n name: () => (i18n.t('views.task_review.rating_enum.2'))\n },\n 3: {\n color: '#ffff30',\n name: () => (i18n.t('views.task_review.rating_enum.3'))\n },\n 4: {\n color: '#a4d1a2',\n name: () => (i18n.t('views.task_review.rating_enum.4'))\n },\n 5: {\n color: '#06c258',\n name: () => (i18n.t('views.task_review.rating_enum.5'))\n }\n}\n\nexport const ARROWHEADS_OPTIONS = {\n fill: true,\n yawn: 40,\n opacity: 0.5\n}\n\nexport const POLYLINE_OPTIONS = {\n opacity: 0.5,\n weight: 7\n}\n\nexport const isDev = () => {\n try {\n return process.env.NODE_ENV === 'development'\n } catch {\n return false\n }\n}\n","import { i18n } from \"./i18n\";\nimport moment from \"moment\";\nimport dayjs from \"dayjs\";\n\nexport const getDateFormat = ({ uppercase } = false) => {\n switch (i18n.locale) {\n case 'en-US':\n return uppercase ? 'MM/DD/YYYY' : 'mm/dd/yyyy'\n default:\n return uppercase ? 'DD/MM/YYYY' : 'dd/mm/yyyy'\n }\n}\n\nexport const dayjsFormatted = date => (dayjs(date, getDateFormat({ uppercase: true })))\n\nexport const dayjsFormattedString = date => (date.format(getDateFormat({ uppercase: true })))\n\nexport const getDateTimeFormat = () => {\n return i18n.locale === 'en-US' ? 'MM/DD/YYYY hh:mm a' : 'DD/MM/YYYY HH:mm'\n}\n\nexport const getTimeFormat = () => {\n return i18n.locale === 'en-US' ? 'hh:mm a' : 'HH:mm'\n}\n\nexport const getFormattedDate = () => {\n const currentDate = new Date()\n const day = currentDate.getDate()\n const month = currentDate.getMonth() + 1\n const year = currentDate.getFullYear()\n\n return day + '/' + month + '/' + year\n}\n\nexport const matchStart = (params, data) => {\n if (params.term === '') {\n return data\n }\n\n params.term = params.term ? params.term.replace(/[׳]/, \"'\") : ''\n const term = params.term.toUpperCase()\n const words = data.text.toUpperCase().split(/[ ,]+/)\n words.push(data.text)\n\n for (let i = 0; i < words.length; i++) {\n if (words[i].indexOf(term) === 0 || words[i].indexOf(term) != -1) {\n return data\n }\n }\n return false\n}\n\nconst localeWithCountry = (locale) => {\n switch (locale) {\n case 'en-US':\n return 'en-US'\n case 'he':\n return 'he-IL'\n case 'ar':\n return 'ar'\n default:\n return 'en-GB'\n }\n}\n\nexport const dateParser = (locale, date) => {\n const res = new Intl.DateTimeFormat(\n localeWithCountry(locale),\n {\n year: 'numeric',\n day: 'numeric',\n month: 'numeric'\n }\n ).format(new Date(date))\n return locale === 'he' ? res.split('.').join('/') : res\n}\n\nexport const dateTimeParser = (locale, date) => {\n const res = new Intl.DateTimeFormat(\n localeWithCountry(locale),\n {\n year: 'numeric',\n day: 'numeric',\n month: 'numeric',\n hour: 'numeric',\n minute: 'numeric',\n hour12: false\n }\n ).format(new Date(date))\n return locale === 'he' ? res.split('.').join('/') : res\n}\n\nexport const dateOrCurrent = (date, withTime = false) => {\n let format = i18n.locale === 'en-US' ? 'MM/DD/YYYY' : 'DD/MM/YYYY';\n if (withTime) format += i18n.locale === 'en-US' ? ' hh:mm a' : ' HH:mm';\n\n if (!moment(date, format).isValid() && date !== '') {\n return moment(new Date()).format(format)\n } else if (moment(date, format).isValid()) {\n return moment(date, format).format(format);\n }\n}\n\nexport const formattedDate = date => {\n const format = i18n.locale === 'en-US' ? 'MM/DD/YYYY' : 'DD/MM/YYYY';\n\n if (!moment(date, format).isValid() && date !== '') {\n return ''\n } else if (moment(date, format).isValid()) {\n return moment(date, format).format(format);\n }\n}\n\nexport const formattedTime = date => {\n const format = 'HH:mm'\n\n if (!moment(date, format).isValid() && date !== '') {\n return ''\n } else if (moment(date, format).isValid()) {\n return moment(date, format).format(format);\n }\n}\n\nexport const timepickerMeridian = () => (i18n.locale === 'en-US')\n\nexport const formatDuration = (totalSeconds, full = false) => {\n const durationObj = dayjs.duration(totalSeconds, 'seconds');\n\n const arr = [\n { key: \"days\", value: durationObj.days() },\n { key: \"hours\", value: durationObj.hours() },\n { key: \"minutes\", value: durationObj.minutes() }\n ]\n\n const values = arr.filter(el => el.value !== 0)\n\n if (full) {\n return values.map(el => i18n.t(`datetime.distance_in_words.x_${el.key}`, { count: el.value })).join(' ') || 0;\n } else {\n return values.map(el => `${el.value}${el.key[0]}`).join(' ') || 0;\n }\n}\n","import Swal from 'sweetalert2/dist/sweetalert2';\nimport { i18n } from \"../i18n\";\nimport { csrfToken, setPropertyByPath } from \"../utils\";\n\nexport const cancelTransferConfirmation = async () => (\n Swal.fire({\n title: i18n.t('shared.are_you_sure'),\n text: i18n.t('drivers.unassign_partner_confirm'),\n showCancelButton: true,\n confirmButtonText: i18n.t('shared.confirm'),\n cancelButtonText: i18n.t('cancel'),\n heightAuto: false,\n icon: \"question\",\n input: 'checkbox',\n inputValue: 1,\n inputPlaceholder: i18n.t('drivers.cancel_transfer_confirm')\n })\n)\n\nexport const initTransferConfirmation = async (driverId, body, onAccept = () => {}, onCancel = () => {}) => {\n const modalContainer = $('#modal-container');\n const loader = $('.data-preloader');\n loader.removeClass('d-none');\n\n const response = await fetch(`/drivers/${driverId}/transfer_confirm_modal`, {\n method: 'POST',\n headers: {\n 'X-CSRF-TOKEN': csrfToken(),\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify(body),\n });\n\n const html = await response.text();\n modalContainer.html(html);\n const modal = modalContainer.children();\n\n return new Promise((resolve) => {\n modal.on('hide.bs.modal.transfer', () => {\n onCancel()\n resolve({ isConfirmed: false })\n });\n\n $('#transfer-accept').on('click', (e) => {\n $(e.currentTarget).prop('disabled', true);\n const transferDetails = {};\n $('#transfer-details-form').serializeArray().forEach(field => {\n setPropertyByPath(transferDetails, field.name, field.value);\n });\n delete transferDetails['authenticity_token'];\n\n onAccept(transferDetails);\n modal.off('hide.bs.modal.transfer').modal('hide');\n resolve({ isConfirmed: true, transferDetails: transferDetails })\n });\n\n loader.addClass('d-none');\n modal.modal('show');\n })\n};\n\nexport const isTaskTransferred = async (taskId) => {\n const res = await fetch(`/api/web/tasks/${taskId}/transfer_status`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'X-CSRF-TOKEN': csrfToken()\n }\n })\n\n const body = await res.json()\n return body.is_transferred\n}\n\nexport const visitsTransferStatus = async (visitIds) => {\n const res = await fetch(`/api/web/visits/bulk_transfer_status`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'X-CSRF-TOKEN': csrfToken()\n },\n body: JSON.stringify({ ids: visitIds })\n })\n\n return await res.json()\n}\n\nexport const tasksTransferStatus = async (taskIds) => {\n const res = await fetch(`/api/web/tasks/bulk_transfer_status`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'X-CSRF-TOKEN': csrfToken()\n },\n body: JSON.stringify({ ids: taskIds })\n })\n\n return await res.json()\n}\n","import { showNotification } from \"../notifications\";\nimport { i18n } from \"../i18n\";\nimport { csrfToken, dataOrNA, setPropertyByPath } from \"../utils\";\nimport * as Ladda from \"ladda\";\nimport { fitBounds, getAllMapMarkers } from \"../leaflet\";\n\nexport const handleTransferResponse = ($el, onSuccess = () => {}, onFailure = () => {}) => {\n const loader = $('.data-preloader')\n\n $el.on('ajax:success', (e) => {\n const data = e.detail[0]\n showNotification({ message: data.message })\n onSuccess()\n }).on('ajax:error', (e) => {\n const data = e.detail[0]\n showNotification({ message: data.message || i18n.t('shared.something_went_wrong'), type: 'danger' })\n onFailure()\n }).on('ajax:send', () => {\n loader.removeClass('d-none')\n }).on('ajax:complete', () => {\n Ladda.stopAll()\n loader.addClass('d-none')\n })\n}\n\nexport const openDeliveryModal = async (url, taskIds, visitIds, onLoad = () => {}) => {\n if (!taskIds && !visitIds) {\n showNotification({ message: i18n.t('shared.reselect_tasks_error'), type: 'danger' })\n return\n }\n\n const modalContainer = $('#modal-container')\n const loader = $('.data-preloader')\n loader.removeClass('d-none')\n const res = await fetch(url,\n {\n headers: {\n 'Content-Type': 'application/json',\n 'X-CSRF-TOKEN': csrfToken()\n },\n method: 'POST',\n body: JSON.stringify({ task_ids: taskIds, visit_ids: visitIds })\n }\n )\n\n if (res.ok) {\n const html = await res.text()\n modalContainer.html(html)\n onLoad()\n } else if (res.status === 422) {\n const data = await res.json()\n showNotification({ message: data.errors.join(', '), type: 'danger' })\n } else {\n showNotification({ message: i18n.t('shared.something_went_wrong'), type: 'danger' })\n }\n\n Ladda.stopAll()\n loader.addClass('d-none')\n}\n\nexport const updateServicePrices = async (serviceName, url, taskIds, visitIds, onSuccess = () => {}) => {\n const spinner = $(`.${serviceName}-prices-spinner`)\n const pricesContainer = $(`#${serviceName}-prices`)\n\n spinner.removeClass('d-none')\n pricesContainer.html('')\n\n const body = {}\n $(`#${serviceName}-form`).serializeArray().forEach(field => { setPropertyByPath(body, field.name, field.value) });\n\n const res = await fetch(url,{\n headers: {\n 'Content-Type': 'application/json',\n 'X-CSRF-TOKEN': csrfToken()\n },\n method: 'POST',\n body: JSON.stringify({ ...body, task_ids: dataOrNA(taskIds), visit_ids: dataOrNA(visitIds) })\n })\n\n const data = await res.json()\n\n if (data.failed) {\n showNotification({ message: i18n.t('shared.something_went_wrong'), type: 'danger' })\n $(`#${serviceName}-submit`).prop('disabled', true)\n } else {\n $(`#${serviceName}-submit`).prop('disabled', false)\n onSuccess(data)\n }\n\n pricesContainer.html(data.tasks.map(row => priceRow(row)).join(''))\n spinner.addClass('d-none')\n}\n\nconst priceRow = (rowData) => (`\n
\n
\n ${i18n.t('models.task.task') } ${rowData.id}:\n
\n
\n ${rowData.error ? rowData.error : `${rowData.price} ${rowData.currency_symbol}`}\n
\n
\n`)\n\nexport const drawServiceMarkers = (map, data) => {\n getAllMapMarkers(map).forEach((m) => { map.removeLayer(m) })\n\n const destinationIcon = window.L.divIcon({\n className: 'blue-number-icon',\n iconSize: [29, 47],\n iconAnchor: [15, 47]\n })\n\n const sourceIcon = window.L.divIcon({\n className: 'red-number-icon',\n iconSize: [29, 47],\n iconAnchor: [15, 47]\n })\n\n window.L.marker([data.source.latitude, data.source.longitude], { icon: sourceIcon }).addTo(map)\n\n data.tasks.forEach((t) => {\n window.L.marker([t.dropoff.latitude, t.dropoff.longitude], { icon: destinationIcon }).addTo(map)\n })\n\n fitBounds(map)\n}\n\n","import { i18n } from \"../i18n\";\nimport { initMap } from \"../../services/map\";\nimport {\n drawServiceMarkers,\n handleTransferResponse,\n openDeliveryModal,\n updateServicePrices\n} from \"./external_deliveries\";\nimport { matchStart } from \"../date\";\n\nexport const openGetPackageModal = async (taskIds, visitIds, onSuccess = () => { window.location.reload() }, onFailure = () => {}) => {\n await openDeliveryModal('/get_package/delivery_modal', taskIds, visitIds, () => {\n const modalContainer = $('#modal-container')\n const mainModal = modalContainer.find(\"#get-package-modal\")\n mainModal.modal('show')\n\n const map = initMap(document.getElementById('get-package-map'), () => {})\n setTimeout(() => { map.invalidateSize() }, 200)\n\n updatePrices(taskIds, visitIds, (data) => { drawServiceMarkers(map, data) })\n\n $('.get-package-types-toggle').on('click', (e) => {\n const getPackageType = e.currentTarget.dataset.type\n $('#get_package_delivery_type').val(getPackageType)\n updatePrices(taskIds, visitIds)\n })\n\n $('#get-package-size').on('change', () => { updatePrices(taskIds, visitIds) })\n\n ;['city', 'street', 'number', 'recipient', 'phone'].forEach(field => {\n $(`#get-package-${field}-input`).on('change', (e) => { $(`#get-package-${field}`).text(e.currentTarget.value) })\n })\n\n modalContainer.find('#get-package-source-modal').on('hidden.bs.modal', () => {\n $('body').addClass('modal-open')\n updatePrices(taskIds, visitIds, (data) => { drawServiceMarkers(map, data) })\n })\n\n modalContainer.find('#get-package-sizes-modal').on('hidden.bs.modal', () => {\n $('body').addClass('modal-open')\n })\n\n initDateTimeSelects(modalContainer.find('#get-package-express-date-select'), modalContainer.find('#get-package-express-time-select'))\n initDateTimeSelects(modalContainer.find('#get-package-sdd-date-select'), modalContainer.find('#get-package-sdd-time-select'))\n\n handleTransferResponse(modalContainer.find('form'), () => { mainModal.modal('hide'); onSuccess() }, onFailure)\n })\n}\n\nconst updatePrices = async (taskIds, visitIds, onSuccess = () => {}) => {\n await updateServicePrices('get-package', '/get_package/price_estimation', taskIds, visitIds, onSuccess)\n}\n\nconst initDateTimeSelects = ($dateSelect, $timeSelect) => {\n $dateSelect.select2({\n dir: i18n.t('direction'),\n width: '100%',\n matcher: matchStart\n }).on('change', (e) => {\n const option = e.currentTarget.options[e.currentTarget.selectedIndex];\n\n if ($timeSelect.hasClass(\"select2-hidden-accessible\")) {\n $timeSelect.select2('destroy')\n $timeSelect.empty()\n }\n\n $timeSelect.select2({\n dir: i18n.t('direction'),\n width: '100%',\n matcher: matchStart,\n data: option.dataset.times.split(',').map(time => ({ id: time, text: time }))\n })\n }).trigger('change')\n}\n","import { i18n } from \"../i18n\";\nimport { csrfToken, dataOrNA, debounce } from \"../utils\";\nimport { decodePolyline, initMap } from \"../../services/map\";\nimport { showNotification } from \"../notifications\";\nimport * as Ladda from \"ladda\";\nimport { handleTransferResponse, openDeliveryModal } from \"./external_deliveries\";\nimport { fitBounds, getMapMarkerByName } from \"../leaflet\";\nimport { getDateFormat, getFormattedDate, matchStart, timepickerMeridian } from \"../date\";\nimport { isRTL } from \"../locale\";\nimport { ARROWHEADS_OPTIONS, POLYLINE_OPTIONS } from \"../../constants\";\n\nexport const openGettModal = async (taskIds, visitIds, onSuccess = () => { window.location.reload() }, onFailure = () => {}) => {\n await openDeliveryModal('/gett/delivery_modal', taskIds, visitIds, () => {\n const modalContainer = $('#modal-container')\n const sourceFields = ['city', 'street', 'number', 'recipient', 'phone']\n\n sourceFields.forEach(field => {\n $(`#gett-${field}-input`).on('change', (e) => { $(`#gett-${field}`).text(e.currentTarget.value) })\n })\n\n const map = initGettMap()\n\n const updateData = debounce(() => { updatePricesAndSource(taskIds, visitIds, map) }, 500)\n\n updateData()\n\n $('#gett-product-id').on('change', () => { updateData() })\n\n handleTransferResponse(modalContainer.find('form'), () => { $('#gett-modal').modal('hide'); onSuccess() }, onFailure)\n\n $('#gett-datepicker').datepicker({\n format: getDateFormat(),\n language: i18n.t('locale'),\n rtl: isRTL(),\n orientation: 'bottom',\n startDate: getFormattedDate(),\n defaultDate: getFormattedDate(),\n autoclose: true,\n todayHighlight: true,\n }).on('change', () => { updateData() })\n\n $('#gett-timepicker').timepicker({\n minuteStep: 15,\n showMeridian: timepickerMeridian(),\n icons: {\n up: 'ki ki-arrow-up',\n down: 'ki ki-arrow-down'\n }\n }).on('change', () => { updateData() })\n\n $('.gett-types-toggle').on('click', (e) => {\n const newType = e.currentTarget.dataset.gettType\n const productIds = ['bba2d4d6-b007-416c-bb55-9de6f9349785', '1331f479-96dc-4422-bea9-59428707da69'] // small route, delivery routes\n const select = $('#gett-product-id')\n\n $('#gett-delivery-type').val(newType)\n productIds.forEach(option => {\n $(`option[value='${option}']`).toggleClass(\"d-none\", newType === 'asap')\n })\n if (productIds.includes(select.val())) select.val(select.find('option:not(.d-none):first').attr('value'))\n updateData()\n })\n\n $('#gett-location').select2({\n dir: i18n.t('direction'),\n width: '100%',\n matcher: matchStart\n }).on('change', (e) => {\n const option = e.currentTarget.options[e.currentTarget.selectedIndex];\n sourceFields.forEach(field => {\n $(`#gett-${field}-input`).val(option.dataset[field]).trigger('change')\n })\n })\n\n modalContainer.find('#gett-modal').modal('show')\n modalContainer.find('#gett-source-modal').on('hidden.bs.modal', () => {\n $('body').addClass('modal-open')\n updateData()\n })\n\n modalContainer.find('#gett-products-modal').on('hidden.bs.modal', () => {\n $('body').addClass('modal-open')\n })\n\n setTimeout(() => { map.invalidateSize() }, 200)\n })\n}\n\nconst updatePricesAndSource = async (taskIds, visitIds, map) => {\n const loader = $('.gett-price-loader')\n const submitBtn = $('.gett-submit')\n loader.removeClass('d-none')\n submitBtn.prop('disabled', true)\n\n const requestBody = {\n task_ids: dataOrNA(taskIds),\n visit_ids: dataOrNA(visitIds),\n product_id: $('#gett-product-id').val(),\n city: $('#gett-city-input').val(),\n street: $('#gett-street-input').val(),\n number: $('#gett-number-input').val(),\n phone: $('#gett-phone-input').val(),\n recipient_name: $('#gett-recipient-input').val(),\n delivery_type: $('#gett-delivery-type').val(),\n scheduled_date: $('#gett-datepicker').val(),\n scheduled_time: $('#gett-timepicker').val()\n }\n\n fetch('/gett/estimate_delivery', {\n method: 'POST',\n headers: {\n 'X-CSRF-TOKEN': csrfToken(),\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify(requestBody)\n }).then(res => res.json()).then(data => {\n const { price, currency, source, polyline, tasks_order } = data\n\n tasks_order.forEach((taskId, index) => {\n $(`.gett-destination-container[data-task-id='${taskId}']`).css('order', index)\n })\n\n const sourceMarker = getMapMarkerByName(map, 'source')\n sourceMarker.setLatLng(new L.LatLng(source.latitude, source.longitude))\n\n fitBounds(map)\n\n $('#gett-price').text(`${price} ${currency}`)\n\n const oldPolyline = Object.values(map._layers).find(layer => layer.options.name === 'polyline')\n if (oldPolyline) map.removeLayer(oldPolyline)\n\n if (polyline) {\n L.polyline(decodePolyline(polyline), { ...POLYLINE_OPTIONS, color: 'red', name: 'polyline' }).arrowheads(ARROWHEADS_OPTIONS).addTo(map)\n }\n\n loader.addClass('d-none')\n submitBtn.prop('disabled', false)\n })\n}\n\nconst initGettMap = () => {\n const sourceCords = $('#gett-source').val().split(' ');\n const destinationsCoords = $('#gett-destinations').val().split(',')\n\n return initMap(document.getElementById('gett-map'), (map) => {\n const destinationIcon = L.divIcon({\n className: 'blue-number-icon',\n iconSize: [29, 47],\n iconAnchor: [15, 47]\n })\n\n const sourceIcon = L.divIcon({\n className: 'red-number-icon',\n iconSize: [29, 47],\n iconAnchor: [15, 47]\n })\n\n L.marker(sourceCords, { icon: sourceIcon, name: 'source' }).addTo(map)\n\n destinationsCoords.forEach(coords => {\n L.marker(coords.split(' '), { icon: destinationIcon }).addTo(map)\n })\n\n fitBounds(map)\n })\n}\n","import { i18n } from \"../i18n\";\nimport { initMap } from \"../../services/map\";\nimport { matchStart } from \"../date\";\nimport {\n drawServiceMarkers,\n handleTransferResponse,\n openDeliveryModal,\n updateServicePrices\n} from \"./external_deliveries\";\n\nexport const openWoltModal = async (taskIds, visitIds, onSuccess = () => { window.location.reload() }, onFailure = () => {}) => {\n await openDeliveryModal('/wolt/delivery_modal', taskIds, visitIds, () => {\n const modalContainer = $('#modal-container')\n const mainModal = modalContainer.find(\"#wolt-modal\")\n mainModal.modal('show')\n\n $('.wolt-types-toggle').on('click', (e) => {\n const woltType = e.currentTarget.dataset.type\n $('#wolt_delivery_type').val(woltType)\n updatePrices(taskIds, visitIds)\n })\n\n $(`.wolt-types-toggle[data-type=${$('#wolt_delivery_type').val()}]`).trigger('click')\n\n const map = initMap(document.getElementById('wolt-map'), () => {})\n setTimeout(() => { map.invalidateSize() }, 200)\n\n updatePrices(taskIds, visitIds, (data) => { drawServiceMarkers(map, data) })\n\n $('.scheduled-time-select').on('click', () => {\n updatePrices(taskIds, visitIds)\n });\n\n ['city', 'street', 'number', 'recipient', 'phone'].forEach(field => {\n $(`#wolt-${field}-input`).on('change', (e) => { $(`#wolt-${field}`).text(e.currentTarget.value) })\n })\n\n $('#wolt-location').select2({\n dir: i18n.t('direction'),\n width: '100%',\n matcher: (params, data) => matchStart(params, data)\n }).on('change', (e) => {\n const option = e.currentTarget.options[e.currentTarget.selectedIndex];\n ['city', 'street', 'number', 'floor', 'apartment', 'recipient', 'phone', 'notes'].forEach(field => {\n $(`#wolt-${field}-input`).val(option.dataset[field])\n })\n })\n\n modalContainer.find('#wolt-source-modal').on('hidden.bs.modal', () => {\n $('body').addClass('modal-open')\n updatePrices(taskIds, visitIds, (data) => { drawServiceMarkers(map, data) })\n })\n\n handleTransferResponse(modalContainer.find('form'), () => { mainModal.modal('hide'); onSuccess() }, onFailure)\n })\n}\n\nconst updatePrices = async (taskIds, visitIds, onSuccess = () => {}) => {\n await updateServicePrices('wolt', '/wolt/price_estimation', taskIds, visitIds, onSuccess)\n}\n","import { fetchCurrentLocations } from \"../actions/drivers\";\nimport { dateTimeParser } from \"./date\";\nimport { i18n } from \"./i18n\";\nimport moment from \"moment\";\nimport { unitedVisitsPopup, visitPopup } from \"./visits/popups\";\nimport { groupBy } from \"./utils\";\nimport {isRTL} from \"./locale\";\n\nconst ARABIC = 'lionwheel/ckkd1kzj70jsu17n7payeu1d1'\nconst LOCAL = 'lionwheel/ckkd1x3d02f3817mnbj6srgtk'\nconst ENGLISH = 'mapbox/streets-v11'\n\nconst numberedMarker = (marker, className, number) => {\n let fontClass = ''\n if (+number < 10) {\n fontClass = 'font-size-14'\n } else if (+number < 100) {\n fontClass = 'font-size-13'\n } else if (+number < 1000) {\n fontClass = 'font-size-12'\n }\n const numberIcon = L.divIcon({\n className: className,\n iconSize: [29, 47],\n iconAnchor: [15, 47],\n html: `
\n ${number}\n ${marker.ambiguous_location ? ambiguousMarkerAddition() : ''}\n
`\n })\n\n const contentString = visitPopup(marker)\n\n // change popup format here like store visits\n return L.marker([marker.lat, marker.lon], { icon: numberIcon })\n .bindPopup(contentString, { offset: [0, -20] }).openPopup()\n}\n\nexport const numberedSvgMarker = (number, color) => {\n let numberOffset\n let iconAnchor = [14, 41]\n\n if (isRTL()) {\n iconAnchor = [0, 41]\n numberOffset = 17\n if (number > 9 && number < 100) {\n numberOffset = 21\n }\n if (number > 99 && number < 1000) {\n numberOffset = 25\n }\n } else {\n numberOffset = 10\n if (number > 9 && number < 100) {\n numberOffset = 6\n }\n if (number > 99 && number < 1000) {\n numberOffset = 2\n }\n }\n\n return L.divIcon({\n className: \"box\",\n iconAnchor: iconAnchor,\n html: `\n \n \n ${number}\n \n `\n })\n}\n\nexport const renderNumberedMarkers = (markers, isOptimized = true) => {\n const filtered = markers.filter(m => m.lat && m.lon)\n const res = { done: [], undone: [], failed: [] }\n var number;\n\n filtered.forEach((marker, i) => {\n number = isOptimized ? i + 1 : '';\n\n if (marker.is_done) {\n res.done = [...res.done, numberedMarker(marker, 'blue-number-icon', number)]\n } else if (marker.failed_at) {\n res.failed = [...res.failed, numberedMarker(marker, 'brown-number-icon', number)]\n } else {\n res.undone = [...res.undone, numberedMarker(marker, 'red-number-icon', number)]\n }\n })\n\n return res\n}\n\nexport const renderNumberedUnitedMarkers = (markers, isOptimized = true) => {\n const filtered = markers.filter(m => m.lat && m.lon)\n const grouped = groupBy(filtered, (m) => `${m.lat},${m.lon}`) // Object.groupBy can cause errors in Safari\n const res = { done: [], undone: [], failed: [] }\n\n let currentIndex = 1\n\n Object.values(grouped).forEach((group) => {\n const marker = group[0]\n let number\n if (isOptimized) {\n number = group.length > 1 ? `${currentIndex}*` : `${currentIndex}`\n } else {\n number = ''\n }\n\n if (marker.is_done) {\n res.done = [...res.done, numberedUnitedMarker(group, 'blue-number-icon', number)]\n } else if (marker.failed_at) {\n res.failed = [...res.failed, numberedUnitedMarker(group, 'brown-number-icon', number)]\n } else {\n res.undone = [...res.undone, numberedUnitedMarker(group, 'red-number-icon', number)]\n }\n\n currentIndex += group.length\n })\n\n return res\n}\n\nconst numberedUnitedMarker = (group, className, number) => {\n let fontClass = ''\n if (number.toString().length < 3) {\n fontClass = 'font-size-14'\n } else if (number.toString().length < 4) {\n fontClass = 'font-size-13'\n } else if (number.toString().length < 5) {\n fontClass = 'font-size-12'\n }\n\n const firstVisit = group[0]\n\n const numberIcon = L.divIcon({\n className: className,\n iconSize: [29, 47],\n iconAnchor: [15, 47],\n html: `
\n ${number}\n ${firstVisit.ambiguous_location ? ambiguousMarkerAddition() : ''}\n
`\n })\n\n if (number) group = group.map((el, i) => ({ ...el, order_in_route: parseInt(number) + i }))\n\n const contentString = unitedVisitsPopup(group)\n\n return L.marker([firstVisit.lat, firstVisit.lon], { icon: numberIcon })\n .bindPopup(contentString, { offset: [0, -20] }).openPopup()\n}\n\nexport const renderMarkers = (locations, map) => {\n const markers = Object.entries(locations).filter(i => i[1].latitude).map((loc) => {\n const { latitude, longitude, name, partial_address: address } = loc[1]\n\n const numberIcon = L.divIcon({\n className: 'blue-number-icon',\n iconSize: [29, 47],\n iconAnchor: [15, 47]\n })\n return L.marker([latitude, longitude], { icon: numberIcon })\n .bindPopup(buildTip({ name, address: address })).openPopup()\n .addTo(map)\n })\n\n if (markers.length) {\n map.fitBounds(L.featureGroup(markers).getBounds(), { padding: [10, 10] })\n }\n}\n\nexport const drawLinePolygons = (lines, map, className = '', focus = true, type = '') => (\n drawPolygons(buildLinesPolygonsData(lines), map, className, focus, type)\n)\n\nconst drawPolygons = (polygonsDataArr, map, className = '', focus = true, type = '') => {\n const polygons = polygonsDataArr.map(polygonData => {\n const polygonObj = {\n color: polygonData.color,\n opacity: 0.8,\n weight: 2,\n fillColor: polygonData.color,\n fillOpacity: 0.35,\n className: className,\n type: type\n }\n return L.polygon(polygonData.coords, polygonObj).addTo(map)\n })\n if (focus && polygons.length) {\n map.fitBounds(L.featureGroup(polygons).getBounds(), { padding: [10, 10] })\n }\n return L.featureGroup(polygons)\n}\n\nexport const reversePoints = points => points.map(a => a.reverse())\n\nexport const styleId = (locale) => {\n switch (locale) {\n case 'en':\n return ENGLISH\n case 'he':\n return LOCAL\n case 'ar':\n return ARABIC\n default:\n return LOCAL\n }\n}\n\nconst buildLinesPolygonsData = (lines) => (\n lines.map(line => {\n return line.polygon.split(':').map(subLine => {\n const coords = subLine.split(';')\n return {\n coords: coords.map(coord => coord.split(',').map(i => parseFloat(i))),\n color: line.color\n }\n })\n }).flat()\n)\n\nexport const enableDrawTool = (map, color, creationCallback = () => {}, edit = false) => {\n const drawnItems = new L.FeatureGroup()\n map.addLayer(drawnItems)\n const drawControl = new L.Control.Draw({\n draw: {\n polygon: {\n shapeOptions: {\n color: color,\n opacity: 0.8,\n weight: 2,\n fillColor: color,\n fillOpacity: 0.35\n }\n },\n polyline: false,\n rectangle: false,\n circle: false,\n marker: false,\n circlemarker: false\n },\n edit: {\n featureGroup: drawnItems,\n edit: edit,\n remove: false\n }\n })\n map.addControl(drawControl)\n map.on(L.Draw.Event.CREATED, e => {\n e.layer.options.type = 'drawnPolygon'\n drawnItems.addLayer(e.layer)\n creationCallback(e)\n })\n}\n\nexport const enableDrawEditOnly = (map, polygons, onEdit = () => {}) => {\n const drawControl = new L.Control.Draw({\n draw: {\n polygon: false,\n polyline: false,\n rectangle: false,\n circle: false,\n marker: false,\n circlemarker: false\n },\n edit: {\n featureGroup: polygons,\n edit: true,\n remove: false\n }\n })\n map.addControl(drawControl)\n\n map.on(L.Draw.Event.EDITED, onEdit)\n}\n\nexport const transformCoords = (coords) => {\n return coords.map(c => c.map(i => i.lat + ',' + i.lng)).flat().join(';')\n}\n\nexport const isGeoInsidePolygon = (x, y, polyPoints) => {\n let inside = false;\n for (let i = 0, j = polyPoints.length - 1; i < polyPoints.length; j = i++) {\n const xi = polyPoints[i].lat, yi = polyPoints[i].lng;\n const xj = polyPoints[j].lat, yj = polyPoints[j].lng;\n\n const intersect = ((yi > y) !== (yj > y)) && (x < (xj - xi) * (y - yi) / (yj - yi) + xi);\n if (intersect) inside = !inside;\n }\n\n return inside;\n}\n\nexport const buildTip = ({ name, address }) => {\n return `
\n
\n

${name}

\n
${address}
`\n}\n\nconst getClassNameByStatus = marker => {\n if (marker.is_done) {\n return 'blue-number-icon'\n } else if (marker.failed_at) {\n return 'brown-number-icon'\n } else {\n return 'red-number-icon'\n }\n}\n\nexport const locationsApiPoll = async (driverId, map, controlLayers) => {\n const icon = L.divIcon({ className: 'driver-icon blinking', iconSize: [30, 30], iconAnchor: [22, 15] })\n let markerCurrent\n let trackingFG\n let runInterval = null\n\n $(document).on('addedMarkerCurrent', (_e, { points }) => {\n trackingFG = L.featureGroup(points).addTo(map)\n controlLayers?.addOverlay(trackingFG, i18n.t('views.map.live_tracking'))\n })\n const run = async () => {\n const date = gon.date || moment().format(\"DD/MM/YYYY\")\n const response = await fetchCurrentLocations(`/drivers/${driverId.toString()}/driver_locations?date=${date}`)\n if (response === 'unauthorized') {\n if (runInterval) { clearInterval(runInterval) }\n return false\n } else if (!response) {\n return false\n }\n\n const { data: { locations } } = response\n if (locations.length > 0) {\n const locationTimestamps = locations.map(i => (i.date_time))\n const lastLocation = locations[locations.length - 1]\n const dateTime = lastLocation.date_time\n const latitude = lastLocation.latitude\n const longitude = lastLocation.longitude\n let popupText = null\n if (dateTime) {\n $('.last-location-updated-time').empty()\n $('.last-location-updated-time').text(i18n.t('location_last_updated',\n {\n time: dateTimeParser(i18n.locale, new Date(dateTime))\n })\n )\n popupText = i18n.t('location_last_updated', { time: dateTimeParser(i18n.locale, new Date(dateTime)) })\n }\n if (latitude) {\n const points = locations.map(i => (L.circleMarker([i.latitude, i.longitude], { radius: 4, color: '#000' })))\n if (!markerCurrent) {\n markerCurrent = L.marker([latitude, longitude], { icon: icon }).addTo(map)\n\n $(document).trigger('addedMarkerCurrent', { points: points })\n } else {\n locations.filter(i => (!locationTimestamps.includes(i.date_time)))\n .forEach(i => {L.circleMarker([i.latitude, i.longitude], { radius: 4, color: '#000' }).addTo(trackingFG)})\n markerCurrent.setLatLng([latitude, longitude])\n }\n\n if (popupText) markerCurrent.bindPopup(popupText, { offset: [-10, -5] })\n }\n }\n }\n\n await run()\n runInterval = setInterval(run, 10000)\n\n // stop polling in 20min ========================>\n const clearIntervalInterval = setInterval(() => {\n if (runInterval) {\n clearInterval(runInterval)\n clearInterval(clearIntervalInterval)\n }\n }, 1200000)\n // stop polling in 20min ========================>\n}\n\nexport const constructMarkerIcon = (markerUrl, visitKind) => {\n if (visitKind === 'PICKUP' || visitKind === 'RETURN') {\n return markerUrl.replace('chld=', 'chld=•')\n }\n\n return markerUrl\n}\n\nconst groupVisitsByCoordinates = (visits) => (\n visits.reduce((visits, v) => {\n (visits[`${v.lat}, ${v.lon}`] = visits[`${v.lat}, ${v.lon}`] || []).push(v)\n return visits\n }, {})\n)\n\nexport const buildMarkers = (map, visits, buildUnitedMarker, buildSingleMarker) => {\n const filteredVisits = visits.filter(v => v.lat && v.lon)\n const markers = []\n Object.entries(groupVisitsByCoordinates(filteredVisits)).map((group) => {\n const visits = group[1]\n markers.push(visits.length > 1 ? buildUnitedMarker(map, visits) : buildSingleMarker(map, visits[0]))\n })\n return markers\n}\n\nexport const getAllMapLayers = (map) => {\n const layers = []\n map.eachLayer((layer) => layers.push(layer))\n return layers\n}\n\nexport const getAllMapMarkers = (map) => getAllMapLayers(map).filter(l => l instanceof L.Marker)\nexport const getMapMarkerByName = (map, name) => getAllMapMarkers(map).find(marker => marker.options.name === name)\nexport const getMapLayerByName = (map, name) => getAllMapLayers(map).find(layer => layer.options.name === name)\n\nexport const getDrawnPolygons = (map) => {\n const polygons = []\n map.eachLayer((layer) => { if (layer instanceof L.Polygon && layer.options.type === 'drawnPolygon') polygons.push(layer) })\n return polygons\n}\n\nexport const fitBounds = (map) => {\n const markers = getAllMapMarkers(map)\n if (markers.length) map.fitBounds(L.featureGroup(markers).getBounds(), { padding: [10, 10] })\n}\n\nexport const ambiguousMarkerAddition = () => (\n gon.advanced_marker_display ? '
' : ''\n)\n\nexport const stopPolling = (interval, stopTime = 1200000) => {\n const internalInterval = setInterval(() => {\n if (interval) {\n clearInterval(interval)\n clearInterval(internalInterval)\n }\n }, stopTime)\n return interval\n}\n\nexport const updateDateLabel = (dateTime) => {\n $('.last-location-updated-time').text(i18n.t('location_last_updated',\n {time: dateTimeParser(i18n.locale, new Date(dateTime))})\n )\n}\n\nexport const updateDriverPosition = (url, driver, timeout = 10000) => (\n setInterval(() => {\n fetchCurrentLocations(url).then((res) => {\n if (res && res !== 'unauthorized') {\n updateDateLabel(res.data.date_time)\n driver.marker.setLatLng([res.data.latitude, res.data.longitude]).update()\n }\n })\n }, timeout\n )\n)\n","import { isRTL } from './locale'\n\nexport function showNotification ({ message, type = 'success', delay = 5000 }) {\n $.notify({\n message: message\n }, {\n type: type,\n delay: delay,\n placement: {\n from: 'bottom',\n align: isRTL() ? 'left' : 'right'\n },\n onShow: function() {\n let notifications;\n if (isRTL()) {\n notifications = document.querySelectorAll('[data-notify-position=\"bottom-left\"]');\n } else {\n notifications = document.querySelectorAll('[data-notify-position=\"bottom-right\"]');\n }\n\n if (notifications.length === 1) {\n const elem = notifications[0];\n elem.style.bottom = '80px';\n }\n }\n })\n const closeButtons = $('.alert > button.close')\n for (let i = 0; i < closeButtons.length; i++) {\n closeButtons[i].style.fontSize = '0'\n closeButtons[i].style.top = '50%'\n closeButtons[i].style.transform = 'translateY(-50%)'\n }\n if (isRTL()) {\n for (let i = 0; i < closeButtons.length; i++) {\n closeButtons[i].style.removeProperty('right')\n closeButtons[i].style.left = '10px'\n }\n }\n}\n","import { i18n } from \"./i18n\";\nimport { isRTL } from './locale'\nimport { dateOrCurrent, getDateFormat } from './date'\nimport moment from 'moment'\nimport { csrfToken, getCookie, getParameterByName, updateQueryStringParameter } from './utils'\nimport { openGettModal } from \"./external_deliveries/gett\";\nimport { openWoltModal } from \"./external_deliveries/wolt\";\nimport { showNotification } from \"./notifications\";\nimport { initStickyCard } from \"./metronic/sticky_card\";\nimport { cancelTransferConfirmation, initTransferConfirmation } from \"./drivers/confirmations\";\nimport { openGetPackageModal } from \"./external_deliveries/get_package\";\n\nconst trackFormChanges = (forms) => {\n forms.each((i, form) => {\n form = $(form)\n const originalFormData = form.serialize()\n form.find(':input').on('change input', () => {\n form.data(\"changed\", form.serialize() !== originalFormData)\n })\n })\n}\n\nexport const initTabs = (defaultTab = 'general', onTabChange = () => {}) => {\n let initialTab = getParameterByName(\"tab\") ? getParameterByName(\"tab\") : defaultTab\n $('.nav-tabs.nav-form-tabs > .nav-link, .nav-form-tabs > .navi-item > a.navi-link, .tab-form-content > .tab-pane').removeClass('active')\n $(`.nav-tabs.nav-form-tabs > .nav-link[href='#${initialTab}'], .nav-tabs.nav-form-tabs > .navi-item > .navi-link[href='#${initialTab}'], .tab-form-content > #${initialTab}`).addClass('active')\n onTabChange(initialTab)\n\n $('.nav-form-tabs > .nav-link, .nav-form-tabs > .navi-item > a.navi-link').click((e) => {\n e.preventDefault()\n const form = $('.tab-pane.active').find('form')\n const isFormChanged = form.data('changed')\n if (isFormChanged && !confirm(i18n.t('shared.unsaved_changes'))) {\n e.stopPropagation()\n return\n }\n\n form.trigger(\"reset\").data('changed', false)\n let tab = $(`${e.currentTarget.getAttribute('href')}`)\n $('.nav-tabs.nav-form-tabs .nav-link, .nav-form-tabs > .navi-item > a.navi-link, .tab-form-content > .tab-pane').removeClass('active')\n $(e.currentTarget).addClass('active')\n tab.addClass('active')\n history.pushState({}, null, updateQueryStringParameter(window.location.href, 'tab', tab.attr('id')));\n onTabChange(tab.attr('id'))\n })\n\n trackFormChanges($('form'))\n}\n\nexport const rememberTabs = (defaultTab = 'general') => {\n let initialTab = getParameterByName(\"tab\") ? getParameterByName('tab') : defaultTab\n $('.nav-tabs.nav-remember-tabs > .nav-link, .nav-remember-tabs > .navi-item > a.navi-link, .tab-remember-content > .tab-pane').removeClass('active')\n $(`.nav-tabs.nav-remember-tabs > .nav-link[href='#${initialTab}'], .nav-tabs.nav-remember-tabs > .navi-item > .navi-link[href='#${initialTab}'], .tab-remember-content > #${initialTab}`).addClass('active')\n\n $('.nav-remember-tabs > .nav-link, .nav-remember-tabs > .navi-item > a.navi-link').click((e) => {\n let tab = $(`${e.currentTarget.getAttribute('href')}`)\n history.pushState({}, null, updateQueryStringParameter(window.location.href, 'tab', tab.attr('id')));\n })\n}\n\nexport const renderSmallAjaxStatus = (statusId, taskId, roundtrip, allowInventory = false) => {\n const statusName = i18n.t(`models.task.status_enum.${statusId}`)\n const statusClass = statusId.replace('_', '-').toLowerCase()\n let roundtripOption = ''\n let inventoryOptions = ''\n if (roundtrip) {\n roundtripOption = `
  • \n ${i18n.t('models.task.status_enum.ROUNDTRIP_DELIVERED')}\n
  • `\n }\n if (allowInventory) {\n inventoryOptions = `\n
  • \n ${i18n.t('models.task.status_enum.IN_INVENTORY')}\n
  • \n
  • \n ${i18n.t('models.task.status_enum.OUT_INVENTORY')}\n
  • \n
  • \n ${i18n.t('models.task.status_enum.IN_TRANSFER')}\n
  • `\n }\n\n return `
    \n \n ${statusName}\n \n \n \n
    `\n}\n\nexport const renderPickStatusAjax = (taskId, pickStatus, packagesQuantity = 1) => {\n const statuses = [\"NEW\", \"PENDING\", \"PICKED\", \"PARTIALLY_PICKED\"]\n\n return `\n
    \n \n \n ${i18n.t('models.task.pick_status_enum.' + pickStatus)}\n \n \n \n \n
    \n `\n}\n\nexport const getPathFromUrl = url => url.split('?')[0]\n\nexport const toggleOther = (target, content) => {\n content.toggleClass('collapse')\n if (!content.hasClass('collapse')) {\n target.val('').prop('disabled', true).trigger('change')\n } else {\n target.prop('disabled', false)\n }\n}\n\nexport const initRoutesDropdown = (callback = () => { location.reload() }) => {\n const $container = $('.routes-dropdown')\n if ($container.length) {\n const currentRouteId = $container.data('route-id')\n const visitId = $container.data('visit-id')\n const routesArr = $container.data('routes')\n const $list = $container.find('ul').first()\n\n const removeLink = () => (\n `
  • \n
  • \n \n ${i18n.t('views.routes.unassign_route')}\n \n
  • `\n )\n\n const list = (routes, inputVal = '') => {\n const start = `
  • `\n let list = routes.reduce((acc, r) => {\n return acc + `
  • \n \n ${r.name}\n \n
  • `\n }, start)\n return currentRouteId ? list.concat(removeLink()) : list\n }\n\n const rebuild = (e) => {\n $list.empty()\n $list.append(list(\n routesArr.filter(r => r.name.search(new RegExp(e.target.value, 'i')) !== -1),\n e.target.value\n ))\n $container.find('.dropdown-item').click(e => {\n e.preventDefault()\n const routeId = e.currentTarget.dataset.routeId\n updateVisitRoute(visitId, routeId, callback)\n })\n }\n\n $container.on('show.bs.dropdown', () => {\n $list.empty()\n $list.append(list(routesArr)).ready(() => {\n $container.find('.dropdown-item').click(e => {\n e.preventDefault()\n const routeId = e.currentTarget.dataset.routeId\n updateVisitRoute(visitId, routeId, callback)\n })\n const $input = $container.find('input').first()\n $input.focus()\n $input.on('input', rebuild)\n })\n })\n }\n}\n\nexport const initVehiclesDropdown = () => {\n const $container = $('.vehicles-dropdown')\n if ($container.length) {\n const vehicleId = $container.data('vehicle-id')\n const vehiclesArr = $container.data('vehicles')\n const $list = $container.find('ul').first()\n const form = $('.route-vehicle-form')\n\n const removeLink = () => (\n `
  • \n
  • \n \n ${i18n.t('views.routes.unassign_vehicle')}\n \n
  • `\n )\n\n const list = (vehicles, inputVal = '') => {\n const start = `
  • `\n let list = vehicles.reduce((acc, v) => {\n return acc + `
  • \n \n ${v.name}\n \n
  • `\n }, start)\n return vehicleId ? list.concat(removeLink()) : list\n }\n\n const rebuild = (e) => {\n $list.empty()\n $list.append(list(\n vehiclesArr.filter(r => r.name.search(new RegExp(e.target.value, 'i')) !== -1),\n e.target.value\n ))\n const $input = $container.find('input').first()\n const val = $input.val()\n $input.focus().val('').val(val)\n $input.on('input', rebuild)\n $container.find('.dropdown-item').click(e => {\n e.preventDefault()\n const vehicleId = e.currentTarget.dataset.vehicleId\n form.find('#route_vehicle_id').val(vehicleId)\n form.submit()\n })\n }\n\n $container.on('show.bs.dropdown', () => {\n $list.empty()\n $list.append(list(vehiclesArr)).ready(() => {\n $container.find('.dropdown-item').click(e => {\n e.preventDefault()\n const vehicleId = e.currentTarget.dataset.vehicleId\n form.find('#route_vehicle_id').val(vehicleId)\n form.submit()\n })\n const $input = $container.find('input').first()\n $input.focus()\n $input.on('input', rebuild)\n })\n })\n }\n}\n\nexport const initDriversDropdown = (callback = () => { window.location.reload() }) => {\n const $container = $('.drivers-dropdown')\n if ($container.length) {\n const { id, driverId, partnerBridgeId } = $container.data('task')\n const driversArr = $container.data('drivers')\n const $list = $container.find('ul').first()\n const asyncDriverUpdate = (e) => {\n const { taskId, driverId: newDriverId, partnerBridgeId: newPartnerBridgeId } = e.currentTarget.dataset\n\n let data = {};\n const checksQueue = []\n checksQueue.push(handleTransferCancel)\n if (gon.confirm_task_transfers) checksQueue.push(handleTransferConfirm);\n\n (async () => {\n const previousDriver = { id: driverId, partnerBridgeId: partnerBridgeId }\n const newDriver = { id: newDriverId, partnerBridgeId: newPartnerBridgeId }\n\n for (const check of checksQueue) {\n const res = await check(taskId, previousDriver, newDriver)\n if (!res.shouldContinue) return\n if (res.data) data = { ...data, ...res.data }\n }\n\n updateDriver(taskId, newDriverId, data, callback)\n })()\n }\n\n const removeLink = () => (\n `
  • \n \n ${i18n.t('drivers.unassign_driver')}\n \n
  • `\n )\n\n const integrationLink = (name, imageUrl, className) => (`\n
  • \n \n \"${name}\"\n ${name}\n \n
  • \n `)\n\n const gettLink = () => integrationLink('GETT', '/gett-icon.png', 'gettDriver')\n const woltLink = () => integrationLink('Wolt', '/wolt.png', 'woltDriver')\n const getPackageLink = () => integrationLink('Get Package', '/get_package.webp', 'getPackageDriver')\n\n const list = (drivers, inputVal = '') => {\n const regularDrivers = drivers.filter((d) => !d.partner_bridge_id)\n const partnerDrivers = drivers.filter((d) => d.partner_bridge_id)\n\n const start = `
  • `\n let list = regularDrivers.reduce((acc, d) => {\n return acc + `
  • \n \n ${d.name}\n \n
  • `\n }, start)\n\n if (partnerDrivers.length) {\n list = list.concat(`
  • ${i18n.t('drivers.partner_drivers')}
  • `)\n }\n\n list = partnerDrivers.reduce((acc, d) => {\n return acc + `
  • \n
    \n ${ d.partner_bridge_image ? (`\"\"`) : ''}\n ${d.name}\n
    \n
  • `\n }, list)\n\n if (gon.allow_gett) { list = list.concat(gettLink()) }\n if (gon.allow_wolt) { list = list.concat(woltLink()) }\n if (gon.allow_get_package) { list = list.concat(getPackageLink()) }\n return (driverId) ? list.concat(removeLink()) : list\n }\n\n const renewListeners = () => {\n $('.gettDriver').off('click').on('click', (e) => { openGettModal(e.currentTarget.dataset.taskId, null) });\n $('.woltDriver').off('click').on('click', (e) => { openWoltModal(e.currentTarget.dataset.taskId, null) });\n $('.getPackageDriver').off('click').on('click', (e) => { openGetPackageModal(e.currentTarget.dataset.taskId, null) });\n $('.update-task-driver').off('click').on('click', asyncDriverUpdate)\n }\n\n const rebuild = (e) => {\n const filtered = driversArr.filter(d => d.name.search(new RegExp(e.target.value, 'i')) !== -1)\n $list.empty()\n $list.append(list(filtered, e.target.value))\n const $input = $container.find('input').first()\n const val = $input.val()\n $input.focus().val('').val(val)\n $input.on('input', rebuild)\n\n renewListeners()\n }\n\n $container.on('show.bs.dropdown', () => {\n $list.empty()\n $list.append(list(driversArr)).ready(() => {\n const $input = $container.find('input').first()\n $input.focus()\n $input.on('input', rebuild)\n })\n\n renewListeners()\n })\n }\n}\n\nconst handleTransferCancel = async (taskId, previousDriver) => {\n if (previousDriver?.partnerBridgeId) {\n const result = await cancelTransferConfirmation()\n\n return { shouldContinue: result.isConfirmed, data: { keep_transfer_connection: result.value === 0 } }\n }\n return { shouldContinue: true }\n}\n\nconst handleTransferConfirm = async (taskId, previousDriver, newDriver) => {\n if (newDriver?.partnerBridgeId) {\n const body = { task_id: taskId }\n\n const res = await initTransferConfirmation(newDriver.id, body)\n return { shouldContinue: res.isConfirmed, data: { transfer_details: res.transferDetails } }\n }\n return { shouldContinue: true }\n}\n\nconst fetchWithLoading = async (url, body, method, callback = () => {}) => {\n const loader = $('.data-preloader')\n loader.removeClass('d-none')\n const res = await fetch(url, {\n method: method,\n headers: {\n 'Content-Type': 'application/json',\n 'X-CSRF-Token': csrfToken()\n },\n body: JSON.stringify(body)\n })\n\n if (res.ok) {\n res.json().then(data => { callback(data) })\n } else {\n showNotification({ message: i18n.t('shared.something_went_wrong'), type: 'danger' })\n }\n loader.addClass('d-none')\n}\n\nconst updateDriver = async (taskId, driverId, additionalData = {}, callback = () => {}) => {\n fetchWithLoading('/tasks/assign_driver.json', { task_id: taskId, driver_id: driverId, ...additionalData }, 'POST', callback)\n}\n\nconst updateVisitRoute = async (visitId, routeId, callback = () => {}) => {\n fetchWithLoading(`/visits/${visitId}.json`, { visit: { route_id: routeId } }, 'PATCH', callback)\n}\n\nexport const tooltipsTaskLink = (id, isPhotoAttached = false, signatureUrl = null, printedAt,\n comments= [], visitId = null, mapVisitId = null, isVipClient = false) => {\n const commentsHtml = comments.map(comment => (\n `
    \n
    ${comment.created_at_str}
    \n
    ${comment.username}
    \n
    ${comment.text}
    \n
    `\n )).join('')\n\n return (\n `
    \n \n
    \n ${id}\n
    \n
    \n ${ isPhotoAttached ? (\n `\n \n \n \n `\n ) : ''}\n ${ isVipClient ? (\n `\n \n \n \n `\n ) : ''}\n ${ signatureUrl ? (\n `\n \n \n \n `\n ) : ''}\n ${ printedAt ? (\n `\n \n `\n ) : ''}\n ${ printedAt ? (\n `\n \n `\n ) : ''}\n ${ comments.length > 0 ? (\n `
    ${i18n.t('date_str')}
    ${i18n.t('models.user.username')}
    ${i18n.t('shared.text')}
    ${commentsHtml}
    \">\n ${comments.length}\n `\n ) : ''}\n ${ visitId ? (\n `\n \n \n \n `\n ) : ''}\n `)\n}\n\nexport const initSidePanel = (panel, resizeSelector, onOpen = () => {}, onDragEnd = () => {}) => {\n let dragStartWidth = getCookie('side_map_width')\n panel.resizable({\n handleSelector: resizeSelector,\n resizeHeight: false,\n resizeWidthFrom: isRTL() ? 'right' : 'left',\n onDragStart: (e, el) => { dragStartWidth = el.width() },\n onDrag: () => {\n if (!panel.data('dragging')) panel.data('dragging', true)\n },\n onDragEnd: (e, el) => {\n if (!panel.data('dragging')) return\n window.dispatchEvent(new Event('resize'))\n setTimeout(() => panel.data('dragging', false), 1) // to prevent click\n document.cookie = `side_map_width=${el.width()}`\n if (dragStartWidth === 0) { onOpen() }\n onDragEnd()\n }\n })\n\n $(resizeSelector).click(() => {\n if (panel.data('dragging')) return\n\n const dragStartWidthCopy = dragStartWidth\n setTimeout(() => {\n window.dispatchEvent(new Event('resize'))\n if (dragStartWidthCopy === 0) { onOpen() }\n }, 500)\n\n const newWidth = panel.width() > 0 ? 0 : 400\n panel.width(newWidth)\n dragStartWidth = newWidth\n document.cookie = `side_map_width=${newWidth}`\n onDragEnd()\n })\n}\n\nexport const initPanelMapMoving = (breakpoint, callback) => {\n $(window).on('resize', () => {\n const width = $(document).width()\n\n if (width < breakpoint) {\n const mapContent = $('#desktop-map-container').children()\n if (mapContent.length) {\n mapContent.detach().appendTo('#mobile-map-container')\n setTimeout(() => { callback() }, 250)\n }\n } else {\n const mapContent = $('#mobile-map-container').children()\n if (mapContent.length) {\n mapContent.detach().appendTo('#desktop-map-container')\n setTimeout(() => { callback() }, 250)\n }\n }\n })\n setTimeout(() => { window.dispatchEvent(new Event('resize')) }, 10)\n}\n\nexport const initDateRangePicker = (element, exclude = null) => {\n if (!element.length) return\n\n const EARLIEST_DATE = moment(\"2020-01-01\")\n const LATEST_DATE = moment(\"2100-01-01\")\n\n const label = element.find('span')\n\n const baseDate = () => moment().utcOffset(gon.time_offset)\n\n let rangeOptions = [\n {\n id: 'today',\n label: i18n.t('today'),\n from: baseDate(),\n to: baseDate()\n },\n {\n id: 'yesterday',\n label: i18n.t('yesterday'),\n from: baseDate().subtract(1, \"days\"),\n to: baseDate().subtract(1, \"days\")\n },\n {\n id: 'tomorrow',\n label: i18n.t('tomorrow'),\n from: baseDate().add(1, \"days\"),\n to: baseDate().add(1, \"days\")\n },\n {\n id: 'this_week',\n label: i18n.t('this_week'),\n from: (gon.country === \"IL\" || gon.country === 'US') ? baseDate().startOf('week') : baseDate().startOf('isoWeek'),\n to: (gon.country === \"IL\" || gon.country === 'US') ? baseDate().endOf('week') : baseDate().endOf('isoWeek')\n },\n {\n id: 'this_month',\n label: i18n.t('this_month'),\n from: baseDate().startOf('month'),\n to: baseDate().endOf('month')\n },\n {\n id: 'last_month',\n label: i18n.t('last_month'),\n from: baseDate().subtract(1, \"month\").startOf('month'),\n to: baseDate().subtract(1, \"month\").endOf('month')\n },\n {\n id: 'next_month',\n label: i18n.t('next_month'),\n from: baseDate().add(1, \"month\").startOf('month'),\n to: baseDate().add(1, \"month\").endOf('month')\n },\n {\n id: 'all_open',\n label: i18n.t('all_open'),\n from: EARLIEST_DATE,\n to: LATEST_DATE\n },\n {\n id: 'old_open',\n label: i18n.t('old_open'),\n from: EARLIEST_DATE,\n to: baseDate().subtract(1, \"days\").endOf('day')\n }\n ]\n\n if (exclude) {\n rangeOptions = rangeOptions.filter(i => (!exclude.includes(i.id)))\n }\n\n // workaround to make daterangepicker UI more clear for users\n const url = new URL(window.location.href)\n const fromParam = url.searchParams.get('from') || gon.from\n const toParam = url.searchParams.get('to') || gon.to\n\n const currentRange = rangeOptions.find(range => dateOrCurrent(range.from) === fromParam && dateOrCurrent(range.to) === toParam)\n\n if (currentRange) {\n label.html(currentRange.label)\n } else if (null === fromParam && null === toParam) {\n label.html(i18n.t('today'))\n } else {\n label.html(`${fromParam} - ${toParam}`)\n }\n\n element.daterangepicker({\n startDate: dateOrCurrent(gon.from),\n endDate: dateOrCurrent(gon.to),\n ranges: rangeOptions.reduce((acc, range) => {\n acc[range.label] = [range.from, range.to]\n return acc\n }, {}),\n locale: {\n format: getDateFormat({uppercase: true}),\n applyLabel: i18n.t('apply_custom_dates'),\n cancelLabel: i18n.t('cancel'),\n customRangeLabel: i18n.t('custom_range'),\n daysOfWeek: i18n.t('date.abbr_day_names'),\n monthNames: \"i18n.t('date.month_names').slice(1)\",\n direction: isRTL() ? 'rtl' : 'ltr',\n }\n }, (start, end) => {\n let url = window.location.href\n\n url = updateQueryStringParameter(url, 'date', 'range')\n url = updateQueryStringParameter(url, 'from', dateOrCurrent(start))\n url = updateQueryStringParameter(url, 'to', dateOrCurrent(end))\n\n window.location.replace(url)\n })\n}\n\nexport const partPrint = (id) => {\n const domClone = document.getElementById(id).cloneNode(true)\n let printSection = document.getElementById(\"printSection\")\n\n if (!printSection) {\n printSection = document.createElement(\"div\")\n printSection.id = \"printSection\"\n document.body.appendChild(printSection)\n }\n\n printSection.appendChild(domClone)\n $('body').addClass('part-print')\n window.print()\n $('body').removeClass('part-print')\n printSection.innerHTML = \"\"\n}\n\nexport const flyOnMapToCoordinates = (targetObject, map) => {\n var zoomLevel = map.getZoom();\n const canvas = $(\".offcanvas-custom\");\n const marker = findMarkerOnMap(\n map, parseFloat(targetObject.lat || targetObject.latitude), parseFloat(targetObject.lon || targetObject.longitude)\n )\n\n if (marker && !marker.isPopupOpen()) {\n const latLon = marker.getLatLng()\n setTimeout(function () {map.invalidateSize(true)}, 50)\n if (canvas.width() < 400) { canvas.width(400) }\n marker.openPopup();\n zoomLevel = zoomLevel == 9 ? 17 : zoomLevel;\n map.panTo(latLon, zoomLevel).fitBounds(L.featureGroup([marker]).getBounds(), { padding: [10, 10], maxZoom: zoomLevel })\n }\n}\n\nconst findMarkerOnMap = (map, latitude, longitude) => {\n let targetMarker = null;\n map.eachLayer(function (layer) {\n if (layer instanceof L.Marker) {\n const marker = layer;\n const markerLatLng = marker.getLatLng();\n if (markerLatLng.lat === latitude && markerLatLng.lng === longitude) {\n targetMarker = marker;\n }\n }\n });\n return targetMarker;\n}\n\nexport const initHoverCopy = () => {\n $('.hover-copy').click(e => {\n e.stopPropagation()\n const temp = $(\"\");\n $(\"body\").append(temp);\n temp.val((e.currentTarget.dataset.copy || e.currentTarget.textContent).trim()).select();\n document.execCommand(\"copy\");\n temp.remove();\n\n const $el = $(e.currentTarget)\n $el.addClass('hover-copy-success').tooltip({ title: i18n.t('shared.copied'), placement: 'bottom', trigger: 'manual' }).tooltip('show')\n setTimeout(() => $el.removeClass('hover-copy-success').tooltip('hide'), 1500)\n })\n}\n\nexport const initPasswordToggle = () => {\n $('.password-eye-icon').on('click', (e) => {\n const icon = $(e.currentTarget)\n const input = icon.parent('.password-eye-container').find('.password-eye-input')\n const isOpen = input.attr('type') === 'text'\n input.attr('type', isOpen ? 'password' : 'text')\n icon.toggleClass('password-open', !isOpen)\n })\n}\n\nexport const initTaskCancelButton = ($el, onSuccess = () => { window.location.reload() }) => {\n $el.off('click').on('click', async (e) => {\n if (confirm(i18n.t('shared.are_you_sure'))) {\n const loader = $('.data-preloader')\n loader.removeClass('d-none')\n const taskId = e.currentTarget.dataset.taskId\n\n await fetch(`/tasks/${taskId}/set_status`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'X-CSRF-TOKEN': csrfToken()\n },\n body: JSON.stringify({ new_task_status: 'CANCELED' })\n }).then(res => {\n if (res.ok) res.json().then(data => { onSuccess(data) })\n loader.addClass('d-none')\n })\n }\n })\n}\n\nexport const backgroundByPercents = (percents) => {\n if (!percents) return ''\n\n if (percents < 80) {\n return 'bg-success'\n } else if (percents < 100) {\n return 'bg-warning'\n } else {\n return 'bg-danger'\n }\n}\n\nexport const initTaskPhotoModal = () => {\n $('.task-photos').off('click').on('click', (e) => {\n e.preventDefault();\n\n $('.data-preloader').removeClass('d-none');\n const taskId = e.currentTarget.dataset.taskId;\n fetch(`/tasks/${taskId}/photos`)\n .then(res => res.text())\n .then(html => {\n $('.data-preloader').addClass('d-none');\n $('#task-photos-modal-body').html(html);\n $('#task-photos-modal').modal('show');\n });\n })\n}\n\nexport const updateCurrentStickyCard = (previous, id) => {\n previous?.destroySticky()\n const currentCard = initStickyCard(id, 17)\n currentCard?.updateSticky()\n return currentCard\n}\n\nexport const asyncDataLoad = (url, callback) => {\n $('.data-preloader').removeClass('d-none')\n fetch(url, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'X-CSRF-Token': csrfToken()\n }\n }).then(res => res.json()).then(data => {\n callback(data)\n $('.data-preloader').addClass('d-none')\n })\n}\n\nexport const initPasswordValidation = (field) => {\n const validationRules = [\n { selector: '.uppercase-msg', test: /[A-Z]/ },\n { selector: '.lowercase-msg', test: /[a-z]/ },\n { selector: '.number-msg', test: /\\d/ },\n { selector: '.8-characters-msg', test: (pwd) => pwd.length >= 8 }\n ];\n\n $(field).on('input', function() {\n const password = $(this).val();\n\n validationRules.forEach(rule => {\n const element = $(rule.selector);\n const passes = typeof rule.test === 'function' ? rule.test(password) : rule.test.test(password);\n\n element.toggleClass('text-success', passes && password.length > 0)\n .toggleClass('text-danger', !passes || password.length === 0);\n });\n });\n}\n","export const initStickyCard = (id, additionalOffset = 0) => {\n const element = window.KTUtil.getById(id)\n if (!element) return\n\n let offset = typeof window.KTLayoutHeader !== 'undefined' ? window.KTLayoutHeader.getHeight() : 300\n\n const object = new window.KTCard(element, {\n sticky: {\n offset: offset,\n zIndex: 90,\n position: {\n top: () => {\n let pos = 0;\n\n if (window.KTUtil.isBreakpointUp('lg')) {\n if (typeof window.KTLayoutHeader !== 'undefined' && window.KTLayoutHeader.isFixed()) {\n pos = pos + window.KTLayoutHeader.getHeight();\n }\n\n if (typeof window.KTLayoutSubheader !== 'undefined' && window.KTLayoutSubheader.isFixed()) {\n pos = pos + window.KTLayoutSubheader.getHeight();\n }\n } else {\n if (typeof window.KTLayoutHeader !== 'undefined' && window.KTLayoutHeader.isFixedForMobile()) {\n pos = pos + window.KTLayoutHeader.getHeightForMobile();\n }\n }\n\n pos = pos - 1; // remove header border width\n\n return pos + additionalOffset;\n },\n left: (card) => {\n return window.KTUtil.offset(card.element).left;\n },\n right: (card) => {\n const body = window.KTUtil.getBody();\n\n const cardWidth = parseInt(window.KTUtil.css(card.element, 'width'));\n const bodyWidth = parseInt(window.KTUtil.css(body, 'width'));\n const cardOffsetLeft = window.KTUtil.offset(card.element).left;\n\n return bodyWidth - cardWidth - cardOffsetLeft;\n }\n }\n }\n })\n\n object.initSticky()\n\n window.KTUtil.addResizeHandler(() => { object.updateSticky() })\n\n return object\n}\n","import { isEmpty } from \"../utils\";\nimport { i18n } from \"../i18n\";\n\nexport const constructFancyInfoWindowContent = (\n {\n dest_add = '',\n recipient_name: name = '',\n driver_name,\n visit_at,\n kind,\n visit_id = undefined,\n driver_id = 'null',\n route = undefined,\n company_name = undefined,\n region_str = undefined,\n earliest_time = undefined,\n latest_time = undefined,\n task: {\n destination_phone: phone,\n id: task_id,\n wp_order_id: wp_order_id = undefined\n }\n }\n) => {\n return `
    \n
    \n \n \n ${task_id}\n \n ${gon.allow_routes ? routesSelect(visit_id, route) : driversSelect(visit_id, driver_id, driver_name)}\n
    \n ${!isEmpty(route)\n ? (\n `
    \n \n ${!isEmpty(route) ? `${i18n.t('models.route.route')} ${route.name}: ` : ''}\n \n
    `\n )\n : ''}\n
    \n ${visit_at}\n ${kind ? i18n.t(`models.visit.kind_enum.${kind}`) : ''}\n
    \n
    \n ${gon.allow_companies && company_name ? ` ${company_name}` : ''}\n ${wp_order_id ? ` ${wp_order_id}` : ''}\n
    \n
    \n ${phone ? ` ${phone}` : ''}\n ${name ? ` ${name}` : ''}\n
    \n ${earliest_time || latest_time ? (\n `
    \n \n ${ earliest_time && latest_time ? `${earliest_time} - ${latest_time}` : earliest_time || latest_time }\n \n
    `\n ) : '' }\n ${dest_add ? (\n `
    \n ${dest_add}\n
    `\n ) : ''}\n ${region_str ?\n `
    \n ${region_str} \n
    `\n : ''}\n
    `\n}\n\nconst driversSelect = (visitId, driverId, driverName) => (\n visitId ?\n `
    \n \n \n
    ` : ` ${driverName}`\n)\nconst routesSelect = (visitId, route) => (\n visitId ?\n `
    \n \n \n
    ` : ` ${route.name}`\n)\n\nexport const visitPopup = (visit) => (\n `
    \n ${visitPopupContent(visit)}\n
    `\n)\n\nexport const unitedVisitsPopup = (visits) => (\n `
    \n ${visits.map(visit => visitPopupContent(visit)).join('
    ')}\n
    `\n)\n\nconst visitPopupContent = (\n {\n visit_id = undefined,\n dest_add = '',\n region_str = '',\n recipient_name: name = '',\n kind,\n company_name = undefined,\n order_in_route = undefined,\n task: {\n destination_phone: phone,\n id: task_id,\n wp_order_id: wp_order_id = undefined\n }\n }\n) => (\n `\n
    \n \n \n ${task_id} ${order_in_route ? ` - ${order_in_route}` : ''}\n \n
    \n ${dest_add ?\n (`
    \n ${dest_add} \n ${kind ? i18n.t(`models.visit.kind_enum.${kind}`) : ''}\n
    `)\n : ''}\n
    \n ${company_name ? ` ${company_name}` : ''}\n ${wp_order_id ? `${wp_order_id}` : ''}\n
    \n
    \n ${phone ? ` ${phone}` : ''}\n ${name ? ` ${name}` : ''}\n
    \n ${region_str ?\n `
    \n ${region_str} \n
    `\n : ''}\n `\n)\n\nexport const constructFancyInfoWindowContent3 = (\n {\n dest_add = '',\n recipient_name: name = '',\n driver_name,\n visit_at,\n kind,\n visit_id,\n driver_id = 'null',\n route,\n company_name,\n region_str,\n task: {\n destination_phone: phone,\n id: task_id,\n wp_order_id: wp_order_id,\n weight,\n volume,\n surface_quantity\n }\n }\n) => {\n return `
    \n
    \n \n \n ${task_id}\n \n ${gon.allow_routes ? '' : driversSelect(visit_id, driver_id, driver_name)}\n
    \n ${dest_add || !isEmpty(route)\n ? (\n `
    \n \n ${!isEmpty(route) ? `${i18n.t('models.route.route')} ${route.name}: ` : ''}\n ${dest_add}\n \n
    `\n )\n : ''}\n
    \n ${visit_at}\n ${kind ? i18n.t(`models.visit.kind_enum.${kind}`) : ''}\n
    \n
    \n ${gon.allow_companies && company_name ? ` ${company_name}` : ''}\n ${wp_order_id ? `${wp_order_id}` : ''}\n
    \n
    \n ${phone ? ` ${phone}` : ''}\n ${name ? ` ${name}` : ''}\n
    \n ${region_str ?\n `
    \n ${region_str} \n
    `\n : ''}\n ${weight ?\n `
    \n \n \n ${weight}\n \n
    `\n : ''}\n ${volume ?\n `
    \n \n \n ${volume}\n \n
    `\n : ''}\n ${surface_quantity ?\n `
    \n \n \n ${surface_quantity}\n \n
    `\n : ''}\n
    `\n}\n","import { Loader } from '@googlemaps/js-api-loader'\nimport { LatLng } from \"leaflet/dist/leaflet-src.esm\";\nimport { i18n } from \"../helpers/i18n\";\n\nconst ZOOM = 15\nconst DEFAULT_MAP_CENTER = [40.730610, -73.935242]\nconst DEFAULT_IL_MAP_CENTER = [32.0853, 34.7818]\nexport const initMap = (mapContainer, callback, options = {}) => {\n if (!mapContainer) return;\n\n const provider = mapContainer.dataset.provider\n if (provider === 'google') {\n const loader = new Loader({\n apiKey: mapContainer.dataset.mapKey,\n version: 'weekly',\n language: i18n.locale,\n libraries: ['drawing']\n })\n loader.load().then(callback)\n } else if (provider === 'leaflet') {\n if (mapContainer._leaflet_id) mapContainer._leaflet_id = null\n const country = mapContainer.dataset.country\n const map = L.map(mapContainer.id, { fullscreenControl: true, ...options }).setView(defaultMapCenter(country), ZOOM)\n\n const { url, ...mapParams } = leafletMapParms(country)\n const defaultMap = L.tileLayer(url, { maxZoom: 18, ...mapParams }).addTo(map)\n\n if (!mapContainer.classList.contains('no-satellite')) {\n const satelliteMap = L.tileLayer('https://api.maptiler.com/tiles/satellite-v2/{z}/{x}/{y}.jpg?key=IX0rYv2pA9NPwqEqMEQd')\n\n mapContainer.insertAdjacentHTML('beforeend', '
    ')\n\n $('.map-layer-switch').on('click', () => {\n map.hasLayer(defaultMap) ? defaultMap.removeFrom(map) : defaultMap.addTo(map)\n map.hasLayer(satelliteMap) ? satelliteMap.removeFrom(map) : satelliteMap.addTo(map)\n })\n }\n\n L.control.scale(gon.scale_units).addTo(map);\n callback(map)\n // hack to set init zoom as 17 for maps which are rendered with max zoom\n if (map.getZoom() === 18) { map.setZoom(17) }\n return map\n }\n}\n\nexport const leafletMapParms = (country) => {\n if (country === \"IL\") {\n const MAPA_TOKEN = gon.mapa?.token\n const MAPA_URL = gon.mapa?.url\n const ACCESS_TOKEN = 'pk.eyJ1IjoibGlvbndoZWVsIiwiYSI6ImNrazFsaWozdDBzanoycHJyZDBuOXNhN2MifQ.ytlkjt5fVpSYjG-HwolzxQ'\n\n return { url: `${MAPA_URL}/tile/{z}/{y}/{x}?token=${MAPA_TOKEN}`, accessToken: ACCESS_TOKEN }\n } else if (country === \"AE\") {\n return { url: 'https://api.maptiler.com/maps/openstreetmap/256/{z}/{x}/{y}.jpg?key=IX0rYv2pA9NPwqEqMEQd' }\n } else {\n return { url: 'https://tile.openstreetmap.org/{z}/{x}/{y}.png', attribution: '© OpenStreetMap contributors' }\n }\n}\n\nexport const defaultMapCenter = (country = '') => {\n const defaultCenter = country === 'IL' ? DEFAULT_IL_MAP_CENTER : DEFAULT_MAP_CENTER\n if (!gon.default_location) return defaultCenter\n\n const { default_location: { latitude, longitude } } = gon\n if (!latitude || !longitude) return defaultCenter\n\n return [latitude, longitude]\n}\n\nexport const geolocationMapCallback = (lat, long, lat_input_id, long_input_id) => {\n return (map) => {\n const markerIcon = L.divIcon({\n className: 'blue-number-icon',\n iconSize: [29, 47],\n iconAnchor: [15, 47]\n })\n\n if (!lat || !long) { [lat, long] = defaultMapCenter() }\n\n if (lat && long) {\n const marker = L.marker([lat, long], { icon: markerIcon }).addTo(map)\n\n map.setView(marker.getLatLng(), 20)\n\n map.on('drag zoom', () => {\n const center = map.getCenter()\n marker.setLatLng(center)\n $(lat_input_id).val(center.lat.toFixed(6))\n $(long_input_id).val(center.lng.toFixed(6))\n })\n\n $(`${lat_input_id}, ${long_input_id}`).on('input', () => {\n const lat = $(lat_input_id).val()\n const lng = $(long_input_id).val()\n const position = new LatLng(lat, lng)\n marker.setLatLng(position)\n map.panTo(position)\n })\n }\n }\n}\n\nexport const decodePolyline = polyline => {\n const lat_factor = 1e5;\n const lng_factor = 1e5;\n let index = 0;\n let lat = 0;\n let lng = 0;\n const coordinates = [];\n\n while (index < polyline.length) {\n let d_lat = 0;\n let d_lng = 0;\n let shift = 0;\n let b;\n\n do {\n b = polyline.charCodeAt(index++) - 63;\n d_lat |= (b & 0x1f) << shift;\n shift += 5;\n } while (b >= 0x20);\n\n shift = 0;\n\n do {\n b = polyline.charCodeAt(index++) - 63;\n d_lng |= (b & 0x1f) << shift;\n shift += 5;\n } while (b >= 0x20);\n\n d_lat = ((d_lat & 1) ? ~(d_lat >> 1) : (d_lat >> 1));\n d_lng = ((d_lng & 1) ? ~(d_lng >> 1) : (d_lng >> 1));\n\n lat += d_lat;\n lng += d_lng;\n\n coordinates.push([lng / lng_factor, lat / lat_factor]);\n }\n\n return coordinates;\n}\n","var map = {\n\t\"./ar\": 61509,\n\t\"./ar-dz\": 41488,\n\t\"./ar-dz.js\": 41488,\n\t\"./ar-kw\": 58676,\n\t\"./ar-kw.js\": 58676,\n\t\"./ar-ly\": 42353,\n\t\"./ar-ly.js\": 42353,\n\t\"./ar-ma\": 24496,\n\t\"./ar-ma.js\": 24496,\n\t\"./ar-ps\": 6947,\n\t\"./ar-ps.js\": 6947,\n\t\"./ar-sa\": 82682,\n\t\"./ar-sa.js\": 82682,\n\t\"./ar-tn\": 89756,\n\t\"./ar-tn.js\": 89756,\n\t\"./ar.js\": 61509,\n\t\"./en-au\": 53872,\n\t\"./en-au.js\": 53872,\n\t\"./en-ca\": 28298,\n\t\"./en-ca.js\": 28298,\n\t\"./en-gb\": 56195,\n\t\"./en-gb.js\": 56195,\n\t\"./en-ie\": 66584,\n\t\"./en-ie.js\": 66584,\n\t\"./en-il\": 65543,\n\t\"./en-il.js\": 65543,\n\t\"./en-in\": 9033,\n\t\"./en-in.js\": 9033,\n\t\"./en-nz\": 79402,\n\t\"./en-nz.js\": 79402,\n\t\"./en-sg\": 43004,\n\t\"./en-sg.js\": 43004,\n\t\"./es\": 97650,\n\t\"./es-do\": 20838,\n\t\"./es-do.js\": 20838,\n\t\"./es-mx\": 17730,\n\t\"./es-mx.js\": 17730,\n\t\"./es-us\": 56575,\n\t\"./es-us.js\": 56575,\n\t\"./es.js\": 97650,\n\t\"./he\": 11713,\n\t\"./he.js\": 11713\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 95085;"],"names":["saveDailyVisitsSchedule","e","inputName","$","window","unbind","visitRows","form","visits","i","length","getAttribute","find","val","JSON","stringify","attr","currentTarget","dataset","url","submit","saveDailyRoutePlanVisitsSchedule","pendingVisitsChanged","visitsRows","allVisits","each","_i","row","push","forEach","fetchCurrentLocations","async","res","fetch","method","headers","status","json","ISRAEL_CITIES_URL","APP_HOST","STRIPE_PUB_KEY","EMPTY_LINE","STATUSES","UNASSIGNED","color","name","i18n","t","ASSIGNED","ACTIVE","COMPLETED","CANCELED","ROUNDTRIP_DELIVERED","FAILED","FINAL_FAILED","IN_TRANSFER","IN_INVENTORY","OUT_INVENTORY","RATES","ARROWHEADS_OPTIONS","fill","yawn","opacity","POLYLINE_OPTIONS","weight","isDev","process","getDateFormat","uppercase","locale","dayjsFormatted","date","dayjs","dayjsFormattedString","format","getDateTimeFormat","getTimeFormat","getFormattedDate","currentDate","Date","getDate","getMonth","getFullYear","matchStart","params","data","term","replace","toUpperCase","words","text","split","indexOf","localeWithCountry","dateTimeParser","Intl","DateTimeFormat","year","day","month","hour","minute","hour12","join","dateOrCurrent","withTime","moment","isValid","formattedDate","formattedTime","timepickerMeridian","formatDuration","totalSeconds","full","durationObj","values","key","value","days","hours","minutes","filter","el","map","count","cancelTransferConfirmation","Swal","title","showCancelButton","confirmButtonText","cancelButtonText","heightAuto","icon","input","inputValue","inputPlaceholder","initTransferConfirmation","driverId","body","onAccept","onCancel","modalContainer","loader","removeClass","response","csrfToken","html","modal","children","Promise","resolve","on","isConfirmed","prop","transferDetails","serializeArray","field","setPropertyByPath","off","addClass","isTaskTransferred","taskId","is_transferred","visitsTransferStatus","ids","visitIds","tasksTransferStatus","taskIds","handleTransferResponse","$el","onSuccess","onFailure","detail","showNotification","message","type","Ladda","openDeliveryModal","onLoad","task_ids","visit_ids","ok","errors","updateServicePrices","serviceName","spinner","pricesContainer","dataOrNA","failed","tasks","priceRow","rowData","id","error","price","currency_symbol","drawServiceMarkers","getAllMapMarkers","m","removeLayer","destinationIcon","L","divIcon","className","iconSize","iconAnchor","sourceIcon","marker","source","latitude","longitude","addTo","dropoff","fitBounds","openGetPackageModal","location","reload","mainModal","initMap","document","getElementById","setTimeout","invalidateSize","updatePrices","getPackageType","initDateTimeSelects","$dateSelect","$timeSelect","select2","dir","width","matcher","option","options","selectedIndex","hasClass","empty","times","time","trigger","openGettModal","sourceFields","initGettMap","updateData","debounce","updatePricesAndSource","datepicker","language","rtl","isRTL","orientation","startDate","defaultDate","autoclose","todayHighlight","timepicker","minuteStep","showMeridian","icons","up","down","newType","gettType","productIds","select","toggleClass","includes","submitBtn","requestBody","product_id","city","street","number","phone","recipient_name","delivery_type","scheduled_date","scheduled_time","then","currency","polyline","tasks_order","index","css","getMapMarkerByName","setLatLng","LatLng","oldPolyline","Object","_layers","layer","decodePolyline","arrowheads","sourceCords","destinationsCoords","coords","openWoltModal","woltType","numberedMarker","fontClass","numberIcon","ambiguous_location","ambiguousMarkerAddition","contentString","visitPopup","lat","lon","bindPopup","offset","openPopup","numberedSvgMarker","numberOffset","renderNumberedMarkers","markers","isOptimized","filtered","done","undone","is_done","failed_at","renderNumberedUnitedMarkers","grouped","groupBy","currentIndex","group","numberedUnitedMarker","toString","firstVisit","order_in_route","parseInt","unitedVisitsPopup","renderMarkers","locations","entries","loc","partial_address","address","buildTip","featureGroup","getBounds","padding","drawLinePolygons","lines","focus","drawPolygons","buildLinesPolygonsData","polygonsDataArr","polygons","polygonData","polygonObj","fillColor","fillOpacity","polygon","line","subLine","coord","parseFloat","flat","enableDrawTool","creationCallback","edit","drawnItems","FeatureGroup","addLayer","drawControl","Control","Draw","draw","shapeOptions","rectangle","circle","circlemarker","remove","addControl","Event","CREATED","enableDrawEditOnly","onEdit","EDITED","transformCoords","c","lng","isGeoInsidePolygon","x","y","polyPoints","inside","j","xi","yi","xj","yj","locationsApiPoll","controlLayers","markerCurrent","trackingFG","runInterval","_e","points","addOverlay","run","gon","clearInterval","locationTimestamps","date_time","lastLocation","dateTime","popupText","circleMarker","radius","setInterval","clearIntervalInterval","buildMarkers","buildUnitedMarker","buildSingleMarker","filteredVisits","v","reduce","groupVisitsByCoordinates","getAllMapLayers","layers","eachLayer","l","Marker","getMapLayerByName","getDrawnPolygons","Polygon","advanced_marker_display","stopPolling","interval","stopTime","internalInterval","updateDateLabel","updateDriverPosition","driver","timeout","update","delay","notify","placement","from","align","onShow","notifications","querySelectorAll","style","bottom","closeButtons","fontSize","top","transform","removeProperty","left","initTabs","defaultTab","onTabChange","initialTab","getParameterByName","click","preventDefault","confirm","stopPropagation","tab","history","pushState","updateQueryStringParameter","href","originalFormData","serialize","rememberTabs","renderSmallAjaxStatus","statusId","roundtrip","allowInventory","statusName","statusClass","toLowerCase","roundtripOption","inventoryOptions","allow_final_failed","renderPickStatusAjax","pickStatus","packagesQuantity","s","getPathFromUrl","toggleOther","target","content","initRoutesDropdown","callback","$container","currentRouteId","visitId","routesArr","$list","first","removeLink","list","routes","inputVal","start","acc","r","concat","rebuild","append","search","RegExp","routeId","updateVisitRoute","ready","$input","initVehiclesDropdown","vehicleId","vehiclesArr","vehicles","initDriversDropdown","partnerBridgeId","driversArr","asyncDriverUpdate","newDriverId","newPartnerBridgeId","checksQueue","handleTransferCancel","confirm_task_transfers","handleTransferConfirm","previousDriver","newDriver","check","shouldContinue","updateDriver","integrationLink","imageUrl","gettLink","woltLink","getPackageLink","drivers","regularDrivers","d","partner_bridge_id","partnerDrivers","partner_bridge_image","allow_gett","allow_wolt","allow_get_package","renewListeners","result","keep_transfer_connection","task_id","transfer_details","fetchWithLoading","additionalData","driver_id","visit","route_id","tooltipsTaskLink","isPhotoAttached","signatureUrl","printedAt","comments","mapVisitId","isVipClient","commentsHtml","comment","created_at_str","username","initSidePanel","panel","resizeSelector","onOpen","onDragEnd","dragStartWidth","getCookie","resizable","handleSelector","resizeHeight","resizeWidthFrom","onDragStart","onDrag","dispatchEvent","cookie","dragStartWidthCopy","newWidth","initPanelMapMoving","breakpoint","mapContent","detach","appendTo","initDateRangePicker","element","exclude","EARLIEST_DATE","LATEST_DATE","label","baseDate","utcOffset","time_offset","rangeOptions","to","subtract","add","country","startOf","endOf","URL","fromParam","searchParams","get","toParam","currentRange","range","daterangepicker","endDate","ranges","applyLabel","cancelLabel","customRangeLabel","daysOfWeek","monthNames","direction","end","partPrint","domClone","cloneNode","printSection","createElement","appendChild","print","innerHTML","flyOnMapToCoordinates","targetObject","zoomLevel","getZoom","canvas","findMarkerOnMap","isPopupOpen","latLon","getLatLng","panTo","maxZoom","targetMarker","markerLatLng","initHoverCopy","temp","copy","textContent","trim","execCommand","tooltip","initPasswordToggle","parent","isOpen","initTaskCancelButton","new_task_status","backgroundByPercents","percents","initTaskPhotoModal","updateCurrentStickyCard","previous","destroySticky","currentCard","initStickyCard","additionalOffset","KTUtil","getById","KTLayoutHeader","getHeight","object","KTCard","sticky","zIndex","position","pos","isBreakpointUp","isFixed","KTLayoutSubheader","isFixedForMobile","getHeightForMobile","card","right","getBody","cardWidth","initSticky","addResizeHandler","updateSticky","asyncDataLoad","initPasswordValidation","validationRules","selector","test","pwd","password","this","rule","passes","constructFancyInfoWindowContent","dest_add","driver_name","visit_at","kind","visit_id","route","company_name","region_str","earliest_time","latest_time","task","destination_phone","wp_order_id","allow_routes","routesSelect","driversSelect","isEmpty","allow_companies","driverName","visitPopupContent","constructFancyInfoWindowContent3","volume","surface_quantity","DEFAULT_MAP_CENTER","DEFAULT_IL_MAP_CENTER","mapContainer","provider","Loader","apiKey","mapKey","version","libraries","load","_leaflet_id","fullscreenControl","setView","defaultMapCenter","mapParams","leafletMapParms","defaultMap","tileLayer","classList","contains","satelliteMap","insertAdjacentHTML","hasLayer","removeFrom","control","scale","scale_units","setZoom","_gon$mapa","_gon$mapa2","MAPA_TOKEN","mapa","token","accessToken","attribution","defaultCenter","default_location","geolocationMapCallback","long","lat_input_id","long_input_id","markerIcon","center","getCenter","toFixed","coordinates","b","d_lat","d_lng","shift","charCodeAt","webpackContext","req","webpackContextResolve","__webpack_require__","o","Error","code","keys","module","exports"],"sourceRoot":""}