From 4ffe64077d9d2ec2df17d32bf0f609e3ea243eb2 Mon Sep 17 00:00:00 2001 From: nico Date: Wed, 1 May 2024 01:44:12 +0200 Subject: [PATCH] improved databases --- Todo.txt | 11 ++-- lib/addCam/add_cam_main.dart | 22 +++---- lib/other/db_helper.dart | 38 ++++++------ lib/viewCam/view_cams.dart | 114 ++--------------------------------- pubspec.lock | 8 +++ pubspec.yaml | 1 + 6 files changed, 50 insertions(+), 144 deletions(-) diff --git a/Todo.txt b/Todo.txt index 782c3a2..523bad6 100644 --- a/Todo.txt +++ b/Todo.txt @@ -1,14 +1,9 @@ todo: -Primary key(s) ändern -ausvon und ausbis fixen (falsches datum übergeben (20000-01-01)) -zurückfeld in datenansicht -maybe auch vorschläge aus templates in dropdown menüs anzeigen im englischen abändern einzelnen eintrag löschen -alle datumsfelder in 1 klasse und überarbeiten dass entfernen funktioniert und knöpfe bissl breiter sandorte ansehen in karte (extra tab) Platzierung garnix als standart aber pflichtfeld - +fix send file to server keine ahnung obs funktioniert: TEST SEND FILE TO SERVER FUNCTION @@ -16,6 +11,10 @@ eintrg in db wenn http response (in sent column) not to do: +zurückfeld in datenansicht +maybe auch vorschläge aus templates in dropdown menüs anzeigen +ausvon und ausbis fixen (falsches datum übergeben (20000-01-01)) +Primary key(s) ändern redesign datenansicht möglichkeit einfügen um nicht gesendete einträge zu senden save option einfügen nur zum speichern diff --git a/lib/addCam/add_cam_main.dart b/lib/addCam/add_cam_main.dart index d6e4b80..d6c66be 100644 --- a/lib/addCam/add_cam_main.dart +++ b/lib/addCam/add_cam_main.dart @@ -7,7 +7,6 @@ import 'package:file_picker/file_picker.dart'; import 'package:flutter/material.dart'; import 'package:flutter_gen/gen_l10n/app_localizations.dart'; import 'package:geolocator/geolocator.dart'; -import 'package:intl/intl.dart'; import 'package:latlong2/latlong.dart'; import 'package:animations/animations.dart'; import 'package:dio/dio.dart'; @@ -29,7 +28,7 @@ class _AddCamMainState extends State { int currentStep = 0; // bool isTemplate = false; - TextEditingController id = TextEditingController(); + TextEditingController cid = TextEditingController(); TextEditingController rudelC = TextEditingController(); TextEditingController adresse1C = TextEditingController(); TextEditingController adresse2C = TextEditingController(); @@ -78,7 +77,8 @@ class _AddCamMainState extends State { Map getPlace() { Map place = { - 'CID': id.text, + 'ID': widget.existingData?['ID'], + 'CID': cid.text, 'Rudel': rudelC.text, 'Datum': datum.toString().split(" ").first, 'Adresse1': adresse1C.text, @@ -169,7 +169,7 @@ class _AddCamMainState extends State { // If a template is edited this fills in the existing values if (widget.isTemplate || widget.isFinished && widget.existingData != null) { - id.text = widget.existingData!['CID']; + cid.text = widget.existingData!['CID']; rudelC.text = widget.existingData!['Rudel']; adresse1C.text = widget.existingData!['Adresse1']; adresse2C.text = widget.existingData!['Adresse2']; @@ -186,9 +186,9 @@ class _AddCamMainState extends State { selectedPlatzung = widget.existingData!['Platzung']; kSchloNrC.text = widget.existingData!['KSchloNr']; selectedBearsafe = widget.existingData!['Bearsafe']; - datum = widget.existingData!['Datum']; - kontDat = widget.existingData!['KontDat']; - abbauDat = widget.existingData!['AbbauDat']; + datum = DateTime.parse(widget.existingData!['Datum']); + kontDat = DateTime.parse(widget.existingData!['KontDat']); + abbauDat = widget.existingData!['AbbauDat'] == "" ? null : DateTime.parse(widget.existingData!['AbbauDat']); auftragC.text = widget.existingData!['Auftrag']; kontAbspC.text = widget.existingData!['KontAbsp']; sonstBemC.text = widget.existingData!['SonstBem']; @@ -198,7 +198,7 @@ class _AddCamMainState extends State { standortC.text = widget.existingData!['Standort']; kTage1C.text = widget.existingData!['KTage1'].toString(); kTage2C.text = widget.existingData!['KTage2'].toString(); - protoAm = widget.existingData!['ProtoAm']; + protoAm = DateTime.parse(widget.existingData!['ProtoAm']); intKommC.text = widget.existingData!['IntKomm']; betreuungC.text = widget.existingData!['Betreuung']; } @@ -367,7 +367,7 @@ class _AddCamMainState extends State { List emptyFields = []; Map fields = { - 'CID': id, + 'CID': cid, 'Rudel': rudelC, 'Adresse1': adresse1C, 'BLand': bLandC, @@ -419,7 +419,7 @@ class _AddCamMainState extends State { await placeDB.addPlace(place); if (widget.isTemplate) { - await placeDB.deleteTemplate(id.text); + await placeDB.deleteTemplate(cid.text); } } @@ -485,7 +485,7 @@ class _AddCamMainState extends State { height: 20, ), VarTextField( - textController: id, + textController: cid, localization: AppLocalizations.of(context)!.camLink, dbName: "CID", required: true), diff --git a/lib/other/db_helper.dart b/lib/other/db_helper.dart index c200d71..49d3fb6 100644 --- a/lib/other/db_helper.dart +++ b/lib/other/db_helper.dart @@ -30,9 +30,9 @@ class DBHelper { // The function that helps _onCreatePlace(Database placeDB, int version) async { await placeDB.execute( - 'CREATE TABLE place (CID TEXT PRIMARY KEY UNIQUE NOT NULL, Standort TEXT, Rudel TEXT, Datum DATE, Adresse1 TEXT, Adresse2 TEXT, Adresse3 TEXT, BLand TEXT, Lkr TEXT, BeiOrt TEXT, OrtInfo TEXT, Status TEXT, STTyp TEXT, FFTyp TEXT, FotoFilm TEXT, MEZ TEXT, Platzung TEXT, KSchloNr TEXT, Bearsafe TEXT, KontDat DATE, Betreuung TEXT, AbbauDat DATE, Auftrag TEXT, KontAbsp TEXT, SonstBem TEXT, FKontakt1 TEXT, FKontakt2 TEXT, FKontakt3 TEXT, KTage1 INTEGER, KTage2 INTEGER, ProtoAm DATE, IntKomm TEXT, DECLNG DECIMALS(4,8), DECLAT DECIMALS(4,8), Sent INTEGER DEFAULT 0)'); + 'CREATE TABLE place (ID INTEGER PRIMARY KEY AUTOINCREMENT, CID TEXT, Standort TEXT, Rudel TEXT, Datum DATE, Adresse1 TEXT, Adresse2 TEXT, Adresse3 TEXT, BLand TEXT, Lkr TEXT, BeiOrt TEXT, OrtInfo TEXT, Status TEXT, STTyp TEXT, FFTyp TEXT, FotoFilm TEXT, MEZ TEXT, Platzung TEXT, KSchloNr TEXT, Bearsafe TEXT, KontDat DATE, Betreuung TEXT, AbbauDat DATE, Auftrag TEXT, KontAbsp TEXT, SonstBem TEXT, FKontakt1 TEXT, FKontakt2 TEXT, FKontakt3 TEXT, KTage1 INTEGER, KTage2 INTEGER, ProtoAm DATE, IntKomm TEXT, DECLNG DECIMALS(4,8), DECLAT DECIMALS(4,8), Sent INTEGER DEFAULT 0)'); await placeDB.execute( - 'CREATE TABLE templates (CID TEXT PRIMARY KEY UNIQUE NOT NULL, Standort TEXT, Rudel TEXT, Datum DATE, Adresse1 TEXT, Adresse2 TEXT, Adresse3 TEXT, BLand TEXT, Lkr TEXT, BeiOrt TEXT, OrtInfo TEXT, Status TEXT, STTyp TEXT, FFTyp TEXT, FotoFilm TEXT, MEZ TEXT, Platzung TEXT, KSchloNr TEXT, Bearsafe TEXT, KontDat DATE, Betreuung TEXT, AbbauDat DATE, Auftrag TEXT, KontAbsp TEXT, SonstBem TEXT, FKontakt1 TEXT, FKontakt2 TEXT, FKontakt3 TEXT, KTage1 INTEGER, KTage2 INTEGER, ProtoAm DATE, IntKomm TEXT, DECLNG DECIMALS(4,8), DECLAT DECIMALS(4,8))'); + 'CREATE TABLE templates (ID INTEGER PRIMARY KEY AUTOINCREMENT, CID TEXT, Standort TEXT, Rudel TEXT, Datum DATE, Adresse1 TEXT, Adresse2 TEXT, Adresse3 TEXT, BLand TEXT, Lkr TEXT, BeiOrt TEXT, OrtInfo TEXT, Status TEXT, STTyp TEXT, FFTyp TEXT, FotoFilm TEXT, MEZ TEXT, Platzung TEXT, KSchloNr TEXT, Bearsafe TEXT, KontDat DATE, Betreuung TEXT, AbbauDat DATE, Auftrag TEXT, KontAbsp TEXT, SonstBem TEXT, FKontakt1 TEXT, FKontakt2 TEXT, FKontakt3 TEXT, KTage1 INTEGER, KTage2 INTEGER, ProtoAm DATE, IntKomm TEXT, DECLNG DECIMALS(4,8), DECLAT DECIMALS(4,8))'); } // Function to add a finished entrie @@ -40,14 +40,14 @@ class DBHelper { var placeDBClient = await placeDB; // gets an camid if it already exists - final existingCID = await placeDBClient.query( + final existingID = await placeDBClient.query( 'place', - where: 'CID = ?', - whereArgs: [place['CID']], + where: 'ID = ?', + whereArgs: [place['ID']], ); // checks if the camid var from before is empty to avoid double entries - if (existingCID.isNotEmpty) { + if (existingID.isNotEmpty) { updatePlace(place); return; } @@ -68,8 +68,8 @@ class DBHelper { await placeDBClient.update( 'place', place, - where: "CID = ?", - whereArgs: [place['CID']] + where: "ID = ?", + whereArgs: [place['ID']] ); } @@ -78,7 +78,7 @@ class DBHelper { var placeDBClient = await placeDB; placeDBClient.update('place', true as Map, - where: 'CID = ?', whereArgs: ['CID']); + where: 'ID = ?', whereArgs: ['ID']); } // same thing as before but with templatews @@ -87,8 +87,8 @@ class DBHelper { final existingCID = await placeDBClient.query( 'templates', - where: 'CID = ?', - whereArgs: [templates['CID']], + where: 'ID = ?', + whereArgs: [templates['ID']], ); if (existingCID.isNotEmpty) { return; @@ -108,8 +108,8 @@ class DBHelper { await placeDBClient.update( 'templates', template, - where: "CID = ?", - whereArgs: [template['CID']], + where: "ID = ?", + whereArgs: [template['ID']], ); } @@ -138,22 +138,22 @@ class DBHelper { } // delete specific template - Future deleteTemplate(String cid) async { + Future deleteTemplate(String id) async { var placeDBClient = await placeDB; await placeDBClient.delete( 'templates', - where: 'CID = ?', - whereArgs: [cid], + where: 'ID = ?', + whereArgs: [id], ); } // delete specific place - Future deletePlace(String cid) async { + Future deletePlace(String id) async { var placeDBClient = await placeDB; await placeDBClient.delete( 'place', - where: 'CID = ?', - whereArgs: [cid], + where: 'ID = ?', + whereArgs: [id], ); } } diff --git a/lib/viewCam/view_cams.dart b/lib/viewCam/view_cams.dart index c76605c..f15b3d7 100644 --- a/lib/viewCam/view_cams.dart +++ b/lib/viewCam/view_cams.dart @@ -159,115 +159,13 @@ class _ViewCamsState extends State { onChanged: null, ), onTap: () async { - Navigator.push( - context, - MaterialPageRoute(builder: (context) => - AddCamMain( - isFinished: true, - existingData: place, - ) - ) - ); - -/* showPopupCard( - context: context, - builder: (context) { - return PopupCard( - color: Theme.of(context).cardColor, - shape: RoundedRectangleBorder( - borderRadius: - BorderRadius.circular(12)), - child: Container( - decoration: BoxDecoration( - borderRadius: - BorderRadius.circular(12), - color: - Theme.of(context).cardColor, - boxShadow: [ - BoxShadow( - color: Theme.of(context) - .primaryColor, - spreadRadius: 7, - blurRadius: 7, - offset: - const Offset(0, 3)) - ]), - child: Padding( - padding: - const EdgeInsets.all(8.0), - child: SingleChildScrollView( - child: Column( - crossAxisAlignment: - CrossAxisAlignment.start, - children: [ - Text( - '${AppLocalizations.of(context)!.date}: ${place['Datum']}'), - Text( - '${AppLocalizations.of(context)!.rudel}: ${place['Rudel']}'), - Text( - '${AppLocalizations.of(context)!.fftyp}: ${place['Datum']}'), - Text( - '${AppLocalizations.of(context)!.bearsafe}: ${place['Bearsafe']}'), - Text( - '${AppLocalizations.of(context)!.status}: ${place['Status']}'), - Text( - '${AppLocalizations.of(context)!.sttyp}: ${place['STTyp']}'), - Text( - '${AppLocalizations.of(context)!.foto}/${AppLocalizations.of(context)!.film}: ${place['FotoFilm']}'), - Text( - '${AppLocalizations.of(context)!.kschlonr}: ${place['KSchloNr']}'), - Text( - '${AppLocalizations.of(context)!.ktage1}: ${place['KTage1']}'), - Text( - '${AppLocalizations.of(context)!.ktage2}: ${place['KTage2']}'), - Text( - '${AppLocalizations.of(context)!.pickkontdat}: ${place['KontDat']}'), - Text( - '${AppLocalizations.of(context)!.pickabbaudat}: ${place['AbbauDat']}'), - Text( - '${AppLocalizations.of(context)!.sommerzeit}: ${place['MEZ']}'), - Text( - '${AppLocalizations.of(context)!.betreuung}: ${place['Betreuung']}'), - Text( - '${AppLocalizations.of(context)!.location}: ${place['Standort']}'), - Text( - '${AppLocalizations.of(context)!.adresse3}: ${place['Adresse3']}'), - Text( - '${AppLocalizations.of(context)!.bland}: ${place['BLand']}'), - Text( - '${AppLocalizations.of(context)!.lkr}: ${place['Lkr']}'), - Text( - '${AppLocalizations.of(context)!.beiort}: ${place['BeiOrt']}'), - Text( - '${AppLocalizations.of(context)!.platzung}: ${place['Platzung']}'), - Text( - '${AppLocalizations.of(context)!.altstort}: ${place['AltStOrt']}'), - Text( - '${AppLocalizations.of(context)!.adresse1}: ${place['Adresse1']}'), - Text( - '${AppLocalizations.of(context)!.adresse2}: ${place['Adresse2']}'), - Text( - '${AppLocalizations.of(context)!.auftrag}: ${place['Auftrag']}'), - Text( - '${AppLocalizations.of(context)!.kontabsp}: ${place['KontAbsp']}'), - Text( - '${AppLocalizations.of(context)!.sonstbemerkungen}: ${place['SonstBem']}'), - Text( - '${AppLocalizations.of(context)!.fkontakt1}: ${place['FKontakt1']}'), - Text( - '${AppLocalizations.of(context)!.fkontakt2}: ${place['FKontakt2']}'), - Text( - '${AppLocalizations.of(context)!.fkontakt3}: ${place['FKontakt3']}'), - Text( - '${AppLocalizations.of(context)!.intkomm}: ${place['IntKomm']}'), - ], - ), - ), - ), - ), - ); - }); */ + context, + MaterialPageRoute( + builder: (context) => AddCamMain( + isFinished: true, + existingData: place, + ))); }, ); }, diff --git a/pubspec.lock b/pubspec.lock index 7a9185f..625a0b0 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -187,6 +187,14 @@ packages: url: "https://pub.dev" source: hosted version: "0.1.2" + flutter_slidable: + dependency: "direct main" + description: + name: flutter_slidable + sha256: "673403d2eeef1f9e8483bd6d8d92aae73b1d8bd71f382bc3930f699c731bc27c" + url: "https://pub.dev" + source: hosted + version: "3.1.0" flutter_test: dependency: "direct dev" description: flutter diff --git a/pubspec.yaml b/pubspec.yaml index 4c4f50f..8f87dc1 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -49,6 +49,7 @@ dependencies: http: ^1.2.1 dio: ^5.4.1 geocoding: ^3.0.0 + flutter_slidable: ^3.1.0 dev_dependencies: flutter_lints: ^3.0.1