diff --git a/Ravens.xcodeproj/project.pbxproj b/Ravens.xcodeproj/project.pbxproj index f135a424..a76ee84f 100644 --- a/Ravens.xcodeproj/project.pbxproj +++ b/Ravens.xcodeproj/project.pbxproj @@ -13,9 +13,8 @@ 470411132BB2B87300A498F5 /* LocationManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 470411122BB2B87300A498F5 /* LocationManager.swift */; }; 470F112F2BB18C5E003FE0C0 /* GeoJSONViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 470F112E2BB18C5E003FE0C0 /* GeoJSONViewModel.swift */; }; 4717C0BF2B9CC41400B570D0 /* YearView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4717C0BE2B9CC41400B570D0 /* YearView.swift */; }; - 4725B9612BB14BD400F6F137 /* LocationViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4725B9602BB14BD400F6F137 /* LocationViewModel.swift */; }; + 4725B9612BB14BD400F6F137 /* LocationIdViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4725B9602BB14BD400F6F137 /* LocationIdViewModel.swift */; }; 4725B9632BB14C2C00F6F137 /* LocationJSON.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4725B9622BB14C2C00F6F137 /* LocationJSON.swift */; }; - 4725B9652BB14E5500F6F137 /* LocationLatLongView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4725B9642BB14E5500F6F137 /* LocationLatLongView.swift */; }; 474093822B558F82004F10C5 /* ObservationDetailsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 474093812B558F82004F10C5 /* ObservationDetailsView.swift */; }; 474093842B55B5DE004F10C5 /* ManualView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 474093832B55B5DE004F10C5 /* ManualView.swift */; }; 474093872B55B7AC004F10C5 /* MarkdownUI in Frameworks */ = {isa = PBXBuildFile; productRef = 474093862B55B7AC004F10C5 /* MarkdownUI */; }; @@ -99,9 +98,8 @@ 470411122BB2B87300A498F5 /* LocationManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LocationManager.swift; sourceTree = ""; }; 470F112E2BB18C5E003FE0C0 /* GeoJSONViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GeoJSONViewModel.swift; sourceTree = ""; }; 4717C0BE2B9CC41400B570D0 /* YearView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YearView.swift; sourceTree = ""; }; - 4725B9602BB14BD400F6F137 /* LocationViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LocationViewModel.swift; sourceTree = ""; }; + 4725B9602BB14BD400F6F137 /* LocationIdViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LocationIdViewModel.swift; sourceTree = ""; }; 4725B9622BB14C2C00F6F137 /* LocationJSON.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LocationJSON.swift; sourceTree = ""; }; - 4725B9642BB14E5500F6F137 /* LocationLatLongView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LocationLatLongView.swift; sourceTree = ""; }; 474093812B558F82004F10C5 /* ObservationDetailsView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ObservationDetailsView.swift; sourceTree = ""; }; 474093832B55B5DE004F10C5 /* ManualView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ManualView.swift; sourceTree = ""; }; 474C40282B4BC4040038B3A5 /* Ravens.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Ravens.app; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -254,13 +252,13 @@ 474C40542B4BFDC90038B3A5 /* RegionListViewModel.swift */, 474C40602B4C08FB0038B3A5 /* LanguageViewModel.swift */, 474C408B2B4DAC590038B3A5 /* RegionViewModel.swift */, - 474C40992B50073C0038B3A5 /* ObservationsViewModel.swift */, 47568D2E2B59BA1300E69B1A /* ObservationsSpeciesViewModel.swift */, 47DB89B32B7A397F0093C1ED /* ObsViewModel.swift */, + 474C40992B50073C0038B3A5 /* ObservationsViewModel.swift */, 4785CD1C2B964C0E002F52BE /* ObservationsUserViewModel.swift */, 4704110C2BB1C82000A498F5 /* ObservationsLocationViewModel.swift */, 4785CD182B95C856002F52BE /* UserViewModel.swift */, - 4725B9602BB14BD400F6F137 /* LocationViewModel.swift */, + 4725B9602BB14BD400F6F137 /* LocationIdViewModel.swift */, 470F112E2BB18C5E003FE0C0 /* GeoJSONViewModel.swift */, 470411122BB2B87300A498F5 /* LocationManager.swift */, ); @@ -312,7 +310,6 @@ 4785CD202B964FAC002F52BE /* MapObservationsUserView.swift */, 4785CD1A2B95C87E002F52BE /* UserView.swift */, 476FA8A52B9B031B00665613 /* SoundsView.swift */, - 4725B9642BB14E5500F6F137 /* LocationLatLongView.swift */, ); path = Views; sourceTree = ""; @@ -467,9 +464,8 @@ 474C408E2B4DB2850038B3A5 /* RegionsView.swift in Sources */, 474C40532B4BFD090038B3A5 /* RegionList.swift in Sources */, 474C408A2B4DAA110038B3A5 /* Region.swift in Sources */, - 4725B9612BB14BD400F6F137 /* LocationViewModel.swift in Sources */, + 4725B9612BB14BD400F6F137 /* LocationIdViewModel.swift in Sources */, 47568D2D2B59B54500E69B1A /* ObservationsSpecies.swift in Sources */, - 4725B9652BB14E5500F6F137 /* LocationLatLongView.swift in Sources */, 47B7E3B62B5D9C5500B88043 /* FloatingButton.swift in Sources */, 474C404C2B4BCE340038B3A5 /* SpeciesDetailsView.swift in Sources */, 474C402E2B4BC4040038B3A5 /* ContentView.swift in Sources */, diff --git a/Ravens/ContentView.swift b/Ravens/ContentView.swift index 76552071..9fc71580 100644 --- a/Ravens/ContentView.swift +++ b/Ravens/ContentView.swift @@ -64,7 +64,7 @@ struct ContentView: View { // Tab 2 ZStack { MapObservationsLocationView(sharedLocationId: Binding(get: { self.locationId ?? 0 }, set: { self.locationId = $0 })) - ObservationCircle(toggle: $isSheetObservationsLocationsViewPresented, colorHex: "d7b731") + ObservationCircle(toggle: $isSheetObservationsLocationsViewPresented, colorHex: "a7b731") } .tabItem { Text("Area") diff --git a/Ravens/Localizable.xcstrings b/Ravens/Localizable.xcstrings index 44164885..613e777b 100644 --- a/Ravens/Localizable.xcstrings +++ b/Ravens/Localizable.xcstrings @@ -451,9 +451,6 @@ }, "Local map" : { - }, - "Locations" : { - }, "Login" : { "localizations" : { @@ -980,9 +977,6 @@ } } } - }, - "View on Website" : { - }, "Voelt als: %@" : { diff --git a/Ravens/Models/LocationViewModel.swift b/Ravens/Models/LocationIdViewModel.swift similarity index 91% rename from Ravens/Models/LocationViewModel.swift rename to Ravens/Models/LocationIdViewModel.swift index 4765580d..56afe83d 100644 --- a/Ravens/Models/LocationViewModel.swift +++ b/Ravens/Models/LocationIdViewModel.swift @@ -8,7 +8,8 @@ import Foundation import Alamofire -class LocationViewModel: ObservableObject { +// get the LocationId from latitude and longitude +class LocationIdViewModel: ObservableObject { @Published var locations: [LocationJSON] = [] @Published var isLoading: Bool = false diff --git a/Ravens/Models/ObservationsLocationViewModel.swift b/Ravens/Models/ObservationsLocationViewModel.swift index eea4c446..5eeba555 100644 --- a/Ravens/Models/ObservationsLocationViewModel.swift +++ b/Ravens/Models/ObservationsLocationViewModel.swift @@ -18,7 +18,13 @@ class ObservationsLocationViewModel: ObservableObject { private var keyChainViewModel = KeychainViewModel() +// var minLatitude: Double = 0 +// var maxLatitude: Double = 0 +// var minLongitude: Double = 0 +// var maxLongitude: Double = 0 + var locations = [Location]() + var span: Span = Span(latitudeDelta: 0.1, longitudeDelta: 0.1, latitude: 0, longitude: 0) var settings: Settings init(settings: Settings) { @@ -46,8 +52,39 @@ class ObservationsLocationViewModel: ObservableObject { } } + func getSpan() { + var latitudes: [Double] = [] + var longitudes: [Double] = [] + + let max = (observationsSpecies?.results.count ?? 0) + for i in 0 ..< max { + let longitude = observationsSpecies?.results[i].point.coordinates[0] ?? 52.024052 + let latitude = observationsSpecies?.results[i].point.coordinates[1] ?? 5.245350 + latitudes.append(latitude) + longitudes.append(longitude) + } + + let minLatitude = latitudes.min() ?? 0 + let maxLatitude = latitudes.max() ?? 0 + let minLongitude = longitudes.min() ?? 0 + let maxLongitude = longitudes.max() ?? 0 + print("min \(minLatitude) \(minLongitude)") + print("max \(maxLatitude) \(maxLongitude)") + + let centreLatitude = (minLatitude + maxLatitude) / 2 + let centreLongitude = (minLongitude + maxLongitude) / 2 + + let latitudeDelta = (maxLatitude - minLatitude) * 1.5 + let longitudeDelta = (maxLongitude - minLongitude) * 1.5 + + print("delta \(latitudeDelta) \(longitudeDelta)") + print("position \(centreLatitude) \(centreLongitude)") + + span = Span(latitudeDelta: latitudeDelta, longitudeDelta: longitudeDelta, latitude: centreLatitude, longitude: centreLongitude) + } + - func fetchData(locationId: Int, limit: Int, offset: Int) { + func fetchData(locationId: Int, limit: Int, offset: Int, completion: @escaping () -> Void) { log.error("fetchData ObservationsLocationViewModel limit: \(locationId) \(limit) offset: \(offset)") keyChainViewModel.retrieveCredentials() @@ -75,6 +112,8 @@ class ObservationsLocationViewModel: ObservableObject { DispatchQueue.main.async { self.observationsSpecies = observationsSpecies self.getLocations() + self.getSpan() + completion() } } catch { self.log.error("Error ObservationsLocationViewModel decoding JSON: \(error)") diff --git a/Ravens/Models/ObservationsViewModel.swift b/Ravens/Models/ObservationsViewModel.swift index 83425467..bdd27860 100644 --- a/Ravens/Models/ObservationsViewModel.swift +++ b/Ravens/Models/ObservationsViewModel.swift @@ -19,24 +19,31 @@ struct Location: Identifiable { var hasSound: Bool } +struct Span { + var latitudeDelta: Double + var longitudeDelta: Double + var latitude: Double + var longitude: Double + +} + class ObservationsViewModel: ObservableObject { let log = SwiftyBeaver.self @Published var observations: Observations? var locations = [Location]() var poiLocations = [Location]() +// var span: Span = Span(latitudeDelta: 0.1, longitudeDelta: 0.1, latitude: 52.024052, longitude: 5.245350) var settings: Settings init(settings: Settings) { log.info("init ObservationsViewModel") self.settings = settings - } /// func getLocations() { locations.removeAll() - let max = (observations?.results.count ?? 0) for i in 0 ..< max { @@ -47,12 +54,10 @@ class ObservationsViewModel: ObservableObject { let hasPhoto = observations?.results[i].has_photo ?? false let hasSound = observations?.results[i].has_sound ?? false let newLocation = Location(name: name, coordinate: CLLocationCoordinate2D(latitude: latitude, longitude: longitude), rarity: rarity, hasPhoto: hasPhoto, hasSound: hasSound) - locations.append(newLocation) - } } - + func getPoiLocations() { poiLocations.removeAll() var newLocation = Location(name: "IJmuiden", coordinate: CLLocationCoordinate2D(latitude: 52.459402, longitude: 4.540332), rarity: 0, hasPhoto: false, hasSound: false) @@ -70,7 +75,7 @@ class ObservationsViewModel: ObservableObject { newLocation = Location(name: "De zouweboezem", coordinate: CLLocationCoordinate2D(latitude: 51.948497, longitude: 4.995383), rarity: 0, hasPhoto: false, hasSound: false) poiLocations.append(newLocation) // newLocation = Location(name: "Werkhoven", coordinate: CLLocationCoordinate2D(latitude: 52.024052, longitude: 5.245350), rarity: 0) - poiLocations.append(newLocation) +// poiLocations.append(newLocation) newLocation = Location(name: "Blauwe kamer", coordinate: CLLocationCoordinate2D(latitude: 51.942360, longitude: 5.610475), rarity: 0, hasPhoto: false, hasSound: false) poiLocations.append(newLocation) newLocation = Location(name: "Steenwaard", coordinate: CLLocationCoordinate2D(latitude: 51.965423, longitude: 5.215302), rarity: 0, hasPhoto: false, hasSound: false) @@ -92,13 +97,6 @@ class ObservationsViewModel: ObservableObject { let url = settings.endPoint()+"observations/around-point/?days=\(settings.days)&end_date=\(formatCurrentDate(value: settings.selectedDate))&lat=\(lat)&lng=\(long)&radius=\(settings.radius)&species_group=\(settings.selectedGroupId)&min_rarity=\(settings.selectedRarity)" - - -// //deze verder uitwerken met location.id /api/v1/locations/17829/observations/ -// let url = settings.endPoint()+"locations/17820/observations/" -//// "observations/around-point/?days=\(settings.days)&end_date=\(formatCurrentDate(value: settings.selectedDate))&lat=\(lat)&lng=\(long)&radius=\(settings.radius)&species_group=\(settings.selectedGroupId)&min_rarity=\(settings.selectedRarity)" -// - log.info("\(url)") AF.request(url, headers: headers).responseDecodable(of: Observations.self) { response in @@ -107,7 +105,7 @@ class ObservationsViewModel: ObservableObject { DispatchQueue.main.async { self.observations = observations self.getLocations() - self.getPoiLocations() +// self.getPoiLocations() self.log.error("observations locations count \(self.locations.count)") } case .failure(let error): @@ -118,5 +116,3 @@ class ObservationsViewModel: ObservableObject { } } - -// let url = "https://waarneming.nl/api/v1/user/observations/" diff --git a/Ravens/Views/LocationLatLongView.swift b/Ravens/Views/LocationLatLongView.swift deleted file mode 100644 index e0ede15a..00000000 --- a/Ravens/Views/LocationLatLongView.swift +++ /dev/null @@ -1,39 +0,0 @@ -// -// LocationLatLongView.swift -// Ravens -// -// Created by Eric de Quartel on 25/03/2024. -// - -import SwiftUI -import MapKit - -struct LocationLatLongView: View { - @StateObject private var viewModel = LocationViewModel() - - var body: some View { - NavigationView { - List(viewModel.locations, id: \.id) { location in - VStack(alignment: .leading) { - Text(location.name).font(.headline) - Text("\(location.id)").font(.headline) - Text(location.country_code).font(.subheadline) - Link("View on Website", destination: URL(string: location.permalink)!) - } - } - .navigationBarTitle("Locations") - .onAppear { - viewModel.fetchLocations(latitude: 52.141411, longitude: 6.195310) { fetchedLocations in - // Use fetchedLocations here - for location in fetchedLocations { - print(location) - } - } - } - } - } -} - -#Preview { - LocationLatLongView() -} diff --git a/Ravens/Views/MapObservationView.swift b/Ravens/Views/MapObservationView.swift index fbc75c6b..2247ee68 100644 --- a/Ravens/Views/MapObservationView.swift +++ b/Ravens/Views/MapObservationView.swift @@ -1,4 +1,3 @@ -// // MapObservationView.swift // Ravens // @@ -12,10 +11,7 @@ import SwiftyBeaver struct MapObservationView: View { let log = SwiftyBeaver.self - @StateObject private var locationViewModel = LocationViewModel() - - @StateObject private var geoJSONViewModel = GeoJSONViewModel() - @State private var polyOverlays = [MKPolygon]() + @StateObject private var locationIdViewModel = LocationIdViewModel() @EnvironmentObject var observationsLocationViewModel: ObservationsLocationViewModel @@ -80,7 +76,6 @@ struct MapObservationView: View { .frame(width: 6, height: 6) ) } - } MapCircle(center: circlePos ?? CLLocationCoordinate2D(), radius: CLLocationDistance(settings.radius)) @@ -103,13 +98,7 @@ struct MapObservationView: View { ) } } - - //JSONData - ForEach(polyOverlays, id: \.self) { polyOverlay in - MapPolygon(polyOverlay) - .stroke(.pink, lineWidth: 1) - .foregroundStyle(.blue.opacity(0.1)) - } + } @@ -118,19 +107,6 @@ struct MapObservationView: View { .safeAreaInset(edge: .bottom) { VStack { SettingsDetailsView(count: observationsViewModel.locations.count, results: observationsViewModel.observations?.count ?? 0 ) - - if locationViewModel.locations.count > 0 { - HStack { - Text("\(locationViewModel.locations[0].name)") - Spacer() - Text("\(locationViewModel.locations[0].id)") - - } - .foregroundColor(.white) - } else { - Text("Default Name") - } - } } @@ -148,7 +124,6 @@ struct MapObservationView: View { } } .mapControls() { - // MapUserLocationButton() MapCompass() //tapping this makes it north } } @@ -171,7 +146,9 @@ struct MapObservationView: View { .region( MKCoordinateRegion( center: CLLocationCoordinate2D(latitude: myLatitude, longitude: myLongitude), - span: MKCoordinateSpan(latitudeDelta: 0.1, longitudeDelta: 0.1) + span: MKCoordinateSpan(latitudeDelta: 0.5, longitudeDelta: 0.5) +// span: MKCoordinateSpan(latitudeDelta: observationsViewModel.span.latitudeDelta, longitudeDelta: observationsViewModel.span.longitudeDelta) + ) ) } else { diff --git a/Ravens/Views/MapObservationsLocationView.swift b/Ravens/Views/MapObservationsLocationView.swift index 08e3602b..ac3c23c2 100644 --- a/Ravens/Views/MapObservationsLocationView.swift +++ b/Ravens/Views/MapObservationsLocationView.swift @@ -13,7 +13,7 @@ import SwiftyBeaver struct MapObservationsLocationView: View { let log = SwiftyBeaver.self - @StateObject private var locationViewModel = LocationViewModel() + @StateObject private var locationIdViewModel = LocationIdViewModel() @StateObject private var geoJSONViewModel = GeoJSONViewModel() @State private var polyOverlays = [MKPolygon]() @@ -32,6 +32,10 @@ struct MapObservationsLocationView: View { @State private var locationId: Int = 0 @Binding var sharedLocationId: Int + @State private var deltaLat: Double = 0.1 + @State private var deltaLong: Double = 0.1 + + @State private var MapCameraPositiondefault = MapCameraPosition .region( MKCoordinateRegion( @@ -102,11 +106,11 @@ struct MapObservationsLocationView: View { VStack { SettingsDetailsView(count: observationsViewModel.locations.count, results: observationsViewModel.observations?.count ?? 0 ) - if locationViewModel.locations.count > 0 { + if locationIdViewModel.locations.count > 0 { HStack { - Text("\(locationViewModel.locations[0].name)") + Text("\(locationIdViewModel.locations[0].name)") Spacer() - Text("\(locationViewModel.locations[0].id)") + Text("\(locationIdViewModel.locations[0].id)") } .foregroundColor(.white) @@ -126,21 +130,36 @@ struct MapObservationsLocationView: View { circlePos = CLLocationCoordinate2D(latitude: coordinate.latitude, longitude: coordinate.longitude) - - //geoJSON + //lat,long -> locationId -> geoJSON polyOverlays.removeAll() - locationViewModel.fetchLocations(latitude: coordinate.latitude, longitude: coordinate.longitude) { fetchedLocations in - // Use fetchedLocations here - print(locationViewModel.locations.count) + locationIdViewModel.fetchLocations(latitude: coordinate.latitude, longitude: coordinate.longitude) { fetchedLocations in + // Use fetchedLocations here, er is er echter altijd maar 1 daarom pakken we de eerste for location in fetchedLocations { - print(location.id) + print(location.id) //dit is de locatieId en hiermee halen we de geoJSON data op geoJSONViewModel.fetchGeoJsonData(for: String(location.id)) { polyOverlaysIn in polyOverlays = polyOverlaysIn - + locationId = location.id sharedLocationId = location.id - observationsLocationViewModel.fetchData(locationId: locationId, limit: 100, offset: 0) + //and now er get the observations from the locationId + observationsLocationViewModel.fetchData(locationId: locationId, limit: 100, offset: 0, completion: { + print("MapObservationsLocationView: fetchObservationsLocationData completed use delta") + print(observationsLocationViewModel.span) + cameraPosition = MapCameraPosition + .region( + MKCoordinateRegion( + center: CLLocationCoordinate2D( + latitude: observationsLocationViewModel.span.latitude, + longitude: observationsLocationViewModel.span.longitude), + + span: MKCoordinateSpan( + latitudeDelta: observationsLocationViewModel.span.latitudeDelta, + longitudeDelta: observationsLocationViewModel.span.longitudeDelta) + ) + ) + } + ) } } } @@ -151,6 +170,7 @@ struct MapObservationsLocationView: View { } .mapControls() { MapCompass() //tapping this makes it north + } } } @@ -167,27 +187,50 @@ struct MapObservationsLocationView: View { // geoJSON polyOverlays.removeAll() - locationViewModel.fetchLocations(latitude: location.coordinate.latitude, longitude: location.coordinate.longitude) { fetchedLocations in + + locationIdViewModel.fetchLocations(latitude: location.coordinate.latitude, longitude: location.coordinate.longitude) { fetchedLocations in // Use fetchedLocations here + for location in fetchedLocations { geoJSONViewModel.fetchGeoJsonData(for: String(location.id)) { polyOverlaysIn in polyOverlays = polyOverlaysIn - locationId = location.id sharedLocationId = location.id - observationsLocationViewModel.fetchData(locationId: locationId, limit: 100, offset: 0) + observationsLocationViewModel.fetchData(locationId: locationId, limit: 100, offset: 0, completion: { + print("MapObservationsLocationView: fetchObservationsLocationData completed use delta") + print(observationsLocationViewModel.span) + cameraPosition = MapCameraPosition + .region( + MKCoordinateRegion( +// center: CLLocationCoordinate2D(latitude: myLatitude, longitude: myLongitude), + center: CLLocationCoordinate2D( + latitude: observationsLocationViewModel.span.latitude, + longitude: observationsLocationViewModel.span.longitude), + + span: MKCoordinateSpan( + latitudeDelta: observationsLocationViewModel.span.latitudeDelta, + longitudeDelta: observationsLocationViewModel.span.longitudeDelta) + ) + ) + } + ) + } } } // Initialize cameraPosition with user's current location - cameraPosition = MapCameraPosition - .region( - MKCoordinateRegion( - center: CLLocationCoordinate2D(latitude: myLatitude, longitude: myLongitude), - span: MKCoordinateSpan(latitudeDelta: 0.1, longitudeDelta: 0.1) - ) - ) +// cameraPosition = MapCameraPosition +// .region( +// MKCoordinateRegion( +// center: CLLocationCoordinate2D(latitude: myLatitude, longitude: myLongitude), +// span: MKCoordinateSpan(latitudeDelta: 0.012277993560553035, longitudeDelta: 0.005419711169082575) +// ) +// ) + + + + } else { print("Location is not available yet") // Handle the case when location is not available diff --git a/Ravens/Views/ObservationsLocationsView.swift b/Ravens/Views/ObservationsLocationsView.swift index b6fdbb70..61e8ed48 100644 --- a/Ravens/Views/ObservationsLocationsView.swift +++ b/Ravens/Views/ObservationsLocationsView.swift @@ -66,7 +66,7 @@ struct ObservationsLocationView: View { } } .onAppear { - viewModel.fetchData(locationId: locationId, limit: limit, offset: offset) + viewModel.fetchData(locationId: locationId, limit: limit, offset: offset, completion: { print("fetchData ObservationsLocationViewc completed") }) } } } diff --git a/ravens.log b/ravens.log index 3153c05a..e9fe17f4 100644 --- a/ravens.log +++ b/ravens.log @@ -53995,3 +53995,405 @@ Authorization: Token 01d3455e878b6c4e6712c550ef460e17b9d2dc2d - responseSerializ 2024-03-26 09:36:06.721 Ravens: observations locations count 66 2024-03-26 09:36:13.754 Ravens: fetchData ObservationsViewModel 2024-03-26 09:36:14.357 Ravens: observations locations count 66 +2024-03-26 11:56:44.104 WARNING: *** NEW LAUNCH *** +2024-03-26 11:57:32.031 WARNING: *** NEW LAUNCH *** +2024-03-26 11:57:40.229 Ravens: fetchData ObservationsViewModel +2024-03-26 11:57:42.946 Ravens: observations locations count 100 +2024-03-26 11:57:44.722 Ravens: fetchData ObservationsLocationViewModel limit: 32396 100 offset: 0 +2024-03-26 11:57:44.729 Ravens: >>> https://waarneming.nl/api/v1/locations/32396/observations/ +2024-03-26 11:57:45.232 Ravens: Error ObservationsLocationViewModel decoding JSON: keyNotFound(CodingKeys(stringValue: "results", intValue: nil), Swift.DecodingError.Context(codingPath: [], debugDescription: "No value associated with key CodingKeys(stringValue: \"results\", intValue: nil) (\"results\").", underlyingError: nil)) +2024-03-26 11:57:45.238 Ravens: https://waarneming.nl/api/v1/locations/32396/observations/ +2024-03-26 11:57:50.664 Ravens: fetchData ObservationsLocationViewModel limit: 21023 100 offset: 0 +2024-03-26 11:57:50.669 Ravens: >>> https://waarneming.nl/api/v1/locations/21023/observations/ +2024-03-26 11:57:50.885 Ravens: Error ObservationsLocationViewModel decoding JSON: keyNotFound(CodingKeys(stringValue: "results", intValue: nil), Swift.DecodingError.Context(codingPath: [], debugDescription: "No value associated with key CodingKeys(stringValue: \"results\", intValue: nil) (\"results\").", underlyingError: nil)) +2024-03-26 11:57:50.887 Ravens: https://waarneming.nl/api/v1/locations/21023/observations/ +2024-03-26 11:57:55.897 Ravens: fetchData ObservationsLocationViewModel limit: 18569 100 offset: 0 +2024-03-26 11:57:55.902 Ravens: >>> https://waarneming.nl/api/v1/locations/18569/observations/ +2024-03-26 11:57:56.088 Ravens: Error ObservationsLocationViewModel decoding JSON: keyNotFound(CodingKeys(stringValue: "results", intValue: nil), Swift.DecodingError.Context(codingPath: [], debugDescription: "No value associated with key CodingKeys(stringValue: \"results\", intValue: nil) (\"results\").", underlyingError: nil)) +2024-03-26 11:57:56.092 Ravens: https://waarneming.nl/api/v1/locations/18569/observations/ +2024-03-26 11:58:00.332 Ravens: fetchData ObservationsLocationViewModel limit: 24688 100 offset: 0 +2024-03-26 11:58:00.337 Ravens: >>> https://waarneming.nl/api/v1/locations/24688/observations/ +2024-03-26 11:58:00.412 Ravens: Error ObservationsLocationViewModel decoding JSON: keyNotFound(CodingKeys(stringValue: "results", intValue: nil), Swift.DecodingError.Context(codingPath: [], debugDescription: "No value associated with key CodingKeys(stringValue: \"results\", intValue: nil) (\"results\").", underlyingError: nil)) +2024-03-26 11:58:00.418 Ravens: https://waarneming.nl/api/v1/locations/24688/observations/ +2024-03-26 11:58:09.105 Ravens: fetchData ObservationsLocationViewModel limit: 24688 100 offset: 0 +2024-03-26 11:58:09.109 Ravens: >>> https://waarneming.nl/api/v1/locations/24688/observations/ +2024-03-26 11:58:09.172 Ravens: Error ObservationsLocationViewModel decoding JSON: keyNotFound(CodingKeys(stringValue: "results", intValue: nil), Swift.DecodingError.Context(codingPath: [], debugDescription: "No value associated with key CodingKeys(stringValue: \"results\", intValue: nil) (\"results\").", underlyingError: nil)) +2024-03-26 11:58:09.174 Ravens: https://waarneming.nl/api/v1/locations/24688/observations/ +2024-03-26 11:58:27.809 Ravens: fetchData ObservationsViewModel +2024-03-26 11:58:27.962 Ravens: observations locations count 0 +2024-03-26 11:58:29.161 Ravens: fetchData ObservationsViewModel +2024-03-26 11:58:31.008 Ravens: observations locations count 100 +2024-03-26 11:58:39.142 Ravens: fetchData ObservationsViewModel +2024-03-26 11:58:39.881 Ravens: observations locations count 100 +2024-03-26 11:58:40.089 Ravens: fetchData ObservationsViewModel +2024-03-26 11:58:41.092 Ravens: fetchData ObservationsViewModel +2024-03-26 11:58:41.251 Ravens: observations locations count 100 +2024-03-26 11:58:41.875 Ravens: observations locations count 100 +2024-03-26 11:59:03.027 Ravens: fetchData ObservationsLocationViewModel limit: 10101 100 offset: 0 +2024-03-26 11:59:03.037 Ravens: >>> https://waarneming.nl/api/v1/locations/10101/observations/ +2024-03-26 11:59:03.255 Ravens: Error ObservationsLocationViewModel decoding JSON: keyNotFound(CodingKeys(stringValue: "results", intValue: nil), Swift.DecodingError.Context(codingPath: [], debugDescription: "No value associated with key CodingKeys(stringValue: \"results\", intValue: nil) (\"results\").", underlyingError: nil)) +2024-03-26 11:59:03.258 Ravens: https://waarneming.nl/api/v1/locations/10101/observations/ +2024-03-26 11:59:06.444 Ravens: fetchData ObservationsLocationViewModel limit: 2342 100 offset: 0 +2024-03-26 11:59:06.449 Ravens: >>> https://waarneming.nl/api/v1/locations/2342/observations/ +2024-03-26 11:59:06.643 Ravens: Error ObservationsLocationViewModel decoding JSON: keyNotFound(CodingKeys(stringValue: "results", intValue: nil), Swift.DecodingError.Context(codingPath: [], debugDescription: "No value associated with key CodingKeys(stringValue: \"results\", intValue: nil) (\"results\").", underlyingError: nil)) +2024-03-26 11:59:06.646 Ravens: https://waarneming.nl/api/v1/locations/2342/observations/ +2024-03-26 11:59:08.857 Ravens: fetchData ObservationsLocationViewModel limit: 22967 100 offset: 0 +2024-03-26 11:59:08.860 Ravens: >>> https://waarneming.nl/api/v1/locations/22967/observations/ +2024-03-26 11:59:09.032 Ravens: Error ObservationsLocationViewModel decoding JSON: keyNotFound(CodingKeys(stringValue: "results", intValue: nil), Swift.DecodingError.Context(codingPath: [], debugDescription: "No value associated with key CodingKeys(stringValue: \"results\", intValue: nil) (\"results\").", underlyingError: nil)) +2024-03-26 11:59:09.035 Ravens: https://waarneming.nl/api/v1/locations/22967/observations/ +2024-03-26 11:59:14.183 Ravens: fetchData ObservationsLocationViewModel limit: 13718 100 offset: 0 +2024-03-26 11:59:14.186 Ravens: >>> https://waarneming.nl/api/v1/locations/13718/observations/ +2024-03-26 11:59:14.236 Ravens: Error ObservationsLocationViewModel decoding JSON: keyNotFound(CodingKeys(stringValue: "results", intValue: nil), Swift.DecodingError.Context(codingPath: [], debugDescription: "No value associated with key CodingKeys(stringValue: \"results\", intValue: nil) (\"results\").", underlyingError: nil)) +2024-03-26 11:59:14.239 Ravens: https://waarneming.nl/api/v1/locations/13718/observations/ +2024-03-26 11:59:25.820 Ravens: Error UserViewModel decoding JSON: keyNotFound(CodingKeys(stringValue: "id", intValue: nil), Swift.DecodingError.Context(codingPath: [], debugDescription: "No value associated with key CodingKeys(stringValue: \"id\", intValue: nil) (\"id\").", underlyingError: nil)) +2024-03-26 11:59:25.826 Ravens: https://waarneming.nl/api/v1/user/info/ +2024-03-26 11:59:26.928 Ravens: saved credentials are: edequartel@protonmail.com zeemeeuw2015 +2024-03-26 11:59:28.101 Ravens: saved credentials are: edequartel@protonmail.com zeemeeuw2015 +2024-03-26 11:59:31.063 Ravens: Login failed: Response status code was unacceptable: 400. +2024-03-26 11:59:34.085 Ravens: fetchData ObservationsLocationViewModel limit: 24688 100 offset: 0 +2024-03-26 11:59:34.089 Ravens: >>> https://waarneming.nl/api/v1/locations/24688/observations/ +2024-03-26 11:59:34.130 Ravens: Error ObservationsLocationViewModel decoding JSON: keyNotFound(CodingKeys(stringValue: "results", intValue: nil), Swift.DecodingError.Context(codingPath: [], debugDescription: "No value associated with key CodingKeys(stringValue: \"results\", intValue: nil) (\"results\").", underlyingError: nil)) +2024-03-26 11:59:34.133 Ravens: https://waarneming.nl/api/v1/locations/24688/observations/ +2024-03-26 11:59:39.295 Ravens: fetchData ObservationsLocationViewModel limit: 24698 100 offset: 0 +2024-03-26 11:59:39.299 Ravens: >>> https://waarneming.nl/api/v1/locations/24698/observations/ +2024-03-26 11:59:39.474 Ravens: Error ObservationsLocationViewModel decoding JSON: keyNotFound(CodingKeys(stringValue: "results", intValue: nil), Swift.DecodingError.Context(codingPath: [], debugDescription: "No value associated with key CodingKeys(stringValue: \"results\", intValue: nil) (\"results\").", underlyingError: nil)) +2024-03-26 11:59:39.477 Ravens: https://waarneming.nl/api/v1/locations/24698/observations/ +2024-03-26 11:59:41.236 Ravens: fetchData ObservationsLocationViewModel limit: 24708 100 offset: 0 +2024-03-26 11:59:41.240 Ravens: >>> https://waarneming.nl/api/v1/locations/24708/observations/ +2024-03-26 11:59:41.286 Ravens: Error ObservationsLocationViewModel decoding JSON: keyNotFound(CodingKeys(stringValue: "results", intValue: nil), Swift.DecodingError.Context(codingPath: [], debugDescription: "No value associated with key CodingKeys(stringValue: \"results\", intValue: nil) (\"results\").", underlyingError: nil)) +2024-03-26 11:59:41.289 Ravens: https://waarneming.nl/api/v1/locations/24708/observations/ +2024-03-26 11:59:42.725 Ravens: fetchData ObservationsLocationViewModel limit: 24726 100 offset: 0 +2024-03-26 11:59:42.730 Ravens: >>> https://waarneming.nl/api/v1/locations/24726/observations/ +2024-03-26 11:59:42.780 Ravens: Error ObservationsLocationViewModel decoding JSON: keyNotFound(CodingKeys(stringValue: "results", intValue: nil), Swift.DecodingError.Context(codingPath: [], debugDescription: "No value associated with key CodingKeys(stringValue: \"results\", intValue: nil) (\"results\").", underlyingError: nil)) +2024-03-26 11:59:42.783 Ravens: https://waarneming.nl/api/v1/locations/24726/observations/ +2024-03-26 11:59:50.102 Ravens: fetchData ObservationsLocationViewModel limit: 24782 100 offset: 0 +2024-03-26 11:59:50.107 Ravens: >>> https://waarneming.nl/api/v1/locations/24782/observations/ +2024-03-26 11:59:50.178 Ravens: Error ObservationsLocationViewModel decoding JSON: keyNotFound(CodingKeys(stringValue: "results", intValue: nil), Swift.DecodingError.Context(codingPath: [], debugDescription: "No value associated with key CodingKeys(stringValue: \"results\", intValue: nil) (\"results\").", underlyingError: nil)) +2024-03-26 11:59:50.181 Ravens: https://waarneming.nl/api/v1/locations/24782/observations/ +2024-03-26 12:10:22.615 WARNING: *** NEW LAUNCH *** +2024-03-26 12:10:36.920 Ravens: fetchData ObservationsUserViewModel limit: 100 offset: 0 +2024-03-26 12:10:36.924 Ravens: https://waarneming.nl/api/v1/user/observations/?limit=100&offset=0 +2024-03-26 12:10:36.994 Ravens: Error ObservationsUserViewModel decoding JSON: keyNotFound(CodingKeys(stringValue: "results", intValue: nil), Swift.DecodingError.Context(codingPath: [], debugDescription: "No value associated with key CodingKeys(stringValue: \"results\", intValue: nil) (\"results\").", underlyingError: nil)) +2024-03-26 12:10:36.999 Ravens: https://waarneming.nl/api/v1/user/observations/?limit=100&offset=0 +2024-03-26 12:10:37.750 Ravens: fetchData ObservationsViewModel +2024-03-26 12:10:39.006 Ravens: observations locations count 100 +2024-03-26 12:10:51.363 Ravens: saved credentials are: edequartel@protonmail.com zeemeeuw2015 +2024-03-26 12:10:53.835 Ravens: Login failed: Response status code was unacceptable: 400. +2024-03-26 12:10:58.445 Ravens: saved credentials are: edequartel@protonmail.com zeemeeuw2015 +2024-03-26 12:11:00.998 Ravens: Login failed: Response status code was unacceptable: 400. +2024-03-26 12:11:13.248 Ravens: saved credentials are: edequartel@protonmail.com zeemeeuw2015 +2024-03-26 12:11:16.554 Ravens: Login failed: Response status code was unacceptable: 400. +2024-03-26 12:12:24.999 Ravens: saved credentials are: edequartel@protonmail.com fyrta5-pIdtow-gawpys +2024-03-26 12:12:26.853 Ravens: 103 token 01d3455e878b6c4e6712c550ef460e17b9d2dc2d +2024-03-26 12:12:26.861 Ravens: saved credentials are: edequartel@protonmail.com fyrta5-pIdtow-gawpys 01d3455e878b6c4e6712c550ef460e17b9d2dc2d +2024-03-26 12:12:29.150 Ravens: fetchData ObservationsViewModel +2024-03-26 12:12:30.212 Ravens: observations locations count 100 +2024-03-26 12:12:31.611 Ravens: fetchData ObservationsLocationViewModel limit: 133746 100 offset: 0 +2024-03-26 12:12:31.617 Ravens: >>> https://observation.org/api/v1/locations/133746/observations/ +2024-03-26 12:12:33.843 Ravens: fetchData ObservationsLocationViewModel limit: 17820 100 offset: 0 +2024-03-26 12:12:33.846 Ravens: >>> https://observation.org/api/v1/locations/17820/observations/ +2024-03-26 12:12:36.080 Ravens: fetchData ObservationsLocationViewModel limit: 8208 100 offset: 0 +2024-03-26 12:12:36.084 Ravens: >>> https://observation.org/api/v1/locations/8208/observations/ +2024-03-26 12:12:38.872 Ravens: fetchData ObservationsLocationViewModel limit: 17918 100 offset: 0 +2024-03-26 12:12:38.875 Ravens: >>> https://observation.org/api/v1/locations/17918/observations/ +2024-03-26 12:12:41.480 Ravens: fetchData ObservationsLocationViewModel limit: 17820 100 offset: 0 +2024-03-26 12:12:41.484 Ravens: >>> https://observation.org/api/v1/locations/17820/observations/ +2024-03-26 12:12:45.400 Ravens: fetchData ObservationsLocationViewModel limit: 17820 100 offset: 0 +2024-03-26 12:12:45.404 Ravens: >>> https://observation.org/api/v1/locations/17820/observations/ +2024-03-26 12:12:53.443 Ravens: fetchData ObservationsLocationViewModel limit: 16331 100 offset: 0 +2024-03-26 12:12:53.448 Ravens: >>> https://observation.org/api/v1/locations/16331/observations/ +2024-03-26 12:12:57.398 Ravens: fetchData ObservationsLocationViewModel limit: 16331 100 offset: 0 +2024-03-26 12:12:57.404 Ravens: >>> https://observation.org/api/v1/locations/16331/observations/ +2024-03-26 12:13:07.216 Ravens: fetchData ObservationsLocationViewModel limit: 16848 100 offset: 0 +2024-03-26 12:13:07.224 Ravens: >>> https://observation.org/api/v1/locations/16848/observations/ +2024-03-26 12:13:13.230 Ravens: fetchData ObservationsLocationViewModel limit: 16848 100 offset: 0 +2024-03-26 12:13:13.235 Ravens: >>> https://observation.org/api/v1/locations/16848/observations/ +2024-03-26 12:14:22.135 WARNING: *** NEW LAUNCH *** +2024-03-26 12:14:22.616 Ravens: fetchData ObservationsViewModel +2024-03-26 12:14:24.039 Ravens: observations locations count 100 +2024-03-26 12:14:39.467 Ravens: fetchData ObservationsViewModel +2024-03-26 12:14:40.048 Ravens: observations locations count 51 +2024-03-26 12:20:33.062 WARNING: *** NEW LAUNCH *** +2024-03-26 12:20:33.640 Ravens: fetchData ObservationsViewModel +2024-03-26 12:20:34.322 Ravens: observations locations count 51 +2024-03-26 12:20:44.549 Ravens: fetchData ObservationsViewModel +2024-03-26 12:20:44.949 Ravens: observations locations count 31 +2024-03-26 12:20:47.405 Ravens: fetchData ObservationsViewModel +2024-03-26 12:20:48.031 Ravens: observations locations count 59 +2024-03-26 12:20:50.945 Ravens: fetchData ObservationsViewModel +2024-03-26 12:20:51.480 Ravens: observations locations count 34 +2024-03-26 12:20:53.095 Ravens: fetchData ObservationsViewModel +2024-03-26 12:20:53.713 Ravens: observations locations count 48 +2024-03-26 12:20:55.331 Ravens: fetchData ObservationsViewModel +2024-03-26 12:20:56.212 Ravens: observations locations count 100 +2024-03-26 12:21:49.774 WARNING: *** NEW LAUNCH *** +2024-03-26 12:21:50.368 Ravens: fetchData ObservationsViewModel +2024-03-26 12:21:51.190 Ravens: observations locations count 51 +2024-03-26 12:22:13.081 WARNING: *** NEW LAUNCH *** +2024-03-26 12:22:13.396 Ravens: fetchData ObservationsViewModel +2024-03-26 12:22:14.019 Ravens: observations locations count 51 +2024-03-26 12:23:24.021 WARNING: *** NEW LAUNCH *** +2024-03-26 12:23:24.355 Ravens: fetchData ObservationsViewModel +2024-03-26 12:23:25.010 Ravens: observations locations count 51 +2024-03-26 12:25:10.648 WARNING: *** NEW LAUNCH *** +2024-03-26 12:25:10.993 Ravens: fetchData ObservationsViewModel +2024-03-26 12:25:11.536 Ravens: observations locations count 51 +2024-03-26 12:25:49.513 Ravens: fetchData ObservationsViewModel +2024-03-26 12:25:49.713 Ravens: observations locations count 0 +2024-03-26 12:26:13.186 Ravens: fetchData ObservationsViewModel +2024-03-26 12:26:13.572 Ravens: observations locations count 25 +2024-03-26 12:26:16.688 Ravens: fetchData ObservationsViewModel +2024-03-26 12:26:16.795 Ravens: observations locations count 0 +2024-03-26 12:26:17.899 Ravens: fetchData ObservationsViewModel +2024-03-26 12:26:18.295 Ravens: observations locations count 14 +2024-03-26 12:26:22.745 Ravens: fetchData ObservationsViewModel +2024-03-26 12:26:23.163 Ravens: observations locations count 19 +2024-03-26 12:26:45.849 Ravens: fetchData ObservationsViewModel +2024-03-26 12:26:46.558 Ravens: observations locations count 51 +2024-03-26 12:29:28.569 WARNING: *** NEW LAUNCH *** +2024-03-26 12:29:29.104 Ravens: fetchData ObservationsViewModel +2024-03-26 12:29:29.738 Ravens: observations locations count 51 +2024-03-26 12:32:40.914 WARNING: *** NEW LAUNCH *** +2024-03-26 12:32:41.422 Ravens: fetchData ObservationsViewModel +2024-03-26 12:32:42.125 Ravens: observations locations count 51 +2024-03-26 12:34:31.755 WARNING: *** NEW LAUNCH *** +2024-03-26 12:34:32.227 Ravens: fetchData ObservationsViewModel +2024-03-26 12:34:32.895 Ravens: observations locations count 51 +2024-03-26 12:35:12.787 WARNING: *** NEW LAUNCH *** +2024-03-26 12:35:13.187 Ravens: fetchData ObservationsViewModel +2024-03-26 12:35:13.818 Ravens: observations locations count 51 +2024-03-26 12:35:16.832 Ravens: fetchData ObservationsViewModel +2024-03-26 12:35:17.396 Ravens: observations locations count 51 +2024-03-26 12:35:21.599 Ravens: fetchData ObservationsLocationViewModel limit: 133746 100 offset: 0 +2024-03-26 12:35:21.603 Ravens: >>> https://waarneming.nl/api/v1/locations/133746/observations/ +2024-03-26 12:35:24.851 Ravens: fetchData ObservationsLocationViewModel limit: 133746 100 offset: 0 +2024-03-26 12:35:24.855 Ravens: >>> https://waarneming.nl/api/v1/locations/133746/observations/ +2024-03-26 12:35:35.837 Ravens: fetchData ObservationsViewModel +2024-03-26 12:35:36.422 Ravens: observations locations count 51 +2024-03-26 12:36:18.303 WARNING: *** NEW LAUNCH *** +2024-03-26 12:36:18.641 Ravens: fetchData ObservationsViewModel +2024-03-26 12:36:19.324 Ravens: observations locations count 51 +2024-03-26 12:36:58.010 WARNING: *** NEW LAUNCH *** +2024-03-26 12:36:58.374 Ravens: fetchData ObservationsViewModel +2024-03-26 12:36:58.981 Ravens: observations locations count 51 +2024-03-26 12:37:02.139 Ravens: fetchData ObservationsLocationViewModel limit: 133746 100 offset: 0 +2024-03-26 12:37:02.143 Ravens: >>> https://waarneming.nl/api/v1/locations/133746/observations/ +2024-03-26 12:42:54.932 WARNING: *** NEW LAUNCH *** +2024-03-26 12:42:55.337 Ravens: fetchData ObservationsViewModel +2024-03-26 12:42:56.015 Ravens: observations locations count 51 +2024-03-26 12:49:35.366 WARNING: *** NEW LAUNCH *** +2024-03-26 12:49:35.787 Ravens: fetchData ObservationsViewModel +2024-03-26 12:49:36.406 Ravens: observations locations count 51 +2024-03-26 12:52:28.494 WARNING: *** NEW LAUNCH *** +2024-03-26 12:52:28.984 Ravens: fetchData ObservationsViewModel +2024-03-26 12:52:29.664 Ravens: observations locations count 51 +2024-03-26 12:54:41.311 WARNING: *** NEW LAUNCH *** +2024-03-26 12:54:41.688 Ravens: fetchData ObservationsViewModel +2024-03-26 12:54:43.200 Ravens: observations locations count 51 +2024-03-26 12:54:44.407 Ravens: fetchData ObservationsViewModel +2024-03-26 12:54:45.077 Ravens: observations locations count 100 +2024-03-26 12:54:47.208 Ravens: fetchData ObservationsViewModel +2024-03-26 12:54:47.833 Ravens: observations locations count 37 +2024-03-26 12:57:46.014 WARNING: *** NEW LAUNCH *** +2024-03-26 12:57:46.434 Ravens: fetchData ObservationsViewModel +2024-03-26 12:57:47.130 Ravens: observations locations count 51 +2024-03-26 12:57:48.929 Ravens: fetchData ObservationsLocationViewModel limit: 133746 100 offset: 0 +2024-03-26 12:57:48.933 Ravens: >>> https://waarneming.nl/api/v1/locations/133746/observations/ +2024-03-26 12:57:51.113 Ravens: fetchData ObservationsLocationViewModel limit: 689504 100 offset: 0 +2024-03-26 12:57:51.121 Ravens: >>> https://waarneming.nl/api/v1/locations/689504/observations/ +2024-03-26 12:57:54.025 Ravens: fetchData ObservationsLocationViewModel limit: 17820 100 offset: 0 +2024-03-26 12:57:54.029 Ravens: >>> https://waarneming.nl/api/v1/locations/17820/observations/ +2024-03-26 12:57:56.305 Ravens: fetchData ObservationsLocationViewModel limit: 9115 100 offset: 0 +2024-03-26 12:57:56.309 Ravens: >>> https://waarneming.nl/api/v1/locations/9115/observations/ +2024-03-26 12:57:58.348 Ravens: fetchData ObservationsLocationViewModel limit: 689506 100 offset: 0 +2024-03-26 12:57:58.353 Ravens: >>> https://waarneming.nl/api/v1/locations/689506/observations/ +2024-03-26 12:59:26.150 WARNING: *** NEW LAUNCH *** +2024-03-26 12:59:26.522 Ravens: fetchData ObservationsViewModel +2024-03-26 12:59:27.592 Ravens: observations locations count 51 +2024-03-26 12:59:36.338 Ravens: fetchData ObservationsViewModel +2024-03-26 12:59:36.791 Ravens: observations locations count 6 +2024-03-26 12:59:38.929 Ravens: fetchData ObservationsUserViewModel limit: 100 offset: 0 +2024-03-26 12:59:38.933 Ravens: https://waarneming.nl/api/v1/user/observations/?limit=100&offset=0 +2024-03-26 12:59:40.185 Ravens: fetchData ObservationsViewModel +2024-03-26 12:59:40.598 Ravens: observations locations count 6 +2024-03-26 12:59:44.409 Ravens: fetchData ObservationsUserViewModel limit: 100 offset: 0 +2024-03-26 12:59:44.414 Ravens: https://waarneming.nl/api/v1/user/observations/?limit=100&offset=0 +2024-03-26 12:59:48.401 Ravens: fetchData ObservationsViewModel +2024-03-26 12:59:48.815 Ravens: observations locations count 6 +2024-03-26 13:00:26.809 WARNING: *** NEW LAUNCH *** +2024-03-26 13:00:27.192 Ravens: fetchData ObservationsViewModel +2024-03-26 13:00:27.611 Ravens: observations locations count 6 +2024-03-26 13:00:48.869 WARNING: *** NEW LAUNCH *** +2024-03-26 13:00:49.283 Ravens: fetchData ObservationsViewModel +2024-03-26 13:00:49.695 Ravens: observations locations count 6 +2024-03-26 13:01:06.768 Ravens: fetchData ObservationsLocationViewModel limit: 133746 100 offset: 0 +2024-03-26 13:01:06.773 Ravens: >>> https://waarneming.nl/api/v1/locations/133746/observations/ +2024-03-26 13:01:09.331 Ravens: fetchData ObservationsViewModel +2024-03-26 13:01:09.780 Ravens: observations locations count 6 +2024-03-26 13:01:56.052 WARNING: *** NEW LAUNCH *** +2024-03-26 13:01:56.460 Ravens: fetchData ObservationsViewModel +2024-03-26 13:01:56.957 Ravens: observations locations count 6 +2024-03-27 10:55:10.887 WARNING: *** NEW LAUNCH *** +2024-03-27 10:55:11.586 Ravens: fetchData ObservationsViewModel +2024-03-27 10:55:12.130 Ravens: observations locations count 9 +2024-03-27 10:55:15.318 Ravens: fetchData ObservationsLocationViewModel limit: 133746 100 offset: 0 +2024-03-27 10:55:15.322 Ravens: >>> https://waarneming.nl/api/v1/locations/133746/observations/ +2024-03-27 10:56:28.980 WARNING: *** NEW LAUNCH *** +2024-03-27 10:56:29.518 Ravens: fetchData ObservationsViewModel +2024-03-27 10:56:30.004 Ravens: observations locations count 9 +2024-03-27 10:56:34.081 Ravens: fetchData ObservationsLocationViewModel limit: 133746 100 offset: 0 +2024-03-27 10:56:34.089 Ravens: >>> https://waarneming.nl/api/v1/locations/133746/observations/ +2024-03-27 10:57:30.641 WARNING: *** NEW LAUNCH *** +2024-03-27 10:57:31.234 Ravens: fetchData ObservationsViewModel +2024-03-27 10:57:31.835 Ravens: observations locations count 9 +2024-03-27 10:57:36.732 Ravens: fetchData ObservationsLocationViewModel limit: 133746 100 offset: 0 +2024-03-27 10:57:36.742 Ravens: >>> https://waarneming.nl/api/v1/locations/133746/observations/ +2024-03-27 12:17:47.185 WARNING: *** NEW LAUNCH *** +2024-03-27 12:17:47.788 Ravens: fetchData ObservationsViewModel +2024-03-27 12:17:48.423 Ravens: observations locations count 9 +2024-03-27 12:17:51.212 Ravens: fetchData ObservationsLocationViewModel limit: 133746 100 offset: 0 +2024-03-27 12:17:51.217 Ravens: >>> https://waarneming.nl/api/v1/locations/133746/observations/ +2024-03-27 12:19:34.275 WARNING: *** NEW LAUNCH *** +2024-03-27 12:19:34.795 Ravens: fetchData ObservationsViewModel +2024-03-27 12:19:35.478 Ravens: observations locations count 9 +2024-03-27 12:19:37.146 Ravens: fetchData ObservationsLocationViewModel limit: 133746 100 offset: 0 +2024-03-27 12:19:37.154 Ravens: >>> https://waarneming.nl/api/v1/locations/133746/observations/ +2024-03-27 13:22:48.463 WARNING: *** NEW LAUNCH *** +2024-03-27 13:22:48.992 Ravens: fetchData ObservationsViewModel +2024-03-27 13:22:49.552 Ravens: observations locations count 9 +2024-03-27 13:25:38.211 WARNING: *** NEW LAUNCH *** +2024-03-27 13:25:38.621 Ravens: fetchData ObservationsViewModel +2024-03-27 13:25:39.075 Ravens: observations locations count 9 +2024-03-27 13:26:34.946 WARNING: *** NEW LAUNCH *** +2024-03-27 13:26:35.352 Ravens: fetchData ObservationsViewModel +2024-03-27 13:26:35.842 Ravens: observations locations count 9 +2024-03-27 13:30:47.334 WARNING: *** NEW LAUNCH *** +2024-03-27 13:30:47.798 Ravens: fetchData ObservationsViewModel +2024-03-27 13:30:48.373 Ravens: observations locations count 9 +2024-03-27 13:30:51.325 Ravens: fetchData ObservationsLocationViewModel limit: 133746 100 offset: 0 +2024-03-27 13:30:51.329 Ravens: >>> https://waarneming.nl/api/v1/locations/133746/observations/ +2024-03-27 13:35:53.963 WARNING: *** NEW LAUNCH *** +2024-03-27 13:35:54.560 Ravens: fetchData ObservationsViewModel +2024-03-27 13:35:55.113 Ravens: observations locations count 9 +2024-03-27 13:36:00.086 Ravens: fetchData ObservationsLocationViewModel limit: 133746 100 offset: 0 +2024-03-27 13:36:00.092 Ravens: >>> https://waarneming.nl/api/v1/locations/133746/observations/ +2024-03-27 13:36:53.259 WARNING: *** NEW LAUNCH *** +2024-03-27 13:36:53.644 Ravens: fetchData ObservationsViewModel +2024-03-27 13:36:54.184 Ravens: observations locations count 9 +2024-03-27 13:37:56.488 WARNING: *** NEW LAUNCH *** +2024-03-27 13:37:56.839 Ravens: fetchData ObservationsViewModel +2024-03-27 13:37:57.374 Ravens: observations locations count 9 +2024-03-27 13:37:58.813 Ravens: fetchData ObservationsLocationViewModel limit: 133746 100 offset: 0 +2024-03-27 13:37:58.819 Ravens: >>> https://waarneming.nl/api/v1/locations/133746/observations/ +2024-03-27 13:38:41.988 WARNING: *** NEW LAUNCH *** +2024-03-27 13:38:42.364 Ravens: fetchData ObservationsViewModel +2024-03-27 13:38:42.974 Ravens: observations locations count 9 +2024-03-27 13:38:44.252 Ravens: fetchData ObservationsLocationViewModel limit: 133746 100 offset: 0 +2024-03-27 13:38:44.257 Ravens: >>> https://waarneming.nl/api/v1/locations/133746/observations/ +2024-03-27 13:39:53.262 WARNING: *** NEW LAUNCH *** +2024-03-27 13:39:53.640 Ravens: fetchData ObservationsViewModel +2024-03-27 13:39:54.096 Ravens: observations locations count 9 +2024-03-27 13:43:37.723 WARNING: *** NEW LAUNCH *** +2024-03-27 13:43:38.092 Ravens: fetchData ObservationsViewModel +2024-03-27 13:43:38.631 Ravens: observations locations count 9 +2024-03-27 13:43:40.054 Ravens: fetchData ObservationsLocationViewModel limit: 133746 100 offset: 0 +2024-03-27 13:43:40.057 Ravens: >>> https://waarneming.nl/api/v1/locations/133746/observations/ +2024-03-27 13:53:37.543 WARNING: *** NEW LAUNCH *** +2024-03-27 13:53:38.010 Ravens: fetchData ObservationsViewModel +2024-03-27 13:53:38.450 Ravens: observations locations count 9 +2024-03-27 13:53:39.577 Ravens: fetchData ObservationsLocationViewModel limit: 133746 100 offset: 0 +2024-03-27 13:53:39.582 Ravens: >>> https://waarneming.nl/api/v1/locations/133746/observations/ +2024-03-27 13:57:42.941 WARNING: *** NEW LAUNCH *** +2024-03-27 13:57:43.339 Ravens: fetchData ObservationsViewModel +2024-03-27 13:57:43.863 Ravens: observations locations count 9 +2024-03-27 13:57:46.061 Ravens: fetchData ObservationsLocationViewModel limit: 133746 100 offset: 0 +2024-03-27 13:57:46.065 Ravens: >>> https://waarneming.nl/api/v1/locations/133746/observations/ +2024-03-27 13:58:10.437 Ravens: fetchData ObservationsViewModel +2024-03-27 13:58:10.917 Ravens: observations locations count 9 +2024-03-27 13:58:13.478 Ravens: fetchData ObservationsLocationViewModel limit: 133746 100 offset: 0 +2024-03-27 13:58:13.481 Ravens: >>> https://waarneming.nl/api/v1/locations/133746/observations/ +2024-03-27 13:58:41.218 Ravens: fetchData ObservationsLocationViewModel limit: 133746 100 offset: 0 +2024-03-27 13:58:41.221 Ravens: >>> https://waarneming.nl/api/v1/locations/133746/observations/ +2024-03-27 14:00:02.777 WARNING: *** NEW LAUNCH *** +2024-03-27 14:00:03.161 Ravens: fetchData ObservationsViewModel +2024-03-27 14:00:03.677 Ravens: observations locations count 9 +2024-03-27 14:00:05.843 Ravens: fetchData ObservationsLocationViewModel limit: 133746 100 offset: 0 +2024-03-27 14:00:05.847 Ravens: >>> https://waarneming.nl/api/v1/locations/133746/observations/ +2024-03-27 14:23:07.418 WARNING: *** NEW LAUNCH *** +2024-03-27 14:23:08.145 Ravens: fetchData ObservationsViewModel +2024-03-27 14:23:08.785 Ravens: observations locations count 9 +2024-03-27 14:23:10.404 Ravens: fetchData ObservationsLocationViewModel limit: 133746 100 offset: 0 +2024-03-27 14:23:10.408 Ravens: >>> https://waarneming.nl/api/v1/locations/133746/observations/ +2024-03-27 14:24:33.879 WARNING: *** NEW LAUNCH *** +2024-03-27 14:24:34.270 Ravens: fetchData ObservationsViewModel +2024-03-27 14:24:34.781 Ravens: observations locations count 9 +2024-03-27 14:24:38.739 Ravens: fetchData ObservationsLocationViewModel limit: 133746 100 offset: 0 +2024-03-27 14:24:38.746 Ravens: >>> https://waarneming.nl/api/v1/locations/133746/observations/ +2024-03-27 14:26:26.338 WARNING: *** NEW LAUNCH *** +2024-03-27 14:26:26.733 Ravens: fetchData ObservationsViewModel +2024-03-27 14:26:27.272 Ravens: observations locations count 9 +2024-03-27 14:26:30.097 Ravens: fetchData ObservationsLocationViewModel limit: 133746 100 offset: 0 +2024-03-27 14:26:30.102 Ravens: >>> https://waarneming.nl/api/v1/locations/133746/observations/ +2024-03-27 14:27:27.140 WARNING: *** NEW LAUNCH *** +2024-03-27 14:27:27.509 Ravens: fetchData ObservationsViewModel +2024-03-27 14:27:28.083 Ravens: observations locations count 9 +2024-03-27 14:27:30.335 Ravens: fetchData ObservationsLocationViewModel limit: 133746 100 offset: 0 +2024-03-27 14:27:30.339 Ravens: >>> https://waarneming.nl/api/v1/locations/133746/observations/ +2024-03-27 14:28:46.679 WARNING: *** NEW LAUNCH *** +2024-03-27 14:28:47.049 Ravens: fetchData ObservationsViewModel +2024-03-27 14:28:47.591 Ravens: observations locations count 9 +2024-03-27 14:28:57.832 Ravens: fetchData ObservationsLocationViewModel limit: 133746 100 offset: 0 +2024-03-27 14:28:57.837 Ravens: >>> https://waarneming.nl/api/v1/locations/133746/observations/ +2024-03-27 14:30:40.088 WARNING: *** NEW LAUNCH *** +2024-03-27 14:30:40.844 Ravens: fetchData ObservationsViewModel +2024-03-27 14:30:41.426 Ravens: observations locations count 9 +2024-03-27 14:30:43.480 Ravens: fetchData ObservationsLocationViewModel limit: 133746 100 offset: 0 +2024-03-27 14:30:43.492 Ravens: >>> https://waarneming.nl/api/v1/locations/133746/observations/ +2024-03-27 14:32:46.173 WARNING: *** NEW LAUNCH *** +2024-03-27 14:32:46.561 Ravens: fetchData ObservationsViewModel +2024-03-27 14:32:47.061 Ravens: observations locations count 9 +2024-03-27 14:32:48.443 Ravens: fetchData ObservationsLocationViewModel limit: 133746 100 offset: 0 +2024-03-27 14:32:48.448 Ravens: >>> https://waarneming.nl/api/v1/locations/133746/observations/ +2024-03-27 14:32:57.591 Ravens: fetchData ObservationsLocationViewModel limit: 133746 100 offset: 0 +2024-03-27 14:32:57.595 Ravens: >>> https://waarneming.nl/api/v1/locations/133746/observations/ +2024-03-27 14:32:58.956 Ravens: fetchData ObservationsLocationViewModel limit: 9115 100 offset: 0 +2024-03-27 14:32:58.959 Ravens: >>> https://waarneming.nl/api/v1/locations/9115/observations/ +2024-03-27 14:33:59.847 WARNING: *** NEW LAUNCH *** +2024-03-27 14:34:00.232 Ravens: fetchData ObservationsViewModel +2024-03-27 14:34:00.702 Ravens: observations locations count 9 +2024-03-27 14:34:38.727 WARNING: *** NEW LAUNCH *** +2024-03-27 14:34:39.128 Ravens: fetchData ObservationsViewModel +2024-03-27 14:34:39.698 Ravens: observations locations count 9 +2024-03-27 14:35:00.212 WARNING: *** NEW LAUNCH *** +2024-03-27 14:35:00.569 Ravens: fetchData ObservationsViewModel +2024-03-27 14:35:01.172 Ravens: observations locations count 9 +2024-03-27 14:35:02.963 Ravens: fetchData ObservationsLocationViewModel limit: 133746 100 offset: 0 +2024-03-27 14:35:02.968 Ravens: >>> https://waarneming.nl/api/v1/locations/133746/observations/ +2024-03-27 14:35:42.619 WARNING: *** NEW LAUNCH *** +2024-03-27 14:35:43.063 Ravens: fetchData ObservationsViewModel +2024-03-27 14:35:44.939 Ravens: fetchData ObservationsLocationViewModel limit: 133746 100 offset: 0 +2024-03-27 14:35:44.942 Ravens: >>> https://waarneming.nl/api/v1/locations/133746/observations/ +2024-03-27 14:35:44.961 Ravens: observations locations count 9 +2024-03-27 14:35:58.407 WARNING: *** NEW LAUNCH *** +2024-03-27 14:35:58.821 Ravens: fetchData ObservationsViewModel +2024-03-27 14:35:59.317 Ravens: observations locations count 9 +2024-03-27 14:36:00.215 Ravens: fetchData ObservationsLocationViewModel limit: 133746 100 offset: 0 +2024-03-27 14:36:00.218 Ravens: >>> https://waarneming.nl/api/v1/locations/133746/observations/ +2024-03-27 14:37:28.930 WARNING: *** NEW LAUNCH *** +2024-03-27 14:37:29.349 Ravens: fetchData ObservationsViewModel +2024-03-27 14:37:29.838 Ravens: observations locations count 9 +2024-03-27 14:37:30.934 Ravens: fetchData ObservationsLocationViewModel limit: 133746 100 offset: 0 +2024-03-27 14:37:30.938 Ravens: >>> https://waarneming.nl/api/v1/locations/133746/observations/ +2024-03-27 14:37:33.377 Ravens: fetchData ObservationsLocationViewModel limit: 9115 100 offset: 0 +2024-03-27 14:37:33.380 Ravens: >>> https://waarneming.nl/api/v1/locations/9115/observations/ +2024-03-27 14:37:39.468 Ravens: fetchData ObservationsLocationViewModel limit: 8208 100 offset: 0 +2024-03-27 14:37:39.472 Ravens: >>> https://waarneming.nl/api/v1/locations/8208/observations/ +2024-03-27 14:37:47.822 Ravens: fetchData ObservationsLocationViewModel limit: 8748 100 offset: 0 +2024-03-27 14:37:47.826 Ravens: >>> https://waarneming.nl/api/v1/locations/8748/observations/ +2024-03-27 14:37:54.327 Ravens: fetchData ObservationsLocationViewModel limit: 8748 100 offset: 0 +2024-03-27 14:37:54.330 Ravens: >>> https://waarneming.nl/api/v1/locations/8748/observations/ +2024-03-27 14:38:03.373 Ravens: fetchData ObservationsLocationViewModel limit: 7988 100 offset: 0 +2024-03-27 14:38:03.377 Ravens: >>> https://waarneming.nl/api/v1/locations/7988/observations/ +2024-03-27 14:38:34.264 WARNING: *** NEW LAUNCH *** +2024-03-27 14:38:34.651 Ravens: fetchData ObservationsViewModel +2024-03-27 14:38:35.171 Ravens: observations locations count 9