c7bf8ecc94
- Add new fitlters - Recreate controllers and support classes in Swift Resolves: https://gitlab.steamware.net/eqn/eqn.ios/-/issues/14
197 lines
9.3 KiB
Swift
197 lines
9.3 KiB
Swift
//
|
|
// EQNData.swift
|
|
// Earthquake Network
|
|
//
|
|
// Created by Busi Andrea on 26/08/2020.
|
|
// Copyright © 2020 Earthquake Network. All rights reserved.
|
|
//
|
|
|
|
import Foundation
|
|
|
|
|
|
@objc class EQNData: NSObject {
|
|
|
|
@objc public static let DefaultRaggioSisma = EQNGenericValue(value:"100000", display:"Qualsiasi distanza")
|
|
@objc public static let DefaultMagitudoDebole = EQNGenericValue(value:"2.0", display:"Magnitudo >= 2.0")
|
|
@objc public static let DefaultMagitudoForte = EQNGenericValue(value:"5.5", display:"Magnitudo >= 5.5")
|
|
@objc public static let DefaultSeismicToNotify = EQNGenericValue(value: "0", display: "Qualsiasi intensità")
|
|
@objc public static let DefaultDoNotDisturbStartTime = 8
|
|
@objc public static let DefaultDoNotDisturbEndTime = 22
|
|
@objc public static let DefaultPeriodoTemporale = EQNGenericValue(value: "1440", display: "Un giorno")
|
|
|
|
// MARK: - Public
|
|
|
|
@objc class func raggioSismi() -> [EQNGenericValue] {
|
|
[
|
|
EQNGenericValue(value:"50", display:"50 km"),
|
|
EQNGenericValue(value:"100", display:"100 km"),
|
|
EQNGenericValue(value:"200", display:"200 km"),
|
|
EQNGenericValue(value:"300", display:"300 km"),
|
|
EQNGenericValue(value:"400", display:"400 km"),
|
|
EQNGenericValue(value:"500", display:"500 km"),
|
|
EQNGenericValue(value:"600", display:"600 km"),
|
|
EQNGenericValue(value:"800", display:"800 km"),
|
|
EQNGenericValue(value:"1000", display:"1000 km"),
|
|
EQNGenericValue(value:"2000", display:"2000 km"),
|
|
EQNGenericValue(value:"4000", display:"4000 km"),
|
|
EQNGenericValue(value:"100000", display:"Qualsiasi distanza"),
|
|
]
|
|
}
|
|
|
|
/// Returns the EQNGenericValue for the given value, or the default one
|
|
/// - Parameter value: Sisma value to search
|
|
/// - Returns: Found value or default
|
|
@objc class func raggioSisma(for value: String?) -> EQNGenericValue {
|
|
if let value = value, let genericValue = Self.raggioSismi().first(where: { $0.value == value }) {
|
|
return genericValue
|
|
}
|
|
return Self.DefaultRaggioSisma
|
|
}
|
|
|
|
@objc class func magitudoDeboli() -> [EQNGenericValue] {
|
|
[
|
|
EQNGenericValue(value:"0.0", display:"Magnitudo >= 0.0"),
|
|
EQNGenericValue(value:"0.5", display:"Magnitudo >= 0.5"),
|
|
EQNGenericValue(value:"1.0", display:"Magnitudo >= 1.0"),
|
|
EQNGenericValue(value:"1.5", display:"Magnitudo >= 1.5"),
|
|
EQNGenericValue(value:"2.0", display:"Magnitudo >= 2.0"),
|
|
EQNGenericValue(value:"2.5", display:"Magnitudo >= 2.5"),
|
|
EQNGenericValue(value:"3.0", display:"Magnitudo >= 3.0"),
|
|
EQNGenericValue(value:"3.5", display:"Magnitudo >= 3.5"),
|
|
EQNGenericValue(value:"4.0", display:"Magnitudo >= 4.0"),
|
|
EQNGenericValue(value:"4.5", display:"Magnitudo >= 4.5"),
|
|
EQNGenericValue(value:"5.0", display:"Magnitudo >= 5.0"),
|
|
EQNGenericValue(value:"5.5", display:"Magnitudo >= 5.5")
|
|
]
|
|
}
|
|
|
|
/// Returns the EQNGenericValue for the given value, or the default one
|
|
/// - Parameter value: Magnitudo value to search
|
|
/// - Returns: Found value or default
|
|
@objc class func magitudoDebole(for value: String?) -> EQNGenericValue {
|
|
if let value = value, let genericValue = Self.magitudoDeboli().first(where: { $0.value == value }) {
|
|
return genericValue
|
|
}
|
|
return Self.DefaultMagitudoDebole
|
|
}
|
|
|
|
@objc class func magitudoForti() -> [EQNGenericValue] {
|
|
[
|
|
EQNGenericValue(value:"5.5", display:"Magnitudo >= 5.5"),
|
|
EQNGenericValue(value:"6.0", display:"Magnitudo >= 6.0"),
|
|
EQNGenericValue(value:"6.5", display:"Magnitudo >= 6.5"),
|
|
EQNGenericValue(value:"7.0", display:"Magnitudo >= 7.0"),
|
|
EQNGenericValue(value:"7.5", display:"Magnitudo >= 7.5")
|
|
]
|
|
}
|
|
|
|
/// Returns the EQNGenericValue for the given value, or the default one
|
|
/// - Parameter value: Magnitudo value to search
|
|
/// - Returns: Found value or default
|
|
@objc class func magitudoForte(for value: String?) -> EQNGenericValue {
|
|
if let value = value, let genericValue = Self.magitudoForti().first(where: { $0.value == value }) {
|
|
return genericValue
|
|
}
|
|
return Self.DefaultMagitudoForte
|
|
}
|
|
|
|
@objc class func seismicNetworks() -> [EQNSeismicNetwork] {
|
|
[
|
|
EQNSeismicNetwork(acronym: "USGS", country: NSLocalizedString("Globale", comment: ""), extended: ""),
|
|
EQNSeismicNetwork(acronym: "INGV", country: NSLocalizedString("Italia", comment: ""), extended: ""),
|
|
EQNSeismicNetwork(acronym: "IGN", country: NSLocalizedString("Spagna", comment: ""), extended: ""),
|
|
EQNSeismicNetwork(acronym: "CSI", country: NSLocalizedString("Cina", comment: ""), extended: ""),
|
|
EQNSeismicNetwork(acronym: "JMA", country: NSLocalizedString("Giappone", comment: ""), extended: ""),
|
|
EQNSeismicNetwork(acronym: "Ineter", country: NSLocalizedString("Nicaragua", comment: ""), extended: ""),
|
|
EQNSeismicNetwork(acronym: "SSN", country: NSLocalizedString("Messico", comment: ""), extended: ""),
|
|
EQNSeismicNetwork(acronym: "SGC", country: NSLocalizedString("Colombia", comment: ""), extended: ""),
|
|
EQNSeismicNetwork(acronym: "RSN", country: NSLocalizedString("Costa Rica", comment: ""), extended: ""),
|
|
EQNSeismicNetwork(acronym: "CSN", country: NSLocalizedString("Cile", comment: ""), extended: ""),
|
|
EQNSeismicNetwork(acronym: "FUNVISIS", country: NSLocalizedString("Venezuela", comment: ""), extended: ""),
|
|
EQNSeismicNetwork(acronym: "GeoNet", country: NSLocalizedString("Nuova Zelanda", comment: ""), extended: ""),
|
|
EQNSeismicNetwork(acronym: "INPRES", country: NSLocalizedString("Argentina", comment: ""), extended: ""),
|
|
EQNSeismicNetwork(acronym: "IGEPN", country: NSLocalizedString("Ecuador", comment: ""), extended: ""),
|
|
EQNSeismicNetwork(acronym: "IGP", country: NSLocalizedString("Perù", comment: ""), extended: ""),
|
|
EQNSeismicNetwork(acronym: "UASD", country: NSLocalizedString("Repubblica Dominicana", comment: ""), extended: ""),
|
|
EQNSeismicNetwork(acronym: "EMSC", country: NSLocalizedString("Globale", comment: ""), extended: "")
|
|
]
|
|
}
|
|
|
|
@objc class func seismicNetworkAcronyms() -> [String] {
|
|
Self.seismicNetworks().map { $0.acronym }
|
|
}
|
|
|
|
@objc class func seismicNetworkCountries() -> [String] {
|
|
Self.seismicNetworks().map { $0.country }
|
|
}
|
|
|
|
@objc class func seismic(for acronym: String?) -> EQNSeismicNetwork? {
|
|
guard let acronym = acronym else { return nil }
|
|
return Self.seismicNetworks().first(where: { $0.acronym == acronym })
|
|
}
|
|
|
|
@objc class func seismicToNotify() -> [EQNGenericValue] {
|
|
[
|
|
EQNGenericValue(value:"0", display:"Qualsiasi intensità"),
|
|
EQNGenericValue(value:"1", display:"Solo sismi forti")
|
|
]
|
|
}
|
|
|
|
@objc class func seismicToNotify(for value: String?) -> EQNGenericValue {
|
|
if let value = value, let genericValue = Self.seismicToNotify().first(where: { $0.value == value }) {
|
|
return genericValue
|
|
}
|
|
return Self.DefaultSeismicToNotify
|
|
}
|
|
|
|
@objc class func doNotDisturbStartDate(from date: Date?) -> Date {
|
|
if let date = date {
|
|
return date
|
|
}
|
|
|
|
// return default
|
|
let calendar = Calendar(identifier: .gregorian)
|
|
let units: Set<Calendar.Component> = [.year, .month, .day, .hour, .minute]
|
|
var components = calendar.dateComponents(units, from: Date())
|
|
components.hour = Self.DefaultDoNotDisturbStartTime
|
|
components.minute = 00
|
|
return calendar.date(from: components)!
|
|
}
|
|
|
|
|
|
@objc class func doNotDisturbEndDate(from date: Date?) -> Date {
|
|
if let date = date {
|
|
return date
|
|
}
|
|
|
|
// return default
|
|
let calendar = Calendar(identifier: .gregorian)
|
|
let units: Set<Calendar.Component> = [.year, .month, .day, .hour, .minute]
|
|
var components = calendar.dateComponents(units, from: Date())
|
|
components.hour = Self.DefaultDoNotDisturbEndTime
|
|
components.minute = 00
|
|
return calendar.date(from: components)!
|
|
}
|
|
|
|
@objc class func periodiTemporali() -> [EQNGenericValue] {
|
|
[
|
|
EQNGenericValue(value: "10", display: "10 minuti"),
|
|
EQNGenericValue(value: "60", display: "Un ora"),
|
|
EQNGenericValue(value: "120", display: "Due ore"),
|
|
EQNGenericValue(value: "360", display: "Sei ore"),
|
|
EQNGenericValue(value: "720", display: "Dodici ore"),
|
|
EQNGenericValue(value: "1440", display: "Un giorno")
|
|
]
|
|
}
|
|
|
|
/// Returns the EQNGenericValue for the given value, or the default one
|
|
/// - Parameter value: Temporal unit value to search
|
|
/// - Returns: Found value or default
|
|
@objc class func periodoTemporale(for value: String?) -> EQNGenericValue {
|
|
if let value = value, let genericValue = Self.periodiTemporali().first(where: { $0.value == value }) {
|
|
return genericValue
|
|
}
|
|
return Self.DefaultPeriodoTemporale
|
|
}
|
|
}
|