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

@@ -620,6 +620,10 @@
"textCopiedToClipboard": "Tekst kopiran u međuspremnik",
"deleteMessage": "Izbriši poruku",
"deleteMessageConfirmation": "Jeste li sigurni da želite izbrisati ovu poruku?",
"shareLocation": "Podijeli lokaciju",
"shareLocationText": "{markerInfo}\n\nKoordinate: {lat}, {lon}\n\nGoogle Maps: {url}",
"sarLocationShare": "SAR Lokacija",
"locationShared": "Lokacija podijeljena",
"refreshedContacts": "Kontakti osvježeni",
@@ -790,13 +794,13 @@
"failedToGetLocation": "Neuspjelo dohvaćanje lokacije: {error}",
"sarTemplates": "SAR Templates",
"manageSarTemplates": "Manage cursor on target templates",
"addTemplate": "Add Template",
"editTemplate": "Edit Template",
"deleteTemplate": "Delete Template",
"templateName": "Template Name",
"templateNameHint": "e.g. Found Person",
"sarTemplates": "SAR predlošci",
"manageSarTemplates": "Upravljanje SAR predlošcima",
"addTemplate": "Dodaj predložak",
"editTemplate": "Uredi predložak",
"deleteTemplate": "Izbriši predložak",
"templateName": "Naziv predloška",
"templateNameHint": "npr. Pronađena osoba",
"templateEmoji": "Emoji",
"emojiRequired": "Emoji je obavezan",
"nameRequired": "Ime je obavezno",
@@ -804,8 +808,8 @@
"templateDescriptionHint": "Add additional context...",
"templateColor": "Color",
"previewFormat": "Preview (SAR Message Format)",
"importFromClipboard": "Import",
"exportToClipboard": "Export",
"importFromClipboard": "Uvezi",
"exportToClipboard": "Izvezi",
"deleteTemplateConfirmation": "Delete template '{name}'?",
"templateAdded": "Template added",
"templateUpdated": "Template updated",
@@ -814,10 +818,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": "Vrati na zadane",
"resetToDefaultsConfirmation": "Ovo će izbrisati sve prilagođene predloške i vratiti 4 zadana predloška. Nastaviti?",
"reset": "Vrati",
"resetComplete": "Predlošci vraćeni na zadane",
"noTemplates": "No templates available",
"tapAddToCreate": "Tap + to create your first template",
"ok": "OK",
@@ -846,5 +850,55 @@
"noContactsOrRoomsAvailable": "Nema dostupnih kontakata ili soba",
"messagesWillBeSentToPublicChannel": "Poruke će biti poslane na javni kanal",
"newMessage": "Nova poruka",
"channel": "Kanal"
"channel": "Kanal",
"samplePoliceLead": "Voditelj Policije",
"sampleDroneOperator": "Operater Drona",
"sampleFirefighterAlpha": "Vatrogasac",
"sampleMedicCharlie": "Medičar",
"sampleCommandDelta": "Zapovjedništvo",
"sampleFireEngine": "Vatrogasno Vozilo",
"sampleAirSupport": "Zračna Podrška",
"sampleBaseCoordinator": "Koordinator Baze",
"channelEmergency": "Hitno",
"channelCoordination": "Koordinacija",
"channelUpdates": "Ažuriranja",
"sampleTeamMember": "Primjer Člana Tima",
"sampleScout": "Primjer Izviđača",
"sampleBase": "Primjer Baze",
"sampleSearcher": "Primjer Tragača",
"sampleObjectBackpack": " Pronađen ruksak - plava boja",
"sampleObjectVehicle": " Napušteno vozilo - provjeriti vlasnika",
"sampleObjectCamping": " Otkrivena oprema za kampiranje",
"sampleObjectTrailMarker": " Oznaka staze pronađena izvan puta",
"sampleMsgAllTeamsCheckIn": "Svi timovi se jave",
"sampleMsgWeatherUpdate": "Ažuriranje vremena: Vedro nebo, temp 18°C",
"sampleMsgBaseCamp": "Bazni kamp uspostavljen na okupljalište",
"sampleMsgTeamAlpha": "Tim se kreće prema sektoru 2",
"sampleMsgRadioCheck": "Provjera radija - sve stanice odgovorite",
"sampleMsgWaterSupply": "Opskrba vodom dostupna na kontrolnoj točki 3",
"sampleMsgTeamBravo": "Tim izvještava: sektor 1 čist",
"sampleMsgEtaRallyPoint": "ETA do točke okupljanja: 15 minuta",
"sampleMsgSupplyDrop": "Isporuka zaliha potvrđena za 14:00",
"sampleMsgDroneSurvey": "Nadzor dronom završen - bez nalaza",
"sampleMsgTeamCharlie": "Tim traži pojačanje",
"sampleMsgRadioDiscipline": "Sve jedinice: održavati radio disciplinu",
"sampleMsgUrgentMedical": "HITNO: Potrebna medicinska pomoć u sektoru 4",
"sampleMsgAdultMale": " Odrasli muškarac, pri svijesti",
"sampleMsgFireSpotted": "Uočen požar - koordinate slijede",
"sampleMsgSpreadingRapidly": " Širi se brzo!",
"sampleMsgPriorityHelicopter": "PRIORITET: Potrebna podrška helikoptera",
"sampleMsgMedicalTeamEnRoute": "Medicinski tim na putu do vaše lokacije",
"sampleMsgEvacHelicopter": "Helikopter za evakuaciju ETA 10 minuta",
"sampleMsgEmergencyResolved": "Hitnost riješena - sve čisto",
"sampleMsgEmergencyStagingArea": " Hitno okupljalište",
"sampleMsgEmergencyServices": "Hitne službe obaviještene i odgovaraju",
"sampleAlphaTeamLead": "Voditelj Tima",
"sampleBravoScout": "Izviđač",
"sampleCharlieMedic": "Medičar",
"sampleDeltaNavigator": "Navigator",
"sampleEchoSupport": "Podrška",
"sampleBaseCommand": "Zapovjedništvo Baze",
"sampleFieldCoordinator": "Terenski Koordinator",
"sampleMedicalTeam": "Medicinski Tim"
}