From d15775789375f0a98b2fc2e91c65cd1fa1e6f0eb Mon Sep 17 00:00:00 2001 From: Nico Date: Fri, 15 Mar 2024 19:22:46 +0100 Subject: [PATCH] sitzung luc --- Todo.txt | 20 ++++++ android/app/src/main/AndroidManifest.xml | 1 + lib/addCam/add_cam_main.dart | 85 +++++++++++++++++++----- lib/addCam/cam_widgets.dart | 29 +++----- lib/l10n/app_de.arb | 45 +++++++------ lib/l10n/app_en.arb | 23 ++++--- lib/main.dart | 2 +- lib/settings.dart | 6 ++ lib/viewCam/view_cams.dart | 4 +- pubspec.lock | 18 ++--- pubspec.yaml | 1 + time.txt | 6 +- 12 files changed, 158 insertions(+), 82 deletions(-) diff --git a/Todo.txt b/Todo.txt index c631f54..6b2ae69 100644 --- a/Todo.txt +++ b/Todo.txt @@ -2,6 +2,26 @@ todo: TESTEN!! maybe auch vorschläge aus templates in dropdown menüs anzeigen eintrag in db wenn http response (in sent column) +nachricht wenn einstellungen erfolgreich geändert +view cams übersetzen +abbaudat leer +datum step redesign (maybe linien dazwischen und sized box zwischen text und button weg) +beim nächsten schritt als template +im englischen abändern +systematic ??? +standort automatisch in Karte +karte drehen aus +Auftrag absätze machen und textfeld größer wenn langer text +beim letzten weiter alle leeren felder anzeigen (array zurückgeben) +gespeicherten ordner anzeigen +zurückfeld in datenansicht +überschriften für view cams +Überall wo Kameras steht standorte hinschreiben +null eintrag in dropdown menüs weg +speichern funktion zum Abbrechen +fehler beim speichern anzeigen +ktage raus + not to do: clean db_helper diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml index b28214f..e778bcf 100644 --- a/android/app/src/main/AndroidManifest.xml +++ b/android/app/src/main/AndroidManifest.xml @@ -32,4 +32,5 @@ + diff --git a/lib/addCam/add_cam_main.dart b/lib/addCam/add_cam_main.dart index 18f321b..8e45517 100644 --- a/lib/addCam/add_cam_main.dart +++ b/lib/addCam/add_cam_main.dart @@ -10,6 +10,7 @@ import 'package:geolocator/geolocator.dart'; import 'package:intl/intl.dart'; import 'package:latlong2/latlong.dart'; import 'package:animations/animations.dart'; +import 'package:http/http.dart' as http; class AddCamMain extends StatefulWidget { final bool isTemplate; @@ -49,10 +50,10 @@ class _AddCamMainState extends State { TextEditingController intKommC = TextEditingController(); TextEditingController kontSumC = TextEditingController(); - String selectedStatus = 'inaktiv'; + String selectedStatus = 'aktiv'; String selectedSTTyp = 'opportunistisch'; String selectedFotoFilm = 'foto'; - String selectedMEZ = 'mez'; + String selectedMEZ = 'sommerzeit'; String selectedPlatzung = 'kirrung'; String selectedBearsafe = 'nein'; @@ -69,11 +70,11 @@ class _AddCamMainState extends State { headingAccuracy: 0.0); String datumS = DateFormat('yyyy-MM-dd').format(DateTime.now()); - String kontDatS = DateFormat('yyyy-mm-dd').format(DateTime.now()); - String abbauDatS = DateFormat('yyyy-mm-dd').format(DateTime.now()); - String ausVonS = DateFormat('yyyy-mm-dd').format(DateTime(2000)); - String ausBisS = DateFormat('yyyy-mm-dd').format(DateTime(2000)); - String protoAmS = DateFormat('yyyy-mm-dd').format(DateTime.now()); + String kontDatS = DateFormat('yyyy-MM-dd').format(DateTime.now()); + String abbauDatS = DateFormat('yyyy-MM-dd').format(DateTime.now()); + String ausVonS = DateFormat('yyyy-MM-dd').format(DateTime(2000)); + String ausBisS = DateFormat('yyyy-MM-dd').format(DateTime(2000)); + String protoAmS = DateFormat('yyyy-MM-dd').format(DateTime.now()); DateTime? ausBis; DateTime? ausVon; DateTime abbauDat = DateTime.now(); @@ -207,15 +208,17 @@ class _AddCamMainState extends State { title: Text(AppLocalizations.of(context)!.savemethod), actions: [ TextButton( - onPressed: () { - Navigator.pushNamedAndRemoveUntil(context, '/home', (route) => false); + onPressed: () async { + _httpRequest(); + // Navigator.pushNamedAndRemoveUntil(context, '/home', (route) => false); }, child: Text(AppLocalizations.of(context)!.sendtoserver)), TextButton( onPressed: () async { await saveFile(); // ignore: use_build_context_synchronously - Navigator.pushNamedAndRemoveUntil(context, '/home', (route) => false); + Navigator.pushNamedAndRemoveUntil( + context, '/home', (route) => false); }, child: Text(AppLocalizations.of(context)!.saveasfile)) ], @@ -223,9 +226,55 @@ class _AddCamMainState extends State { }); } + void _httpRequest() async { + Map place = { + 'CID': id.text, + 'Rudel': rudelC.text, + 'Datum': datumS, + 'NameVorname': nameVornameC.text, + 'PLZOrt': plzOrtC.text, + 'EmailTel': emailTelC.text, + 'BLand': bLandC.text, + 'Lkr': lkrC.text, + 'BeiOrt': beiOrtC.text, + 'OrtInfo': ortInfoC.text, + 'Status': selectedStatus, + 'STTyp': selectedSTTyp, + 'FFTyp': ffTypC.text, + 'FotoFilm': selectedFotoFilm, + 'MEZ': selectedMEZ, + 'Platzung': selectedPlatzung, + 'KSchloNr': kSchloNrC.text, + 'Bearsafe': selectedBearsafe, + 'KontDat': kontDatS, + 'AbbauDat': abbauDatS, + 'Auftrag': auftragC.text, + 'Absprachen': absprachenC.text, + 'SonstBemerkungen': sonstBemerkungenC.text, + 'FKontakt1': fKontakt1C.text, + 'FKontakt2': fKontakt2C.text, + 'FKontakt3': fKontakt3C.text, + 'AltStOrt': altStOrtC.text, + 'AusVon': ausVonS, + 'AusBis': ausBisS, + 'KTage1': kTage1C.text, + 'KTage2': kTage2C.text, + 'ProtoAm': protoAmS, + 'IntKomm': intKommC.text, + 'KontSum': kontSumC.text, + }; + + final response = await http.post(Uri.parse("http://192.168.178.30/www.dbb-wolf.de/data/_nicoapi.php"), + headers: { + 'Content-Type': 'application/json; charset=UTF-8', + }, + body: jsonEncode(place)); + print(response); + } + Future saveFile() async { String? selectedDirectory = await FilePicker.platform.getDirectoryPath(); - + Map place = { 'CID': id.text, 'Rudel': rudelC.text, @@ -270,8 +319,7 @@ class _AddCamMainState extends State { File file = File('$selectedDirectory/cam-${id.text}.txt'); - await file - .writeAsString(jsonPlace); + await file.writeAsString(jsonPlace); // ignore: use_build_context_synchronously ScaffoldMessenger.of(context).showSnackBar( @@ -287,7 +335,6 @@ class _AddCamMainState extends State { 'BLand': bLandC, 'Lkr': lkrC, 'BeiOrt': beiOrtC, - 'OrtInfo': ortInfoC, 'Status': TextEditingController(text: selectedStatus), 'STTyp': TextEditingController(text: selectedSTTyp), 'FFTyp': ffTypC, @@ -572,7 +619,7 @@ class _AddCamMainState extends State { alignment: Alignment.bottomLeft, child: Row( children: [ - Text(AppLocalizations.of(context)!.sommerzeit), + Text(AppLocalizations.of(context)!.zeiteinstellung), const Text( '*', style: TextStyle(color: Colors.red), @@ -685,7 +732,7 @@ class _AddCamMainState extends State { ], )), Step( - title: Text(AppLocalizations.of(context)!.secondStep), + title: Text(AppLocalizations.of(context)!.kontakt), content: Column( children: [ const SizedBox( @@ -764,6 +811,7 @@ class _AddCamMainState extends State { final isLastStep = currentStep == getSteps().length - 1; if (!isLastStep) { + // ! saveTemplate(); setState(() { currentStep += 1; }); @@ -774,11 +822,14 @@ class _AddCamMainState extends State { (); return; } else if (empty == false) { + // throw const FormatException(("Speichert")); saveData(); await showSaveOptionsDialog(); Navigator.pushNamedAndRemoveUntil( // ignore: use_build_context_synchronously - context, '/home', (route) => false); + context, + '/home', + (route) => false); } } }, diff --git a/lib/addCam/cam_widgets.dart b/lib/addCam/cam_widgets.dart index c52eff7..6abe2a1 100644 --- a/lib/addCam/cam_widgets.dart +++ b/lib/addCam/cam_widgets.dart @@ -351,9 +351,9 @@ class _DatumState extends State { Text( '${datum?.day}. ${datum?.month}. ${datum?.year}', ), - const SizedBox( - height: 8, - ), + //const SizedBox( + // height: 2, + //), ElevatedButton( onPressed: () async { final date = await pickDate(); @@ -949,18 +949,7 @@ class _OrtInfoState extends State { flex: 2, child: TextField( decoration: InputDecoration( - hintText: AppLocalizations.of(context)!.ortinfo, - enabledBorder: widget.ortInfoC.text.isEmpty - ? const UnderlineInputBorder( - borderSide: BorderSide(color: Colors.red)) - : const UnderlineInputBorder( - borderSide: BorderSide(color: Colors.green)), - focusedBorder: widget.ortInfoC.text.isEmpty - ? const UnderlineInputBorder( - borderSide: BorderSide(color: Colors.red)) - : const UnderlineInputBorder( - borderSide: BorderSide(color: Colors.green)), - ), + hintText: AppLocalizations.of(context)!.ortinfo,), controller: widget.ortInfoC, onChanged: (value) => setState(() { widget.ortInfoC.text = value; @@ -1417,7 +1406,7 @@ class MEZ extends StatefulWidget { final Function(String) onMEZChanged; final String initialMEZ; - const MEZ({super.key, required this.onMEZChanged, this.initialMEZ = 'aktiv'}); + const MEZ({super.key, required this.onMEZChanged, this.initialMEZ = 'sommerzeit'}); @override State createState() => _MEZState(); @@ -1438,9 +1427,9 @@ class _MEZState extends State { children: [ ListTile( visualDensity: const VisualDensity(vertical: -4), - title: Text(AppLocalizations.of(context)!.mez), + title: Text(AppLocalizations.of(context)!.sommerzeit), leading: Radio( - value: 'mez', + value: 'sommerzeit', groupValue: _selectedMEZ, onChanged: (value) { setState(() { @@ -1452,9 +1441,9 @@ class _MEZState extends State { ), ListTile( visualDensity: const VisualDensity(vertical: -4), - title: Text(AppLocalizations.of(context)!.unklar), + title: Text(AppLocalizations.of(context)!.winterzeit), leading: Radio( - value: 'unklar', + value: 'winterzeit', groupValue: _selectedMEZ, onChanged: (value) { setState(() { diff --git a/lib/l10n/app_de.arb b/lib/l10n/app_de.arb index 1e5e340..37b7747 100644 --- a/lib/l10n/app_de.arb +++ b/lib/l10n/app_de.arb @@ -5,30 +5,31 @@ "uncompleted": "Unvollständig", "deleteEverything": "Alles löschen?", "deleteEverythingContent": "Alle Kameras werden lokal gelöscht!", - "camLink": "Link zur Kamera", - "firstStep": "Kamera, Rudel", - "secondStep": "Datum, Kontakt", - "date": "Datum", + "camLink": "ID der Kamera", + "firstStep": "KAMERA, TERRITORIUM", + "secondStep": "DATUM, KONTAKT", + "date": "DATUM", + "kontakt": "KONTAKT", "status": "Status", "viewCamsAppbar": "Kameras ansehen", - "locations": "Standort", - "rudel": "Rudel", + "locations": "STANDORT", + "rudel": "Territorium", "namevorname": "Name", "plzort": "PLZ und Ort", "emailtel": "Email und/oder Telefon", "bland": "Bundesland", "lkr": "Landkreis", "beiort": "Bei Ort", - "ortinfo": "Ort Info", + "ortinfo": "Nähere Ortsbeschreibung", "aktiv": "Aktiv", "inaktiv": "Inaktiv", "opportunistisch": "opportunistisch", "systematic": "systematisch", - "fftyp": "Fotofallen typ", + "fftyp": "Fotofallentyp", "foto": "Foto", "film": "Film", - "mez": "MEZ", - "unklar": "Unklar", + "sommerzeit": "Sommerzeit", + "winterzeit": "Winterzeit", "intkomm": "Interne Kommunikation", "kirrung": "Kirrung", "wasserstelle": "Wasserstelle", @@ -38,10 +39,10 @@ "kschlonr": "KSchloss Nummer", "nein": "Nein", "ja": "Ja", - "pickkontdat": "KontDat Auswählen", - "pickabbaudat": "Abbau datum Auswählen", - "platzung": "Platzung", - "sommerzeit": "sommerzeit", + "pickkontdat": "Datum Kontrolle", + "pickabbaudat": "Datum Abbau", + "platzung": "Platzierung", + "zeiteinstellung": "Zeiteinstellung", "auftrag": "Auftrag", "absprachen": "Absprachen", "sonstbemerkungen": "Sonstige Bemerkungen", @@ -49,29 +50,29 @@ "fkontakt2": "FKontakt 2", "fkontakt3": "FKontakt 3", "hofgarten": "Hof/Garten", - "altstort": "AltStOrt", + "altstort": "Alter Standort", "wiesefeld": "Wiese/Feld/offenfläche", "ausvon": "Aus von", - "nichts": "Nichts", + "nichts": "---", "ausbis": "Aus Bis", "ktage1": "KTage 1", "ktage2": "KTage 2", "eugrid": "EUGrid", - "pickDate": "Datum Auswählen", - "pickTime": "Zeit Auswählen", + "pickDate": "Datum Aufstelung", + "pickTime": "Zeit auswählen", "delAll": "Alle Kameras löschen", - "fieldEmpty": "Folgendes Felde ist leer:", + "fieldEmpty": "Folgendes Feld ist leer:", "cancel": "Abbrechen", "template": "Als Vorlage speichern", "openMap": "Karte öffnen", - "saveMap": "Speichern und Schleßen", + "saveMap": "Speichern und Schließen", "locationDisabled": "Standort ausgeschaltet. Bitte einschalten", "locationForbidden": "Zugriff auf Standort verweigert. Es ist empfohlen dies zu erlauben", "map": "Karte", "markerSet": "Marker gesetzt auf", "kontsum": "Kontrollsumme", - "bearsafe": "Bärensafe", - "sttyp": "STTyp", + "bearsafe": "Bearsafe", + "sttyp": "Status", "ort": "Ort", "continueB": "Weiter", "settings": "Einstellungen", diff --git a/lib/l10n/app_en.arb b/lib/l10n/app_en.arb index 260f1b2..49fda1a 100644 --- a/lib/l10n/app_en.arb +++ b/lib/l10n/app_en.arb @@ -132,14 +132,14 @@ "description": "film radiobutton" }, - "mez": "MEZ", - "@mez": { - "description": "mez radiobutton" + "sommerzeit": "Summertime", + "@sommerzeit": { + "description": "summertime radiobutton" }, - "unklar": "unclear", - "@unklar": { - "description": "unclear radiobutton" + "winterzeit": "winterzeit", + "@winterzeit": { + "description": "winterzeit radiobutton" }, "kirrung": "Kirrung", @@ -197,9 +197,14 @@ "description": "platzung header" }, - "sommerzeit": "Summertime", - "@sommerzeit": { - "description": "mez summertime header" + "zeiteinstellung": "Timesetting", + "@zeiteinstellung": { + "description": "summertime header" + }, + + "kontakt": "Contact", + "@kontakt": { + "description": "contact header" }, "auftrag": "Order", diff --git a/lib/main.dart b/lib/main.dart index 5c656be..d04bed3 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -31,7 +31,7 @@ class MyApp extends StatelessWidget { return MaterialApp( title: 'FFOrte', theme: - FlexThemeData.light(scheme: FlexScheme.greenM3, useMaterial3: true), + FlexThemeData.light(scheme: FlexScheme.gold, useMaterial3: true), darkTheme: FlexThemeData.dark(scheme: FlexScheme.greenM3, useMaterial3: true), themeMode: ThemeMode.system, diff --git a/lib/settings.dart b/lib/settings.dart index 735d316..1c1e38f 100644 --- a/lib/settings.dart +++ b/lib/settings.dart @@ -47,6 +47,11 @@ class _SettingsState extends State { await prefs.setString('nameVorname', nameVornameC.text); } + void _saveBLand() async { + final SharedPreferences prefs = await SharedPreferences.getInstance(); + await prefs.setString('bLand', bLandC.text); + } + @override Widget build(BuildContext context) { return Scaffold( @@ -95,6 +100,7 @@ class _SettingsState extends State { child: const Icon(Icons.save), onPressed: () { _saveName(); + _saveBLand(); }), ); } diff --git a/lib/viewCam/view_cams.dart b/lib/viewCam/view_cams.dart index b5fec86..423a7b8 100644 --- a/lib/viewCam/view_cams.dart +++ b/lib/viewCam/view_cams.dart @@ -133,7 +133,7 @@ class _ViewCamsState extends State { Map place = snapshot.data![index]; return ListTile( - title: Text('Place ${index + 1}'), + title: Text('Standort ${index + 1}'), subtitle: Text( 'ID: ${place['CID']} DATUM: ${place['Datum']}'), trailing: Checkbox( @@ -199,7 +199,7 @@ class _ViewCamsState extends State { Text( '${AppLocalizations.of(context)!.ausbis}: ${place['AusBis']}'), Text( - '${AppLocalizations.of(context)!.mez}: ${place['MEZ']}'), + '${AppLocalizations.of(context)!.sommerzeit}: ${place['MEZ']}'), Text( '${AppLocalizations.of(context)!.kontsum}: ${place['KontSum']}'), Text( diff --git a/pubspec.lock b/pubspec.lock index 5c22657..fa3832a 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -238,13 +238,13 @@ packages: source: hosted version: "0.2.2" http: - dependency: transitive + dependency: "direct main" description: name: http - sha256: a2bbf9d017fcced29139daa8ed2bba4ece450ab222871df93ca9eec6f80c34ba + sha256: "761a297c042deedc1ffbb156d6e2af13886bb305c2a343a4d972504cd67dd938" url: "https://pub.dev" source: hosted - version: "1.2.0" + version: "1.2.1" http_parser: dependency: transitive description: @@ -481,10 +481,10 @@ packages: dependency: transitive description: name: shared_preferences_web - sha256: "7b15ffb9387ea3e237bb7a66b8a23d2147663d391cafc5c8f37b2e7b4bde5d21" + sha256: "9aee1089b36bd2aafe06582b7d7817fd317ef05fc30e6ba14bff247d0933042a" url: "https://pub.dev" source: hosted - version: "2.2.2" + version: "2.3.0" shared_preferences_windows: dependency: transitive description: @@ -622,10 +622,10 @@ packages: dependency: transitive description: name: web - sha256: afe077240a270dcfd2aafe77602b4113645af95d0ad31128cc02bce5ac5d5152 + sha256: "97da13628db363c635202ad97068d47c5b8aa555808e7a9411963c533b449b27" url: "https://pub.dev" source: hosted - version: "0.3.0" + version: "0.5.1" win32: dependency: transitive description: @@ -651,5 +651,5 @@ packages: source: hosted version: "1.0.4" sdks: - dart: ">=3.2.0 <4.0.0" - flutter: ">=3.16.0" + dart: ">=3.3.0 <4.0.0" + flutter: ">=3.19.0" diff --git a/pubspec.yaml b/pubspec.yaml index d0eaee8..352dcf8 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -46,6 +46,7 @@ dependencies: shared_preferences: ^2.2.2 flutter_file_dialog: ^3.0.2 file_picker: ^6.2.0 + http: ^1.2.1 dev_dependencies: flutter_lints: ^3.0.1 diff --git a/time.txt b/time.txt index 16f6ebd..98e45f1 100644 --- a/time.txt +++ b/time.txt @@ -21,7 +21,7 @@ 18 dez 2h 20 dez 15 min 21 dez 1h 45 min -24 jan 1 20 min +24 jan 1h 20 min 25 jan 30 min 26 jan 1h 10 min 31 jan 1h 10 min @@ -37,4 +37,6 @@ 26 feb 1h 30 min 27 feb 1h 10 min 2 mär 1h 30 min -7 mär 1h \ No newline at end of file +7 mär 1h + +- abgerechnet - \ No newline at end of file