//variables const get_rahdari_projects_by_filter_api = "/v2/contract/report/map"; const get_road_items_by_filter_api = "/v2/road_items/report/map"; const get_road_patrols_by_filter_api = "/v2/road_patrols/report/map"; const get_safety_and_privacy_by_filter_api = "/v2/safety_and_privacy/report/map"; const get_road_observations_by_filter_api = "/v2/road_observations/report/map"; const get_rahdari_projects_by_id = "/v2/rahdari_projects/project/"; const get_road_items_by_id = "/public/projects/road-items/"; const get_road_patrols_by_id = "/v2/road_patrols/report/"; const get_safety_and_privacy_by_id = "/v2/safety_and_privacy/"; const get_road_observations_by_id = "/v2/road_observations/"; const provinces_api = "/webapi/getuser/province-perm?type=all"; const edarat_api = "/public/contents/edarate_shahri_by_province/"; const road_items_items_api = "/v2/items"; const road_items_subitems_api = "/v2/sub_items/"; const safety_and_privacy_subitems_api = "/v2/safety_and_privacy/sub_item_list"; const unserializeJudiciaryDocument_url = "/v2/safety_and_privacy/operator/cartable/unserialize/judiciary_document/"; let FILTERQUERY = {} let TYPE; MINZOOM = 5; const MAP_ENDPOINT = "https://rmsmap.rmto.ir/141map"; const bounds = [ [42.9130026312, 75.6166317076], [20.5782370061, 30.5092252948], ]; let latlonArr = []; let markers = [] var markersLayer = null var markersLayersCluster = null var mapMode; var filterDatepicker = {} var map; var trafficLayer = L.tileLayer( "https://rmssatmap.rmto.ir/sat/{z}/{x}/{y}.jpg", {} ); var iranLayer = L.tileLayer( "https://rmsmap.rmto.ir/141map/{z}/{x}/{y}.png", {} ); function makeIcon(iconSize, layer) { return L.divIcon({ className: "custom-div-icon", html: "", iconSize: [0, 0], }); } var greenIcon = L.divIcon({ className: "custom-div-icon", html: "", iconSize: [16, 16], }); var redIcon = L.divIcon({ className: "custom-div-icon", html: "", iconSize: [16, 16], }); var orangeIcon = L.divIcon({ className: "custom-div-icon", html: "", iconSize: [16, 16], }); var fakeIcon = L.divIcon({ className: "custom-div-icon", html: "", iconSize: [6, 6], }); var brownIcon = L.divIcon({ className: "custom-div-icon", html: "", iconSize: [16, 16], }); var yellowIcon = L.divIcon({ className: "custom-div-icon", html: "", iconSize: [16, 16], }); var blueIcon = L.divIcon({ className: "custom-div-icon", html: "", iconSize: [16, 16], }); var stepOneIcon = L.divIcon({ className: "custom-div-icon", html: "", iconSize: [16, 16], }); var stepTwoIcon = L.divIcon({ className: "custom-div-icon", html: "", iconSize: [16, 16], }); var stepThreeIcon = L.divIcon({ className: "custom-div-icon", html: "", iconSize: [16, 16], }); function changelayer() { if (map.hasLayer(iranLayer)) { map.removeLayer(iranLayer); map.addLayer(trafficLayer); } else if (map.hasLayer(trafficLayer)) { map.removeLayer(trafficLayer); map.addLayer(iranLayer); } } //functions const initializePageByType = () => { document.location.search.length != 0 ? (querylength = 1) : (querylength = 0); urlParams = new URLSearchParams(window.location.search); TYPE = urlParams.get("type"); switch (TYPE) { case "rahdari_projects": createFiltersBox([ { type: 'Provinces' }, { type: 'RahdariProjects' }, { type: 'DisplayType', defaultValue: 2 }, { type: 'DateFromTo', label: { from: 'از تاریخ انعقاد قرارداد', to: 'از تاریخ انعقاد قرارداد', }, defaultValue: { from: +moment(), to: +moment() } } ]) filterRahdariProjects() break; case "road_items": createFiltersBox([ { type: 'Provinces' }, { type: 'Edare' }, { type: 'RoadItems' }, { type: 'Status', defaultValue: 1 }, { type: 'DisplayType', defaultValue: 2 }, { type: 'DateFromTo', label: { from: 'از تاریخ', to: 'از تاریخ', }, defaultValue: { from: +moment(), to: +moment() } } ]) createDetailsBoxRoadItems() filterRoadItems() break; case "road_patrols": createFiltersBox([ { type: 'Provinces' }, { type: 'Edare' }, { type: 'DisplayType', defaultValue: 2 }, { type: 'DateFromTo', label: { from: 'از تاریخ', to: 'از تاریخ', }, defaultValue: { from: +moment(), to: +moment() } } ]) createDetailsBoxRoadPatrols() filterRoadPatrols() break; case "safety_and_privacy": createFiltersBox([ { type: 'Provinces' }, { type: 'Edare' }, { type: 'SafetyAndPrivacy', defaultValue: { step: 1 } }, { type: 'DisplayType', defaultValue: 2 }, { type: 'DateFromTo', label: { from: 'از تاریخ', to: 'از تاریخ', }, defaultValue: { from: +moment(), to: +moment() } } ]) createDetailsSAP() filterSafetyAndPrivacy() break; case "road_observations": createFiltersBox([ { type: 'Provinces' }, { type: 'Edare' }, { type: 'RoadObservations' }, { type: 'Status', defaultValue: 1 }, { type: 'DisplayType', defaultValue: 2 }, { type: 'DateFromTo', label: { from: 'از تاریخ', to: 'از تاریخ', }, defaultValue: { from: +moment(), to: +moment() } } ]) createDetailsBoxRoadObservations() filterRoadObservations() break; } } const createFiltersBox = (filterList) => { const FilterItemsElement = document.getElementById("filter_items") filterList.map(({ type, defaultValue, label }) => { const container = document.createElement('div') switch (type) { case "RahdariProjects": container.innerHTML = RahdariProjects.build FilterItemsElement.appendChild(container); RahdariProjects.config(defaultValue) break; case "DisplayType": container.innerHTML = DisplayType.build FilterItemsElement.appendChild(container); DisplayType.config(defaultValue) break; case "DateFromTo": container.innerHTML = DateFromTo.build(label) FilterItemsElement.appendChild(container); DateFromTo.config(defaultValue) break; case "Provinces": container.innerHTML = Provinces.build FilterItemsElement.appendChild(container); Provinces.config(defaultValue) break; case "Edare": container.innerHTML = Edare.build FilterItemsElement.appendChild(container); Edare.config(defaultValue) break; case "Status": container.innerHTML = Status.build FilterItemsElement.appendChild(container); Status.config(defaultValue) break; case "RoadItems": container.innerHTML = RoadItems.build FilterItemsElement.appendChild(container); RoadItems.config(defaultValue) break; case "SafetyAndPrivacy": container.innerHTML = SafetyAndPrivacy.build FilterItemsElement.appendChild(container); SafetyAndPrivacy.config(defaultValue) break; case "RoadObservations": container.innerHTML = RoadObservations.build FilterItemsElement.appendChild(container); RoadObservations.config(defaultValue) break; } }) } const filterRahdariProjects = () => { const filter_params = [] FILTERQUERY = {} FILTERQUERY.province = $("#filter_province").val(); FILTERQUERY.type = $("#filter_type").val(); FILTERQUERY.axis = $("#filter_axis").val(); FILTERQUERY.lastStatus = $("#filter_last_status").val(); FILTERQUERY.priority = $("#filter_priority").val(); FILTERQUERY.followup = $("#filter_followup").val(); FILTERQUERY.displayType = $("#filter_display_type").val(); FILTERQUERY.date = {} if ( $("#filter_from_date_time").val() != "" && $("#filter_to_date_time").val() != "" ) { FILTERQUERY.date.from = moment( filterDatepicker.from.getState().selected.year + "/" + filterDatepicker.from.getState().selected.month + "/" + filterDatepicker.from.getState().selected.date, "jYYYY/jM/jD" ).format("YYYY-MM-DD"); FILTERQUERY.date.to = moment( filterDatepicker.to.getState().selected.year + "/" + filterDatepicker.to.getState().selected.month + "/" + filterDatepicker.to.getState().selected.date, "jYYYY/jM/jD" ).format("YYYY-MM-DD"); } if (FILTERQUERY.province != '-1') { filter_params.push(`&province_id=${FILTERQUERY.province}`) } if (FILTERQUERY.type != '-1') { filter_params.push(`&type=${FILTERQUERY.type}`) } if (FILTERQUERY.axis != '-1') { filter_params.push(`&axis=${FILTERQUERY.axis}`) } if (FILTERQUERY.lastStatus != '-1') { filter_params.push(`&last_status=${FILTERQUERY.lastStatus}`) } if (FILTERQUERY.priority != '-1') { filter_params.push(`&priority=${FILTERQUERY.priority}`) } if (FILTERQUERY.followup != '-1') { filter_params.push(`&followup=${FILTERQUERY.followup}`) } if (Object.keys(FILTERQUERY.date).length !== 0) { filter_params.push(`&date_from=${FILTERQUERY.date.from}`) filter_params.push(`&date_to=${FILTERQUERY.date.to}`) } $.ajax({ url: get_rahdari_projects_by_filter_api + `?_=_${filter_params.join('')}`, type: "get", headers: { "X-CSRF-TOKEN": $('meta[name="csrf-token"]').attr("content"), }, contentType: false, processData: false, beforeSend: function () { showLoaderScreen() removeLayersInMap() }, success: function ({ data }) { showInMap(data) hideLoaderScreen() }, error: function (request) { // error handler hideLoaderScreen() } }); } const filterRoadItems = () => { const filter_params = [] FILTERQUERY = {} FILTERQUERY.province = $("#filter_province").val(); FILTERQUERY.edarat = $("#filter_edarat").val(); FILTERQUERY.status = $("#filter_status").val(); FILTERQUERY.item = $("#filter_item").val(); FILTERQUERY.subitem = $("#filter_subitem").val(); FILTERQUERY.displayType = $("#filter_display_type").val(); FILTERQUERY.date = {} if ( $("#filter_from_date_time").val() != "" && $("#filter_to_date_time").val() != "" ) { FILTERQUERY.date.from = moment( filterDatepicker.from.getState().selected.year + "/" + filterDatepicker.from.getState().selected.month + "/" + filterDatepicker.from.getState().selected.date, "jYYYY/jM/jD" ).format("YYYY-MM-DD"); FILTERQUERY.date.to = moment( filterDatepicker.to.getState().selected.year + "/" + filterDatepicker.to.getState().selected.month + "/" + filterDatepicker.to.getState().selected.date, "jYYYY/jM/jD" ).format("YYYY-MM-DD"); } if (FILTERQUERY.province != '-1') { filter_params.push(`&province_id=${FILTERQUERY.province}`) } if (FILTERQUERY.edarat != '-1') { filter_params.push(`&city_id=${FILTERQUERY.edarat}`) } if (FILTERQUERY.status != '-1') { filter_params.push(`&status=${FILTERQUERY.status}`) } if (FILTERQUERY.item != '-1') { filter_params.push(`&item=${FILTERQUERY.item}`) } if (FILTERQUERY.subitem != '-1') { filter_params.push(`&sub_id=${FILTERQUERY.subitem}`) } if (Object.keys(FILTERQUERY.date).length !== 0) { filter_params.push(`&date_from=${FILTERQUERY.date.from}`) filter_params.push(`&date_to=${FILTERQUERY.date.to}`) } $.ajax({ url: get_road_items_by_filter_api + `?_=_${filter_params.join('')}`, type: "get", headers: { "X-CSRF-TOKEN": $('meta[name="csrf-token"]').attr("content"), }, contentType: false, processData: false, beforeSend: function () { showLoaderScreen() removeLayersInMap() }, success: function ({ data }) { showInMap(data) hideLoaderScreen() }, error: function (request) { // error handler hideLoaderScreen() } }); } const filterRoadPatrols = () => { const filter_params = [] FILTERQUERY = {} FILTERQUERY.province = $("#filter_province").val(); FILTERQUERY.edarat = $("#filter_edarat").val(); FILTERQUERY.displayType = $("#filter_display_type").val(); FILTERQUERY.date = {} if ( $("#filter_from_date_time").val() != "" && $("#filter_to_date_time").val() != "" ) { FILTERQUERY.date.from = moment( filterDatepicker.from.getState().selected.year + "/" + filterDatepicker.from.getState().selected.month + "/" + filterDatepicker.from.getState().selected.date, "jYYYY/jM/jD" ).format("YYYY-MM-DD"); FILTERQUERY.date.to = moment( filterDatepicker.to.getState().selected.year + "/" + filterDatepicker.to.getState().selected.month + "/" + filterDatepicker.to.getState().selected.date, "jYYYY/jM/jD" ).format("YYYY-MM-DD"); } if (FILTERQUERY.province != '-1') { filter_params.push(`&province_id=${FILTERQUERY.province}`) } if (FILTERQUERY.edarat != '-1') { filter_params.push(`&edare_id=${FILTERQUERY.edarat}`) } if (Object.keys(FILTERQUERY.date).length !== 0) { filter_params.push(`&date_from=${FILTERQUERY.date.from}`) filter_params.push(`&date_to=${FILTERQUERY.date.to}`) } $.ajax({ url: get_road_patrols_by_filter_api + `?_=_${filter_params.join('')}`, type: "get", headers: { "X-CSRF-TOKEN": $('meta[name="csrf-token"]').attr("content"), }, contentType: false, processData: false, beforeSend: function () { showLoaderScreen() removeLayersInMap() }, success: function ({ data }) { showInMap(data) hideLoaderScreen() }, error: function (request) { // error handler hideLoaderScreen() } }); } const filterSafetyAndPrivacy = () => { const filter_params = [] FILTERQUERY = {} FILTERQUERY.province = $("#filter_province").val(); FILTERQUERY.edarat = $("#filter_edarat").val(); FILTERQUERY.subitem = $("#filter_subitem").val(); FILTERQUERY.step = $("#filter_step_spa").val(); FILTERQUERY.displayType = $("#filter_display_type").val(); FILTERQUERY.date = {} if ( $("#filter_from_date_time").val() != "" && $("#filter_to_date_time").val() != "" ) { FILTERQUERY.date.from = moment( filterDatepicker.from.getState().selected.year + "/" + filterDatepicker.from.getState().selected.month + "/" + filterDatepicker.from.getState().selected.date, "jYYYY/jM/jD" ).format("YYYY-MM-DD"); FILTERQUERY.date.to = moment( filterDatepicker.to.getState().selected.year + "/" + filterDatepicker.to.getState().selected.month + "/" + filterDatepicker.to.getState().selected.date, "jYYYY/jM/jD" ).format("YYYY-MM-DD"); } if (FILTERQUERY.province != '-1') { filter_params.push(`&province_id=${FILTERQUERY.province}`) } if (FILTERQUERY.edarat != '-1') { filter_params.push(`&edare_shahri_id=${FILTERQUERY.edarat}`) } if (FILTERQUERY.subitem != '-1') { filter_params.push(`&info_id=${FILTERQUERY.subitem}`) } if (FILTERQUERY.step != '-1') { filter_params.push(`&step=${FILTERQUERY.step}`) } if (Object.keys(FILTERQUERY.date).length !== 0) { filter_params.push(`&date_from=${FILTERQUERY.date.from}`) filter_params.push(`&date_to=${FILTERQUERY.date.to}`) } $.ajax({ url: get_safety_and_privacy_by_filter_api + `?_=_${filter_params.join('')}`, type: "get", headers: { "X-CSRF-TOKEN": $('meta[name="csrf-token"]').attr("content"), }, contentType: false, processData: false, beforeSend: function () { showLoaderScreen() removeLayersInMap() }, success: function ({ data }) { showInMap(data) hideLoaderScreen() }, error: function (request) { // error handler hideLoaderScreen() } }); } const filterRoadObservations = () => { const filter_params = [] FILTERQUERY = {} FILTERQUERY.province = $("#filter_province").val(); FILTERQUERY.edarat = $("#filter_edarat").val(); FILTERQUERY.rmsStatus = $("#filter_rms_status").val(); FILTERQUERY.status = $("#filter_status").val(); FILTERQUERY.displayType = $("#filter_display_type").val(); FILTERQUERY.date = {} if ( $("#filter_from_date_time").val() != "" && $("#filter_to_date_time").val() != "" ) { FILTERQUERY.date.from = moment( filterDatepicker.from.getState().selected.year + "/" + filterDatepicker.from.getState().selected.month + "/" + filterDatepicker.from.getState().selected.date, "jYYYY/jM/jD" ).format("YYYY-MM-DD"); FILTERQUERY.date.to = moment( filterDatepicker.to.getState().selected.year + "/" + filterDatepicker.to.getState().selected.month + "/" + filterDatepicker.to.getState().selected.date, "jYYYY/jM/jD" ).format("YYYY-MM-DD"); } if (Object.keys(FILTERQUERY.date).length !== 0) { filter_params.push(`?date_from=${FILTERQUERY.date.from}`) filter_params.push(`&date_to=${FILTERQUERY.date.to}`) } if (FILTERQUERY.province != '-1') { filter_params.push(`&province_id=${FILTERQUERY.province}`) } if (FILTERQUERY.edarat != '-1') { filter_params.push(`&edare_shahri_id=${FILTERQUERY.edarat}`) } if (FILTERQUERY.rmsStatus != '-1') { filter_params.push(`&rms_status=${FILTERQUERY.rmsStatus}`) } if (FILTERQUERY.status != '-1') { filter_params.push(`&status=${FILTERQUERY.status}`) } $.ajax({ url: get_road_observations_by_filter_api + `${filter_params.join('')}`, type: "get", headers: { "X-CSRF-TOKEN": $('meta[name="csrf-token"]').attr("content"), }, contentType: false, processData: false, beforeSend: function () { showLoaderScreen() removeLayersInMap() }, success: function ({ data }) { showInMap(data) hideLoaderScreen() }, error: function (request) { // error handler hideLoaderScreen() } }); } const removeLayersInMap = () => { markers = [] if (markersLayer) { map.removeLayer(markersLayer) markersLayer = null } if (markersLayersCluster) { map.removeLayer(markersLayersCluster) markersLayersCluster = null } } const showInMap = data => { if (data.length == 0) { return } latlonArr = []; // points switch (TYPE) { case "rahdari_projects": rahdariProjectsCreateMarkers(data) break; case "road_items": roadItemsCreateMarkers(data) break; case "road_patrols": roadPatrolsCreateMarkers(data) break; case "safety_and_privacy": SafetyAndPrivacyCreateMarkers(data) break; case "road_observations": RoadObservationsCreateMarkers(data) break; } if (FILTERQUERY.displayType == 1) { // clusters mapMode = "clusters" markersLayersCluster = L.markerClusterGroup(); markersLayersCluster.addLayers(markers); map.addLayer(markersLayersCluster); } else { if (data.length > 3000) { // clusters mapMode = "clusters" markersLayersCluster = L.markerClusterGroup(); markersLayersCluster.addLayers(markers); map.addLayer(markersLayersCluster); forceUseCluster() } else { mapMode = "points" markersLayer = new L.LayerGroup(markers); map.addLayer(markersLayer); map.on('zoomend', function () { if (markersLayer === null) { return 0; } let iconSize; switch (map.getZoom()) { case 5: case 6: case 7: case 8: iconSize = 3; break; case 9: iconSize = 4; break; case 10: iconSize = 5; break; case 11: iconSize = 6; break; case 12: iconSize = 7; break; case 13: iconSize = 8; break; case 14: case 15: case 16: case 17: case 18: iconSize = 9; break; } markersLayer.eachLayer(function (layer) { return layer.setIcon(makeIcon(iconSize, layer)); }); }); } } setTimeout(() => { map.flyToBounds(latlonArr, { padding: [60, 60], duration: .5 }) }, 250); } const forceUseCluster = () => { Swal.fire({ icon: "info", title: "تغییر نوع نمایش", text: "به دلیل نقاط بیش از 3000، نوع نمایش به کلاستر تغییر یافت" }); $("#filter_display_type").val(1); FILTERQUERY.displayType = $("#filter_display_type").val(); } const rahdariProjectsCreateMarkers = (data) => { for (let i = 0; i < data.length; i++) { let icon; switch (data[i].project_type_id) { case 1: icon = blueIcon; break; case 2: icon = yellowIcon; break; case 3: icon = greenIcon; break; case 4: icon = redIcon; break; case 5: icon = brownIcon; break; case 6: icon = orangeIcon; break; } let marker = new L.Marker([data[i].start_lat, data[i].start_lng], { id: data[i].id, icon: icon }).on('click', () => { window.open(get_rahdari_projects_by_id + data[i].id) }) latlonArr.push([data[i].start_lat, data[i].start_lng]) markers.push(marker); } } const roadItemsCreateMarkers = (data) => { for (let i = 0; i < data.length; i++) { let icon; switch (data[i].status) { case 0: icon = yellowIcon; break; case 1: icon = greenIcon; break; case 2: icon = redIcon; break; default: icon = blueIcon; break; } let marker = new L.Marker([data[i].l, data[i].g], { id: data[i].i, icon: icon }).on('click', () => { $.ajax({ url: get_road_items_by_id + data[i].i, type: "get", headers: { "X-CSRF-TOKEN": $('meta[name="csrf-token"]').attr("content"), }, contentType: false, processData: false, beforeSend: function () { const modal = $('#details_modal') modal.find('#modal_details_date_create').text('') modal.find('#modal_details_date_activity').text('') modal.find('#modal_details_province').text('') modal.find('#modal_details_edare').text('') modal.find('#modal_details_item').text('') modal.find('#modal_details_subitem').text('') modal.find('#modal_details_status').text('') modal.find('#modal_details_supervisor_description').text('') modal.find('#modal_details_images').addClass('d-none') modal.find('#modal_details_images').removeClass('d-flex') modal.find('#modal_details_image_before').removeAttr('src') modal.find('#modal_details_image_before_img').removeAttr('href') modal.find('#modal_details_image_after').removeAttr('src') modal.find('#modal_details_image_after_img').removeAttr('href') showLoaderScreen() }, success: function (result) { const modal = $('#details_modal') modal.find('#modal_details_date_create').text(moment(result.items.created_at).format("HH:mm:ss | jYYYY/jMM/jDD")) modal.find('#modal_details_date_activity').text(moment(result.items.activity_date_time).format("HH:mm:ss | jYYYY/jMM/jDD")) modal.find('#modal_details_province').text(result.items.province_fa) modal.find('#modal_details_edare').text(result.items.edarat_name) modal.find('#modal_details_item').text(result.items.item_fa) modal.find('#modal_details_subitem').text(result.items.sub_item_fa) modal.find('#modal_details_status').text(result.items.status_fa) if (result.items.status != 2) { modal.find('#modal_details_supervisor_description_div').addClass('d-none'); modal.find('#modal_details_supervisor_description_div').removeClass('d-flex'); } else { modal.find('#modal_details_supervisor_description').text(result.items.supervisor_description) modal.find('#modal_details_supervisor_description_div').removeClass('d-none'); modal.find('#modal_details_supervisor_description_div').addClass('d-flex'); } if (result.items.files.length != 0) { modal.find('#modal_details_images').addClass('d-flex') modal.find('#modal_details_images').removeClass('d-none') modal.find('#modal_details_image_before').attr('href', result.items.files[1].full_path_for_fast_react) modal.find('#modal_details_image_before_img').attr('src', result.items.files[1].full_path_for_fast_react) modal.find('#modal_details_image_after').attr('href', result.items.files[0].full_path_for_fast_react) modal.find('#modal_details_image_after_img').attr('src', result.items.files[0].full_path_for_fast_react) } modal.modal('show') hideLoaderScreen() }, error: function (request) { // error handler hideLoaderScreen() } }); }) latlonArr.push([data[i].l, data[i].g]) markers.push(marker); } } const roadPatrolsCreateMarkers = (data) => { for (let i = 0; i < data.length; i++) { let icon = blueIcon; let marker = new L.Marker([data[i].start_lat, data[i].start_lon], { id: data[i].id, icon: icon }).on('click', () => { $.ajax({ url: get_road_patrols_by_id + data[i].id, type: "get", headers: { "X-CSRF-TOKEN": $('meta[name="csrf-token"]').attr("content"), }, contentType: false, processData: false, beforeSend: function () { const modal = $('#details_modal') modal.find('#modal_details_date').text('') modal.find('#modal_details_province').text('') modal.find('#modal_details_edare').text('') modal.find('#modal_details_officer_name').text('') modal.find('#modal_details_officer_plaque').text('') modal.find('#modal_details_distance').text('') modal.find('#modal_detail_report_link').attr('') showLoaderScreen() }, success: function (result) { const modal = $('#details_modal') modal.find('#modal_details_date').text(moment(result.created_at).format("HH:mm:ss | jYYYY/jMM/jDD")) modal.find('#modal_details_province').text(result.province_fa) modal.find('#modal_details_edare').text(result.edare_name) modal.find('#modal_details_officer_name').text(result.officer_name) const plaque = result.officer_plaque.split("-"); modal.find('#modal_details_officer_plaque').html(`