From 9e6e1d47f3cf43e3285b74a42a3c058109c10098 Mon Sep 17 00:00:00 2001 From: Maximilian Betz <Maximilian.Betz@awi.de> Date: Tue, 15 Mar 2022 12:18:15 +0100 Subject: [PATCH] updated date time format to sensor format --- README.md | 24 +++++++++++++----------- lib/addevent.dart | 24 +++++++++++++++--------- lib/datamodel.dart | 26 +++++++++++++------------- lib/viewevents.dart | 14 +++++++------- 4 files changed, 48 insertions(+), 40 deletions(-) diff --git a/README.md b/README.md index fec890d..5429024 100644 --- a/README.md +++ b/README.md @@ -14,7 +14,6 @@ A cross plattform project for android and ios to log events offline everywhere a - How to store not uploaded events locally? Dumping jsons to a file?, ObjectBox, SharedPreferences, - ## Local Base Data Concept - The configuration.dart age widget is used to get the online available information for available devices and event creation. @@ -22,37 +21,40 @@ A cross plattform project for android and ios to log events offline everywhere a - This "base data" is required to provide the dropdown menu options on the addevent.dart page. - This "base data" needs to be stored persistently, so that it is available also offline! -## Add Event Widget +## Add Event Page - Usw Switch for automatic GNSS and Time update. - Show "now" time button only if GNSS is disabled. This button shall fill the timestamp with the current utc time. -## View Events Widget +## View & Sync Page - Events added on the addevent.dart page have to be stored locally persistently. They can be displayed in the view events widget. Each event has a flag which shows if the event is already exported to sensor. Shall exported events be displayed here? Slide switch to also show exported events? - Functionality to export events locally for backup in the field! - + ## Configuration Page -- Dropdown "Collection" to select a collection -- Textfield to show current locally selected and offline available collection +- Switch to select if Mission or Collection based. +- Dropdown "Collection" to select a collection / mission - Button "get Collection devices from Sensor" - Button "store Collection devices locally" - Select a Mission from the new Sensor-Mission-Management to get a set of devices. -- Also input username und passwort on this page. "Test login on store even if not required here" +- Username und passwort. "Test login on store even if not required here" ## GNSS -- Checkbox on add event page which activates GNSS locationing. A field shall signal "no fix" or presision in meter. -The fields lat, long, elevation are updated automatically if checkbox is checked. +- Switch on add event page which activates GNSS locationing. A field shall signal "no fix" or presision in meter. +The fields lat, long, elevation and timestamp are updated automatically if checkbox is checked. # Input validation - a-z , A-Z , _ , 0-9 , ,(Comma) , ( , ) , + , - , . , : - -90 => Latitude <= +90 -180 => Longitude <= +180 Elevation: any numer + + +## TODOs +- FlutterSecureStorage for user password? + diff --git a/lib/addevent.dart b/lib/addevent.dart index a79a847..9f8b64c 100644 --- a/lib/addevent.dart +++ b/lib/addevent.dart @@ -189,8 +189,9 @@ class _AddEventPageState extends State<AddEvent> { eventsStore.currentEvent.elevation = alt; var date = DateTime.now().toUtc(); - eventsStore.currentEvent.startDate = '$date'; - eventsStore.currentEvent.endDate = '$date'; + var isoDate = date.toIso8601String(); + eventsStore.currentEvent.startDate = isoDate; + eventsStore.currentEvent.endDate = isoDate; if(accuracy == 0.0){ gnssStatusText = "No-Fix"; @@ -315,9 +316,10 @@ class _AddEventPageState extends State<AddEvent> { showTitleActions: true, onConfirm: (date) { //Only one field for start and end date. - eventsStore.currentEvent.startDate = '$date'; - eventsStore.currentEvent.endDate = '$date'; - debugPrint('Date set to : $date'); + var isoDate = date.toIso8601String(); + eventsStore.currentEvent.startDate = isoDate; + eventsStore.currentEvent.endDate = isoDate; + debugPrint('Date set to : $isoDate'); setState(() {}); }, currentTime: DateTime.now().toUtc(), @@ -328,8 +330,9 @@ class _AddEventPageState extends State<AddEvent> { ElevatedButton( onPressed: () { var date = DateTime.now().toUtc(); - eventsStore.currentEvent.startDate = '$date'; - eventsStore.currentEvent.endDate = '$date'; + var isoDate = date.toIso8601String(); + eventsStore.currentEvent.startDate = isoDate; + eventsStore.currentEvent.endDate = isoDate; debugPrint('Date set to : ' + eventsStore.currentEvent.endDate.toString()); setState(() {}); @@ -468,8 +471,11 @@ class _AddEventPageState extends State<AddEvent> { //Update time for next event var date = DateTime.now().toUtc(); - eventsStore.currentEvent.startDate = '$date'; - eventsStore.currentEvent.endDate = '$date'; + var isoDate = date.toIso8601String(); + eventsStore.currentEvent.startDate = isoDate; + eventsStore.currentEvent.endDate = isoDate; + + debugPrint(date.toIso8601String()); } setState(() {}); }, diff --git a/lib/datamodel.dart b/lib/datamodel.dart index 2ab5425..8c8da8f 100644 --- a/lib/datamodel.dart +++ b/lib/datamodel.dart @@ -88,19 +88,19 @@ class Event{ } Map<String, dynamic> toSensorJson() => { - 'itemID':id, - 'inheritToAllChildren':'false', - 'inheritToChildren':[], - 'event':{ - 'startDate':startDate, - 'endDate':endDate, - 'label':label, - 'description':description, - 'eventType':type, - 'latitude':latitude, - 'longitude':longitude, - 'elevationInMeter':elevation, - 'id':0 + "\"itemID\"":"\"$id\"", + "\"inheritToAllChildren\"":"\"false\"", + "\"inheritToChildren\"":[], + "\"event\"":{ + "\"startDate\"":"\"$startDate\"", + "\"endDate\"":"\"$endDate\"", + "\"label\"":"\"$label\"", + "\"description\"":"\"$description\"", + "\"eventType\"":"\"$type\"", + "\"latitude\"":"\"$latitude\"", + "\"longitude\"":"\"$longitude\"", + "\"elevationInMeter\"":"\"$elevation\"", + "\"id\"":"\"0\"" } }; diff --git a/lib/viewevents.dart b/lib/viewevents.dart index 39f3d01..5e25506 100644 --- a/lib/viewevents.dart +++ b/lib/viewevents.dart @@ -22,7 +22,12 @@ Future<bool> syncEvents() async { url = base_url + event.id.toString() + '?createVersion=false'; debugPrint('XXX ' + Uri.parse(url).toString()); final response = await http.put(Uri.parse(url), - headers: { "Accept" : "application/json"}, + + + headers: { + "Content-Type": "application/json", + "Cookie": "x-auth-token=72d9d4d20a33f87edca7e1ba01ce8db8" + }, body: event.toSensorJson().toString(), encoding: Encoding.getByName("utf-8"), ); @@ -39,13 +44,8 @@ Future<bool> syncEvents() async { debugPrint('Header: ' + response.headers.toString()); debugPrint('Body: ' + response.body.toString()); debugPrint('StatusCode: ' + response.statusCode.toString()); - throw Exception('Failed to login'); + throw Exception('Failed to put.'); } - - - - - } } -- GitLab