275275 <!-- TAB DETTAGLI CLIENTE -->
276276 <div class="tab-pane fade show active" id="tab_dettagli_cliente" role="tabpanel" aria-labelledby="dettagli-cliente-tab">
277277 <div id="dettagli_cliente" class="p-4">
278- <div class="text-center text-muted py-5">
279- <i class="fa fa-user fa-3x mb-3"></i>
280- <p class="lead"> ' .tr ('Seleziona un cliente per visualizzare le informazioni ' ).'</p>
278+ <div class="alert alert-info text-center mx-auto mt-4" style="max-width: 400px; border-radius: 8px; box-shadow: 0 2px 8px rgba(0,0,0,0.1);">
279+ <i class="fa fa-user fa-2x mb-3"></i>
280+ <h5 class="mb-2"> ' .tr ('Cliente non selezionato ' ).'</h5>
281+ <p class="mb-0"> ' .tr ('Seleziona un cliente per visualizzare le informazioni ' ).'</p>
281282 </div>
282283 </div>
283284 </div>
284285
285286 <!-- TAB POSIZIONE -->
286287 <div class="tab-pane fade" id="tab_posizione" role="tabpanel" aria-labelledby="posizione-tab">
287288 <div class="p-4">
288- <div id="map-add" style="height: 300px; width: 100%; display: flex; align-items: center; justify-content: center; border-radius: 4px; box-shadow: 0 1px 3px rgba(0,0,0,0.12);"></div>
289- <div id="map-warning" class="hide alert alert-warning mt-3">
290- <i class="fa fa-exclamation-triangle"></i> ' .tr ('La posizione non è stata definita. Impossibile caricare la mappa. ' ).'
289+ <div id="map-add" style="height: 300px; width: 100%; display: none; align-items: center; justify-content: center; border-radius: 4px; box-shadow: 0 1px 3px rgba(0,0,0,0.12);"></div>
290+ <div id="no-client-message" class="alert alert-info text-center mx-auto mt-4" style="display: none; max-width: 400px; border-radius: 8px; box-shadow: 0 2px 8px rgba(0,0,0,0.1);">
291+ <i class="fa fa-map-marker fa-2x mb-3"></i>
292+ <h5 class="mb-2"> ' .tr ('Cliente non selezionato ' ).'</h5>
293+ <p class="mb-0"> ' .tr ('Seleziona un cliente per visualizzare le informazioni sulla posizione geografica ' ).'</p>
294+ </div>
295+ <div id="map-warning" class="alert alert-info text-center mx-auto mt-4" style="display: none; max-width: 400px; border-radius: 8px; box-shadow: 0 2px 8px rgba(0,0,0,0.1);">
296+ <i class="fa fa-map-marker fa-2x mb-3"></i>
297+ <h5 class="mb-2"> ' .tr ('Posizione non definita ' ).'</h5>
298+ <p class="mb-0"> ' .tr ('La posizione non è stata definita per questo cliente ' ).'</p>
291299 </div>
292300 </div>
293301 </div>
@@ -519,6 +527,8 @@ function() {
519527 $(".nav-tabs .nav-link").removeClass("active-tab bg-white");
520528 $(this).addClass("active-tab");
521529 });
530+
531+ caricaMappa();
522532 });
523533
524534 input("idtecnico").change(function() {
@@ -576,7 +586,8 @@ function() {
576586 $("#dettagli_cliente").html(data);
577587 });
578588 } else {
579- $("#dettagli_cliente").html( \'<div class="text-center text-muted"><i class="fa fa-user fa-3x mb-2"></i><p> ' .tr ('Seleziona un cliente per visualizzare le informazioni ' ).'</p></div> \');
589+ $("#dettagli_cliente").html( \'<div class="alert alert-info text-center mx-auto mt-4" style="max-width: 400px; border-radius: 8px; box-shadow: 0 2px 8px rgba(0,0,0,0.1);"><i class="fa fa-user fa-2x mb-3"></i><h5 class="mb-2"> ' .tr ('Cliente non selezionato ' ).'</h5><p class="mb-0"> ' .tr ('Seleziona un cliente per visualizzare le informazioni ' ).'</p></div> \');
590+ caricaMappa();
580591 }
581592
582593 plus_sede = $(".modal #idsede_destinazione").parent().find(".btn");
@@ -625,6 +636,8 @@ function() {
625636 // session_set("superselect,idzona", $(this).selectData().idzona, 0);
626637
627638 caricaMappa(data.lat, data.lng);
639+ } else {
640+ caricaMappa();
628641 }
629642 });
630643
@@ -891,15 +904,76 @@ function caricaMappa(lat, lng) {
891904 return false;
892905 }
893906
894- var lat = lat ? lat : input("idanagrafica").getData("select-options").lat;
895- var lng = lng ? lng :input("idanagrafica").getData("select-options").lng;
896- if (typeof lat === "undefined" || typeof lng === "undefined"){
897- $("#map-warning").removeClass("hide");
907+ // Controllo 1: Verificare se è stato selezionato un cliente
908+ var clienteSelezionato = input("idanagrafica").get();
909+ if (!clienteSelezionato) {
910+ // Nessun cliente selezionato
911+ $("#no-client-message").show();
912+ $("#map-warning").hide();
913+ $("#map-add").hide();
914+
915+ // Rimuovi la mappa esistente
916+ var container = L.DomUtil.get("map-add");
917+ if (container && container._leaflet_id != null && map) {
918+ map.remove();
919+ map = null;
920+ }
921+ return false;
922+ } else {
923+ // Cliente selezionato
924+ $("#no-client-message").hide();
925+ $("#map-add").css("display", "flex");
926+ }
927+
928+ // Controllo 2: Recuperare le coordinate in base alla sede selezionata
929+ if (lat && lng) {
930+ // Coordinate passate come parametri (da sede specifica)
931+ // Non fare nulla, usa quelle
932+ } else {
933+ // Recupera coordinate in base alla logica sede
934+ var sedeSelezionata = input("idsede_destinazione").get();
935+
936+ if (sedeSelezionata && sedeSelezionata !== "0") {
937+ // Caso C: Sede specifica selezionata
938+ var sedeData = input("idsede_destinazione").getData("select-options");
939+ if (sedeData) {
940+ lat = sedeData.lat;
941+ lng = sedeData.lng;
942+ }
943+ } else {
944+ // Caso A/B: Nessuna sede o sede legale - usa anagrafica
945+ var anagraficaData = input("idanagrafica").getData("select-options");
946+ if (anagraficaData) {
947+ lat = anagraficaData.lat;
948+ lng = anagraficaData.lng;
949+ }
950+ }
951+ }
952+
953+ // Controllo più robusto per verificare se le coordinate sono valide
954+ var hasValidCoordinates = lat && lng &&
955+ typeof lat !== "undefined" && typeof lng !== "undefined" &&
956+ lat !== null && lng !== null &&
957+ lat !== "" && lng !== "" &&
958+ !isNaN(parseFloat(lat)) && !isNaN(parseFloat(lng)) &&
959+ parseFloat(lat) !== 0 && parseFloat(lng) !== 0;
960+
961+ if (!hasValidCoordinates) {
962+ $("#map-warning").show();
963+ $("#map-add").hide();
964+ // Rimuovi la mappa esistente se le coordinate non sono valide
965+ var container = L.DomUtil.get("map-add");
966+ if (container && container._leaflet_id != null && map) {
967+ map.remove();
968+ map = null;
969+ }
898970 } else {
899- $("#map-warning").addClass("hide");
971+ $("#map-warning").hide();
972+ $("#map-add").css("display", "flex");
900973 }
901974
902- if (input("idanagrafica").getData("select-options")) {
975+ // Renderizza la mappa solo se ci sono coordinate valide e un cliente selezionato
976+ if (input("idanagrafica").getData("select-options") && hasValidCoordinates) {
903977 var container = L.DomUtil.get("map-add");
904978 if(container._leaflet_id != null){
905979 map.eachLayer(function (layer) {
@@ -918,22 +992,20 @@ function caricaMappa(lat, lng) {
918992 }).addTo(map);
919993 }
920994
921- if (lat && lng) {
922- var icon = new L.Icon({
923- iconUrl: globals.rootdir + "/assets/dist/img/marker-icon.png",
924- shadowUrl:globals.rootdir + "/assets/dist/img/leaflet/marker-shadow.png",
925- iconSize: [25, 41],
926- iconAnchor: [12, 41],
927- popupAnchor: [1, -34],
928- shadowSize: [41, 41]
929- });
995+ var icon = new L.Icon({
996+ iconUrl: globals.rootdir + "/assets/dist/img/marker-icon.png",
997+ shadowUrl:globals.rootdir + "/assets/dist/img/leaflet/marker-shadow.png",
998+ iconSize: [25, 41],
999+ iconAnchor: [12, 41],
1000+ popupAnchor: [1, -34],
1001+ shadowSize: [41, 41]
1002+ });
9301003
931- var marker = L.marker([lat, lng], {
932- icon: icon
933- }).addTo(map);
1004+ var marker = L.marker([parseFloat( lat), parseFloat( lng) ], {
1005+ icon: icon
1006+ }).addTo(map);
9341007
935- map.setView([parseFloat(lat), parseFloat(lng)], 14);
936- }
1008+ map.setView([parseFloat(lat), parseFloat(lng)], 14);
9371009 }
9381010 }
9391011</script> ' ;
0 commit comments