Link Google Maps del luogo degli eventi (m34)
Colonna facoltativa eventi_app.link_maps con CHECK che accetta solo URL https di Google Maps. Campo nel form di /eventi (admin e allenatori), validazione con linkMapsValido() e test. Le schede di partita, allenamento ed evento mostrano «Apri su Google Maps» solo se il link c'è; card e notifiche non cambiano. Documentazione: calendario.md, DATABASE.md, CHANGELOG. La migration m34 non è ancora applicata in produzione: va fatto db push prima di rilasciare questo codice, che legge la nuova colonna. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
2f583ca97f
commit
19ddf715e6
12 files changed
+146
-10
No files matched your search
+24
-1
@@ -22,6 +22,7 @@ import {
|
||||
categoriaEvento,
|
||||
daCategoria,
|
||||
eventoVuoto,
|
||||
linkMapsValido,
|
||||
useEliminaEvento,
|
||||
useSalvaEvento,
|
||||
type CategoriaEvento,
|
||||
@@ -111,6 +112,12 @@ function GestioneEventi() {
|
||||
toast.error("Serve un titolo per l'evento");
|
||||
return;
|
||||
}
|
||||
if ((bozza.linkMaps ?? "").trim() && !linkMapsValido(bozza.linkMaps!.trim())) {
|
||||
toast.error(
|
||||
"Il link deve essere di Google Maps (https://maps.app.goo.gl/… o google.com/maps…)",
|
||||
);
|
||||
return;
|
||||
}
|
||||
if (modificaEsistente) {
|
||||
setConfermaModifica(true);
|
||||
return;
|
||||
@@ -121,7 +128,11 @@ function GestioneEventi() {
|
||||
async function conferma() {
|
||||
if (!bozza) return;
|
||||
try {
|
||||
await salva.mutateAsync({ ...bozza, titolo: bozza.titolo.trim() });
|
||||
await salva.mutateAsync({
|
||||
...bozza,
|
||||
titolo: bozza.titolo.trim(),
|
||||
linkMaps: (bozza.linkMaps ?? "").trim(),
|
||||
});
|
||||
toast.success("Evento salvato");
|
||||
setBozza(null);
|
||||
} catch {
|
||||
@@ -373,6 +384,18 @@ function GestioneEventi() {
|
||||
/>
|
||||
</Campo>
|
||||
|
||||
<Campo label="Link Google Maps (facoltativo)">
|
||||
<input
|
||||
type="url"
|
||||
inputMode="url"
|
||||
value={bozza.linkMaps ?? ""}
|
||||
maxLength={500}
|
||||
placeholder="Incolla il link da Condividi → Copia link"
|
||||
onChange={(e) => aggiorna({ linkMaps: e.target.value })}
|
||||
className={classiInput}
|
||||
/>
|
||||
</Campo>
|
||||
|
||||
<Campo label="Note">
|
||||
<textarea
|
||||
value={bozza.note}
|
||||
|
||||
Reference in new issue
Block a user