1453 lines
57 KiB
JavaScript
1453 lines
57 KiB
JavaScript
var list_item_api = "/v2/items";
|
|
var list_sub_item_api = "/v2/sub_items/";
|
|
var add_road_items = "/v2/road_items/operator/store";
|
|
var observed_items_api = "/v2/observed_items/";
|
|
var search_by_filter_api = "/v2/observed_items?";
|
|
var mapZoom = getWidth() < 508 ? 5 : 6;
|
|
var mapUrl = `https://rmsmap.rmto.ir/141map/`;
|
|
// base map variables
|
|
var addMap = null;
|
|
var startMarkerAdd = null;
|
|
var endMarkerAdd = null;
|
|
var isSetStartMarkerAdd = false;
|
|
var isSetEndMarkerAdd = false;
|
|
var routeControlsAddMap = [];
|
|
var addMapFoundItem = null;
|
|
var startMarkerAddFoundItem = null;
|
|
var endMarkerAddFoundItem = null;
|
|
var isSetStartMarkerAddFoundItem = false;
|
|
var isSetEndMarkerAddFoundItem = false;
|
|
var routeControlsAddMapFoundItem = [];
|
|
var markerFoundItem;
|
|
// var project_distance;
|
|
// var project_distance_found_item;
|
|
var project_date;
|
|
var project_timer;
|
|
var date_from_filter;
|
|
var date_to_filter;
|
|
var FoundItem_project_date;
|
|
var FoundItem_project_timer;
|
|
var observed_item_id;
|
|
var bounds = [
|
|
[42.9130026312, 75.6166317076],
|
|
[20.5782370061, 35.5092252948],
|
|
];
|
|
|
|
var road_items_ditance;
|
|
// end base map variables
|
|
// resize func
|
|
function getWidth() {
|
|
return Math.max(
|
|
document.body.scrollWidth,
|
|
document.documentElement.scrollWidth,
|
|
document.body.offsetWidth,
|
|
document.documentElement.offsetWidth,
|
|
document.documentElement.clientWidth
|
|
);
|
|
}
|
|
// end resize func
|
|
// map start and end icon
|
|
var startDivIcon = L.divIcon({
|
|
html: `
|
|
<div id="add-pin-marker-start" class="pin-marker">
|
|
<div class="map-pin-marker">
|
|
<div class="pin-main-circle"></div>
|
|
<div class="pin-white-circle"></div>
|
|
<div class="pin-title-circle">
|
|
<span class="title-circle-text">شروع</span>
|
|
</div>
|
|
<div class="pin-main-line"></div>
|
|
</div>
|
|
<div class="pin-main-shadow">
|
|
<div class="shadow-dot">
|
|
</div>
|
|
</div>
|
|
</div>
|
|
`,
|
|
iconSize: [55, 75],
|
|
iconAnchor: [33, 64],
|
|
});
|
|
var endDivIcon = L.divIcon({
|
|
html: `
|
|
<div id="add-pin-marker-end" class="pin-marker">
|
|
<div class="map-pin-marker">
|
|
<div class="pin-main-circle"></div>
|
|
<div class="pin-white-circle"></div>
|
|
<div class="pin-title-circle">
|
|
<span class="title-circle-text">پایان</span>
|
|
</div>
|
|
<div class="pin-main-line"></div>
|
|
</div>
|
|
<div class="pin-main-shadow">
|
|
<div class="shadow-dot">
|
|
</div>
|
|
</div>
|
|
</div>
|
|
`,
|
|
iconSize: [55, 75],
|
|
iconAnchor: [33, 64],
|
|
});
|
|
var item_icon = L.icon({
|
|
iconUrl: "/dist/images/icons/item_location.png",
|
|
iconSize: [30, 30],
|
|
iconAnchor: [9, 19],
|
|
});
|
|
var startDivIconFoundItem = L.divIcon({
|
|
html: `
|
|
<div id="add-pin-marker-start-found-item" class="pin-marker">
|
|
<div class="map-pin-marker">
|
|
<div class="pin-main-circle"></div>
|
|
<div class="pin-white-circle"></div>
|
|
<div class="pin-title-circle">
|
|
<span class="title-circle-text">شروع</span>
|
|
</div>
|
|
<div class="pin-main-line"></div>
|
|
</div>
|
|
<div class="pin-main-shadow">
|
|
<div class="shadow-dot">
|
|
</div>
|
|
</div>
|
|
</div>
|
|
`,
|
|
iconSize: [55, 75],
|
|
iconAnchor: [33, 64],
|
|
});
|
|
var endDivIconFoundItem = L.divIcon({
|
|
html: `
|
|
<div id="add-pin-marker-end-found-item" class="pin-marker">
|
|
<div class="map-pin-marker">
|
|
<div class="pin-main-circle"></div>
|
|
<div class="pin-white-circle"></div>
|
|
<div class="pin-title-circle">
|
|
<span class="title-circle-text">پایان</span>
|
|
</div>
|
|
<div class="pin-main-line"></div>
|
|
</div>
|
|
<div class="pin-main-shadow">
|
|
<div class="shadow-dot">
|
|
</div>
|
|
</div>
|
|
</div>
|
|
`,
|
|
iconSize: [55, 75],
|
|
iconAnchor: [33, 64],
|
|
});
|
|
// end map start and end icon
|
|
// datepicker
|
|
date_from_filter = $("#road_items_filter_date_from").persianDatepicker({
|
|
format: "YYYY/MM/DD",
|
|
initialValue: false,
|
|
autoClose: true,
|
|
initialValueType: "persian",
|
|
onSelect: function (unix) {
|
|
date_from_filter.touched = true;
|
|
|
|
if (
|
|
date_from_filter.getState().selected.unixDate >=
|
|
date_to_filter.getState().selected.unixDate
|
|
) {
|
|
date_to_filter.setDate(
|
|
date_from_filter.getState().selected.unixDate
|
|
);
|
|
}
|
|
|
|
if (
|
|
date_to_filter &&
|
|
date_to_filter.options &&
|
|
date_to_filter.options.minDate != unix
|
|
) {
|
|
let cachedValue =
|
|
date_to_filter.getState().selected.unixDate;
|
|
|
|
date_to_filter.options = { minDate: unix };
|
|
|
|
if (date_from_filter.touched) {
|
|
date_to_filter.setDate(cachedValue);
|
|
}
|
|
}
|
|
},
|
|
});
|
|
date_to_filter = $("#road_items_filter_date_to").persianDatepicker({
|
|
format: "YYYY/MM/DD",
|
|
initialValue: false,
|
|
autoClose: true,
|
|
initialValueType: "persian",
|
|
});
|
|
project_date = $("#project_date").persianDatepicker({
|
|
format: "YYYY/MM/DD",
|
|
initialValue: false,
|
|
autoClose: true,
|
|
initialValueType: "persian",
|
|
});
|
|
project_timer = $("#project_time").persianDatepicker({
|
|
format: "HH:mm",
|
|
initialValue: false,
|
|
autoClose: true,
|
|
initialValueType: "persian",
|
|
onlyTimePicker: true,
|
|
timePicker: {
|
|
enabled: true,
|
|
step: 1,
|
|
hour: {
|
|
enabled: true,
|
|
step: null
|
|
},
|
|
minute: {
|
|
enabled: true,
|
|
step: null
|
|
},
|
|
second: {
|
|
enabled: false,
|
|
step: null
|
|
},
|
|
},
|
|
});
|
|
FoundItem_project_date = $("#FoundItem_project_date").persianDatepicker({
|
|
format: "YYYY/MM/DD",
|
|
initialValue: false,
|
|
autoClose: true,
|
|
initialValueType: "persian",
|
|
});
|
|
FoundItem_project_timer = $("#FoundItem_project_time").persianDatepicker({
|
|
format: "HH:mm",
|
|
initialValue: false,
|
|
autoClose: true,
|
|
initialValueType: "persian",
|
|
onlyTimePicker: true,
|
|
timePicker: {
|
|
enabled: true,
|
|
step: 1,
|
|
hour: {
|
|
enabled: true,
|
|
step: null
|
|
},
|
|
minute: {
|
|
enabled: true,
|
|
step: null
|
|
},
|
|
second: {
|
|
enabled: false,
|
|
step: null
|
|
},
|
|
},
|
|
});
|
|
// end datepicker
|
|
// ready
|
|
$(() => {
|
|
$("[data-mask]").inputmask();
|
|
getWidth() < 508 ? '' : $('[data-toggle="tooltip"]').tooltip();
|
|
// get item list
|
|
$.ajax({
|
|
url: list_item_api,
|
|
type: "GET",
|
|
beforeSend: function () {
|
|
showLoaderScreen();
|
|
},
|
|
success: function (result) {
|
|
const data = result.data;
|
|
let content = ``;
|
|
let selectContent = ``;
|
|
for (let i = 0; i < data.length; i++) {
|
|
selectContent += `<option value="${data[i].id}" selected>${data[i].name}</option>`;
|
|
content += `<div data-item-id="${data[i].id}" data-value="${data[i].name}" class="item col-12 col-lg-6 col-xl-4">
|
|
<div class="style-item px-2 py-2 my-1 text-center text-nowrap d-flex align-items-center">
|
|
<img class="item-icons ml-2" src="/${data[i].icon}"></img>
|
|
<div class="text-center" style="flex:1">
|
|
${data[i].name}
|
|
</div>
|
|
</div>
|
|
</div>`;
|
|
}
|
|
$(".fill-item").append(content);
|
|
$("#item_id").append(selectContent);
|
|
hideLoaderScreen();
|
|
},
|
|
error: function (error) {
|
|
ajax_error(request.responseJSON, request.status);
|
|
hideLoaderScreen();
|
|
},
|
|
});
|
|
// end get item list
|
|
});
|
|
// end ready
|
|
// empty tag checker
|
|
function isEmpty(el) {
|
|
return !$.trim(el.html())
|
|
}
|
|
// end empty tag checker
|
|
// get sub item list
|
|
function subItemData(status, id) {
|
|
$.ajax({
|
|
url: list_sub_item_api + id,
|
|
type: "GET",
|
|
beforeSend: function () {
|
|
showLoaderScreen();
|
|
},
|
|
success: function (result) {
|
|
const data = result.data;
|
|
if (status == 2) {
|
|
$(".fill-sub-item").empty();
|
|
let content = ``;
|
|
for (let i = 0; i < data.length; i++) {
|
|
content += `<div data-sub-item-id="${data[i].sub_item}" data-image="${data[i].needs_image}" data-end-point="${data[i].needs_end_point}" data-value="${data[i].name}" data-unit="${data[i].unit}" class="item col-12">
|
|
<div class="style-item px-3 py-2 my-1 text-center d-flex align-items-center">
|
|
<i class="fa fa-folder ml-2"></i>
|
|
<div class="text-center" style="flex:1">
|
|
${data[i].name}
|
|
</div>
|
|
</div>
|
|
</div>`;
|
|
}
|
|
$(".fill-sub-item").append(content);
|
|
} else if (status == 1) {
|
|
$("#FoundItem_sub_item").empty();
|
|
$("#FoundItem_sub_item").append('<option value="0" disabled selected>انتخاب موضوع مشاهده شده</option>');
|
|
$("#FoundItem_sub_item").prop("disabled", false);
|
|
for (let i = 0; i < data.length; i++) {
|
|
$("#FoundItem_sub_item").append(`<option value="${data[i].sub_item}" data-sub-unit="${data[i].unit}" data-sub-image="${data[i].needs_image}" data-sub-endpoint="${data[i].needs_end_point}">${data[i].name}</option>`);
|
|
}
|
|
$("#FoundItem_sub_item").val($("#accept_item").data("subItemId"));
|
|
$("#FoundItemData_modal").find(".sub-item-unit").text(`(${$("#FoundItem_sub_item").find("option:selected").data("subUnit")})`)
|
|
if ($("#FoundItem_sub_item").find("option:selected").data("subImage") == 1) {
|
|
$("#FoundItemData_modal").find(".upload-box").removeClass("d-none");
|
|
} else {
|
|
$("#FoundItemData_modal").find(".upload-box").addClass("d-none");
|
|
}
|
|
}
|
|
hideLoaderScreen();
|
|
},
|
|
error: function (request) {
|
|
ajax_error(request.responseJSON, request.status);
|
|
hideLoaderScreen();
|
|
},
|
|
});
|
|
}
|
|
// end sub item list
|
|
// uploading file input
|
|
$(document).on("change", ".img-input", function () {
|
|
var input = this;
|
|
var parent = $(input).parents(".img-box");
|
|
if (input.files && input.files[0]) {
|
|
var reader = new FileReader();
|
|
reader.onload = function (e) {
|
|
parent.find(".img-title").css("display", "none");
|
|
parent.find(".btn-delete-img").removeAttr("disabled");
|
|
parent.find(".img-preview").attr("src", e.target.result);
|
|
};
|
|
reader.readAsDataURL(input.files[0]);
|
|
}
|
|
});
|
|
$(".btn-delete-img").on("click", function () {
|
|
var parent = $(this).parents(".img-box");
|
|
parent.find(".img-input").val("");
|
|
parent.find(".img-preview").removeAttr("src");
|
|
parent.find(".img-title").css("display", "");
|
|
$(this).attr("disabled", "disabled");
|
|
});
|
|
// end uploading file input
|
|
// item choosed
|
|
$(".item-box").on("click", ".item", function () {
|
|
$(".item-box").find(".item").removeClass("active-item");
|
|
$(this).addClass("active-item");
|
|
subItemData(2, $(this).data("itemId"));
|
|
});
|
|
// end item choosed
|
|
// sub item choosed
|
|
$(".sub-item-box").on("click", ".item", function () {
|
|
$(this).addClass("active-item");
|
|
const modal = $("#itemData_modal");
|
|
if ($(this).data("image") == 1) {
|
|
modal.find(".upload-box").removeClass("d-none");
|
|
} else {
|
|
modal.find(".upload-box").addClass("d-none");
|
|
}
|
|
const image_box_parent = modal.find(".upload-box");
|
|
image_box_parent.find(".img-input").val("");
|
|
image_box_parent.find(".img-preview").removeAttr("src");
|
|
image_box_parent.find(".img-title").css("display", "");
|
|
image_box_parent.find(".btn-delete-img").attr("disabled", "disabled");
|
|
modal.find(".clean-input").val("");
|
|
modal.find(".value-important").removeClass("invalid").removeClass("valid");
|
|
modal.find(".imgbox").removeClass("invalid").removeClass("valid");
|
|
$(".sub-item-box").find(".item").removeClass("active-item");
|
|
modal.find("#item").val($(".fill-item").find(".item.active-item").data("value"));
|
|
modal.find("#item").data("itemId", $(".fill-item").find(".item.active-item").data("itemId"));
|
|
modal.find("#sub_item").val($(this).data("value"));
|
|
modal.find("#sub_item").data("subItemId", $(this).data("subItemId"));
|
|
modal.find("#sub_item").data("endPoint", $(this).data("endPoint"));
|
|
modal.find("#sub_item").data("subImage", $(this).data("image"));
|
|
modal.find(".sub-item-unit").text(`(${$(this).data("unit")})`);
|
|
modal.find("#add_coordinates_end").addClass("d-none").removeClass("value-important");
|
|
if (addMap == null) {
|
|
setTimeout(() => {
|
|
createAddMap();
|
|
}, 400);
|
|
} else {
|
|
setTimeout(() => {
|
|
clearAddMap();
|
|
}, 400);
|
|
}
|
|
modal.modal("show");
|
|
});
|
|
// all about map [add]
|
|
// clear add map
|
|
function clearAddMap() {
|
|
isSetStartMarkerAdd = false;
|
|
isSetEndMarkerAdd = false;
|
|
addMap.removeLayer(startMarkerAdd);
|
|
if (routeControlsAddMap.length) {
|
|
$(routeControlsAddMap).each(function (index, control) {
|
|
addMap.removeControl(control);
|
|
routeControlsAddMap.splice(routeControlsAddMap.indexOf(index), 1);
|
|
});
|
|
}
|
|
if (endMarkerAdd != null) {
|
|
addMap.removeLayer(endMarkerAdd);
|
|
}
|
|
addMap.setView([35.7065, 51.3477], mapZoom);
|
|
setMarkerDefaultAdd();
|
|
}
|
|
// end clear add map
|
|
|
|
// add map functions
|
|
function createAddMap() {
|
|
var bounds = [
|
|
[42.9130026312, 75.6166317076],
|
|
[20.5782370061, 35.5092252948],
|
|
];
|
|
addMap = L.map("add_map", {
|
|
maxBounds: bounds,
|
|
minZoom: mapZoom,
|
|
zoomControl: false,
|
|
}).setView([35.7065, 51.3477], mapZoom);
|
|
addMap.addLayer(L.tileLayer(`${mapUrl}{z}/{x}/{y}.png`, {
|
|
attributionControl: false,
|
|
}));
|
|
setMarkerDefaultAdd();
|
|
}
|
|
|
|
function setMarkerDefaultAdd() {
|
|
isSetStartMarkerAdd = false;
|
|
isSetEndMarkerAdd = false;
|
|
$("#add-pin-marker-end").removeClass("pin-set");
|
|
$("#add-pin-marker-start").removeClass("pin-set");
|
|
startMarkerAdd = new L.marker(L.latLng(addMap.getCenter()), {
|
|
icon: startDivIcon,
|
|
draggable: true,
|
|
}).addTo(addMap);
|
|
|
|
endMarkerAdd = new L.marker(L.latLng(addMap.getCenter()), {
|
|
icon: endDivIcon,
|
|
draggable: true,
|
|
});
|
|
|
|
addMap.on("move", function () {
|
|
if (!isSetStartMarkerAdd && !isSetEndMarkerAdd) {
|
|
startMarkerAdd.setLatLng(L.latLng(addMap.getCenter()));
|
|
$("#add-pin-marker-start").removeClass("pin-set").addClass("pin-move");
|
|
}
|
|
|
|
if (isSetStartMarkerAdd && !isSetEndMarkerAdd) {
|
|
endMarkerAdd.setLatLng(L.latLng(addMap.getCenter()));
|
|
$("#add-pin-marker-end").removeClass("pin-set").addClass("pin-move");
|
|
}
|
|
});
|
|
|
|
addMap.on("moveend", function () {
|
|
if (!isSetStartMarkerAdd && !isSetEndMarkerAdd) {
|
|
startMarkerAdd.setLatLng(L.latLng(addMap.getCenter()));
|
|
$("#add-pin-marker-start").removeClass("pin-move pin-set");
|
|
}
|
|
|
|
if (isSetStartMarkerAdd && !isSetEndMarkerAdd) {
|
|
endMarkerAdd.setLatLng(L.latLng(addMap.getCenter()));
|
|
$("#add-pin-marker-end").removeClass("pin-move pin-set");
|
|
}
|
|
});
|
|
|
|
startMarkerAdd.on("click", function () {
|
|
if (addMap.getZoom() >= 14) {
|
|
if (!isSetStartMarkerAdd) {
|
|
startMarkerAdd.setLatLng(L.latLng(addMap.getCenter()));
|
|
endMarkerAdd.setLatLng(L.latLng(addMap.getCenter()));
|
|
isSetStartMarkerAdd = true;
|
|
$("#add-pin-marker-start").removeClass("pin-move pin-warn").addClass("pin-set");
|
|
}
|
|
if ($("#itemData_modal").find("#sub_item").data("endPoint") == 1) {
|
|
$("#add_coordinates_end").removeClass("d-none").addClass("value-important");
|
|
endMarkerAdd.setLatLng(startMarkerAdd.getLatLng(), { draggable: true, }).addTo(addMap);
|
|
addMap.panBy(L.point(10, 10));
|
|
}
|
|
$("#add_coordinates_start").val(startMarkerAdd.getLatLng().lat.toFixed(6) + startMarkerAdd.getLatLng().lng.toFixed(6));
|
|
$("#add_coordinates_start").addClass("valid").removeClass("invalid");
|
|
$(this).hide();
|
|
$("#add-pin-marker-start").removeClass("pin-move pin-warn").addClass("pin-set");
|
|
} else {
|
|
Swal.fire({
|
|
icon: "warning",
|
|
title: "خطا",
|
|
text: "لطفا زوم نقشه خود را بیشتر کنید",
|
|
cancelButtonText: "بستن",
|
|
showConfirmButton: false,
|
|
showCancelButton: true,
|
|
});
|
|
}
|
|
});
|
|
|
|
startMarkerAdd.on("drag", function () {
|
|
$("#add-pin-marker-start").addClass("pin-move");
|
|
});
|
|
|
|
startMarkerAdd.on("dragend", function () {
|
|
$("#add-pin-marker-start").removeClass("pin-move");
|
|
$("#add_coordinates_start").val(startMarkerAdd.getLatLng().lat.toFixed(6) + startMarkerAdd.getLatLng().lng.toFixed(6));
|
|
if ($("#add-pin-marker-start").hasClass("pin-set") || isSetStartMarkerAdd) {
|
|
$("#add-pin-marker-start").addClass("pin-set");
|
|
if ($("#itemData_modal").find("#sub_item").data("endPoint") == 1) { drawPathAddMap() }
|
|
} else {
|
|
addMap.setView(startMarkerAdd.getLatLng());
|
|
}
|
|
});
|
|
|
|
endMarkerAdd.on("click", function () {
|
|
if (addMap.getZoom() >= 14) {
|
|
if (!isSetEndMarkerAdd) {
|
|
isSetEndMarkerAdd = true;
|
|
$("#add-pin-marker-end").removeClass("pin-move pin-warn").addClass("pin-set");
|
|
}
|
|
$("#add_coordinates_end").addClass("valid").removeClass("invalid");
|
|
$("#add_coordinates_end").val(endMarkerAdd.getLatLng().lat.toFixed(6) + endMarkerAdd.getLatLng().lng.toFixed(6));
|
|
drawPathAddMap();
|
|
} else {
|
|
Swal.fire({
|
|
icon: "warning",
|
|
title: "خطا",
|
|
text: "لطفا زوم نقشه خود را بیشتر کنید",
|
|
cancelButtonText: "بستن",
|
|
showConfirmButton: false,
|
|
showCancelButton: true,
|
|
});
|
|
}
|
|
});
|
|
|
|
endMarkerAdd.on("drag", function () {
|
|
$("#add-pin-marker-end").addClass("pin-move");
|
|
});
|
|
|
|
endMarkerAdd.on("dragend", function () {
|
|
$("#add-pin-marker-end").removeClass("pin-move");
|
|
if ($("#add-pin-marker-end").hasClass("pin-set") || isSetEndMarkerAdd) {
|
|
$("#add-pin-marker-end").addClass("pin-set");
|
|
$("#add_coordinates_end").val(endMarkerAdd.getLatLng().lat.toFixed(6) + endMarkerAdd.getLatLng().lng.toFixed(6));
|
|
drawPathAddMap();
|
|
} else {
|
|
addMap.setView(endMarkerAdd.getLatLng());
|
|
}
|
|
});
|
|
}
|
|
// end add map functions
|
|
// draw path
|
|
function drawPathAddMap() {
|
|
if (routeControlsAddMap.length) {
|
|
$(routeControlsAddMap).each(function (index, control) {
|
|
addMap.removeControl(control);
|
|
routeControlsAddMap.splice(routeControlsAddMap.indexOf(index), 1);
|
|
});
|
|
}
|
|
routeControlsAddMap.push(
|
|
L.Routing.control({
|
|
waypoints: [
|
|
L.latLng(
|
|
parseFloat(startMarkerAdd.getLatLng().lat),
|
|
parseFloat(startMarkerAdd.getLatLng().lng)
|
|
),
|
|
L.latLng(
|
|
parseFloat(endMarkerAdd.getLatLng().lat),
|
|
parseFloat(endMarkerAdd.getLatLng().lng)
|
|
),
|
|
],
|
|
fitSelectedRoutes: false,
|
|
draggableWaypoints: true,
|
|
createMarker: function () {
|
|
return null;
|
|
},
|
|
lineOptions: {
|
|
addWaypoints: false,
|
|
styles: [{
|
|
color: "#28a745",
|
|
opacity: 0.8,
|
|
weight: 5,
|
|
},],
|
|
},
|
|
}).on("routesfound", function (e) {
|
|
// project_distance = parseFloat(e.routes[0].summary.totalDistance / 1000.0).toFixed(2);
|
|
}).addTo(addMap)
|
|
);
|
|
addMap.flyToBounds([startMarkerAdd.getLatLng(), endMarkerAdd.getLatLng()], { padding: [30, 30], duration: 0.5 });
|
|
$(".leaflet-control-container").css("display", "none");
|
|
$(".leaflet-routing-container-hide").css("display", "none");
|
|
hideLoaderScreen();
|
|
}
|
|
// end draw path
|
|
// end all about map [add]
|
|
$("#itemData_modal").on("click", "#send_item_data_cta", function () {
|
|
const modal = $(this).parents(".modal");
|
|
modal.find("input.value-important").each(function () {
|
|
$(this).val() == "" ? $(this).removeClass("valid").addClass("invalid") : $(this).removeClass("invalid").addClass("valid");
|
|
});
|
|
modal.find(".upload-box").each(function () {
|
|
$(this).find(".img-input").get(0).files[0] == undefined ? $(this).find(".imgbox").removeClass("valid").addClass("invalid") : $(this).find(".imgbox").removeClass("invalid").addClass("valid")
|
|
});
|
|
if (modal.find(".upload-box").hasClass("d-none")) { modal.find(".upload-box").find(".imgbox").removeClass("invalid").addClass("valid") }
|
|
if (!isSetStartMarkerAdd) {
|
|
$("#add-pin-marker-start").addClass("pin-warn");
|
|
Swal.fire({
|
|
icon: "warning",
|
|
title: "خطا",
|
|
text: "لطفا موقعیت فعالیت را روی نقشه مشخص کنید! (شروع)",
|
|
cancelButtonText: "بستن",
|
|
showConfirmButton: false,
|
|
showCancelButton: true,
|
|
});
|
|
} else { $("#add-pin-marker-start").removeClass("pin-warn") }
|
|
if ((isSetStartMarkerAdd && !isSetEndMarkerAdd) && modal.find("#sub_item").data("endPoint") == 1) {
|
|
$("#add-pin-marker-end").addClass("pin-warn");
|
|
Swal.fire({
|
|
icon: "warning",
|
|
title: "خطا",
|
|
text: "لطفا موقعیت فعالیت را روی نقشه مشخص کنید! (پایان)",
|
|
cancelButtonText: "بستن",
|
|
showConfirmButton: false,
|
|
showCancelButton: true,
|
|
});
|
|
} else { $("#add-pin-marker-end").removeClass("pin-warn") }
|
|
if (modal.find(".invalid").length != 0 || modal.find(".pin-warn").length != 0) { return } else {
|
|
let formData = new FormData();
|
|
const item_id = modal.find("#item").data("itemId");
|
|
const sub_item_id = modal.find("#sub_item").data("subItemId");
|
|
const amount = modal.find("#item_amount").val();
|
|
const before_image = modal.find("#deviceImg1").get(0).files[0];
|
|
const after_image = modal.find("#deviceImg2").get(0).files[0];
|
|
const activity_date = moment(project_date.getState().selected.unixDate).format("YYYY-MM-DD");
|
|
const activity_time = moment(project_timer.getState().selected.unixDate).format("HH:mm");
|
|
const start_point = `${startMarkerAdd.getLatLng().lat.toFixed(6)},${startMarkerAdd.getLatLng().lng.toFixed(6)}`;
|
|
if (isSetEndMarkerAdd) {
|
|
const end_point = `${endMarkerAdd.getLatLng().lat.toFixed(6)},${endMarkerAdd.getLatLng().lng.toFixed(6)}`;
|
|
formData.append("end_point", end_point);
|
|
// formData.append("project_distance", project_distance);
|
|
}
|
|
formData.append("item_id", item_id);
|
|
formData.append("sub_item_id", sub_item_id);
|
|
formData.append("amount", amount);
|
|
if (modal.find("#sub_item").data("subImage") == 1) {
|
|
formData.append("before_image", before_image);
|
|
formData.append("after_image", after_image);
|
|
}
|
|
formData.append("activity_date", activity_date);
|
|
formData.append("activity_time", activity_time);
|
|
formData.append("start_point", start_point);
|
|
$.ajax({
|
|
url: add_road_items,
|
|
type: "POST",
|
|
headers: {
|
|
"X-CSRF-TOKEN": $('meta[name="csrf-token"]').attr("content"),
|
|
},
|
|
data: formData,
|
|
cache: false,
|
|
contentType: false,
|
|
processData: false,
|
|
beforeSend: function () {
|
|
showLoaderScreen()
|
|
},
|
|
success: function (result) {
|
|
hideLoaderScreen();
|
|
Swal.fire({
|
|
icon: "success",
|
|
title: "فعالیت با موفقیت ثبت شد",
|
|
showCancelButton: false,
|
|
confirmButtonColor: "#2d7c23",
|
|
confirmButtonText: "اتمام عملیات",
|
|
showLoaderOnConfirm: true,
|
|
preConfirm: () => {
|
|
modal.modal("hide");
|
|
getSideBarActivity()
|
|
},
|
|
});
|
|
},
|
|
error: function (request) {
|
|
hideLoaderScreen();
|
|
ajax_error(request.responseJSON, request.status);
|
|
},
|
|
});
|
|
}
|
|
});
|
|
|
|
$(document).on("click", "#search_item", function () {
|
|
const modal = $("#searchItem_modal");
|
|
modal.find(".clean-input").val("");
|
|
modal.find(".clean-select").val(0);
|
|
modal.find(".value-important").removeClass("invalid").removeClass("valid");
|
|
modal.find(".observed-item-data").empty();
|
|
modal.find("#accept_item").addClass("d-none");
|
|
modal.find("#accept_item").prop("disabled", false);
|
|
modal.find("#item_unique_id").prop("disabled", true);
|
|
modal.find("#search").prop("disabled", true);
|
|
modal.find("input").removeClass("invalid").removeClass("valid");
|
|
modal.find("select").removeClass("invalid").removeClass("valid");
|
|
modal.modal("show");
|
|
});
|
|
$(document).on("change", "#item_unique_id", function () {
|
|
const parent = $(this).parents(".search-box");
|
|
parent.find("select.value-important").each(function () {
|
|
$(this).find("option:selected").val() == 0 ? $(this).removeClass("valid").addClass("invalid") : $(this).removeClass("invalid").addClass("valid");
|
|
});
|
|
const unique_id = parent.find("#item_unique_id option:selected").val();
|
|
if (parent.find(".invalid").length != 0) { return } else {
|
|
showLoaderScreen();
|
|
$.ajax({
|
|
url: observed_items_api + unique_id,
|
|
type: "GET",
|
|
headers: { "X-CSRF-TOKEN": $('meta[name="csrf-token"]').attr("content"), },
|
|
cache: false,
|
|
contentType: false,
|
|
processData: false,
|
|
success: function (result) {
|
|
$(".observed-item-data").empty();
|
|
$("#searchItem_modal").find("#accept_item").data("itemId", result.item_id);
|
|
$("#searchItem_modal").find("#accept_item").data("itemName", result.item_name);
|
|
$("#searchItem_modal").find("#accept_item").data("subItemId", result.sub_item_id);
|
|
let content = ``;
|
|
content += `<div class="d-flex align-items-center justify-content-center">
|
|
<hr class="col">
|
|
<div class="d-flex align-items-center mx-2">
|
|
<p class="question text-nowrap">کد یکتای آیتم :</p><p class="answer px-1">${result.id}</p>
|
|
</div>
|
|
<hr class="col">
|
|
</div>
|
|
<div class="d-flex flex-wrap my-2"><p class="question text-nowrap">نام آیتم :</p><p class="answer px-1">${result.item_name}</p></div>
|
|
<div class="d-flex flex-wrap my-2"><p class="question text-nowrap">موضوع مشاهده شده :</p><p class="answer px-1">${result.sub_item_name}</p></div>
|
|
<div class="d-flex flex-wrap my-2"><p class="question text-nowrap">نام محلی :</p><p class="answer px-1">${result.local_name}</p></div>
|
|
<div>
|
|
<table class="table table-bordered table-primary mb-0 mt-1">
|
|
<thead>
|
|
<tr>
|
|
<th class="text-center question">عرض جغرافیایی</th>
|
|
<th class="text-center question">طول جغرافیایی</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr>
|
|
<td id="item_lat_found" data-item-lat="${result.start_lat}" class="text-center answer">${result.start_lat}</td>
|
|
<td id="item_lon_found" data-item-lon="${result.start_lon}" class="text-center answer">${result.start_lon}</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
<div class="item-map-box rounded mt-2 p-1">
|
|
<div id="map_filter" class="rounded"></div>
|
|
</div>
|
|
`;
|
|
$(".observed-item-data").append(content);
|
|
const filterMap = L.map("map_filter", {
|
|
maxBounds: bounds,
|
|
zoomControl: false,
|
|
attributionControl: false
|
|
}).setView([35.7065, 51.3477], 10);
|
|
filterMap.addLayer(L.tileLayer(`${mapUrl}{z}/{x}/{y}.png`));
|
|
L.marker([result.start_lat, result.start_lon], { icon: item_icon }).addTo(filterMap);
|
|
setTimeout(() => {
|
|
filterMap.flyTo([result.start_lat, result.start_lon], 14, { duration: 0.5 })
|
|
}, 500)
|
|
$("#searchItem_modal").find("#accept_item").removeClass("d-none");
|
|
$("#searchItem_modal").find("#accept_item").prop("disabled", false);
|
|
hideLoaderScreen();
|
|
},
|
|
error: function (request) {
|
|
hideLoaderScreen();
|
|
ajax_error(request.responseJSON, request.status);
|
|
},
|
|
});
|
|
}
|
|
});
|
|
$(document).on("click", "#filter_date", function () {
|
|
const modal = $("#searchItem_modal");
|
|
const parent = $(this).parents(".filter-box");
|
|
parent.find("input.least-one-fill").each(function () {
|
|
$(this).val() == "" ? $(this).removeClass("valid").addClass("invalid") : $(this).removeClass("invalid").addClass("valid");
|
|
});
|
|
parent.find("select.least-one-fill").each(function () {
|
|
$(this).find("option:selected").val() == 0 ? $(this).removeClass("valid").addClass("invalid") : $(this).removeClass("invalid").addClass("valid");
|
|
});
|
|
if (parent.find(".least-one-fill").hasClass("valid")) { parent.find(".least-one-fill").addClass("valid").removeClass("invalid") }
|
|
|
|
if (parent.find("input.date-from-filter").val() != "" && parent.find("input.date-to-filter").val() == "") {
|
|
parent.find("input.date-to-filter").addClass("invalid").removeClass("valid");
|
|
}
|
|
if (parent.find(".invalid").length != 0) { return } else {
|
|
let queryParems = [];
|
|
const date_from = moment(date_from_filter.getState().selected.unixDate).format("YYYY-MM-DD");
|
|
const date_to = moment(date_to_filter.getState().selected.unixDate).format("YYYY-MM-DD");
|
|
const item_id = $("#item_id").val();
|
|
const road_patrol_id = $("#road_patrol_id").val();
|
|
if (parent.find("input.date-from-filter").val() != "" && parent.find("input.date-to-filter").val() != "") { queryParems.push(`start_date=${date_from}`); queryParems.push(`end_date=${date_to}`); }
|
|
if ($("#item_id").find("option:selected").val() != 0) { queryParems.push(`item_id=${item_id}`) }
|
|
if ($("#road_patrol_id").val() != "") { queryParems.push(`road_patrol_id=${road_patrol_id}`) }
|
|
|
|
showLoaderScreen();
|
|
$.ajax({
|
|
url: `${search_by_filter_api}${queryParems.join("&")}`,
|
|
type: "GET",
|
|
headers: { "X-CSRF-TOKEN": $('meta[name="csrf-token"]').attr("content"), },
|
|
cache: false,
|
|
contentType: false,
|
|
processData: false,
|
|
success: function (result) {
|
|
hideLoaderScreen();
|
|
console.log(result);
|
|
modal.find("#item_unique_id").empty();
|
|
modal.find("#item_unique_id").append('<option value="0" disabled selected>انتخاب کد یکتای آیتم</option>');
|
|
for (let index = 0; index < result.length; index++) {
|
|
modal.find("#item_unique_id").append(`<option value="${result[index].item}">${result[index].item}</option>`);
|
|
}
|
|
modal.find("#item_unique_id").prop("disabled", false);
|
|
modal.find("#search").prop("disabled", false);
|
|
modal.find(".observed-item-data").empty();
|
|
$(".search-box").addClass("active");
|
|
},
|
|
error: function (request) {
|
|
hideLoaderScreen();
|
|
ajax_error(request.responseJSON, request.status);
|
|
},
|
|
});
|
|
}
|
|
});
|
|
$(document).on("click", "#accept_item", function () {
|
|
const pervModal = $(this).parents(".modal");
|
|
const nextModal = $("#FoundItemData_modal");
|
|
pervModal.find("input.value-important").each(function () {
|
|
$(this).val() == "" ? $(this).removeClass("valid").addClass("invalid") : $(this).removeClass("invalid").addClass("valid");
|
|
});
|
|
pervModal.find("select.value-important").each(function () {
|
|
$(this).find("option:selected").val() == 0 ? $(this).removeClass("valid").addClass("invalid") : $(this).removeClass("invalid").addClass("valid");
|
|
});
|
|
if (pervModal.find(".invalid").length != 0 || isEmpty($('.observed-item-data'))) { return } else {
|
|
Swal.fire({
|
|
icon: "warning",
|
|
title: "آیا از تطابق اطلاعات مشاهده شده اطمینان دارید؟",
|
|
showCancelButton: true,
|
|
confirmButtonColor: "#2d7c23",
|
|
cancelButtonColor: "#971b1b",
|
|
confirmButtonText: "بله اطمینان دارم",
|
|
cancelButtonText: "خیر!",
|
|
showLoaderOnConfirm: true,
|
|
preConfirm: () => {
|
|
observed_item_id = null;
|
|
nextModal.find(".clean-input").val("");
|
|
nextModal.find(".clean-select").val(0);
|
|
const image_box_parent = nextModal.find(".upload-box");
|
|
image_box_parent.find(".img-input").val("");
|
|
image_box_parent.find(".img-preview").removeAttr("src");
|
|
image_box_parent.find(".img-title").css("display", "");
|
|
image_box_parent.find(".btn-delete-img").attr("disabled", "disabled");
|
|
nextModal.find(".value-important").removeClass("invalid").removeClass("valid");
|
|
nextModal.find(".imgbox").removeClass("invalid").removeClass("valid");
|
|
const itemId = pervModal.find("#accept_item").data("itemId");
|
|
nextModal.find("#FoundItem_item").data("itemId", pervModal.find("#accept_item").data("itemId"));
|
|
nextModal.find("#FoundItem_item").val(pervModal.find("#accept_item").data("itemName"));
|
|
nextModal.find("#add_coordinates_end_found_item").addClass("d-none")
|
|
observed_item_id = pervModal.find("#item_unique_id").val();
|
|
subItemData(1, itemId);
|
|
|
|
pervModal.modal("hide");
|
|
setTimeout(() => {
|
|
nextModal.modal("show");
|
|
if (addMapFoundItem == null) {
|
|
setTimeout(() => {
|
|
createAddMapFoundItem();
|
|
}, 400);
|
|
} else {
|
|
setTimeout(() => {
|
|
clearAddMapFoundItem();
|
|
}, 400);
|
|
}
|
|
}, 500)
|
|
},
|
|
});
|
|
}
|
|
});
|
|
// all about map [add]
|
|
// clear add map
|
|
function clearAddMapFoundItem() {
|
|
isSetStartMarkerAddFoundItem = false;
|
|
isSetEndMarkerAddFoundItem = false;
|
|
addMapFoundItem.removeLayer(startMarkerAddFoundItem);
|
|
if (routeControlsAddMapFoundItem.length) {
|
|
$(routeControlsAddMapFoundItem).each(function (index, control) {
|
|
addMapFoundItem.removeControl(control);
|
|
routeControlsAddMapFoundItem.splice(routeControlsAddMapFoundItem.indexOf(index), 1);
|
|
});
|
|
}
|
|
if (endMarkerAddFoundItem != null) {
|
|
addMapFoundItem.removeLayer(endMarkerAddFoundItem);
|
|
}
|
|
addMapFoundItem.removeLayer(markerFoundItem);
|
|
addMapFoundItem.setView([35.7065, 51.3477], mapZoom);
|
|
setMarkerDefaultAddFoundItem();
|
|
}
|
|
// end clear add map
|
|
|
|
// add map functions
|
|
function createAddMapFoundItem() {
|
|
var bounds = [
|
|
[42.9130026312, 75.6166317076],
|
|
[20.5782370061, 35.5092252948],
|
|
];
|
|
addMapFoundItem = L.map("FoundItem_add_map", {
|
|
maxBounds: bounds,
|
|
minZoom: 6,
|
|
zoomControl: false,
|
|
}).setView([35.7065, 51.3477], 10);
|
|
addMapFoundItem.addLayer(L.tileLayer(`${mapUrl}{z}/{x}/{y}.png`, { attributionControl: false }));
|
|
setMarkerDefaultAddFoundItem();
|
|
}
|
|
|
|
function setMarkerDefaultAddFoundItem() {
|
|
isSetStartMarkerAddFoundItem = false;
|
|
isSetEndMarkerAddFoundItem = false;
|
|
markerFoundItem = L.marker([$("#searchItem_modal").find("#item_lat_found").data("itemLat"), $("#searchItem_modal").find("#item_lon_found").data("itemLon")], { icon: item_icon }).addTo(addMapFoundItem);
|
|
setTimeout(() => {
|
|
addMapFoundItem.flyTo([$("#searchItem_modal").find("#item_lat_found").data("itemLat"), $("#searchItem_modal").find("#item_lon_found").data("itemLon")], 14, { duration: 0.5 })
|
|
}, 500)
|
|
$("#add-pin-marker-end-found-item").removeClass("pin-set");
|
|
$("#add-pin-marker-start-found-item").removeClass("pin-set");
|
|
startMarkerAddFoundItem = new L.marker(L.latLng(addMapFoundItem.getCenter()), {
|
|
icon: startDivIconFoundItem,
|
|
draggable: true,
|
|
}).addTo(addMapFoundItem);
|
|
|
|
endMarkerAddFoundItem = new L.marker(L.latLng(addMapFoundItem.getCenter()), {
|
|
icon: endDivIconFoundItem,
|
|
draggable: true,
|
|
});
|
|
|
|
addMapFoundItem.on("move", function () {
|
|
if (!isSetStartMarkerAddFoundItem && !isSetEndMarkerAddFoundItem) {
|
|
startMarkerAddFoundItem.setLatLng(L.latLng(addMapFoundItem.getCenter()));
|
|
$("#add-pin-marker-start-found-item").removeClass("pin-set").addClass("pin-move");
|
|
}
|
|
|
|
if (isSetStartMarkerAddFoundItem && !isSetEndMarkerAddFoundItem) {
|
|
endMarkerAddFoundItem.setLatLng(L.latLng(addMapFoundItem.getCenter()));
|
|
$("#add-pin-marker-end-found-item").removeClass("pin-set").addClass("pin-move");
|
|
}
|
|
});
|
|
|
|
addMapFoundItem.on("moveend", function () {
|
|
if (!isSetStartMarkerAddFoundItem && !isSetEndMarkerAddFoundItem) {
|
|
startMarkerAddFoundItem.setLatLng(L.latLng(addMapFoundItem.getCenter()));
|
|
$("#add-pin-marker-start-found-item").removeClass("pin-move pin-set");
|
|
}
|
|
|
|
if (isSetStartMarkerAddFoundItem && !isSetEndMarkerAddFoundItem) {
|
|
endMarkerAddFoundItem.setLatLng(L.latLng(addMapFoundItem.getCenter()));
|
|
$("#add-pin-marker-end-found-item").removeClass("pin-move pin-set");
|
|
}
|
|
});
|
|
|
|
startMarkerAddFoundItem.on("click", function () {
|
|
if (addMapFoundItem.getZoom() >= 14) {
|
|
if (!isSetStartMarkerAddFoundItem) {
|
|
startMarkerAddFoundItem.setLatLng(L.latLng(addMapFoundItem.getCenter()));
|
|
endMarkerAddFoundItem.setLatLng(L.latLng(addMapFoundItem.getCenter()));
|
|
isSetStartMarkerAddFoundItem = true;
|
|
$("#add-pin-marker-start-found-item").removeClass("pin-move pin-warn").addClass("pin-set");
|
|
}
|
|
if ($("#FoundItemData_modal").find("#FoundItem_sub_item option:selected").data("subEndpoint") == 1) {
|
|
$("#add_coordinates_end_found_item").removeClass("d-none").addClass("value-important");
|
|
endMarkerAddFoundItem.setLatLng(startMarkerAddFoundItem.getLatLng(), { draggable: true, }).addTo(addMapFoundItem);
|
|
addMapFoundItem.panBy(L.point(10, 10));
|
|
}
|
|
$("#add_coordinates_start_found_item").val(startMarkerAddFoundItem.getLatLng().lat.toFixed(6) + startMarkerAddFoundItem.getLatLng().lng.toFixed(6));
|
|
$("#add_coordinates_start_found_item").addClass("valid").removeClass("invalid");
|
|
$(this).hide();
|
|
$("#add-pin-marker-start-found-item").removeClass("pin-move pin-warn").addClass("pin-set");
|
|
} else {
|
|
Swal.fire({
|
|
icon: "warning",
|
|
title: "خطا",
|
|
text: "لطفا زوم نقشه خود را بیشتر کنید",
|
|
cancelButtonText: "بستن",
|
|
showConfirmButton: false,
|
|
showCancelButton: true,
|
|
});
|
|
}
|
|
});
|
|
|
|
startMarkerAddFoundItem.on("drag", function () {
|
|
$("#add-pin-marker-start-found-item").addClass("pin-move");
|
|
});
|
|
|
|
startMarkerAddFoundItem.on("dragend", function () {
|
|
$("#add-pin-marker-start-found-item").removeClass("pin-move");
|
|
$("#add_coordinates_start_found_item").val(startMarkerAddFoundItem.getLatLng().lat.toFixed(6) + startMarkerAddFoundItem.getLatLng().lng.toFixed(6));
|
|
if ($("#add-pin-marker-start-found-item").hasClass("pin-set") || isSetStartMarkerAddFoundItem) {
|
|
if ($("#FoundItem_sub_item").find("option:selected").data("subEndpoint") == 0) {
|
|
isSetEndMarkerAddFoundItem = false;
|
|
addMapFoundItem.removeLayer(endMarkerAddFoundItem);
|
|
$("#add_coordinates_end_found_item").addClass("d-none").removeClass("value-important");
|
|
if (routeControlsAddMapFoundItem.length) {
|
|
$(routeControlsAddMapFoundItem).each(function (index, control) {
|
|
addMapFoundItem.removeControl(control);
|
|
routeControlsAddMapFoundItem.splice(routeControlsAddMapFoundItem.indexOf(index), 1);
|
|
});
|
|
}
|
|
} else { drawPathAddMapFoundItem() }
|
|
$("#add-pin-marker-start-found-item").addClass("pin-set");
|
|
} else {
|
|
addMapFoundItem.setView(startMarkerAddFoundItem.getLatLng());
|
|
}
|
|
});
|
|
|
|
endMarkerAddFoundItem.on("click", function () {
|
|
if (addMapFoundItem.getZoom() >= 14) {
|
|
if (!isSetEndMarkerAddFoundItem) {
|
|
isSetEndMarkerAddFoundItem = true;
|
|
$("#add-pin-marker-end-found-item").removeClass("pin-move pin-warn").addClass("pin-set");
|
|
}
|
|
$("#add_coordinates_end_found_item").val(endMarkerAddFoundItem.getLatLng().lat.toFixed(6) + endMarkerAddFoundItem.getLatLng().lng.toFixed(6));
|
|
$("#add_coordinates_end_found_item").addClass("valid").removeClass("invalid");
|
|
drawPathAddMapFoundItem();
|
|
} else {
|
|
Swal.fire({
|
|
icon: "warning",
|
|
title: "خطا",
|
|
text: "لطفا زوم نقشه خود را بیشتر کنید",
|
|
cancelButtonText: "بستن",
|
|
showConfirmButton: false,
|
|
showCancelButton: true,
|
|
});
|
|
}
|
|
});
|
|
|
|
endMarkerAddFoundItem.on("drag", function () {
|
|
$("#add-pin-marker-end-found-item").addClass("pin-move");
|
|
});
|
|
|
|
endMarkerAddFoundItem.on("dragend", function () {
|
|
$("#add-pin-marker-end-found-item").removeClass("pin-move");
|
|
|
|
if ($("#add-pin-marker-end-found-item").hasClass("pin-set") || isSetEndMarkerAddFoundItem) {
|
|
$("#add-pin-marker-end-found-item").addClass("pin-set");
|
|
$("#add_coordinates_end_found_item").val(endMarkerAddFoundItem.getLatLng().lat.toFixed(6) + endMarkerAddFoundItem.getLatLng().lng.toFixed(6));
|
|
drawPathAddMapFoundItem();
|
|
} else {
|
|
addMapFoundItem.setView(endMarkerAddFoundItem.getLatLng());
|
|
}
|
|
});
|
|
}
|
|
// end add map functions
|
|
// draw path
|
|
function drawPathAddMapFoundItem() {
|
|
if (routeControlsAddMapFoundItem.length) {
|
|
$(routeControlsAddMapFoundItem).each(function (index, control) {
|
|
addMapFoundItem.removeControl(control);
|
|
routeControlsAddMapFoundItem.splice(routeControlsAddMapFoundItem.indexOf(index), 1);
|
|
});
|
|
}
|
|
routeControlsAddMapFoundItem.push(
|
|
L.Routing.control({
|
|
waypoints: [
|
|
L.latLng(
|
|
parseFloat(startMarkerAddFoundItem.getLatLng().lat),
|
|
parseFloat(startMarkerAddFoundItem.getLatLng().lng)
|
|
),
|
|
L.latLng(
|
|
parseFloat(endMarkerAddFoundItem.getLatLng().lat),
|
|
parseFloat(endMarkerAddFoundItem.getLatLng().lng)
|
|
),
|
|
],
|
|
fitSelectedRoutes: false,
|
|
draggableWaypoints: true,
|
|
createMarker: function () {
|
|
return null;
|
|
},
|
|
lineOptions: {
|
|
addWaypoints: false,
|
|
styles: [{
|
|
color: "#28a745",
|
|
opacity: 0.8,
|
|
weight: 5,
|
|
},],
|
|
},
|
|
}).on("routesfound", function (e) {
|
|
// project_distance_found_item = parseFloat(e.routes[0].summary.totalDistance / 1000.0).toFixed(2);
|
|
}).addTo(addMapFoundItem)
|
|
);
|
|
addMapFoundItem.flyToBounds([startMarkerAddFoundItem.getLatLng(), endMarkerAddFoundItem.getLatLng()], { padding: [20, 20], duration: 0.5 });
|
|
$(".leaflet-control-container").css("display", "none");
|
|
$(".leaflet-routing-container-hide").css("display", "none");
|
|
hideLoaderScreen();
|
|
}
|
|
// end draw path
|
|
// end all about map [add]
|
|
|
|
$(document).on("click", "#FoundItem_send_item_data_cta", function () {
|
|
const modal = $(this).parents(".modal");
|
|
modal.find("input.value-important").each(function () {
|
|
$(this).val() == "" ? $(this).removeClass("valid").addClass("invalid") : $(this).removeClass("invalid").addClass("valid");
|
|
});
|
|
modal.find(".upload-box").each(function () {
|
|
$(this).find(".img-input").get(0).files[0] == undefined ? $(this).find(".imgbox").removeClass("valid").addClass("invalid") : $(this).find(".imgbox").removeClass("invalid").addClass("valid")
|
|
});
|
|
modal.find("select.value-important").each(function () {
|
|
$(this).find("option:selected").val() == 0 ? $(this).removeClass("valid").addClass("invalid") : $(this).removeClass("invalid").addClass("valid");
|
|
});
|
|
if (modal.find(".upload-box").hasClass("d-none")) { modal.find(".upload-box").find(".imgbox").removeClass("invalid").addClass("valid") }
|
|
if (!isSetStartMarkerAddFoundItem) {
|
|
$("#add-pin-marker-start-found-item").addClass("pin-warn");
|
|
Swal.fire({
|
|
icon: "warning",
|
|
title: "خطا",
|
|
text: "لطفا موقعیت فعالیت را روی نقشه مشخص کنید! (شروع)",
|
|
cancelButtonText: "بستن",
|
|
showConfirmButton: false,
|
|
showCancelButton: true,
|
|
});
|
|
} else { $("#add-pin-marker-start-found-item").removeClass("pin-warn") }
|
|
if ((isSetStartMarkerAddFoundItem && !isSetEndMarkerAddFoundItem) && modal.find("#FoundItem_sub_item option:selected").data("subEndpoint") == 1) {
|
|
$("#add-pin-marker-end-found-item").addClass("pin-warn");
|
|
Swal.fire({
|
|
icon: "warning",
|
|
title: "خطا",
|
|
text: "لطفا موقعیت فعالیت را روی نقشه مشخص کنید! (پایان)",
|
|
cancelButtonText: "بستن",
|
|
showConfirmButton: false,
|
|
showCancelButton: true,
|
|
});
|
|
} else { $("#add-pin-marker-end-found-item").removeClass("pin-warn") }
|
|
if (modal.find(".invalid").length != 0 || modal.find(".pin-warn").length != 0) { return } else {
|
|
let formData = new FormData();
|
|
const item_id = modal.find("#FoundItem_item").data("itemId");
|
|
const sub_item_id = modal.find("#FoundItem_sub_item option:selected").val();
|
|
const amount = modal.find("#FoundItem_item_amount").val();
|
|
const activity_date = moment(FoundItem_project_date.getState().selected.unixDate).format("YYYY-MM-DD");
|
|
const activity_time = moment(FoundItem_project_timer.getState().selected.unixDate).format("HH:mm");
|
|
const start_point = `${startMarkerAddFoundItem.getLatLng().lat.toFixed(6)},${startMarkerAddFoundItem.getLatLng().lng.toFixed(6)}`;
|
|
if (modal.find("#FoundItem_sub_item option:selected").data("subImage") == 1) {
|
|
const before_image = modal.find("#FoundItem_deviceImg1").get(0).files[0];
|
|
const after_image = modal.find("#FoundItem_deviceImg2").get(0).files[0];
|
|
formData.append("before_image", before_image);
|
|
formData.append("after_image", after_image);
|
|
}
|
|
formData.append("start_point", start_point);
|
|
if (isSetEndMarkerAddFoundItem) {
|
|
const end_point = `${endMarkerAddFoundItem.getLatLng().lat.toFixed(6)},${endMarkerAddFoundItem.getLatLng().lng.toFixed(6)}`;
|
|
formData.append("end_point", end_point);
|
|
// formData.append("project_distance", project_distance_found_item);
|
|
}
|
|
formData.append("item_id", item_id);
|
|
formData.append("sub_item_id", sub_item_id);
|
|
formData.append("amount", amount);
|
|
formData.append("activity_date", activity_date);
|
|
formData.append("activity_time", activity_time);
|
|
formData.append("observed_item_id", observed_item_id);
|
|
$.ajax({
|
|
url: add_road_items,
|
|
type: "POST",
|
|
headers: {
|
|
"X-CSRF-TOKEN": $('meta[name="csrf-token"]').attr("content"),
|
|
},
|
|
data: formData,
|
|
cache: false,
|
|
contentType: false,
|
|
processData: false,
|
|
beforeSend: function () {
|
|
showLoaderScreen()
|
|
},
|
|
success: function (result) {
|
|
hideLoaderScreen();
|
|
Swal.fire({
|
|
icon: "success",
|
|
title: "فعالیت با موفقیت ثبت شد",
|
|
showCancelButton: false,
|
|
confirmButtonColor: "#2d7c23",
|
|
confirmButtonText: "اتمام عملیات",
|
|
showLoaderOnConfirm: true,
|
|
preConfirm: () => {
|
|
modal.modal("hide");
|
|
getSideBarActivity()
|
|
},
|
|
});
|
|
},
|
|
error: function (request) {
|
|
hideLoaderScreen();
|
|
ajax_error(request.responseJSON, request.status);
|
|
},
|
|
});
|
|
}
|
|
});
|
|
$("#FoundItemData_modal").on("change", "#FoundItem_sub_item", function () {
|
|
const parent = $(this).parents(".modal");
|
|
parent.find(".sub-item-unit").text(`(${$(this).find("option:selected").data("subUnit")})`);
|
|
if ($(this).find("option:selected").data("subImage") == 1) {
|
|
parent.find(".upload-box").removeClass("d-none");
|
|
} else {
|
|
parent.find(".upload-box").addClass("d-none");
|
|
}
|
|
if (isSetStartMarkerAddFoundItem) {
|
|
if ($(this).find("option:selected").data("subEndpoint") == 1) {
|
|
isSetEndMarkerAddFoundItem = false;
|
|
$("#add_coordinates_end_found_item").removeClass("d-none").addClass("value-important");
|
|
addMapFoundItem.flyTo(startMarkerAddFoundItem.getLatLng(), 15);
|
|
if (routeControlsAddMapFoundItem.length) {
|
|
$(routeControlsAddMapFoundItem).each(function (index, control) {
|
|
addMapFoundItem.removeControl(control);
|
|
routeControlsAddMapFoundItem.splice(routeControlsAddMapFoundItem.indexOf(index), 1);
|
|
});
|
|
}
|
|
parent.find("#add_coordinates_end_found_item").removeClass("d-none").addClass("value-important");
|
|
endMarkerAddFoundItem.setLatLng(startMarkerAddFoundItem.getLatLng(), { draggable: true, }).addTo(addMapFoundItem);
|
|
$("#add-pin-marker-end-found-item").removeClass("pin-set");
|
|
} else {
|
|
isSetEndMarkerAddFoundItem = false;
|
|
if (routeControlsAddMapFoundItem.length) {
|
|
$(routeControlsAddMapFoundItem).each(function (index, control) {
|
|
addMapFoundItem.removeControl(control);
|
|
routeControlsAddMapFoundItem.splice(routeControlsAddMapFoundItem.indexOf(index), 1);
|
|
});
|
|
}
|
|
parent.find("#add_coordinates_end_found_item").addClass("d-none").removeClass("value-important");
|
|
addMapFoundItem.removeLayer(endMarkerAddFoundItem);
|
|
}
|
|
} else {
|
|
addMapFoundItem.removeLayer(endMarkerAddFoundItem);
|
|
}
|
|
});
|
|
|
|
// coordinate manually [add]
|
|
$("#itemData_modal").on("keyup", "#add_coordinates_start", function () { checkStartMarkerValidation(); });
|
|
$("#itemData_modal").on("keyup", "#add_coordinates_end", function () { checkEndMarkerValidation(); });
|
|
//// start coordinate
|
|
function checkStartMarkerValidation(forSaveData = false, pageOnLoad = false) {
|
|
let reg = /^([0-9]){2}\.([0-9])+$/;
|
|
let startLatLngVal = $("#itemData_modal #add_coordinates_start").val().split(" - ");
|
|
let startLatLng = startLatLngVal.map(function (e) { e = e.replace(/_/g, ""); return parseFloat(e.slice(1, -1)) });
|
|
if (isNaN(startLatLng[0])) {
|
|
if (routeControlsAddMap.length) {
|
|
$(routeControlsAddMap).each(function (index, control) {
|
|
addMap.removeControl(control);
|
|
routeControlsAddMap.splice(routeControlsAddMap.indexOf(index), 1);
|
|
});
|
|
}
|
|
if (!forSaveData) {
|
|
$("#itemData_modal #add_coordinates_start").removeClass("invalid").addClass("valid");
|
|
} else {
|
|
$("#itemData_modal #add_coordinates_start").addClass("invalid").removeClass("valid");
|
|
}
|
|
$("#add-pin-marker-start").removeClass("pin-move pin-set");
|
|
$("#itemData_modal #add_coordinates_start").val("");
|
|
$("#itemData_modal #add_coordinates_start").attr("placeholder", "(عرض جغرافیایی) - (طول جغرافیایی)");
|
|
return false;
|
|
} else if (!startLatLng == 2 || !reg.test(startLatLng[0]) || !reg.test(startLatLng[1])) {
|
|
$("#itemData_modal #add_coordinates_start").addClass("invalid").removeClass("valid");
|
|
$("#add-pin-marker-start").removeClass("pin-move pin-set");
|
|
return false;
|
|
} else {
|
|
if (!forSaveData) {
|
|
$("#itemData_modal #add_coordinates_start").removeClass("invalid").addClass("valid");
|
|
startMarkerAdd.setLatLng(startLatLng);
|
|
if (pageOnLoad) {
|
|
setTimeout(() => {
|
|
$("#add-pin-marker-start").removeClass("pin-move").addClass("pin-set");
|
|
startMarkerAdd.setLatLng(startLatLng);
|
|
}, 10);
|
|
} else {
|
|
$("#add-pin-marker-start").removeClass("pin-move").addClass("pin-set");
|
|
}
|
|
if (!isSetEndMarkerAdd && $("#itemData_modal").find("#sub_item").data("endPoint") == 1) {
|
|
$("#add_coordinates_end").removeClass("d-none").addClass("value-important");
|
|
let markerLatLng = [startMarkerAdd.getLatLng().lat, startMarkerAdd.getLatLng().lng + 0.0008];
|
|
addMap.setView(markerLatLng);
|
|
endMarkerAdd.setLatLng(markerLatLng);
|
|
if (!isSetStartMarkerAdd) {
|
|
endMarkerAdd.addTo(addMap);
|
|
}
|
|
}
|
|
isSetStartMarkerAdd = true;
|
|
}
|
|
checkMarkersAndDrawPath();
|
|
return true;
|
|
}
|
|
}
|
|
//// end start coordinate
|
|
//// end coordinate
|
|
function checkEndMarkerValidation(forSaveData = false, pageOnLoad = false) {
|
|
let reg = /^([0-9]){2}\.([0-9])+$/;
|
|
let endLatLngVal = $("#itemData_modal #add_coordinates_end").val().split(" - ");
|
|
let endLatLng = endLatLngVal.map(function (e) { e = e.replace(/_/g, ""); return parseFloat(e.slice(1, -1)) });
|
|
if (isNaN(endLatLng[0])) {
|
|
if (routeControlsAddMap.length) {
|
|
$(routeControlsAddMap).each(function (index, control) {
|
|
addMap.removeControl(control);
|
|
routeControlsAddMap.splice(routeControlsAddMap.indexOf(index), 1);
|
|
});
|
|
}
|
|
if (!forSaveData) {
|
|
$("#itemData_modal #add_coordinates_end").removeClass("invalid").addClass("valid");
|
|
} else {
|
|
$("#itemData_modal #add_coordinates_end").addClass("invalid").removeClass("valid");
|
|
}
|
|
$("#add-pin-marker-end").removeClass("pin-move pin-set");
|
|
$("#itemData_modal #add_coordinates_end").val("");
|
|
$("#itemData_modal #add_coordinates_end").attr("placeholder", "(عرض جغرافیایی) - (طول جغرافیایی)");
|
|
return false;
|
|
} else if (!endLatLng == 2 || !reg.test(endLatLng[0]) || !reg.test(endLatLng[1])) {
|
|
$("#itemData_modal #add_coordinates_end").addClass("invalid").removeClass("valid");
|
|
$("#add-pin-marker-end").removeClass("pin-move pin-set");
|
|
return false;
|
|
} else {
|
|
if (!forSaveData) {
|
|
$("#itemData_modal #add_coordinates_end").removeClass("invalid").addClass("valid");
|
|
endMarkerAdd.setLatLng(endLatLng);
|
|
isSetEndMarkerAdd = true;
|
|
if (pageOnLoad) {
|
|
setTimeout(() => {
|
|
$("#add-pin-marker-end").removeClass("pin-move").addClass("pin-set");
|
|
endMarkerAdd.setLatLng(endLatLng);
|
|
}, 10);
|
|
} else {
|
|
$("#add-pin-marker-end").removeClass("pin-move").addClass("pin-set");
|
|
}
|
|
}
|
|
checkMarkersAndDrawPath();
|
|
return true;
|
|
}
|
|
}
|
|
//// end end coordinate
|
|
//// check markers
|
|
function checkMarkersAndDrawPath() {
|
|
if (
|
|
$("#add-pin-marker-start").hasClass("pin-set") &&
|
|
!$("#add-pin-marker-start").hasClass("pin-move") &&
|
|
$("#add-pin-marker-end").hasClass("pin-set") &&
|
|
!$("#add-pin-marker-end").hasClass("pin-move")
|
|
) {
|
|
drawPathAddMap();
|
|
}
|
|
}
|
|
//// end check markers
|
|
// end coordinate manually
|
|
|
|
// coordinate manually [found add]
|
|
$("#FoundItemData_modal").on("keyup", "#add_coordinates_start_found_item", function () { checkStartMarkerValidationFound(); });
|
|
$("#FoundItemData_modal").on("keyup", "#add_coordinates_end_found_item", function () { checkEndMarkerValidationFound(); });
|
|
//// start coordinate
|
|
function checkStartMarkerValidationFound(forSaveData = false, pageOnLoad = false) {
|
|
let reg = /^([0-9]){2}\.([0-9])+$/;
|
|
let startLatLngVal = $("#FoundItemData_modal #add_coordinates_start_found_item").val().split(" - ");
|
|
let startLatLng = startLatLngVal.map(function (e) { e = e.replace(/_/g, ""); return parseFloat(e.slice(1, -1)) });
|
|
if (isNaN(startLatLng[0])) {
|
|
if (routeControlsAddMapFoundItem.length) {
|
|
$(routeControlsAddMapFoundItem).each(function (index, control) {
|
|
addMapFoundItem.removeControl(control);
|
|
routeControlsAddMapFoundItem.splice(routeControlsAddMapFoundItem.indexOf(index), 1);
|
|
});
|
|
}
|
|
if (!forSaveData) {
|
|
$("#FoundItemData_modal #add_coordinates_start_found_item").removeClass("invalid").addClass("valid");
|
|
} else {
|
|
$("#FoundItemData_modal #add_coordinates_start_found_item").addClass("invalid").removeClass("valid");
|
|
}
|
|
$("#add-pin-marker-start-found-item").removeClass("pin-move pin-set");
|
|
$("#FoundItemData_modal #add_coordinates_start_found_item").val("");
|
|
$("#FoundItemData_modal #add_coordinates_start_found_item").attr("placeholder", "(عرض جغرافیایی) - (طول جغرافیایی)");
|
|
return false;
|
|
} else if (!startLatLng == 2 || !reg.test(startLatLng[0]) || !reg.test(startLatLng[1])) {
|
|
$("#FoundItemData_modal #add_coordinates_start_found_item").addClass("invalid").removeClass("valid");
|
|
$("#add-pin-marker-start-found-item").removeClass("pin-move pin-set");
|
|
return false;
|
|
} else {
|
|
if (!forSaveData) {
|
|
$("#FoundItemData_modal #add_coordinates_start_found_item").removeClass("invalid").addClass("valid");
|
|
startMarkerAddFoundItem.setLatLng(startLatLng);
|
|
if (pageOnLoad) {
|
|
setTimeout(() => {
|
|
$("#add-pin-marker-start-found-item").removeClass("pin-move").addClass("pin-set");
|
|
startMarkerAddFoundItem.setLatLng(startLatLng);
|
|
}, 10);
|
|
} else {
|
|
$("#add-pin-marker-start-found-item").removeClass("pin-move").addClass("pin-set");
|
|
}
|
|
if (!isSetEndMarkerAddFoundItem && $("#FoundItemData_modal").find("#FoundItem_sub_item option:selected").data("subEndpoint") == 1) {
|
|
$("#add_coordinates_end_found_item").removeClass("d-none").addClass("value-important");
|
|
let markerLatLng = [startMarkerAddFoundItem.getLatLng().lat, startMarkerAddFoundItem.getLatLng().lng + 0.0008];
|
|
addMapFoundItem.setView(markerLatLng);
|
|
endMarkerAddFoundItem.setLatLng(markerLatLng);
|
|
if (!isSetStartMarkerAddFoundItem) {
|
|
endMarkerAddFoundItem.addTo(addMapFoundItem);
|
|
}
|
|
}
|
|
isSetStartMarkerAddFoundItem = true;
|
|
}
|
|
checkMarkersAndDrawPathFound();
|
|
return true;
|
|
}
|
|
}
|
|
//// end start coordinate
|
|
//// end coordinate
|
|
function checkEndMarkerValidationFound(forSaveData = false, pageOnLoad = false) {
|
|
let reg = /^([0-9]){2}\.([0-9])+$/;
|
|
let endLatLngVal = $("#FoundItemData_modal #add_coordinates_end_found_item").val().split(" - ");
|
|
let endLatLng = endLatLngVal.map(function (e) { e = e.replace(/_/g, ""); return parseFloat(e.slice(1, -1)) });
|
|
if (isNaN(endLatLng[0])) {
|
|
if (routeControlsAddMapFoundItem.length) {
|
|
$(routeControlsAddMapFoundItem).each(function (index, control) {
|
|
addMapFoundItem.removeControl(control);
|
|
routeControlsAddMapFoundItem.splice(routeControlsAddMapFoundItem.indexOf(index), 1);
|
|
});
|
|
}
|
|
if (!forSaveData) {
|
|
$("#FoundItemData_modal #add_coordinates_end_found_item").removeClass("invalid").addClass("valid");
|
|
} else {
|
|
$("#FoundItemData_modal #add_coordinates_end_found_item").addClass("invalid").removeClass("valid");
|
|
}
|
|
$("#add-pin-marker-end-found-item").removeClass("pin-move pin-set");
|
|
$("#FoundItemData_modal #add_coordinates_end_found_item").val("");
|
|
$("#FoundItemData_modal #add_coordinates_end_found_item").attr("placeholder", "(عرض جغرافیایی) - (طول جغرافیایی)");
|
|
return false;
|
|
} else if (!endLatLng == 2 || !reg.test(endLatLng[0]) || !reg.test(endLatLng[1])) {
|
|
$("#FoundItemData_modal #add_coordinates_end_found_item").addClass("invalid").removeClass("valid");
|
|
$("#add-pin-marker-end-found-item").removeClass("pin-move pin-set");
|
|
return false;
|
|
} else {
|
|
if (!forSaveData) {
|
|
$("#FoundItemData_modal #add_coordinates_end_found_item").removeClass("invalid").addClass("valid");
|
|
endMarkerAddFoundItem.setLatLng(endLatLng);
|
|
isSetEndMarkerAddFoundItem = true;
|
|
if (pageOnLoad) {
|
|
setTimeout(() => {
|
|
$("#add-pin-marker-end-found-item").removeClass("pin-move").addClass("pin-set");
|
|
endMarkerAddFoundItem.setLatLng(endLatLng);
|
|
}, 10);
|
|
} else {
|
|
$("#add-pin-marker-end-found-item").removeClass("pin-move").addClass("pin-set");
|
|
}
|
|
}
|
|
checkMarkersAndDrawPathFound();
|
|
return true;
|
|
}
|
|
}
|
|
//// end end coordinate
|
|
//// check markers
|
|
function checkMarkersAndDrawPathFound() {
|
|
if (
|
|
$("#add-pin-marker-start-found-item").hasClass("pin-set") &&
|
|
!$("#add-pin-marker-start-found-item").hasClass("pin-move") &&
|
|
$("#add-pin-marker-end-found-item").hasClass("pin-set") &&
|
|
!$("#add-pin-marker-end-found-item").hasClass("pin-move")
|
|
) {
|
|
drawPathAddMapFoundItem();
|
|
}
|
|
}
|
|
//// end check markers
|
|
// end coordinate manually
|