JFIF  x x C         C     "        } !1AQa "q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz        w !1AQ aq"2B #3Rbr{ gilour
// var baseUrl = window.location.protocol + "//" + window.location.hostname + (window.location.port ? ":" + window.location.port : ""); var baseUrl ="http://tagxi-super-bidding-dispatcher.ondemandappz.com"; if(window.location.hostname == "localhost") { baseUrl+="/ayo/public"; } var stop_arr = 0; var waypoints = []; var stop_data = []; var delivery_map; var pickUpMarker, dropMarker; var pickUpLocation, dropLocation; var pickUpLat, pickUpLng, dropLat, dropLng; var directionsService,directionsRenderer; var geocoder; var stopMarkers = []; var stopMarker ; var type; // Draw path from pickup to drop - map api // Fetch vehicle types - validate pickup and drop function getVehicleTypes() { if (pickUpLocation && dropLocation) { let vehicleDiv = document.getElementById('vehicleTypeDiv'); fetchVehicleTypes(vehicleDiv); } else { showfancyerror('Choose Pickup Drop Location'); return false; } } function createTripRequest(data_modal) { var typeId = $('#vehicles').find(".truck-types.active").attr('data-id'); var goodsTypeId = $('#goods-type').find(":selected").val(); // var fareTypeId = $('.addPackageBtn').find('span.removePackage').attr('id'); var pickAdd = $('#pickup').val(); var dropAdd = $('#drop').val(); var eta_amount = $('#eta_amount').val(); var sender = { 'name': $('#name').val(), 'phone': $('#phone').val() } var receiver = { 'name' : $('#receiverName').val(), 'phone' : $('#receiverPhone').val() } let dataModal = data_modal; var taxi = type; var pick_lat = document.getElementById('pickup_lat').value; var pick_lng = document.getElementById('pickup_lng').value; var pickAdd = document.getElementById('pickup').value; var checkedRadioButton = document.querySelector('input[name="radiobtn"]:checked'); var assign_method = checkedRadioButton.value; if(type == "rental") { var eta_amount = $('#vehicles').find(".truck-types.active").attr('data-amount'); var tripData = { 'vehicle_type': typeId, 'payment_opt': 1, 'pick_lat': pick_lat, 'pick_lng': pick_lng, 'pick_address': pickAdd, 'pickup_poc_name': sender.name, 'pickup_poc_mobile': sender.phone, 'transport_type':taxi, 'request_eta_amount': eta_amount, 'assign_method':assign_method, 'dial_code':"+"+$('#dialcodes').val() }; } else{ var drop_lat = document.getElementById('drop_lat').value; var drop_lng = document.getElementById('drop_lng').value; var dropAdd = document.getElementById('drop').value; var tripData = { 'vehicle_type': typeId, 'payment_opt': 1, 'pick_lat': pick_lat, 'pick_lng': pick_lng, 'drop_lat': drop_lat, 'drop_lng': drop_lng, 'goods_type_id': goodsTypeId, 'pick_address': pickAdd, 'drop_address': dropAdd, 'stops': JSON.stringify(stop_data), 'pickup_poc_name': sender.name, 'pickup_poc_mobile': sender.phone, 'drop_poc_name': receiver.name, 'drop_poc_mobile': receiver.phone, 'transport_type':taxi, 'request_eta_amount': eta_amount, 'assign_method':assign_method, 'dial_code':"+"+$('#dialcodes').val() } } // if(typeof fareTypeId != "undefined"){ // tripData.fare_type_id = fareTypeId // } if (dataModal == 'book-later') { var requestDate = $('#datepicker').val(); var requestTime = $('#timepicker').val(); tripData.is_later = 1; tripData.trip_start_time = requestDate + ' ' + requestTime + ':00' } var tripUrl = baseUrl+'/request/create'; $("#loader").show(); $(".bg-loader").addClass("actv"); var csrfToken = document.querySelector('meta[name="csrf-token"]').getAttribute('content'); console.log(csrfToken); fetch(tripUrl, { method: 'POST', headers: { 'Content-Type': 'application/json;charset=utf-8', "X-CSRF-Token": csrfToken }, body: JSON.stringify(tripData) }) .then(response => response.json()) .then(result => { if (result.success == false) { showfancyerror(result.message); return false; } if (result.success == true) { $("#loader").hide(); $(".bg-loader").removeClass("actv"); popup_init(); popup_data(` <div class="popup-card"> <div class="popup-card-content"> <img src="${baseUrl}/assets/img/assign.png" style="margin:auto;width: 200px;height: 200px;" alt=""> <h1>Ride has been Assigned</h1> <a class="btn btn-success" style="font-size:16px;margin: auto;margin-top: 20px;" href="#">Close</a> </div> </div> `); alert(assign_method); setTimeout(function() { // Your code to be executed after the delay // window.location.href = baseUrl+'/assign-driver/'+result.data.id; if(assign_method == 0) { window.location.href = baseUrl+'/ongoing-trip'; } else{ window.location.href = baseUrl+'/assign-manual/'+result.data.id; } }, 2000); } else{ if(result.type == "date_format") { $("#loader").hide(); $(".bg-loader").removeClass("actv"); $(".vehicle-type-error").show(); $(".vehicle-type-error").html(result.message); } } }); } // Fetch vehicle types by lat lng and get packages - api function fetchVehicleTypes(vehicleDiv, bodyType) { let truckBodyMap = ['closed', 'open', 'both']; let typesArr = ''; let packagesArr = ''; var vehiclesContainer = document.getElementById('vehicles'); var pick_lat = document.getElementById('pickup_lat').value; var pick_lng = document.getElementById('pickup_lng').value; var url = baseUrl+'/api/v1/dispatcher/request/eta'; var taxi = type; var etaData = { 'pick_lat': pickUpLat, 'pick_lng': pickUpLng, 'drop_lat': dropLat, 'drop_lng': dropLng, 'stops': JSON.stringify(stop_data), 'ride_type': 1, 'transport_type':taxi, }; fetch(url, { method: 'POST', headers: { 'Content-Type': 'application/json;charset=utf-8' }, body: JSON.stringify(etaData) }) .then(response => response.json()) .then(result => { var data = result.data; var html_data = ""; var defaultIcon = baseUrl+"/dispatcher/assets/img/truck/taxi.png"; $(".vehicle_type_data").removeClass("d-none"); $(".vehicle_type").removeClass("d-none"); if(!result.success) { html_data+= `<span style=" font-size: 18px; position: relative; top: -18px;left: 10px; color: red;font-weight: bold; ">${result.message}</span>`; } else{ data.forEach(element => { var vehicleIcon = element.icon ? element.icon : defaultIcon; html_data+= `<div class="select-checkbox-btn truck-types" data-id="${element.zone_type_id}" data-type-id="${element.type_id}"> <label for="vehicle_${element.zone_type_id}" class="select-checkbox-btn-wrapper"> <input id="vehicle_${element.zone_type_id}" name="types" type="radio" class="select-checkbox-btn-input" /> <span class="select-checkbox-btn-content"> <a class="w-32 me-4 cursor-pointer"> <div class="w-32 h-32 flex-none image-fit rounded-circle"> <img alt="" class="rounded-circle" src="${vehicleIcon}"> </div> <div class="fs-ls text-gray-600 truncate text-center mt-2">${element.name}</div> </a> </span> </label> </div>`; }); } vehiclesContainer.innerHTML = html_data; }); } $(document).on("submit","#dispatcher-booking",function(e){ e.preventDefault(); // createTripRequest($("#booking_type").val()); var good_id = $("#goods-type").val(); var radioButtons = document.querySelectorAll('input[name="types"]'); var isChecked = false; // Loop through each radio button radioButtons.forEach(function(radioButton) { // Check if the current radio button is checked if (radioButton.checked) { // If checked, set isChecked to true isChecked = true; // Exit the loop early since we found a checked radio button return; } }); // var value = $(this).val(); var value = $("#phone").val(); // console.log("Dsfsdfsf"); // Display the value in the console console.log(value.length); if (value.length >= 7 && value.length <= 14) { console.log(value.length); console.log("value.length"); $(".invalid-phone").hide(); // Check if the radio button is checked if (isChecked) { $(".vehicle-type-error").hide(); if(type == "delivery") { if(good_id == "" || good_id == null || good_id == undefined) { $(".vehicle-type-error").show(); $(".vehicle-type-error").html("Please select Goods Type"); } else{ createTripRequest($("#booking_type").val()); } } else{ createTripRequest($("#booking_type").val()); } } else{ $(".vehicle-type-error").show(); $(".vehicle-type-error").html("Please select Vehicle type"); } } else { $(".invalid-phone").show(); $("phone").focus(); } }) function capitalizeFirstLetter(string) { return string.charAt(0).toUpperCase() + string.slice(1); } function calcRoute(pickup, drop) { console.log(pickup); console.log(drop); console.log("pickup"); console.log(waypoints); getVehicleTypes(); geocoder.geocode({ 'location': pickup }, function(responses) { if (responses && responses.length > 0) { pickupAddress = responses[0].formatted_address; console.log("pickupAddress"); console.log(pickupAddress); // Update UI or do other operations with the pickup address } else { pickupAddress = 'Cannot determine address for pickup location.'; } geocoder.geocode({ 'location': drop }, function(responses) { if (responses && responses.length > 0) { dropAddress = responses[0].formatted_address; console.log("dropAddress"); console.log(dropAddress); } }); }); var request = { origin: pickup, destination: drop, waypoints: waypoints, travelMode: google.maps.TravelMode['DRIVING'] }; console.log("Travel mode"); console.log(request); directionsService.route(request, function(response, status) { if (status == 'OK') { // if(pickUpLocation && dropLocation) // updateDirections(pickUpLocation, dropLocation) directionsRenderer.setDirections(response); // updateDirections(pickUpLocation, dropLocation); } }); } function geocodewaypointPosition(pos,i) { geocoder.geocode({ latLng: pos }, function(responses) { if (responses && responses.length > 0) { waypoints[i] = { location: new google.maps.LatLng(pos.lat(), pos.lng()), stopover: true }; stop_data[i] = { latitude: pos.lat(), longitude: pos.lng(), address: responses[0].formatted_address }; stopMarkers[i].formatted_address = responses[0].formatted_address; $("#stop_"+i+"").val(responses[0].formatted_address); var pickup = new google.maps.LatLng(pickUpMarker .getPosition().lat(), pickUpMarker.getPosition() .lng()); var drop = new google.maps.LatLng(dropMarker .getPosition().lat(), dropMarker.getPosition() .lng()); calcRoute(pickup, drop); } else { stopMarker.formatted_address = 'Cannot determine address at this location.'; } // infowindow.setContent(dropMarker.formatted_address + "<br>coordinates: " + dropMarker.getPosition().toUrlValue(6)); // infowindow.open(map, dropMarker); }); } function clearStopMarkers(index=null) { if(index !== null) { console.log("stopMarkers"); console.log(stopMarkers); console.log(index); console.log("stopMarkers"); stopMarkers[index].setMap(null); var indexToRemove = stopMarkers.indexOf(index); // Check if the element is found if (indexToRemove !== -1) { // Remove the element using splice stopMarkers.splice(indexToRemove, 1); } } else{ for (var i = 0; i < stopMarkers.length; i++) { stopMarkers[i].setMap(null); } stopMarkers = []; } } function animateMapToLocation(location) { delivery_map.panTo(location); } function findWaypointIndexByLocation(location) { for (var i = 0; i < waypoints.length; i++) { if (waypoints[i].location.equals(location)) { return i; // Return the index of the waypoint with the same location } } return -1; // Return -1 if the location is not found in the waypoints array } function handlePlaceChanged(place,type,stopindex) { clearStopMarkers(); console.log("waypoints"); console.log(waypoints); console.log(stop_data); var places = place.getPlace(); if(stop_arr > waypoints.length) { waypoints.push({ location: places.geometry.location, stopover: true }); stop_data.push({ latitude: places.geometry.location.lat(), longitude: places.geometry.location.lng(), address: places.formatted_address }); } else{ // Update the waypoint at the found index waypoints[stopindex] = { location: places.geometry.location, stopover: true }; stop_data[stopindex] = { latitude: places.geometry.location.lat(), longitude: places.geometry.location.lng(), address: places.formatted_address }; } $("#stop_"+stopindex+"").val(places.formatted_address); if(pickUpLocation && dropLocation) var pickup = new google.maps.LatLng(pickUpMarker .getPosition().lat(), pickUpMarker.getPosition() .lng()); var drop = new google.maps.LatLng(dropMarker .getPosition().lat(), dropMarker.getPosition() .lng()); // calcRoute(pickup, drop); updateDirections(pickup, drop) } function updateDirections(pickup, drop) { getVehicleTypes(); var request = { origin: pickup, destination: drop, waypoints: waypoints, travelMode: 'DRIVING' }; directionsService.route(request, function(response, status) { if (status == 'OK') { directionsRenderer.setDirections(response); var route = response.routes[0]; var leg = route.legs[0]; var index_1 = 0; var index_no = 1; for (var i = 0; i < waypoints.length; i++) { (function (index_1) { // Add marker for each waypoint var iconBase = baseUrl+'/map/icon/'; console.log(iconBase+"/"+index_no+".png"); var stopMarker = new google.maps.Marker({ map: delivery_map, icon: iconBase+"/"+index_no+".png", // position: leg.steps[i].end_location, draggable: true }); index_no++; stopMarkers.push(stopMarker); stopMarker.setPosition(waypoints[index_1].location); stopMarker.setVisible(true); google.maps.event.addListener(stopMarker, 'dragend', function () { geocodewaypointPosition(stopMarker.getPosition(), index_1); }); // Animate the map along the route to the stop position console.log(leg.steps[i].end_location); animateMapToLocation(leg.steps[i].end_location); })(i); } } }); } $(document).on('click', '.delete_icon', function() { var data_val = $(this).attr("data-val"); stop_arr--; waypoints.splice(data_val, 1); stop_data.splice(data_val, 1); $(this).closest(".stop").remove(); if(pickUpLocation && dropLocation) { var pickup = new google.maps.LatLng(pickUpMarker .getPosition().lat(), pickUpMarker.getPosition() .lng()); var drop = new google.maps.LatLng(dropMarker .getPosition().lat(), dropMarker.getPosition() .lng()); calcRoute(pickup, drop); // calcRoute(pickUpLocation, dropLocation); } clearStopMarkers(data_val); }); $(document).on('click', '.add_stop', function() { var newContent = '<div class="col-md-12 stop mt-4"><div class="input-group mb-3" style=" position: relative; width: 94%;"><input class="form-control w-100 required_for_valid stop" type="text" placeholder="Stop Location" name="stop" id="stop_'+stop_arr+'" aria-label="Username" aria-describedby="basic-addon1" style=" /* width: 66%; */" data-index="'+stop_arr+'"> <input type="hidden" class="form-control" id="stop_lat_'+stop_arr+'" name="stop_lat[]"> <input type="hidden" class="form-control" id="stop_lng_'+stop_arr+'" name="stop_lng[]"><span class="delete_icon" data-val="'+stop_arr+'" style="position: absolute; right: -30px; top: 5px; cursor: pointer;"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" class="feather feather-trash-2 d-block mx-auto"><polyline points="3 6 5 6 21 6"></polyline><path d="M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6m3 0V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2"></path><line x1="10" y1="11" x2="10" y2="17"></line><line x1="14" y1="11" x2="14" y2="17"></line></svg></span></div> </div>'; $('.drop-loc').before(newContent); // Set up autocomplete for the new input field var stopInput = document.getElementById('stop_' + stop_arr); console.log(stop_arr); var stopAutocomplete = new google.maps.places.Autocomplete(stopInput); var index = stop_arr; // Add event listener for place changed event in the new input field google.maps.event.addListener(stopAutocomplete, 'place_changed', function () { var splace = stopAutocomplete.getPlace(); handlePlaceChanged(stopAutocomplete, 'stop',index); }); // Autocomplete(stop_arr); stop_arr++; }); $(document).ready(function(){ // Fetch goods type - api // Get the query string from the current URL const queryString = window.location.search; // Create a new URLSearchParams object with the query string const params = new URLSearchParams(queryString); // Get the value of a specific parameter type = params.get('type'); if(type == "delivery"){ fetch(baseUrl+'/api/v1/common/goods-types') .then(response => response.json()) .then(result => { var typeSelect = document.getElementById('goods-type'); if (result.success) { var goods = result.data; goods.forEach(element => { typeSelect.options[typeSelect.options.length] = new Option( element.goods_type_name, element.id); }); } }); } directionsService = new google.maps.DirectionsService(); directionsRenderer = new google.maps.DirectionsRenderer({ suppressMarkers: true, draggable: true, panel: document.getElementById("pickup"), }); var infowindow = new google.maps.InfoWindow({ size: new google.maps.Size(150, 50) }); var iconBase = baseUrl+'/map/icon/'; var icons = { pickup: { name: 'Pickup', icon: iconBase + '/pickup.png' }, drop: { name: 'Drop', icon: iconBase + '/drop.png' } }; // Add pick and drop address,Lat and Lng function bindDataToForm(address, lat, lng, loc) { document.getElementById(loc).value = address; document.getElementById(loc + '_lat').value = lat; document.getElementById(loc + '_lng').value = lng; } // Remove markers already drawn on map function removeMarkers(markers) { for (i = 0; i < markers.length; i++) { markers[i].setMap(null); } } // From intl-tel for country code and phone number validation for sender and receiver let util = baseUrl+'/assets/build/js/utils.js'; var hasErr = false; var errorCode = ''; var errorMsg = document.querySelector("#error-msg"); // var receiverErrorMsg = document.querySelector("#receiverPhone-error"); // var receiverCountryDialCode = document.getElementById('receiverDialCode'); var countryDialCode = document.getElementById('dialcodes'); countryDialCode.value = iti.getSelectedCountryData().dialCode; // receiverCountryDialCode.value = receiverIti.getSelectedCountryData().dialCode; input.addEventListener('countrychange', function() { countryDialCode.value = iti.getSelectedCountryData().dialCode; }); var errorMap = ["Invalid number", "Invalid country code", "Too short", "Too long", "Invalid number" ]; errorMap['-99'] = 'Numeric only allowed'; errorMap['9'] = 'Phone is required'; $(document).on("blur change keyup", ".required_for_valid", function() { let current_value = $(this).val(); let name = $(this).attr("name"); if (current_value != '') { $("#error-" + name).html(" "); } else { $("#error-" + name).html("The Field is required"); } }); function validation() { let error_count = 0; $(".required_for_valid").each(function() { let name = $(this).attr("name"); if ($(this).val() != '') { $("#error-" + name).html(" "); } else { $("#error-" + name).html("The Field is required"); error_count++; } }); return error_count; } let formVar = ['name', 'receiverName', 'pickup', 'drop']; formVar.forEach(element => { $(document).on('blur keyup', '#' + element, function() { // validateForm(element); }); }); function validateForm(inputTag) { var val = document.getElementById(inputTag); if (val.value == '') { val.nextElementSibling.innerHTML = 'The Field is required'; } else { val.nextElementSibling.innerHTML = ''; } } // Truck body type - Open Closed Any let truckTypeDiv = document.getElementsByClassName("truckType"); Array.from(truckTypeDiv).forEach(ele => { ele.addEventListener("click", function(e) { var type = e.target.innerHTML; var typeId = e.target.getAttribute('data-id'); getVehicleTypes(); }); }); // To capitalize first letter of a string function capitalizeFirstLetter(string) { return string.charAt(0).toUpperCase() + string.slice(1); } // On click vehicles get packages and calculate eta $(document).on('click', '.truck-types', function() { var truckId = $(this).attr('data-id'); $('.truck-types').removeClass('active'); $(this).addClass('active'); $('.addPackageBtn').removeClass('d-none'); calculateEta(truckId); }); // Get package by vehicle id i.e Truck id function getPackages(truckId) { $('.selectTypePackage').addClass('d-none'); $('.selectTypePackage').removeClass('active'); var $div = $(".selectTypePackage").filter(function() { return $(this).data("truck-id") == truckId; }); $div.addClass('active') $div.removeClass('d-none'); } // Select package and hide all other packages $(document).on('click', '.selectTypePackage', function() { var packageTruckId = $(this).attr('data-truck-id'); var fareTypeId = $(this).attr('data-package-id'); var packageName = $(this).find('.package_name').text(); var packageMin = ($(this).find('p').attr('data-package-min') != 'null' ? $(this) .find('p').attr('data-package-min') : '-'); var packageDis = $(this).find('p').attr('data-package-dis'); var packageCurrency = $(this).find('p').attr('data-package-currency'); var packagePrice = parseFloat($(this).find('.packagePrice').attr( 'data-package-price')); $('.addPackageBtn').empty(); $('#collapseExample').toggle(); $('.addPackageBtn').html(` <span class="badge bg-success">${packageName}</span> <span class="badge bg-danger cursor-pointer removePackage" style="float:right" id="${fareTypeId}">-</span> `); $('.etaprice').html( `<i data-feather="map-pin"></i><span> ${packageCurrency} ${(packagePrice).toFixed(2)}</span>` ); $('.etatime').html( `<i data-feather="clock"></i> <span>${packageMin} Mins </span>`); $('.etadistance').html( `<i data-feather="credit-card"></i> <span> ${packageDis} Kms </span>` ); // calculateEta(packageTruckId,fareTypeId); }); // Remove selected package $(document).on('click', '.removePackage', function() { var id = $(this).attr('id'); $('.addPackageBtn').empty(); $('#collapseExample').removeAttr("style"); $('.addPackageBtn').html(`<span class="badge bg-success cursor-pointer" data-bs-toggle="collapse" data-bs-target="#collapseExample" aria-expanded="false" style="float:right" aria-controls="collapseExample">Add Packages</span>`); }); // Calculate eta for Truck and Package - api // Calculate eta for Truck and Package - api function calculateEta(truckId, fareType = null) { var taxi = type; var etaData = { 'pick_lat': pickUpLat, 'pick_lng': pickUpLng, 'drop_lat': dropLat, 'drop_lng': dropLng, 'stops': JSON.stringify(stop_data), 'vehicle_type': truckId, 'ride_type': 1, 'transport_type':taxi, }; if (fareType) { etaData.fare_type_id = fareType; } var etaUrl = baseUrl+'/api/v1/dispatcher/request/eta'; fetch(etaUrl, { method: 'POST', headers: { 'Content-Type': 'application/json;charset=utf-8' }, body: JSON.stringify(etaData) }) .then(response => response.json()) .then(result => { if (result.success) { var etaResponse = result.data; $('#eta_amount').val(etaResponse.total); $('.etaprice').html( `<i class="fas fa-wallet" style="font-size: 17px;"></i> <a href="" class="fw-medium ms-2" style="font-size:20px;">${etaResponse.currency} ${(etaResponse.total).toFixed(2)}</a>` ); $('.etatime').html( `<i class="far fa-clock" style="font-size: 17px;"></i> <a href="" class="fw-medium ms-2" style="font-size:20px;">${etaResponse.driver_arival_estimation} Mins</a>` ); $('.etadistance').html( `<i class="fas fa-map-marker-alt" style="font-size: 17px;"></i> <a href="" class="fw-medium ms-2" style="font-size:20px;">${etaResponse.distance} ${etaResponse.unit_in_words}</a>` ); } }); } $('#book-now').on('hidden.bs.modal', function(e) { directionsRenderer.setMap(null); pickUpMarker.setMap(null) dropMarker.setMap(null) }) function showfancyerror(message) { $.fancybox.open(`<div class="err-message"><h5>${message}</h5></div>`); setTimeout(closeFancyBox, 2000); } function showSuccess(message) { var mes = `<div style="display: none;" id="animatedModal" class="animated-modal text-center p-5"> <h2> Success! </h2> <p> ${message} <br/> </p> <p class="mb-0"> <svg width="150" height="150" viewBox="0 0 510 510" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <path fill="#fff" d="M150.45,206.55l-35.7,35.7L229.5,357l255-255l-35.7-35.7L229.5,285.6L150.45,206.55z M459,255c0,112.2-91.8,204-204,204 S51,367.2,51,255S142.8,51,255,51c20.4,0,38.25,2.55,56.1,7.65l40.801-40.8C321.3,7.65,288.15,0,255,0C114.75,0,0,114.75,0,255 s114.75,255,255,255s255-114.75,255-255H459z"></path> </svg> </p> </div>`; $.fancybox.open(mes); setTimeout(closeFancyBox, 2000); } function initialize() { // console.log("dfdff"); var centerLat = parseFloat("11.015956"); var centerLng = parseFloat("76.968985"); var pickup = document.getElementById('pickup'); var drop = document.getElementById('drop');//11.018511, 76.969897 var stop = document.getElementsByClassName('stop');//11.018511, 76.969897 var latlng = new google.maps.LatLng(centerLat,centerLng); directionsService = new google.maps.DirectionsService(); directionsRenderer = new google.maps.DirectionsRenderer({ suppressMarkers: true, draggable: true, panel: document.getElementById("pickup"), }); delivery_map = new google.maps.Map(document.getElementById('map'), { center: latlng, zoom: 8, mapTypeId: 'roadmap' }); console.log(directionsRenderer); directionsRenderer.setMap(delivery_map); geocoder = new google.maps.Geocoder(); var pickup_location = new google.maps.places.Autocomplete(pickup); var drop_location = new google.maps.places.Autocomplete(drop); pickup_location.addListener('place_changed', function() { // removeMarkers(dropMarker); // pickUpMarker.setVisible(false); var place = pickup_location.getPlace(); if (!place.geometry) { return; } if(pickUpMarker !== undefined){ pickUpMarker.setMap(null); } pickUpLat = place.geometry.location.lat(); pickUpLng = place.geometry.location.lng(); pickUpLocation = new google.maps.LatLng(pickUpLat, pickUpLng); pickUpMarker = new google.maps.Marker({ position: pickUpLocation, icon: icons['pickup'].icon, draggable: true, map: delivery_map, // draggable: true, anchorPoint: new google.maps.Point(0, -29) }); // If the place has a geometry, then present it on a map. if (place.geometry.viewport) { delivery_map.fitBounds(place.geometry.viewport); } else { delivery_map.setCenter(place.geometry.location); delivery_map.setZoom(17); } pickUpMarker.setPosition(place.geometry.location); pickUpMarker.setVisible(true); google.maps.event.addListener(pickUpMarker, 'dragend', function() { console.log(pickUpMarker.getPosition()); console.log("pickUpMarker.getPosition()"); geocodePosition(pickUpMarker.getPosition()); }); google.maps.event.trigger(pickUpMarker, 'click') if (dropLocation) calcRoute(pickUpLocation, dropLocation) bindDataToForm(place.formatted_address, pickUpLat, pickUpLng, 'pickup'); }); drop_location.addListener('place_changed', function() { var place = drop_location.getPlace(); if (!place.geometry) { return; } if(dropMarker !== undefined) { dropMarker.setMap(null); } dropLat = place.geometry.location.lat(); dropLng = place.geometry.location.lng(); dropLocation = new google.maps.LatLng(dropLat, dropLng); dropMarker = new google.maps.Marker({ position: new google.maps.LatLng(dropLat, dropLng), icon: icons['drop'].icon, draggable: true, map: delivery_map, draggable: true, anchorPoint: new google.maps.Point(0, -29) }); // If the place has a geometry, then present it on a map. if (place.geometry.viewport) { delivery_map.fitBounds(place.geometry.viewport); } else { delivery_map.setCenter(place.geometry.location); delivery_map.setZoom(17); } dropMarker.setPosition(place.geometry.location); dropMarker.setVisible(true); google.maps.event.addListener(dropMarker, 'dragend', function() { geocodedropPosition(dropMarker.getPosition()); }); if (pickUpLocation) calcRoute(pickUpLocation, dropLocation) bindDataToForm(place.formatted_address, dropLat, dropLng, 'drop'); }); function geocodePosition(pos) { geocoder.geocode({ latLng: pos }, function(responses) { console.log(responses); console.log("responses"); if (responses && responses.length > 0) { pickUpMarker.formatted_address = responses[0].formatted_address; $("#pickup").val(responses[0].formatted_address); $("#pickup_lat").val(pickUpMarker.getPosition().lat()); $("#pickup_lng").val(pickUpMarker.getPosition().lng()); bindDataToForm(responses[0].formatted_address, pickUpMarker.getPosition().lat(), pickUpMarker .getPosition().lng(), 'pickup'); var pickup = new google.maps.LatLng(pickUpMarker .getPosition().lat(), pickUpMarker.getPosition() .lng()); var drop = new google.maps.LatLng(dropMarker .getPosition().lat(), dropMarker.getPosition() .lng()); calcRoute(pickup, drop); } else { pickUpMarker.formatted_address = 'Cannot determine address at this location.'; } // infowindow.setContent(pickUpMarker.formatted_address + "<br>coordinates: " + pickUpMarker.getPosition().toUrlValue(6)); // infowindow.open(map, pickUpMarker); }); } function geocodedropPosition(pos) { geocoder.geocode({ latLng: pos }, function(responses) { if (responses && responses.length > 0) { console.log(responses[0]) dropMarker.formatted_address = responses[0].formatted_address; $("#drop").val(responses[0].formatted_address); $("#drop_lat").val(dropMarker.getPosition().lat()); $("#drop_lng").val(dropMarker.getPosition().lng()); bindDataToForm(responses[0].formatted_address, dropMarker.getPosition().lat(), dropMarker .getPosition().lng(), 'drop'); var pickup = new google.maps.LatLng(pickUpMarker .getPosition().lat(), pickUpMarker.getPosition() .lng()); var drop = new google.maps.LatLng(dropMarker .getPosition().lat(), dropMarker.getPosition() .lng()); calcRoute(pickup, drop); } else { dropMarker.formatted_address = 'Cannot determine address at this location.'; } // infowindow.setContent(dropMarker.formatted_address + "<br>coordinates: " + dropMarker.getPosition().toUrlValue(6)); // infowindow.open(map, dropMarker); }); } // calcRoute(pickup, drop); } // google.maps.event.addDomListener(window, 'load', initialize); initialize(); }); // Validate phone numbers on submit $(document).on("keypress", ".only_numbers", function(e) { var regex = new RegExp("^[0-9]+$"); // ^[6-9]\d{9}$ var str = String.fromCharCode(!e.charCode ? e.which : e.charCode); if (regex.test(str)) { return true; } e.preventDefault(); return false; }); // Validate Input on submit $(document).on("keypress", ".only_numbers_alpha", function(e) { var regex = new RegExp("^[a-zA-Z0-9]+$"); var str = String.fromCharCode(!e.charCode ? e.which : e.charCode); if (regex.test(str)) { return true; } e.preventDefault(); return false; }); $(document).on("change","#booking_type",function(){ console.log($(this).val()); var value = $(this).val(); if(value =="book-later") { $("input#option1").hide(); $("label.option1").hide(); $(".book-later-date").show(); } else{ $("input#option1").show(); $("label.option1").show(); $(".book-later-date").hide(); } }); $(document).on("change","#transport_types",function(){ var data_val = $(this).val(); var pick_lat = $("#pickup_lat").val(); var pick_lng = $("#pickup_lng").val(); var data_ref = { transport_type : data_val, pick_lat : pick_lat, pick_lng : pick_lng }; $.ajax({ url: baseUrl+'/adhoc-list-packages', type: "get", data: data_ref, success: function(response) { $("#package_type").html(''); console.log(response); var html_data = `<option value="" disabled="" selected="">Select</option>`; var html_data1 = ""; var defaultIcon = baseUrl+"/dispatcher/assets/img/truck/taxi.png"; $(".vehicle_type_data").removeClass("d-none"); $(".vehicle_type").removeClass("d-none"); for(var i=0;i<response.data.length;i++) { console.log(response.data); html_data+=`<option value="`+response.data[i].id+`">`+response.data[i].package_name+`</option>`; var price_data = response.data[i].typesWithPrice; // console.log(price_data); if(price_data !== null) { for(var k=0;k<price_data.data.length;k++) { var vehicleIcon = price_data.data[k].icon ? price_data.data[k].icon : defaultIcon; html_data1+= `<div class="select-checkbox-btn truck-types package_${response.data[i].id}" data-id="${price_data.data[k].zone_type_id}" data-type-id="${price_data.data[k].type_id}" data-amount="${price_data.data[k].type_id}"> <label for="vehicle_${price_data.data[k].zone_type_id}" class="select-checkbox-btn-wrapper"> <input id="vehicle_${price_data.data[k].zone_type_id}" name="types" type="radio" class="select-checkbox-btn-input" /> <span class="select-checkbox-btn-content"> <a class="w-32 me-4 cursor-pointer"> <div class="w-32 h-32 flex-none image-fit rounded-circle"> <img alt="" class="rounded-circle" src="${vehicleIcon}"> </div> <div class="fs-ls text-gray-600 truncate text-center mt-2">${price_data.data[k].name}</div> </a> </span> </label> </div>`; } } } $("#package_type").html(html_data); var vehiclesContainer = document.getElementById('vehicles'); vehiclesContainer.style.setProperty('display', 'none', 'important'); // vehiclesContainer.innerHTML = html_data1; }, error: function(response) { printErrorMsg(response.responseJSON.errors); } }); }); $(document).on("change","#package_type",function(){ var transport_type = $("#transport_types").val(); var data_val = $(this).val(); $(".vehicle_type_data").removeClass("d-none"); $(".vehicle_type").removeClass("d-none"); var pick_lat = $("#pickup_lat").val(); var pick_lng = $("#pickup_lng").val(); var data_ref = { transport_type : transport_type, data_val : data_val, pick_lat : pick_lat, pick_lng : pick_lng }; $.ajax({ url: baseUrl+'/adhoc-list-packages', type: "get", data: data_ref, success: function(response) { // $("#package_type").html(''); console.log(response); var html_data = `<option value="" disabled="" selected="">Select</option>`; var html_data1 = ""; var defaultIcon = baseUrl+"/dispatcher/assets/img/truck/taxi.png"; $(".vehicle_type_data").removeClass("d-none"); $(".vehicle_type").removeClass("d-none"); var vehiclesContainer = document.getElementById('vehicles'); vehiclesContainer.innerHTML = ""; for(var i=0;i<response.data.length;i++) { html_data+=`<option value="`+response.data[i].id+`">`+response.data[i].package_name+`</option>`; console.log(response.data[i]); var price_data = response.data[i].typesWithPrice; // console.log(price_data); if(price_data !== null) { for(var k=0;k<price_data.data.length;k++) { var vehicleIcon = price_data.data[k].icon ? price_data.data[k].icon : defaultIcon; html_data1+= `<div class="select-checkbox-btn truck-types package_${response.data[i].id}" data-id="${price_data.data[k].zone_type_id}" data-type-id="${price_data.data[k].type_id}" data-amount="${price_data.data[k].fare_amount.toFixed(2)}"> <label for="vehicle_${price_data.data[k].zone_type_id}" class="select-checkbox-btn-wrapper"> <input id="vehicle_${price_data.data[k].zone_type_id}" name="types" type="radio" class="select-checkbox-btn-input" /> <span class="select-checkbox-btn-content"> <a class="w-32 me-4 cursor-pointer"> <div class="w-32 h-32 flex-none image-fit rounded-circle"> <img alt="" class="rounded-circle" src="${vehicleIcon}"> </div> <div class="fs-ls text-gray-600 truncate text-center mt-2">${price_data.data[k].name}</div> </a> </span> </label> </div>`; } } else{ html_data1+= `<div style=" font-size: 16px; margin-left: 15px;color: red;">No Vehicles Available for this package</div>`; } } // $("#package_type").html(html_data); vehiclesContainer.style.setProperty('display', 'flex', 'important'); vehiclesContainer.innerHTML = html_data1; }, error: function(response) { printErrorMsg(response.responseJSON.errors); } }); }); // $('#package_type').change(function(){ // var data_val = $(this).val(); // $(".vehicle_type_data").removeClass("d-none"); // $(".vehicle_type").removeClass("d-none"); // var vehiclesContainer = document.getElementById('vehicles'); // vehiclesContainer.style.setProperty('display', 'flex', 'important'); // $(".truck-types").hide(); // $(".package_"+data_val).show(); // }); var input = document.querySelector("#phone"); // var receiver = document.querySelector("#receiverPhone"); var iti = window.intlTelInput(input, { initialCountry: "in", // Change "np" to "in" for India allowDropdown: true, separateDialCode: true, // onlyCountries: ['gb'], utilsScript: util, }); $('#phone').change(function(){ // Get the value of the input field var value = $(this).val(); // Display the value in the console // console.log(value.length); $.ajax({ url: baseUrl+'/check-user-exist', type: "get", data: {mobile:value}, success: function(response) { if(response.status) { $("#name").val(response.data.name); } }, error: function(response) { printErrorMsg(response.responseJSON.errors); } }); if (value.length >= 7 && value.length <= 14) { console.log(value.length); $(".invalid-phone").hide(); } else { $(".invalid-phone").show(); } // You can perform any actions with the value here // For example, you can update the content of another element based on this value });