Skip to content

Commit d6076e0

Browse files
committed
fix: 1408 errore calcola percorso da mobile
1 parent c43a262 commit d6076e0

3 files changed

Lines changed: 103 additions & 21 deletions

File tree

modules/anagrafiche/edit.php

Lines changed: 51 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -127,22 +127,22 @@
127127
<div class="col-md-4">
128128
{[ "type": "text", "label": "<?php echo tr('Luogo di nascita'); ?>", "name": "luogo_nascita", "value": "$luogo_nascita$" ]}
129129
</div>
130-
130+
131131
<div class="col-md-4">
132132
{[ "type": "date", "label": "<?php echo tr('Data di nascita'); ?>", "name": "data_nascita", "value": "$data_nascita$" ]}
133133
</div>
134-
134+
135135
<div class="col-md-4">
136136
{[ "type": "select", "label": "<?php echo tr('Sesso'); ?>", "name": "sesso", "values": "list=\"\": \"Non specificato\", \"M\": \"<?php echo tr('Uomo'); ?>\", \"F\": \"<?php echo tr('Donna'); ?>\"", "value": "$sesso$" ]}
137137
</div>
138138
</div>
139139
<?php } ?>
140-
140+
141141
<div class="row">
142142
<div class="col-md-2">
143143
{[ "type": "text", "label": "<?php echo tr('Codice anagrafica'); ?>", "name": "codice", "required": 1, "class": "text-center alphanumeric-mask", "value": "$codice$", "maxlength": 20, "validation": "codice" ]}
144144
</div>
145-
145+
146146
<div class="col-md-2">
147147
<?php
148148
$help_codice_destinatario = tr("Per impostare il codice specificare prima il campo '_NATION_' dell'anagrafica", [
@@ -316,7 +316,24 @@ function cercaOpenStreetMap() {
316316
const indirizzo = getIndirizzoAnagrafica();
317317
318318
const destinazione = (!isNaN(indirizzo[0]) && !isNaN(indirizzo[1])) ? indirizzo[0] + ","+ indirizzo[1] : indirizzo[2];
319-
if (isMobile.any) {
319+
320+
// Funzione di fallback per rilevare dispositivi mobili
321+
function isMobileDevice() {
322+
// Controlla se isMobile è disponibile
323+
if (typeof isMobile !== "undefined" && isMobile.any) {
324+
return true;
325+
}
326+
327+
// Fallback usando globals.is_mobile se disponibile
328+
if (typeof globals !== "undefined" && globals.is_mobile) {
329+
return true;
330+
}
331+
332+
// Fallback usando user agent
333+
return /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);
334+
}
335+
336+
if (isMobileDevice()) {
320337
window.open("geo:" + destinazione + "?z=16&q=" + destinazione);
321338
} else {
322339
if (!isNaN(indirizzo[0]) && !isNaN(indirizzo[1])) {
@@ -333,7 +350,23 @@ function calcolaPercorso() {
333350
334351
const destinazione = (!isNaN(indirizzo_destinazione[0]) && !isNaN(indirizzo_destinazione[1])) ? indirizzo_destinazione[0] + ","+ indirizzo_destinazione[1] : indirizzo_destinazione[2];
335352
336-
if (isMobile.any) {
353+
// Funzione di fallback per rilevare dispositivi mobili
354+
function isMobileDevice() {
355+
// Controlla se isMobile è disponibile
356+
if (typeof isMobile !== "undefined" && isMobile.any) {
357+
return true;
358+
}
359+
360+
// Fallback usando globals.is_mobile se disponibile
361+
if (typeof globals !== "undefined" && globals.is_mobile) {
362+
return true;
363+
}
364+
365+
// Fallback usando user agent
366+
return /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);
367+
}
368+
369+
if (isMobileDevice()) {
337370
window.open("geo:" + destinazione + "?z=16&q=" + destinazione);
338371
} else {
339372
window.open("https://www.openstreetmap.org/directions?engine=fossgis_osrm_car&route=" + indirizzo_partenza + ";" + destinazione);
@@ -371,9 +404,9 @@ function caricaMappa() {
371404
swal("'.tr('Errore').'", "'.tr('La posizione non è stata definita. Impossibile caricare la mappa.').'", "error");
372405
return false;
373406
}
374-
375-
var container = L.DomUtil.get("map-edit");
376-
if(container._leaflet_id != null){
407+
408+
var container = L.DomUtil.get("map-edit");
409+
if(container._leaflet_id != null){
377410
map.eachLayer(function (layer) {
378411
if(layer instanceof L.Marker) {
379412
map.removeLayer(layer);
@@ -383,13 +416,13 @@ function caricaMappa() {
383416
map = L.map("map-edit", {
384417
gestureHandling: true
385418
});
386-
419+
387420
L.tileLayer("'.setting('Tile server OpenStreetMap').'", {
388421
maxZoom: 17,
389422
attribution: "© OpenStreetMap"
390423
}).addTo(map);
391424
}
392-
425+
393426
var icon = new L.Icon({
394427
iconUrl: globals.rootdir + "/assets/dist/img/marker-icon.png",
395428
shadowUrl:globals.rootdir + "/assets/dist/img/leaflet/marker-shadow.png",
@@ -413,7 +446,7 @@ function caricaMappa() {
413446
forcePseudoFullscreen: true,
414447
fullscreenElement: false
415448
}).addTo(map);
416-
449+
417450
map.setView([lat, lng], 14);
418451
}
419452
@@ -473,7 +506,7 @@ function risolviConto(tipo){
473506
</div>
474507
475508
<div class="row">
476-
509+
477510
</div>';
478511

479512
$banche = Banca::where('id_anagrafica', $anagrafica->id)->get();
@@ -509,7 +542,7 @@ function risolviConto(tipo){
509542
<div class="col-md-6">
510543
{[ "type": "select", "label": "'.tr('Provenienza').'", "name": "id_provenienza", "ajax-source": "provenienze", "value": "$id_provenienza$", "icon-after": "add|'.Module::where('name', 'Provenienze')->first()->id.'" ]}
511544
</div>
512-
545+
513546
<div class="col-md-6">
514547
{[ "type": "select", "label": "'.tr('Pagamento predefinito').'", "name": "idpagamento_vendite", "values": "query=SELECT `co_pagamenti`.`id`, `co_pagamenti_lang`.`title` AS descrizione FROM `co_pagamenti` LEFT JOIN `co_pagamenti_lang` ON (`co_pagamenti`.`id` = `co_pagamenti_lang`.`id_record` AND `co_pagamenti_lang`.`id_lang` = '.prepare(Models\Locale::getDefault()->id).') GROUP BY `descrizione` ORDER BY `descrizione` ASC", "value": "$idpagamento_vendite$" ]}
515548
</div>
@@ -519,7 +552,7 @@ function risolviConto(tipo){
519552
<div class="col-md-6">
520553
{[ "type": "select", "label": "'.tr('Banca predefinita azienda per accrediti').'", "name": "idbanca_vendite", "ajax-source": "banche", "select-options": '.json_encode(['id_anagrafica' => $anagrafica_azienda->id]).', "value": "$idbanca_vendite$", "help": "'.tr("Banca predefinita dell'Azienda su cui accreditare i pagamenti").'" ]}
521554
</div>
522-
555+
523556
<div class="col-md-6">
524557
{[ "type": "select", "label": "'.tr('Iva predefinita').'", "name": "idiva_vendite", "ajax-source": "iva", "value": "$idiva_vendite$" ]}
525558
</div>
@@ -529,7 +562,7 @@ function risolviConto(tipo){
529562
<div class="col-md-6">
530563
{[ "type": "select", "label": "'.tr("Ritenuta d'acconto predefinita").'", "name": "id_ritenuta_acconto_vendite", "values": "query=SELECT id, descrizione FROM co_ritenutaacconto ORDER BY descrizione ASC", "value": "$id_ritenuta_acconto_vendite$" ]}
531564
</div>
532-
565+
533566
<div class="col-md-6">
534567
{[ "type": "select", "label": "'.tr('Piano di sconto/magg. su articoli').'", "name": "id_piano_sconto_vendite", "values": "query=SELECT id, nome AS descrizione FROM mg_piani_sconto ORDER BY nome ASC", "value": "$id_piano_sconto_vendite$" ]}
535568
</div>
@@ -539,7 +572,7 @@ function risolviConto(tipo){
539572
<div class="col-md-6">
540573
{[ "type": "select", "label": "'.tr('Indirizzo di fatturazione').'", "name": "idsede_fatturazione", "values": "query=SELECT id, IF(citta = \'\', nomesede, CONCAT_WS(\', \', nomesede, citta)) AS descrizione FROM an_sedi WHERE idanagrafica='.prepare($id_record).' UNION SELECT \'0\' AS id, \'Sede legale\' AS descrizione ORDER BY descrizione", "value": "$idsede_fatturazione$" ]}
541574
</div>
542-
575+
543576
<div class="col-md-6">
544577
{[ "type": "select", "label": "'.tr('Agente principale').'", "name": "idagente", "values": "query=SELECT `an_anagrafiche`.`idanagrafica` AS id, IF(deleted_at IS NOT NULL, CONCAT(`ragione_sociale`, \' (Eliminato)\'), `ragione_sociale` ) AS descrizione FROM `an_anagrafiche` INNER JOIN (`an_tipianagrafiche_anagrafiche` INNER JOIN `an_tipianagrafiche` ON `an_tipianagrafiche_anagrafiche`.`idtipoanagrafica`=`an_tipianagrafiche`.`id` LEFT JOIN `an_tipianagrafiche_lang` ON (`an_tipianagrafiche_lang`.`id_record` = `an_tipianagrafiche`.`id` AND `an_tipianagrafiche_lang`.`id_lang` = '.prepare(Models\Locale::getDefault()->id).')) ON `an_anagrafiche`.`idanagrafica`=`an_tipianagrafiche_anagrafiche`.`idanagrafica` WHERE (`title`=\'Agente\' AND `deleted_at` IS NULL)'.(isset($record['idagente']) ? 'OR (`an_anagrafiche`.`idanagrafica` = '.prepare($record['idagente']).' AND `deleted_at` IS NOT NULL) ' : '').'ORDER BY `ragione_sociale`", "value": "$idagente$" ]}
545578
</div>
@@ -836,7 +869,7 @@ function risolviConto(tipo){
836869
?>
837870

838871
<script>
839-
872+
840873
var an_sdi = <?php echo ($anagrafica->tipo == 'Azienda') ? $dbo->fetchOne('SELECT JSON_ARRAYAGG(`codice`) AS `elenco_codici` FROM `an_sdi`')['elenco_codici'] : []; ?>;
841874

842875
$(document).ready(function() {

modules/interventi/header.php

Lines changed: 35 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -342,7 +342,24 @@ function cercaOpenStreetMap() {
342342
const indirizzo = getIndirizzoAnagrafica();
343343
344344
const destinazione = (!isNaN(indirizzo[0]) && !isNaN(indirizzo[1])) ? indirizzo[0] + ","+ indirizzo[1] : indirizzo[2];
345-
if (isMobile.any) {
345+
346+
// Funzione di fallback per rilevare dispositivi mobili
347+
function isMobileDevice() {
348+
// Controlla se isMobile è disponibile
349+
if (typeof isMobile !== "undefined" && isMobile.any) {
350+
return true;
351+
}
352+
353+
// Fallback usando globals.is_mobile se disponibile
354+
if (typeof globals !== "undefined" && globals.is_mobile) {
355+
return true;
356+
}
357+
358+
// Fallback usando user agent
359+
return /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);
360+
}
361+
362+
if (isMobileDevice()) {
346363
window.open("geo:" + destinazione + "?z=16&q=" + destinazione);
347364
} else {
348365
if (!isNaN(indirizzo[0]) && !isNaN(indirizzo[1])) {
@@ -359,7 +376,23 @@ function calcolaPercorso() {
359376
360377
const destinazione = (!isNaN(indirizzo_destinazione[0]) && !isNaN(indirizzo_destinazione[1])) ? indirizzo_destinazione[0] + ","+ indirizzo_destinazione[1] : indirizzo_destinazione[2];
361378
362-
if (isMobile.any) {
379+
// Funzione di fallback per rilevare dispositivi mobili
380+
function isMobileDevice() {
381+
// Controlla se isMobile è disponibile
382+
if (typeof isMobile !== "undefined" && isMobile.any) {
383+
return true;
384+
}
385+
386+
// Fallback usando globals.is_mobile se disponibile
387+
if (typeof globals !== "undefined" && globals.is_mobile) {
388+
return true;
389+
}
390+
391+
// Fallback usando user agent
392+
return /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);
393+
}
394+
395+
if (isMobileDevice()) {
363396
window.open("geo:" + destinazione + "?z=16&q=" + destinazione);
364397
} else {
365398
window.open("https://www.openstreetmap.org/directions?engine=fossgis_osrm_car&route=" + indirizzo_partenza + ";" + destinazione);

modules/mappa/js/app.js

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -327,7 +327,23 @@ $('#idanagrafica').change(function() {
327327
});
328328

329329
function calcolaPercorso(indirizzo_partenza, indirizzo_destinazione) {
330-
if (isMobile.any) {
330+
// Funzione di fallback per rilevare dispositivi mobili
331+
function isMobileDevice() {
332+
// Controlla se isMobile è disponibile
333+
if (typeof isMobile !== 'undefined' && isMobile.any) {
334+
return true;
335+
}
336+
337+
// Fallback usando globals.is_mobile se disponibile
338+
if (typeof globals !== 'undefined' && globals.is_mobile) {
339+
return true;
340+
}
341+
342+
// Fallback usando user agent
343+
return /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);
344+
}
345+
346+
if (isMobileDevice()) {
331347
window.open("geo:" + indirizzo_destinazione + "?z=16&q=" + indirizzo_destinazione);
332348
} else {
333349
window.open("https://www.openstreetmap.org/directions?engine=fossgis_osrm_car&route=" + indirizzo_partenza + ";" + indirizzo_destinazione);

0 commit comments

Comments
 (0)