feat: Enhance SAR message handling with color indexing and localization

- Added `sarColorIndex` to `Message` and `SarMarker` models to support color indexing for SAR markers.
- Introduced a standard color palette in `SarTemplate` and methods to retrieve colors based on index.
- Updated `SarTemplate` to include localization for template names.
- Modified `SarUpdateSheet` and message sending logic to include color index in SAR messages.
- Enhanced `SarMessageParser` to support both old and new message formats with color index.
- Updated UI components to reflect changes in SAR marker color handling based on the new color index.
- Improved sample data generation to utilize localized strings for better testing and demonstration.
This commit is contained in:
Janez T
2025-10-23 19:17:13 +02:00
parent b70eed1bf2
commit 98cda8c976
28 changed files with 2734 additions and 270 deletions

View File

@@ -1752,6 +1752,10 @@
"textCopiedToClipboard": "Testo copiato negli appunti",
"deleteMessage": "Elimina messaggio",
"deleteMessageConfirmation": "Sei sicuro di voler eliminare questo messaggio?",
"shareLocation": "Condividi posizione",
"shareLocationText": "{markerInfo}\n\nCoordinate: {lat}, {lon}\n\nGoogle Maps: {url}",
"sarLocationShare": "Posizione SAR",
"locationShared": "Posizione condivisa",
"refreshedContacts": "Contatti aggiornati",
"@refreshedContacts": {
@@ -2326,12 +2330,12 @@
}
},
"sarTemplates": "SAR Templates",
"manageSarTemplates": "Manage cursor on target templates",
"addTemplate": "Add Template",
"editTemplate": "Edit Template",
"deleteTemplate": "Delete Template",
"templateName": "Template Name",
"sarTemplates": "Modelli SAR",
"manageSarTemplates": "Gestisci modelli SAR",
"addTemplate": "Aggiungi modello",
"editTemplate": "Modifica modello",
"deleteTemplate": "Elimina modello",
"templateName": "Nome modello",
"templateNameHint": "e.g. Found Person",
"templateEmoji": "Emoji",
"emojiRequired": "Emoji è obbligatorio",
@@ -2340,8 +2344,8 @@
"templateDescriptionHint": "Add additional context...",
"templateColor": "Color",
"previewFormat": "Preview (SAR Message Format)",
"importFromClipboard": "Import",
"exportToClipboard": "Export",
"importFromClipboard": "Importa",
"exportToClipboard": "Esporta",
"deleteTemplateConfirmation": "Delete template '{name}'?",
"templateAdded": "Template added",
"templateUpdated": "Template updated",
@@ -2350,10 +2354,10 @@
"templatesExported": "{count, plural, =1{Exported 1 template to clipboard} other{Exported {count} templates to clipboard}}",
"importFailed": "Import failed: {error}",
"exportFailed": "Export failed: {error}",
"resetToDefaults": "Reset to Defaults",
"resetToDefaultsConfirmation": "This will delete all custom templates and restore the 4 default templates. Continue?",
"reset": "Reset",
"resetComplete": "Templates reset to defaults",
"resetToDefaults": "Ripristina predefiniti",
"resetToDefaultsConfirmation": "Questo eliminerà tutti i modelli personalizzati e ripristinerà i 4 modelli predefiniti. Continuare?",
"reset": "Ripristina",
"resetComplete": "Modelli ripristinati ai valori predefiniti",
"noTemplates": "No templates available",
"tapAddToCreate": "Tap + to create your first template",
"ok": "OK",
@@ -2382,5 +2386,55 @@
"noContactsOrRoomsAvailable": "Nessun contatto o stanza disponibile",
"messagesWillBeSentToPublicChannel": "I messaggi saranno inviati al canale pubblico",
"newMessage": "Nuovo messaggio",
"channel": "Canale"
"channel": "Canale",
"samplePoliceLead": "Capo della Polizia",
"sampleDroneOperator": "Operatore Drone",
"sampleFirefighterAlpha": "Vigile del Fuoco",
"sampleMedicCharlie": "Medico",
"sampleCommandDelta": "Comando",
"sampleFireEngine": "Autopompa",
"sampleAirSupport": "Supporto Aereo",
"sampleBaseCoordinator": "Coordinatore di Base",
"channelEmergency": "Emergenza",
"channelCoordination": "Coordinamento",
"channelUpdates": "Aggiornamenti",
"sampleTeamMember": "Membro del Team di Esempio",
"sampleScout": "Esploratore di Esempio",
"sampleBase": "Base di Esempio",
"sampleSearcher": "Cercatore di Esempio",
"sampleObjectBackpack": " Zaino trovato - colore blu",
"sampleObjectVehicle": " Veicolo abbandonato - controllare il proprietario",
"sampleObjectCamping": " Attrezzatura da campeggio scoperta",
"sampleObjectTrailMarker": " Segnavia trovato fuori sentiero",
"sampleMsgAllTeamsCheckIn": "Tutti i team segnalarsi",
"sampleMsgWeatherUpdate": "Aggiornamento meteo: Cielo sereno, temp 18°C",
"sampleMsgBaseCamp": "Campo base stabilito all'area di raduno",
"sampleMsgTeamAlpha": "Team si sta spostando al settore 2",
"sampleMsgRadioCheck": "Controllo radio - tutte le stazioni rispondano",
"sampleMsgWaterSupply": "Rifornimento idrico disponibile al punto di controllo 3",
"sampleMsgTeamBravo": "Team segnala: settore 1 libero",
"sampleMsgEtaRallyPoint": "ETA al punto di raduno: 15 minuti",
"sampleMsgSupplyDrop": "Lancio rifornimenti confermato per le 14:00",
"sampleMsgDroneSurvey": "Sorveglianza con drone completata - nessun ritrovamento",
"sampleMsgTeamCharlie": "Team richiede rinforzi",
"sampleMsgRadioDiscipline": "Tutte le unità: mantenere disciplina radio",
"sampleMsgUrgentMedical": "URGENTE: Assistenza medica necessaria al settore 4",
"sampleMsgAdultMale": " Uomo adulto, cosciente",
"sampleMsgFireSpotted": "Incendio avvistato - coordinate in arrivo",
"sampleMsgSpreadingRapidly": " Si sta diffondendo rapidamente!",
"sampleMsgPriorityHelicopter": "PRIORITÀ: Necessario supporto elicottero",
"sampleMsgMedicalTeamEnRoute": "Team medico in rotta verso la vostra posizione",
"sampleMsgEvacHelicopter": "Elicottero di evacuazione ETA 10 minuti",
"sampleMsgEmergencyResolved": "Emergenza risolta - tutto libero",
"sampleMsgEmergencyStagingArea": " Area di raduno di emergenza",
"sampleMsgEmergencyServices": "Servizi di emergenza notificati e in risposta",
"sampleAlphaTeamLead": "Capo Team",
"sampleBravoScout": "Esploratore",
"sampleCharlieMedic": "Medico",
"sampleDeltaNavigator": "Navigatore",
"sampleEchoSupport": "Supporto",
"sampleBaseCommand": "Comando di Base",
"sampleFieldCoordinator": "Coordinatore sul Campo",
"sampleMedicalTeam": "Team Medico"
}