Skip to content

Commit b92d43c

Browse files
committed
fix: controllo posizione geografica nel form creazione attività
1 parent 35ea04f commit b92d43c

1 file changed

Lines changed: 99 additions & 27 deletions

File tree

modules/interventi/add.php

Lines changed: 99 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -275,19 +275,27 @@
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

Comments
 (0)