feat: Don't open filters from map and change displayed label

https://gitlab.steamware.net/eqn/eqn.ios/-/issues/71
This commit is contained in:
Andrea Busi
2024-06-15 15:16:24 +02:00
parent 3995c29b22
commit c20041127b
12 changed files with 38 additions and 85 deletions
@@ -16,7 +16,6 @@
651901B925F5358700CAFF20 /* EQNMapAnnotationSeismic.swift in Sources */ = {isa = PBXBuildFile; fileRef = 651901B825F5358700CAFF20 /* EQNMapAnnotationSeismic.swift */; };
6525A82625E13FD4008FE0D0 /* SeismicNetworkAdvertiseTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6525A82525E13FD4008FE0D0 /* SeismicNetworkAdvertiseTableViewCell.swift */; };
652A3C6B2A8A757800719796 /* EQNBackgrounPositionDebugViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 652A3C6A2A8A757800719796 /* EQNBackgrounPositionDebugViewController.swift */; };
652C37BD26092B3C0068EC3B /* FiltersViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 652C37BC26092B3C0068EC3B /* FiltersViewModel.swift */; };
65355FFF25F38D3300BB57D2 /* SegnalazioniMapViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65355FFE25F38D3300BB57D2 /* SegnalazioniMapViewController.swift */; };
653604E9262348FA00B2B651 /* EQNBaseMapFilter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 653604E8262348FA00B2B651 /* EQNBaseMapFilter.swift */; };
653C67E225F3CC2E00FE52AC /* EQNCustomAnnotationView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 653C67E125F3CC2E00FE52AC /* EQNCustomAnnotationView.swift */; };
@@ -310,7 +309,6 @@
651901B825F5358700CAFF20 /* EQNMapAnnotationSeismic.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EQNMapAnnotationSeismic.swift; sourceTree = "<group>"; };
6525A82525E13FD4008FE0D0 /* SeismicNetworkAdvertiseTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SeismicNetworkAdvertiseTableViewCell.swift; sourceTree = "<group>"; };
652A3C6A2A8A757800719796 /* EQNBackgrounPositionDebugViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EQNBackgrounPositionDebugViewController.swift; sourceTree = "<group>"; };
652C37BC26092B3C0068EC3B /* FiltersViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FiltersViewModel.swift; sourceTree = "<group>"; };
65355FFE25F38D3300BB57D2 /* SegnalazioniMapViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SegnalazioniMapViewController.swift; sourceTree = "<group>"; };
653604E8262348FA00B2B651 /* EQNBaseMapFilter.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EQNBaseMapFilter.swift; sourceTree = "<group>"; };
653B791F2934B6DA00E8FFFB /* EQNNotificationService.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = EQNNotificationService.entitlements; sourceTree = "<group>"; };
@@ -686,7 +684,6 @@
isa = PBXGroup;
children = (
DC974AFE251748B300A139EC /* SeismicFiltersViewController.swift */,
652C37BC26092B3C0068EC3B /* FiltersViewModel.swift */,
);
path = Filters;
sourceTree = "<group>";
@@ -1562,7 +1559,6 @@
DCD4571C24F6CF0D00B58304 /* EQNGenericValue.swift in Sources */,
8C4E343F215012FA008B0D2A /* EQNManager.m in Sources */,
DCAA913F24F68A1D00145A3D /* SettingMultivaluesTableViewCell.swift in Sources */,
652C37BD26092B3C0068EC3B /* FiltersViewModel.swift in Sources */,
DCF9E14F24F6EA07002B6B1D /* EQNSeismicNetwork.swift in Sources */,
DC2814302519C24400C1AFF7 /* SeismicNetworkTableViewCell.swift in Sources */,
650247122A61832F001AC512 /* EQNBackgroundPositionDebugHelper.swift in Sources */,
@@ -1,49 +0,0 @@
//
// FiltersViewModel.swift
// Earthquake Network
//
// Created by Andrea Busi on 22/03/21.
// Copyright © 2021 Earthquake Network. All rights reserved.
//
import Foundation
struct FiltersViewModel {
let magnitude: String
let distance: String
let timeframe: String
init() {
let magnitudoMinima = EQNData.filterMagnitude(for: EQNSeismic.shared.minimumMagnitude)
self.magnitude = Self.formattedMagnitude(magnitudoMinima.value)
let distanzaMassima = EQNData.filterRadius(for: EQNSeismic.shared.maximumDistance)
self.distance = Self.formattedDistance(distanzaMassima.value)
self.timeframe = ""
// let periodoTemporale = EQNData.periodoTemporale(for: EQNSeismic.shared.periodoTemporale)
// self.timeframe = Self.formattedTimeframe(periodoTemporale.value)
}
// MARK: - Private
private static func formattedMagnitude(_ magnitude: String) -> String {
return magnitude
}
private static func formattedDistance(_ distance: String) -> String {
if distance == EQNData.MaxRaggioSisma {
return ""
}
return "\(distance)km"
}
private static func formattedTimeframe(_ timeframe: String) -> String {
let time = Int(timeframe) ?? 0
if time < 60 {
return "\(time)m"
}
return "\(time/60)h"
}
}
@@ -19,7 +19,7 @@ class SeismicNetworksMapDetailViewController: EQNBaseMapViewController {
// MARK: - State
override var isFilterViewVisible: Bool {
// a custom filter view id displayed
// a custom filter view is displayed
true
}
weak var delegate: SeismicNetworksMapDetailViewControllerDelegate?
@@ -42,10 +42,7 @@ class SeismicNetworksMapDetailViewController: EQNBaseMapViewController {
seismicsFilterLabel.bottomAnchor.constraint(equalTo: view.bottomAnchor).isActive = true
seismicsFilterLabel.leadingAnchor.constraint(equalTo: view.leadingAnchor, constant: 8.0).isActive = true
seismicsFilterLabel.trailingAnchor.constraint(equalTo: view.trailingAnchor, constant: -8.0).isActive = true
// tap recognizer
let tapRecognizer = UITapGestureRecognizer(target: self, action: #selector(filtersTapped(_:)))
view.addGestureRecognizer(tapRecognizer)
return view
}()
@@ -130,13 +127,14 @@ class SeismicNetworksMapDetailViewController: EQNBaseMapViewController {
// MARK: - Private
private func loadFiltersRecap() {
let filters = FiltersViewModel()
let recap = "\(NSLocalizedString("filter_filter", comment: "")): "
+ "M≥\(filters.magnitude) "
+ "D≤\(filters.distance) "
+ "T≤\(filters.timeframe)"
seismicsFilterLabel.text = recap
let filter = EQNSeismic.shared.filterOption
let text = switch filter {
case .inRadius: NSLocalizedString("filter_area", comment: "")
case .positionRelevant: NSLocalizedString("filter_relevant", comment: "")
case .worldWide: NSLocalizedString("filter_all", comment: "")
}
seismicsFilterLabel.text = text
}
private func addCircles(for location: CLLocation?) {
@@ -161,17 +159,7 @@ class SeismicNetworksMapDetailViewController: EQNBaseMapViewController {
// creo nuovi cerchi
mapView.addOverlays(circles)
}
// MARK: - Actions
@objc override func filtersTapped(_ sender: UIGestureRecognizer) {
let controller = SeismicFiltersViewController.makeViewController()
controller.delegate = self
controller.modalPresentationStyle = .overCurrentContext
controller.modalTransitionStyle = .crossDissolve
present(controller, animated: true, completion: nil)
}
// MARK: - Map
override func setupAnnotationView(for annotation: MKAnnotation, on mapView: MKMapView) -> MKAnnotationView? {
@@ -56,7 +56,9 @@
"share_notified" = "قررت من خلال التطبيق منبه الزلازل. قم بتنزيل التطبيق من https://sismo.app/download/ لاستلام تنبيهات في الوقت الفعلي حول #earthquake @SismoDetector";
"manual_sure" = "هل تريد فعلا التنقرير عن زلزال أرضي؟";
"manual_yes" = "نعم";
"filter_filter" = "مرشحات";
"filter_area" = "الزلازل المعروضة: في دائرة نصف قطرها";
"filter_relevant" = "الزلازل المعروضة: ذات صلة";
"filter_all" = "الزلازل المعروضة: الكل";
"liveview_unknown_location" = "موقفك غير معروف. تمكين موقع الهاتف الذكي من تكوين الهاتف الذكي";
"map_number" = "تم الكشف عن زلزال بواسطة %@ الهواتف الذكية";
"permission_location_no" = "لقد اخترت منع التطبيق من قراءة موقع الجهاز. لن تستلم تنبيهات وإشعارات في الوقت الفعلي";
@@ -55,7 +55,9 @@
"share_notified" = "Έχει αναφερθεί μέσω της εφαρμογής Ανιχνευτής Σεισμών. Κατέβασε την εφαρμογή από το https://sismo.app/download/ για να λαμβάνεις σε πραγματικό χρόνο ειδοποιήσεις #σεισμού @SismoDetector";
"manual_sure" = "Θέλεις πράγματι να κοινοποιήσεις έναν σεισμό;";
"manual_yes" = "Ναι";
"filter_filter" = "Φίλτρα";
"filter_area" = "Εμφανίζονται σεισμοί: στην ακτίνα";
"filter_relevant" = "Εμφανίζονται σεισμοί: σχετικοί";
"filter_all" = "Εμφανίζονται σεισμοί: όλοι (M≥2)";
"liveview_unknown_location" = "Η θέση σου είναι άγνωστη. Ενεργοποίησε την τοποθεσία του smartphone από την διαμόρφωση του smartphone";
"map_number" = "Ανιχνεύθηκε δόνηση από %@ smartphone";
"permission_location_no" = "Έχεις επιλέξει να αποτρέπεις την εφαρμογή από την ανάγνωση της τοποθεσίας της συσκευής. ΔΕΝ θα λαμβάνεις κοινοποιήσεις και ειδοποιήσεις σε πραγματικό χρόνο";
@@ -55,7 +55,9 @@
"share_notified" = "Reported through the app Earthquake Network. Download the app from https://sismo.app/download/ to receive real time alerts of #earthquake @SismoDetector";
"manual_sure" = "Do you really want to notify an earthquake?";
"manual_yes" = "Yes";
"filter_filter" = "Filters";
"filter_area" = "Quakes shown: in the radius";
"filter_relevant" = "Quakes shown: relevant";
"filter_all" = "Quakes shown: all (M≥2)";
"liveview_unknown_location" = "Your position is unknown. Enable smartphone location from smartphone configuration";
"map_number" = "Quake detected by %@ smartphones";
"permission_location_no" = "You have chosen to prevent the app from reading the location of the device. You will NOT receive real-time notifications and alerts";
@@ -55,7 +55,9 @@
"share_notified" = "Reportado a través de la app Sismo Detector. Descarga la app desde https://sismo.app/download/ para recibir alertas de #sismo en tiempo real @SismoDetector";
"manual_sure" = "¿Estas seguro de querer reportar un sismo?";
"manual_yes" = "Sí";
"filter_filter" = "Filtros";
"filter_area" = "Sismos mostrados: en el radio";
"filter_relevant" = "Sismos mostrados: relevantes";
"filter_all" = "Sismos mostrados: todos (M≥2)";
"liveview_unknown_location" = "Tu posición es desconocida. Habilitar la ubicación del smartphone desde la página de configuración del smartphone";
"map_number" = "Sismo detectado por %@ smartphones";
"permission_location_no" = "Ha elegido evitar que la aplicación lea la ubicación de tu dispositivo. NO recibirá notificaciones y alertas en tiempo real";
@@ -55,7 +55,9 @@
"share_notified" = "Signalé via l'app Détecteur de Séisme. Téléchargez l'app depuis https://sismo.app/download/ pour recevoir des alertes de #séisme en temps réel @SismoDetector";
"manual_sure" = "Voulez-vous vraiment signaler un séisme ?";
"manual_yes" = "Oui";
"filter_filter" = "Filtres";
"filter_area" = "Séismes affichés : dans le rayon";
"filter_relevant" = "Séismes affichés : pertinents";
"filter_all" = "Séismes affichés : tous (M≥2)";
"liveview_unknown_location" = "Votre position est inconnue. Activez la localisation à partir de la page de configuration de votre appareil";
"map_number" = "Séisme détecté par %@ smartphones";
"permission_location_no" = "Vous avez choisi d'empêcher l'app de lire la position de votre appareil. Vous ne recevrez PAS de notifications et d'alertes en temps réel";
@@ -55,7 +55,9 @@
"share_notified" = "Prijavljen putem aplikacije Detektor Potresa. Preuzmite aplikaciju na https://sismo.app/download/ da biste u stvarnom vremenu primali upozorenja kada se dogodi #potres @DetektorPotresa";
"manual_sure" = "Želite li zaista poslati obavijest o potresu?";
"manual_yes" = "Da";
"filter_filter" = "Filteri";
"filter_area" = "Prikazani potresi: u polumjeru";
"filter_relevant" = "Prikazani potresi: relevantni";
"filter_all" = "Prikazani potresi: svi (M≥2)";
"liveview_unknown_location" = "Vaš položaj nije poznat. Omogući lokaciju u konfiguraciji pametnog telefona";
"map_number" = "Potres je otkrio sljedeći broj pametnih telefona: %@";
"permission_location_no" = "Odlučili ste onemogućiti aplikaciji očitavanje lokacije uređaja. NEĆETE primati obavijesti i upozorenja u stvarnom vremenu";
@@ -55,7 +55,9 @@
"share_notified" = "Dilaporkan melalui aplikasi Detektor Gempa. Unduh aplikasi dari https://sismo.app/download/ untuk menerima peringatan real time #gempa @SismoDetector";
"manual_sure" = "Yakin ingin memberitahukan adanya gempa?";
"manual_yes" = "Ya";
"filter_filter" = "Filter";
"filter_area" = "Gempa yang ditampilkan: dalam radius";
"filter_relevant" = "Gempa bumi yang ditampilkan: relevan";
"filter_all" = "Gempa bumi ditampilkan: semua (M≥2)";
"liveview_unknown_location" = "Posisi Anda tidak diketahui. Aktifkan lokasi smartphone dari konfigurasi smartphone";
"map_number" = "Gempa terdeteksi oleh %@ smartphone";
"permission_location_no" = "Anda telah memilih untuk mencegah aplikasi membaca lokasi perangkat. Anda TIDAK akan menerima pemberitahuan dan peringatan secara real time";
@@ -55,7 +55,9 @@
"share_notified" = "Segnalato tramite la app Rilevatore Terremoto. Scarica la app da https://sismo.app/download/ per ricevere allerte #terremoto in tempo reale @SismoDetector";
"manual_sure" = "Vuoi davvero segnalare un sisma?";
"manual_yes" = "Sì";
"filter_filter" = "Filtri";
"filter_area" = "Sismi mostrati: nel raggio";
"filter_relevant" = "Sismi mostrati: rilevanti";
"filter_all" = "Sismi mostrati: tutti (M≥2)";
"liveview_unknown_location" = "La tua posizione è sconosciuta. Abilita la localizzazione dalla pagina di configurazione del tuo dispositivo";
"map_number" = "Sisma rilevato da %@ smartphone";
"permission_location_no" = "Hai scelto di impedire alla app di leggere la posizione del tuo dispositivo. NON riceverai notifiche ed allerte in tempo reale.";
@@ -55,7 +55,9 @@
"share_notified" = "Deprem Ağı uygulaması aracılığıyla bildirildi. @SismoDetector gerçek zamanlı #deprem uyarılarını almak için uygulamayı https://sismo.app/download/ adresinden indirin.";
"manual_sure" = "Gerçekten bir depremi bildirmek ister misiniz?";
"manual_yes" = "Evet";
"filter_filter" = "Filtreler";
"filter_area" = "Gösterilen depremler: yarıçap içinde";
"filter_relevant" = "Gösterilen depremler: alakalı";
"filter_all" = "Gösterilen depremler: tümü (M≥2)";
"liveview_unknown_location" = "Konumunuz bilinmiyor. Akıllı telefon yapılandırmasından akıllı telefon konumunu etkinleştirin";
"map_number" = "%@ akıllı telefon tarafından tespit edilen deprem";
"permission_location_no" = "Uygulamanın cihazın konumunu okumasını engellemeyi seçtiniz. Gerçek zamanlı bildirim ve uyarılar ALMAYACAKSINIZ";