var pendingComplaintTable; var pendingComplaint_api = `/v2/road_observations/pending`; var mapUrl = `https://rmsmap.rmto.ir/141map/`; var refrence_api = `/v2/road_observations/refer/`; var addPendingComplaint_api = `/v2/road_observations/handle/`; var send_to_pending_api = "/v2/road_observations/restore/"; var province_api = "/webapi/getuser/province-perm"; var refrence_office_api = "/v2/road_observations/refer/list/"; var refrence_list_api = "/v2/road_observations/refer/report/"; var mapAdd = null; var markerAdd; var mapShow; var showMapMarker; var isSetMarkerAdd = false; // p datepicker var excelDatepickerFirstTable = {}; var filter_date_from; // p datepicker // icon for map var divIcon = L.divIcon({ html: `
مکان
`, iconSize: [55, 75], iconAnchor: [33, 64], }); // end icon for map // about maps //// create add map function createMapAdd(modal) { return new Promise(resolve => { setTimeout(() => { const bounds = [ [42.9130026312, 75.6166317076], [20.5782370061, 35.5092252948], ]; if (mapAdd != null) { mapAdd.setView([35.7065, 51.3477], 7) markerAdd.setLatLng(L.latLng([35.7065, 51.3477])); modal.find("#pin_marker").removeClass("pin-move pin-set"); } else { mapAdd = L.map("add_map", { maxBounds: bounds, minZoom: 6, attributionControl: false }).setView([35.7065, 51.3477], 7); L.tileLayer(`${mapUrl}{z}/{x}/{y}.png`, {}).addTo(mapAdd); setMarkerDefaultAdd(modal); } resolve() }, 400) }) } //// set marker [add] function setMarkerDefaultAdd(modal) { isSetMarkerAdd = false; modal.find("#pin_marker").removeClass("pin-set"); modal.find("#accident_point_map").val(""); modal.find("#add_register_pos").val(""); markerAdd = new L.marker([35.7065, 51.3477], { icon: divIcon, draggable: true, }).addTo(mapAdd); mapAdd.on("move", function () { if (!isSetMarkerAdd) { markerAdd.setLatLng(L.latLng(mapAdd.getCenter())); modal.find("#pin_marker").removeClass("pin-set").addClass("pin-move"); } }); mapAdd.on("moveend", function () { if (!isSetMarkerAdd) { markerAdd.setLatLng(L.latLng(mapAdd.getCenter())); modal.find("#pin_marker").removeClass("pin-move pin-set"); } }); markerAdd.on("click", function () { if (!isSetMarkerAdd) { markerAdd.setLatLng(L.latLng(mapAdd.getCenter())); isSetMarkerAdd = true; modal.find("#pin_marker") .removeClass("pin-move pin-warn") .addClass("pin-set"); modal.find("#accident_point_map").val( markerAdd.getLatLng().lat.toFixed(6) + markerAdd.getLatLng().lng.toFixed(6) ); modal.find("#accident_point_map").removeClass("validity-checker"); console.log("yop"); $("#add_register_pos").val( markerAdd.getLatLng().lat.toFixed(6) + markerAdd.getLatLng().lng.toFixed(6) ); } markerAdd.addTo(mapAdd); $(this).hide(); modal.find("#pin_marker").removeClass("pin-move pin-warn").addClass("pin-set"); }); markerAdd.on("drag", function () { modal.find("#pin_marker").addClass("pin-move"); }); markerAdd.on("dragend", function () { modal.find("#pin_marker").removeClass("pin-move"); if (modal.find("#pin_marker").hasClass("pin-set") || isSetMarkerAdd) { modal.find("#pin_marker").addClass("pin-set"); modal.find("#accident_point_map").val( markerAdd.getLatLng().lat.toFixed(6) + markerAdd.getLatLng().lng.toFixed(6) ); $("#add_register_pos").val( markerAdd.getLatLng().lat.toFixed(6) + markerAdd.getLatLng().lng.toFixed(6) ); modal.find("#accident_point_map").removeClass("validity-checker"); } else { mapAdd.setView(markerAdd.getLatLng()); } }); } //// end set marker //// end create add map //// build show map function buildMapShowAndMarker(position) { return new Promise(function (resolve) { setTimeout(() => { const bounds = [ [42.9130026312, 75.6166317076], [20.5782370061, 35.5092252948], ]; mapShow = L.map("map_show", { maxBounds: bounds, minZoom: 6, zoomControl: false, attributionControl: false }).setView(position, 7); mapShow.invalidateSize(); mapShow.addLayer(L.tileLayer(`${mapUrl}{z}/{x}/{y}.png`, { attributionControl: false, })); showMapMarker = L.marker(position, { icon: divIcon }).addTo(mapShow); resolve(); }, 200); }); } //// end build show map //// relocate show map function changePositionMarkerInMapShow(position) { return new Promise(function (resolve) { setTimeout(() => { mapShow.setView(position, 7); mapShow.invalidateSize(); showMapMarker.setLatLng(position) resolve(); }, 200) }); } //// end relocate show map //// regex for map function checkStartMarkerValidation(forSaveData = false, pageOnLoad = false) { let reg = /^([0-9]){2}\.([0-9])+$/; let endLatLngVal = $("#add_register_pos").val().split(" - "); let endLatLng = endLatLngVal.map(function (e) { e = e.replace(/_/g, ""); return parseFloat(e.slice(1, -1)); }); if (isNaN(endLatLng[0])) { if (!forSaveData) { $("#add_register_pos").removeClass("is-invalid-input"); } else { $("#add_register_pos").addClass("is-invalid-input"); } $("#pin_marker").removeClass("pin-move pin-set"); $("#add_register_pos").val(""); $("#add_register_pos").attr("placeholder", "(پایان) => (عرض جغرافیایی) - (طول جغرافیایی)"); return false; } else if (!endLatLng == 2 || !reg.test(endLatLng[0]) || !reg.test(endLatLng[1])) { $("#add_register_pos").addClass( "is-invalid-input" ); $("#pin_marker").removeClass("pin-move pin-set"); return false; } else { if (!forSaveData) { $("#add_register_pos").removeClass("is-invalid-input"); markerAdd.setLatLng(endLatLng); isSetMarkerAdd = true; if (pageOnLoad) { setTimeout(() => { $("#pin_marker").removeClass("pin-move").addClass("pin-set"); markerAdd.setLatLng(endLatLng); }, 10); } else { $("#pin_marker").removeClass("pin-move").addClass("pin-set"); } let markerLatLng = [markerAdd.getLatLng().lat, markerAdd.getLatLng().lng + 0.0008,]; mapAdd.setView(markerLatLng); isSetMarkerAdd = true; } return true; } } //// regex for map // end about maps // bind func $(document).bind("click", function (e) { const clicked = $(e.target); if (clicked.parents(".toolbox").length != 0) return false; if (clicked.parents(".datepicker-grid-view").length != 0) return false; if (clicked.parents(".datepicker-navigator").length != 0) return false; if (clicked.parents(".datepicker-container").length != 0) return false; if (clicked.parents(".select2-selection__choice").length != 0) return false; if ( clicked.closest(".btn-table-filter").length == 0 && clicked.closest(".parent-filter").length == 0 && $(".parent-filter").css("display") != "none" ) { $(".parent-filter").css("display", "none"); } }); // end bind func // province permission // if ($.inArray("------", PERMISSIONS) != -1 || $.inArray("------", PERMISSIONS) != -1) { $.ajax({ url: province_api + "?type=all", //+ (($.inArray("------", PERMISSIONS) != -1 ? "?type=all" : "")) type: "GET", beforeSend: function () { showLoaderScreen(); }, success: function (result) { const provinces = result.data; $("#filter_province").empty(); $("#select-province-excel").empty(); $("#filter_province").append(''); $("#select-province-excel").append(''); for (let index = 0; index < provinces.length; index++) { $("#filter_province").append(``); $("#select-province-excel").append(""); } hideLoaderScreen(); }, error: function (error) { ajax_error(request.responseJSON, request.status); hideLoaderScreen(); }, }); // } // end province permission // city resiver function refrence_office(province_id) { showLoaderScreen(); $("#refrence_office").empty(); $("#refrence_office").append(``); $.ajax({ url: refrence_office_api + province_id, type: "GET", success: function (data) { office_refrence = data.data; for (let i = 0; i < office_refrence.length; i++) { $("#refrence_office").append(``); } }, error: function (error) { ajax_error(error.responseJSON, error.status); hideLoaderScreen(); }, complete: function (data) { $("#refrence_road_observation_modal").modal("show"); hideLoaderScreen(); }, }); } // city resiver // refrence list resiver function refrence_list(id) { showLoaderScreen(); $('#refrence_show_list').find('tbody').empty() $.ajax({ url: refrence_list_api + id, type: "GET", success: function ({ data }) { for (const item of data) { const context = ` ${item.user} ${item.from_edareh} ${item.to_edareh} ${moment(item.created_at).locale('fa').format('YYYY/MM/DD || HH:mm')} ${item.description} ` $('#refrence_show_list').find('tbody').append(context) } }, error: function (error) { ajax_error(error.responseJSON, error.status); hideLoaderScreen(); }, complete: function (data) { $("#refrence_show_road_observation_modal").modal("show"); hideLoaderScreen(); }, }); } // refrence list resiver // scroll to downTable function scrolldowntable() { $("html, body").animate({ scrollTop: $(".scrollMagic").offset().top + 1000, }, 50); } // scroll to downTable // excel datepicker excelDatepickerFirstTable.from = $("#datapicker-from-excel-table").persianDatepicker({ format: "YYYY/MM/DD", autoClose: true, onSelect: function (unix) { excelDatepickerFirstTable.from.touched = true; $("#datapicker-to-excel-table").prop("disabled", ""); if ( excelDatepickerFirstTable.from.getState().selected.unixDate >= excelDatepickerFirstTable.to.getState().selected.unixDate ) { excelDatepickerFirstTable.to.setDate( excelDatepickerFirstTable.from.getState().selected.unixDate ); } if ( excelDatepickerFirstTable.to && excelDatepickerFirstTable.to.options && excelDatepickerFirstTable.to.options.minDate != unix ) { let cachedValue = excelDatepickerFirstTable.to.getState().selected.unixDate; excelDatepickerFirstTable.to.options = { minDate: unix }; if (excelDatepickerFirstTable.from.touched) { excelDatepickerFirstTable.to.setDate(cachedValue); } } }, }); excelDatepickerFirstTable.to = $("#datapicker-to-excel-table").persianDatepicker({ format: "YYYY/MM/DD", autoClose: true, onSelect: function (unix) { excelDatepickerFirstTable.to.touched = true; }, }); // end excel datepicker // image upload $("#pending_complaint").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(".img-preview").css("display", ""); parent.find(".btn-delete-img").removeAttr("disabled"); parent.find(".btn-delete-img").data('isDelete', false) parent.find(".img-preview").attr("src", e.target.result); }; reader.readAsDataURL(input.files[0]); } }); $("#pending_complaint").on("click", ".btn-delete-img", function () { var parent = $(this).parents(".img-box"); $(this).data('isDelete', true) parent.find(".img-input").val(""); parent.find(".img-preview").removeAttr("src"); parent.find(".img-preview").css("display", "none"); parent.find(".img-title").css("display", ""); $(this).attr("disabled", "disabled"); }); // image upload end $(document).ready(function () { $.fn.dataTable.ext.errMode = 'none'; filter_date_from = $(".parent-filter").find('#filter_date_from').persianDatepicker({ format: "YYYY/MM/DD", initialValue: false, autoClose: true, initialValueType: "persian", }); $('[data-toggle="tooltip"]').tooltip(); $("[data-mask]").inputmask(); pendingTableFunc(); }); // show on map $(".table").on("click", ".btn-showOnMap-road-observation", function () { showLoaderScreen(); const choosen_table = $(this).parents(".table-box"); const modal = $("#show_road_observation_modal"); let row_lat; let row_lng; const tr = $(this).closest("tr"); const row = choosen_table.hasClass("pending-table") ? pendingComplaintTable.row(tr) : doneComplaintTable.row(tr); if (choosen_table.hasClass("done-table") && $(this).hasClass("solver-position")) { row_lat = row.data().rms_start_latlng[0]; row_lng = row.data().rms_start_latlng[1]; } else { row_lat = row.data().lat; row_lng = row.data().lng; } const markerPosition = [row_lat, row_lng]; modal.find("#show_on_map_lat").text(row_lat); modal.find("#show_on_map_lng").text(row_lng); if (mapShow == null) { buildMapShowAndMarker(markerPosition).then(() => { hideLoaderScreen(); modal.find("#pin_marker").addClass("pin-set"); }); } else { changePositionMarkerInMapShow(markerPosition).then(() => { hideLoaderScreen(); modal.find("#pin_marker").addClass("pin-set"); }); } modal.modal("show"); }); // end show on map // show description $(".table").on("click", ".btn-show-description", function () { const choosen_table = $(this).parents(".table-box"); const modal = $("#description_road_observation_modal"); let description; const tr = $(this).closest("tr"); const row = choosen_table.hasClass("pending-table") ? pendingComplaintTable.row(tr) : doneComplaintTable.row(tr); if (choosen_table.hasClass("done-table") && $(this).hasClass("solver-description")) { description = row.data().rms_description; } else { description = row.data().Description; } modal.find(".description-text").text(description); modal.modal("show"); }); // end show description // filling map input [add] $("#add_register_pos").on("keyup", function () { checkStartMarkerValidation(); if ($(this).val() == "") { markerAdd.setLatLng(L.latLng([35.7065, 51.3477])); mapAdd.setView(L.latLng([35.7065, 51.3477])); } }); // end filling map input // register position $(".table").on("click", ".btn-register-position", function () { isSetMarkerAdd = false; const choosen_table = $(this).parents(".table-box"); const modal = $("#show_register_position_modal"); const selectedId = $(this).data("id"); let tr = $(this).closest("tr"); let row = choosen_table.hasClass("pending-table") ? pendingComplaintTable.row(tr) : doneComplaintTable.row(tr); let latLngPro = L.latLng(+row.data().lat, +row.data().lng); $(".input-add-register-pos").val(""); $(".input-add-register-pos").attr("placeholder", "(پایان) => (عرض جغرافیایی) - (طول جغرافیایی)"); modal.find(".input-add-register-pos").removeClass("validity-checker"); modal.find(".row-id").data("rowId", selectedId); modal.find(".row-id").text(selectedId); createMapAdd(modal).then(() => { mapAdd.setView(latLngPro); markerAdd.setLatLng(latLngPro); hideLoaderScreen(); }); modal.modal("show"); }); $(document).on("click", "#choose_position", function () { const modal = $(this).parents(".modal"); modal.find(".input-add-register-pos").val() == "" ? modal.find(".input-add-register-pos").addClass("validity-checker") : modal.find(".input-add-register-pos").removeClass("validity-checker"); if (modal.find(".validity-checker").length != 0) { Swal.fire({ icon: "error", title: "خطا", text: "لطفا تمامی مقادیر را تکمیل کنید", cancelButtonText: "بستن", showConfirmButton: false, showCancelButton: true, }); thisBtn.prop("disabled", false); } else { const add_lat = markerAdd.getLatLng().lat.toFixed(6); const add_lng = markerAdd.getLatLng().lng.toFixed(6); const selectedId = modal.find(".row-id").data("rowId"); $("#pending_complaint").find(`.btn-register-position[data-id="${selectedId}"]`).data("latValue", add_lat); $("#pending_complaint").find(`.btn-register-position[data-id="${selectedId}"]`).data("lngValue", add_lng); modal.modal("hide"); } }); // end register position // description $("#pending_complaint").on("click", ".btn-add-desc", function () { const modal = $("#add_description_road_observation_modal"); const selectedId = $(this).data("id"); modal.find(".input-add-desc").val(""); modal.find(".input-add-desc").removeClass("validity-checker"); modal.find(".row-id").data("rowId", selectedId); modal.find(".row-id").text(selectedId); modal.modal("show"); }); $(document).on("click", "#add_description_cta", function () { const modal = $(this).parents(".modal"); modal.find(".input-add-desc").val() == "" ? modal.find(".input-add-desc").addClass("validity-checker") : modal.find(".input-add-desc").removeClass("validity-checker"); if (modal.find(".validity-checker").length != 0) { Swal.fire({ icon: "error", title: "خطا", text: "لطفا تمامی مقادیر را تکمیل کنید", cancelButtonText: "بستن", showConfirmButton: false, showCancelButton: true, }); } else { const add_description = modal.find("#add_description").val(); const selectedId = modal.find(".row-id").data("rowId"); $("#pending_complaint").find(`.btn-add-desc[data-id="${selectedId}"]`).data("descValue", add_description); modal.modal("hide"); } }); // end description // action radio button $("#pending_complaint").on("change", ".action-radio", function () { const tr = $(this).closest("tr"); const imgParent = tr.find(".image-btn").parents(".img-box"); if ($(this).val() == 1) { tr.find(".btn-add-desc").prop("disabled", false); tr.find(".img-input").prop("disabled", false); tr.find(".btn-register-position").prop("disabled", false); tr.find(".btn-register-position img").attr("src", "/dist/images/new-design/iranTempOrange.svg"); tr.find(".btn-add-pending-complaint").prop("disabled", false); } else if ($(this).val() == 2) { tr.find(".btn-add-desc").prop("disabled", false); tr.find(".img-input").prop("disabled", true); tr.find(".btn-register-position").prop("disabled", true); tr.find(".btn-register-position img").attr("src", "/dist/images/new-design/iranTemp3.svg"); tr.find(".btn-add-pending-complaint").prop("disabled", false); } }); // action radio button // refrence show $("#pending_complaint").on("click", ".btn-refrence-show", function () { const modal = $("#refrence_show_road_observation_modal"); let tr = $(this).closest("tr"); let row = pendingComplaintTable.row(tr); refrence_list(row.data().road_observeds_id); }); // end refrence show // refrence $("#pending_complaint").on("click", ".btn-refrence", function () { const modal = $("#refrence_road_observation_modal"); let tr = $(this).closest("tr"); let row = pendingComplaintTable.row(tr); const province_id = row.data().province_id; modal.find("#refrence_cta").data("rowId", row.data().road_observeds_id); modal.find(".select-refrence").removeClass("validity-checker"); modal.find(".textarea-refrence").removeClass("validity-checker"); modal.find(".textarea-refrence").val(""); refrence_office(province_id); }); $(document).on("click", "#refrence_cta", function () { const modal = $(this).parents(".modal"); const row_id = $(this).data("rowId"); modal.find(".select-refrence").removeClass("validity-checker"); modal.find(".textarea-refrence").removeClass("validity-checker"); modal.find("#refrence_cta").prop("disabled", true); const edarate_shahri_id = modal.find("#refrence_office").children("option:selected").val(); const refer_description = modal.find("#refrence_description").val(); if (refer_description == "") modal.find(".textarea-refrence").addClass("validity-checker"); if (edarate_shahri_id == 0) modal.find(".select-refrence").addClass("validity-checker"); if (modal.find(".validity-checker").length != 0) { Swal.fire({ icon: "error", title: "خطا", text: "لطفا تمامی مقادیر را تکمیل کنید", cancelButtonText: "بستن", showConfirmButton: false, showCancelButton: true, }); modal.find("#refrence_cta").prop("disabled", false); } else { modal.find(".select-refrence").removeClass("validity-checker"); formData = new FormData(); formData.append("edarate_shahri_id", edarate_shahri_id); formData.append("refer_description", refer_description); $.ajax({ url: refrence_api + row_id, type: "POST", cache: false, data: formData, processData: false, contentType: false, headers: { "X-CSRF-TOKEN": $('meta[name="csrf-token"]').attr("content"), Accept: "application/json", }, beforeSend: function () { showLoaderScreen(); modal.find("#refrence_cta").prop("disabled", true); }, success: function (result) { modal.modal("hide"); Swal.fire({ icon: "success", title: `انجام شد`, text: `با موفقیت ارجاع داده شد`, heightAuto: false, showConfirmButton: false, timer: 1500, }); pendingComplaintTable.ajax.reload(null, false); }, error: function (error) { console.log(error); modal.find("#refrence_cta").prop("disabled", false); ajax_error(request.responseJSON, request.status); }, complete: function (data) { hideLoaderScreen(); modal.find("#refrence_cta").prop("disabled", false); }, }); } }); // end refrence // table functions //// pending complaint table function pendingTableFunc() { pendingComplaintTable = $("#pending_complaint").DataTable({ serverSide: true, dom: "p>", pagingType: "simple_numbers", scrollX: true, filter: true, language: { sEmptyTable: "هیچ داده‌ای در جدول وجود ندارد", sInfo: "نمایش _START_ تا _END_ از _TOTAL_ ردیف", sInfoEmpty: "نمایش 0 تا 0 از 0 ردیف", sInfoFiltered: "(فیلتر شده از _MAX_ ردیف)", sInfoPostFix: "", sInfoThousands: ",", sLengthMenu: "نمایش _MENU_ ردیف", sLoadingRecords: "در حال بارگزاری...", sProcessing: "در حال پردازش...", sSearch: "جستجو: ", sZeroRecords: "رکوردی با این مشخصات پیدا نشد", oPaginate: { sFirst: "برگه‌ی نخست", sLast: "برگه‌ی آخر", sNext: "بعدی", sPrevious: "قبلی", }, oAria: { sSortAscending: ": فعال سازی نمایش به صورت صعودی", sSortDescending: ": فعال سازی نمایش به صورت نزولی", }, }, order: [ [9, "desc"] ], processing: true, select: true, ajax: { url: pendingComplaint_api, type: "GET", dataSrc: function (json) { $(".pending-counter").text(json.recordsFiltered) $('.pending-counter').each(function () { $(this).prop('Counter', 0).animate({ Counter: $(this).text() }, { duration: 2500, easing: 'swing', step: function (now) { $(this).text(Math.ceil(now)); $(this).text($(this).text().replace(/(\d)(?=(\d\d\d)+(?!\d))/g, "$1,")); } }); }); return json.data; }, error: function (error) { hideLoaderScreen(); ajax_error(request.responseJSON, request.status); }, }, columns: [ { className: "text-center align-middle", data: "road_observeds_id", // render: function(data, type, row, meta) { // return (meta.settings._iDisplayStart + meta.row) + 1 // }, name: { name: 'road_observeds.id', type: 'text' }, searchable: true, orderable: true, }, { className: "text-center sorting align-middle", data: "fk_RegisteredEventMessage", name: { name: 'fk_RegisteredEventMessage', type: 'text' }, searchable: true, orderable: true, }, { className: "text-center sorting align-middle", data: "province_fa", name: { name: 'province_fa', type: 'text' }, searchable: true, orderable: true, }, // { // className: "text-center sorting align-middle", // data: "city_fa", // name: { // name: 'city_fa', // type: 'text' // }, // searchable: true, // orderable: true, // }, { className: "text-center sorting align-middle", data: "edarate_shahri_name_fa", name: { name: 'edarate_shahri.name_fa', type: 'text' }, searchable: true, orderable: true, }, { className: "text-center sorting align-middle", data: "Title", name: { name: 'Title', type: 'text' }, searchable: true, orderable: true, }, { className: "text-center sorting align-middle", data: "FeatureTypeTitle", name: { name: 'FeatureTypeTitle', type: 'text' }, searchable: true, orderable: true, }, { className: "text-center align-middle", data: null, name: { name: 'Description', type: 'option' }, render: function (data, type, row) { return `
`; }, orderable: false, searchable: false, }, { className: "text-center align-middle", data: null, name: { name: 'option', type: 'option' }, render: function (data, type, row) { return `
`; }, orderable: false, searchable: false, }, { className: "text-center sorting align-middle", data: "MobileForSendEventSms", name: { name: 'MobileForSendEventSms', type: 'text' }, searchable: true, orderable: true, }, { className: "text-center align-middle date-direction", data: null, name: { name: 'road_observeds.StartTime_DateTime', type: 'between' }, render: function (data, type, row) { return moment(data.road_observeds_nikarayan_created_at).locale('fa').format('YYYY/MM/DD || HH:mm'); }, orderable: true, searchable: true, }, { className: "text-center align-middle", data: null, name: { name: 'option', type: 'option' }, render: function (data, type, row) { return `
`; }, orderable: false, searchable: false, }, { className: "text-center align-middle", data: null, name: { name: 'option', type: 'option' }, render: function (data, type, row) { return `
`; }, orderable: false, searchable: false, }, { className: "text-center align-middle", data: null, name: { name: 'option', type: 'option' }, render: function (data, type, row) { return `
`; }, orderable: false, searchable: false, }, { className: "text-center align-middle", data: null, name: { name: 'option', type: 'option' }, render: function (data, type, row) { return `
`; }, orderable: false, searchable: false, }, { className: "text-center align-middle", data: null, name: { name: 'option', type: 'option' }, render: function (data, type, row) { return `
`; }, orderable: false, searchable: false, }, { className: "text-center align-middle", data: null, name: { name: 'option', type: 'option' }, render: function (data, type, row) { return `
`; }, orderable: false, searchable: false, }, ], buttons: [ { className: "mx-2", text: '
فیلترینگ پیشرفته
', action: function (e, dt, node, config) { topPosition = $(e.target).parents('.btn-table-filter').offset().top + $(e.target).parents('.btn-table-filter').height() + 5 $(".parent-filter").css('top', topPosition); $(".parent-filter").css("display", "block"); }, }, { className: "static-btn-cta", text: '
گزارش اکسل
', action: function (e, dt, node, config) { let currentDate = {}; let queryParems = []; const province = $("#filter_province option:selected").val(); if ($("#filter_date_from").val() != "") { const filter_date_from_value = moment(filter_date_from.getState().selected.unixDate).format("YYYY-MM-DD"); currentDate.from = filter_date_from_value; currentDate.to = moment().format("YYYY-MM-DD"); queryParems.push(`fromDate=${currentDate.from}`); queryParems.push(`toDate=${currentDate.to}`); } if (province != 0) queryParems.push(`province_id=${province}`); const url = `/v2/road_observations/report/pending${queryParems.length != 0 ? `?${queryParems.join("&")}` : ""}`; window.open(url, "_blank"); }, }, // { { className: "d-md-none mx-2", text: '
بازگشت
', action: function (e, dt, node, config) { window.location = '/v2' }, }, // className: "done-table-btn mx-2", // text: '
شکایات رسیدگی شده
', // }, ], initComplete: function () { $('[data-toggle="tooltip"]').tooltip(); }, }); } //// end pending complaint table //// done complaint table function doneTableFunc() { doneComplaintTable = $("#done_complaint").DataTable({ serverSide: true, dom: "p>", pagingType: "simple_numbers", filter: true, language: { sEmptyTable: "هیچ داده‌ای در جدول وجود ندارد", sInfo: "نمایش _START_ تا _END_ از _TOTAL_ ردیف", sInfoEmpty: "نمایش 0 تا 0 از 0 ردیف", sInfoFiltered: "(فیلتر شده از _MAX_ ردیف)", sInfoPostFix: "", sInfoThousands: ",", sLengthMenu: "نمایش _MENU_ ردیف", sLoadingRecords: "در حال بارگزاری...", sProcessing: "در حال پردازش...", sSearch: "جستجو: ", sZeroRecords: "رکوردی با این مشخصات پیدا نشد", oPaginate: { sFirst: "برگه‌ی نخست", sLast: "برگه‌ی آخر", sNext: "بعدی", sPrevious: "قبلی", }, oAria: { sSortAscending: ": فعال سازی نمایش به صورت صعودی", sSortDescending: ": فعال سازی نمایش به صورت نزولی", }, }, order: [ [0, "asc"][(1, "asc")], [2, "desc"], [3, "desc"], [4, "desc"] ], order: [ [0, "desc"] ], processing: true, select: true, ajax: { url: doneComplaint_api, type: "GET", dataSrc: function (json) { $(".done-counter").text(json.recordsTotal) $('.done-counter').each(function () { $(this).prop('Counter', 0).animate({ Counter: $(this).text() }, { duration: 2500, easing: 'swing', step: function (now) { $(this).text(Math.ceil(now)); $(this).text($(this).text().replace(/(\d)(?=(\d\d\d)+(?!\d))/g, "$1,")); } }); }); return json.data; }, error: function (error) { ajax_error(request.responseJSON, request.status); } }, columns: [ { className: "text-center align-middle", data: null, render: function (data, type, row, meta) { return (meta.settings._iDisplayStart + meta.row) + 1 }, name: { name: 'road_observeds.id', type: 'option' }, searchable: false, orderable: false, }, { className: "text-center sorting align-middle", data: "fk_RegisteredEventMessage", name: { name: 'fk_RegisteredEventMessage', type: 'text' }, searchable: true, orderable: true, }, { className: "text-center sorting align-middle", data: "province_fa", name: { name: 'province_fa', type: 'text' }, searchable: true, orderable: true, }, { className: "text-center sorting align-middle", data: "city_fa", name: { name: 'city_fa', type: 'text' }, searchable: true, orderable: true, }, { className: "text-center sorting align-middle", data: "edarate_shahri_name_fa", name: { name: 'edarate_shahri.name_fa', type: 'text' }, searchable: true, orderable: true, }, { className: "text-center sorting align-middle", data: "Title", name: { name: 'Title', type: 'text' }, searchable: true, orderable: true, }, { className: "text-center sorting align-middle", data: "FeatureTypeTitle", name: { name: 'FeatureTypeTitle', type: 'text' }, searchable: true, orderable: true, }, { className: "text-center align-middle", data: null, name: { name: 'Description', type: 'option' }, render: function (data, type, row) { return `
`; }, orderable: false, searchable: false, }, { className: "text-center align-middle", data: null, name: { name: 'option', type: 'option' }, render: function (data, type, row) { return `
`; }, orderable: false, searchable: false, }, { className: "text-center sorting align-middle", data: "MobileForSendEventSms", name: { name: 'MobileForSendEventSms', type: 'text' }, searchable: true, orderable: true, }, { className: "text-center align-middle date-direction", data: null, name: { name: 'road_observeds.created_at', type: 'between' }, render: function (data, type, row) { return moment(data.road_observeds_created_at).locale('fa').format('YYYY/MM/DD || hh:mm'); }, orderable: true, searchable: true, }, { className: "text-center align-middle", data: null, name: { name: 'rms_status', type: 'option' }, render: function (data, type, row) { return data.rms_status == 1 ? "انجام شده" : "انجام نشده"; }, orderable: false, searchable: false, }, { className: "text-center align-middle", data: null, name: { name: 'option', type: 'option' }, render: function (data, type, row) { if (data.rms_status == 1) { return `
`; } else { return `---`; } }, orderable: false, searchable: false, }, { className: "text-center", data: null, name: { name: 'option', type: 'option' }, render: function (data, type, row) { let content = `
`; if (data.image_before != null) { content += `` } else { content += `---`; } content += `
`; return content; }, orderable: false, searchable: false, }, { className: "text-center", data: null, name: { name: 'option', type: 'option' }, render: function (data, type, row) { let content = `
`; if (data.image_after != null) { content += `` } else { content += `---`; } content += `
`; return content; }, orderable: false, searchable: false, }, { className: "text-center align-middle date-direction", data: null, name: { name: 'rms_last_activity_fa', type: 'option' }, render: function (data, type, row) { return moment(data.rms_last_activity_fa).format('YYYY/MM/DD || hh:mm'); }, orderable: false, searchable: false, }, { className: "text-center align-middle", data: null, name: { name: 'rms_description', type: 'option' }, render: function (data, type, row) { if (data.rms_description == null) { return `---`; } else { return `
`; } }, orderable: false, searchable: false, }, { className: "text-center align-middle", data: null, name: { name: 'option', type: 'option' }, render: function (data, type, row) { return `
`; }, orderable: false, searchable: false, }, { className: "text-center align-middle", data: null, name: { name: 'option', type: 'option' }, render: function (data, type, row) { return `
`; }, orderable: false, searchable: false, }, ], buttons: [], initComplete: function () { $('[data-toggle="tooltip"]').tooltip(); }, }); } //// end done complaint table // end table functions // add pending complaint table $("#pending_complaint").on("click", ".btn-add-pending-complaint", function () { const thisBtn = $(this); thisBtn.prop("disabled", true); let tr = $(this).closest("tr"); let row = pendingComplaintTable.row(tr); const row_id = row.data().road_observeds_id; const rms_status = tr.find('.action-radio:checked').val(); const rms_start_latlng = tr.find('.btn-register-position').data("latValue") == "" ? "" : [tr.find('.btn-register-position').data("latValue"), tr.find('.btn-register-position').data("lngValue")] const image_before = tr.find('.img-before').get(0).files[0]; const image_after = tr.find('.img-after').get(0).files[0]; const rms_description = tr.find('.btn-add-desc').data("descValue"); let formData = new FormData(); formData.append("rms-status", rms_status); if (rms_description != "") { formData.append("description", rms_description) } if (rms_status == 1) { if (rms_start_latlng != "") { formData.append("rms-start-latlng", rms_start_latlng); tr.find(".btn-register-position").parents("td").removeClass("validity-checker-table"); } else { tr.find(".btn-register-position").parents("td").addClass("validity-checker-table"); } if (image_before != undefined) { formData.append("image-before-1", image_before); tr.find(".img-box-1").parents("td").removeClass("validity-checker-table"); } else { tr.find(".img-box-1").parents("td").addClass("validity-checker-table"); } if (image_after != undefined) { formData.append("image-after-1", image_after); tr.find(".img-box-2").parents("td").removeClass("validity-checker-table"); } else { tr.find(".img-box-2").parents("td").addClass("validity-checker-table"); } } else { tr.find(".btn-register-position").parents("td").removeClass("validity-checker-table"); tr.find(".img-box-1").parents("td").removeClass("validity-checker-table"); tr.find(".img-box-2").parents("td").removeClass("validity-checker-table"); } if (tr.find("td").hasClass("validity-checker-table")) { Swal.fire({ icon: "error", title: "خطا", text: "لطفا تمامی مقادیر را تکمیل کنید", cancelButtonText: "بستن", showConfirmButton: false, showCancelButton: true, }); thisBtn.prop("disabled", false); } else { $.ajax({ url: addPendingComplaint_api + row_id, type: "POST", data: formData, cache: false, processData: false, contentType: false, headers: { "X-CSRF-TOKEN": $('meta[name="csrf-token"]').attr("content"), }, beforeSend: function () { showLoaderScreen(); }, success: function (result) { thisBtn.prop('disabled', false); hideLoaderScreen(); Swal.fire({ icon: "success", title: "ثبت موفق", text: "اطلاعات شکایت با موفقیت ثبت شد", cancelButtonText: "بستن", showConfirmButton: false, showCancelButton: true, }).then(result => { pendingComplaintTable.ajax.reload(null, false); }) }, error: function (error) { thisBtn.prop('disabled', false) ajax_error(request.responseJSON, request.status); hideLoaderScreen(); }, }); } }); // add pending complaint table // run done table // $(document).on("click", ".done-table-btn", function() { // $(document).find(".done-table").removeClass("d-none"); // if (doneComplaintTable == null) { // doneTableFunc(); // } // setTimeout(() => {scrolldowntable()}, 200); // }); // end run done table // show image $(document).on("click", ".table-image", function () { const modal = $("#show_image_road_observation_modal"); modal.modal("show"); $("#show_image").attr("src", $(this).attr("src")); }); // end show image // paginate loading $(document).on("click", ".paginate_button", function () { setTimeout(() => { $('[data-toggle="tooltip"]').tooltip() }, 400); }); // end paginate loading // send to pending $(document).on("click", ".send-to-pending", function () { const modal = $("#send_to_pending_road_observation_modal"); let tr = $(this).closest("tr"); let row = doneComplaintTable.row(tr); modal.find("#send_to_pending_description_cta").data("rowId", row.data().road_observeds_id); modal.find(".textarea-send-to-pending").val(""); modal.modal("show"); }); // new changes should be checked $(document).on("click", "#send_to_pending_description_cta", function () { const modal = $(this).parents(".modal"); const row_id = $(this).data("rowId"); const description = modal.find("#send_to_pending_description").val(); if (description == "") { modal.find(".textarea-send-to-pending").addClass("validity-checker"); Swal.fire({ icon: "error", title: "خطا", text: "توضیحات مربوطه را وارد کنید", cancelButtonText: "بستن", showConfirmButton: false, showCancelButton: true, }); } else { modal.find(".textarea-send-to-pending").removeClass("validity-checker"); formData = new FormData(); formData.append("restore_description", description); $.ajax({ url: send_to_pending_api + row_id, type: "POST", cache: false, data: formData, processData: false, contentType: false, headers: { "X-CSRF-TOKEN": $('meta[name="csrf-token"]').attr("content"), Accept: "application/json", }, beforeSend: function () { showLoaderScreen(); modal.find("#send_to_pending_description_cta").prop("disabled", true); }, success: function (result) { modal.modal("hide"); Swal.fire({ icon: "success", title: `انجام شد`, text: `با موفقیت بازگردانی شد`, heightAuto: false, showConfirmButton: false, timer: 1500, }); pendingComplaintTable.ajax.reload(); doneComplaintTable.ajax.reload(); }, error: function (error) { modal.find("#send_to_pending_description_cta").prop("disabled", false); ajax_error(request.responseJSON, request.status); }, complete: function (data) { hideLoaderScreen(); modal.find("#send_to_pending_description_cta").prop("disabled", false); }, }); } }); // end send to pending // filter [pendingComplaintTable] $(document).on("click", "#btn_filter", function () { _table = pendingComplaintTable const province_value = $("#filter_province option:selected"); // const subject_progress = $("#select-subject-progress option:selected"); const filter_status = $("#filter_status"); const filter_date_from_value = moment(filter_date_from.getState().selected.unixDate).format("YYYY-MM-DD"); if (province_value.val() != 0) { _table = _table.column(2).search(province_value.text()); } else { _table = _table.column(2).search(''); } // if (subject_progress.val() != 0) { // _table = _table.column(6).search(subject_progress.text()); // } else { // _table = _table.column(6).search(''); // } if ($("#filter_date_from").val() != "") { _table = _table.column(9).search(filter_date_from_value + "&" + moment().format("YYYY-MM-DD")); } else { _table = _table.column(9).search(''); } _table.draw(); }); // end filter // excel [pendingComplaintTable] $("#btn_excel-download").on("click", function () { }); // end excel