fixed error where complete entries are shown as incomplete and made ui enhancements to overview

This commit is contained in:
Nico
2025-06-05 18:44:18 +02:00
parent cd2a80113e
commit 9431232e91
8 changed files with 70 additions and 84 deletions

View File

@@ -584,7 +584,7 @@ class _ExcursionMainState extends State<ExcursionMain> {
bool pop = await AddEntriesDialogHelper.showSaveOptionsDialog( bool pop = await AddEntriesDialogHelper.showSaveOptionsDialog(
context, context,
getFieldsText(), getFieldsText(),
widget.isTemplate, isTemplate,
DatabasesEnum.excursion, DatabasesEnum.excursion,
); );
if (pop && context.mounted) Navigator.of(context).pop(); if (pop && context.mounted) Navigator.of(context).pop();

View File

@@ -215,7 +215,7 @@ class _TrackingState extends State<Tracking> {
currentPosition!.longitude, currentPosition!.longitude,
), ),
radius: currentPosition!.accuracy, radius: currentPosition!.accuracy,
color: Colors.blue.withOpacity(0.2), color: Colors.blue.withAlpha(2),
borderColor: Colors.blue, borderColor: Colors.blue,
borderStrokeWidth: 2, borderStrokeWidth: 2,
), ),

View File

@@ -258,7 +258,7 @@ class AddEntriesDialogHelper {
); );
} }
} catch (e) { } catch (e) {
debugPrint(e.toString()); print(e.toString());
} }
}, },
child: Text(AppLocalizations.of(context)!.justsave), child: Text(AppLocalizations.of(context)!.justsave),

View File

@@ -5,7 +5,7 @@ import 'package:fforte/screens/sharedMethods/delete_templates.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
class ViewEntriesDialogHelper { class ViewEntriesDialogHelper {
static void deleteAllMainEntries( static Future<void> deleteAllMainEntries(
BuildContext context, BuildContext context,
DatabasesEnum dbType, DatabasesEnum dbType,
) async { ) async {
@@ -24,10 +24,10 @@ class ViewEntriesDialogHelper {
), ),
actions: <Widget>[ actions: <Widget>[
TextButton( TextButton(
onPressed: () { onPressed: () async {
DeleteMainEntries.deleteAll(dbType); await DeleteMainEntries.deleteAll(dbType);
Navigator.of(context).pop(); if (context.mounted) Navigator.of(context).pop();
}, },
child: Text(AppLocalizations.of(context)!.deleteEverything), child: Text(AppLocalizations.of(context)!.deleteEverything),
), ),
@@ -43,7 +43,7 @@ class ViewEntriesDialogHelper {
); );
} }
static void deleteAllTemplates( static Future<void> deleteAllTemplates(
BuildContext context, BuildContext context,
DatabasesEnum dbType, DatabasesEnum dbType,
) async { ) async {
@@ -62,9 +62,9 @@ class ViewEntriesDialogHelper {
), ),
actions: <Widget>[ actions: <Widget>[
TextButton( TextButton(
onPressed: () { onPressed: () async {
DeleteTemplates.deleteAll(dbType); await DeleteTemplates.deleteAll(dbType);
Navigator.of(context).pop(); if (context.mounted) Navigator.of(context).pop();
}, },
child: Text(AppLocalizations.of(context)!.deleteEverything), child: Text(AppLocalizations.of(context)!.deleteEverything),
), ),

View File

@@ -4,7 +4,7 @@ import 'package:fforte/methods/excursion_db_helper.dart';
import 'package:fforte/methods/place_db_helper.dart'; import 'package:fforte/methods/place_db_helper.dart';
class DeleteMainEntries { class DeleteMainEntries {
static void deleteAll(DatabasesEnum dbType) { static Future<void> deleteAll(DatabasesEnum dbType) async {
IDb? db; IDb? db;
if (dbType == DatabasesEnum.place) { if (dbType == DatabasesEnum.place) {
@@ -12,10 +12,10 @@ class DeleteMainEntries {
} else if (dbType == DatabasesEnum.excursion) { } else if (dbType == DatabasesEnum.excursion) {
db = ExcursionDBHelper(); db = ExcursionDBHelper();
} }
db!.deleteAllMainEntries(); await db!.deleteAllMainEntries();
} }
static void deleteSingle(DatabasesEnum dbType, int id) { static Future<void> deleteSingle(DatabasesEnum dbType, int id) async {
IDb? db; IDb? db;
if (dbType == DatabasesEnum.place) { if (dbType == DatabasesEnum.place) {
@@ -24,6 +24,6 @@ class DeleteMainEntries {
db = ExcursionDBHelper(); db = ExcursionDBHelper();
} }
db!.deleteMainEntryById(id.toString()); await db!.deleteMainEntryById(id.toString());
} }
} }

View File

@@ -5,7 +5,7 @@ import 'package:fforte/methods/place_db_helper.dart';
class DeleteTemplates { class DeleteTemplates {
static void deleteSingle(DatabasesEnum dbType, String id) { static Future<void> deleteSingle(DatabasesEnum dbType, String id) async {
IDb? db; IDb? db;
if (dbType == DatabasesEnum.place) { if (dbType == DatabasesEnum.place) {
@@ -14,10 +14,10 @@ class DeleteTemplates {
db = ExcursionDBHelper(); db = ExcursionDBHelper();
} }
db!.deleteTemplateById(id); await db!.deleteTemplateById(id);
} }
static void deleteAll(DatabasesEnum dbType) { static Future<void> deleteAll(DatabasesEnum dbType) async {
IDb? db; IDb? db;
if (dbType == DatabasesEnum.place) { if (dbType == DatabasesEnum.place) {
@@ -26,6 +26,6 @@ class DeleteTemplates {
db = ExcursionDBHelper(); db = ExcursionDBHelper();
} }
db!.deleteAllMainEntries(); await db!.deleteAllMainEntries();
} }
} }

View File

@@ -1,4 +1,3 @@
// TODO remove sent
import 'dart:convert'; import 'dart:convert';
import 'package:dio/dio.dart'; import 'package:dio/dio.dart';

View File

@@ -11,6 +11,7 @@ import 'package:flutter/material.dart';
import 'package:fforte/l10n/app_localizations.dart'; import 'package:fforte/l10n/app_localizations.dart';
import 'package:flutter_map/flutter_map.dart'; import 'package:flutter_map/flutter_map.dart';
import 'package:flutter_slidable/flutter_slidable.dart'; import 'package:flutter_slidable/flutter_slidable.dart';
import 'package:intl/intl.dart';
import 'package:latlong2/latlong.dart'; import 'package:latlong2/latlong.dart';
// * Site that shows all entries in the databases // * Site that shows all entries in the databases
@@ -28,11 +29,13 @@ class _ViewEntriesState extends State<ViewEntries> {
List<Map<String, dynamic>> templates = []; List<Map<String, dynamic>> templates = [];
List<Marker> marker = []; List<Marker> marker = [];
final DateFormat dateFormat = DateFormat('dd.MM.yyyy');
// loads the entries // loads the entries
@override @override
void initState() { void initState() {
super.initState();
reloadAllEntries(); reloadAllEntries();
super.initState();
} }
Future<void> reloadAllEntries() async { Future<void> reloadAllEntries() async {
@@ -89,7 +92,9 @@ class _ViewEntriesState extends State<ViewEntries> {
Tab(text: AppLocalizations.of(context)!.map), Tab(text: AppLocalizations.of(context)!.map),
], ],
), ),
title: widget.dbType == DatabasesEnum.place ? Text(AppLocalizations.of(context)!.viewplacesappbar) : Text(AppLocalizations.of(context)!.viewExcursionen) , title: widget.dbType == DatabasesEnum.place
? Text(AppLocalizations.of(context)!.viewplacesappbar)
: Text(AppLocalizations.of(context)!.viewExcursionen),
), ),
body: TabBarView( body: TabBarView(
children: [ children: [
@@ -97,11 +102,14 @@ class _ViewEntriesState extends State<ViewEntries> {
child: Scaffold( child: Scaffold(
floatingActionButton: FloatingActionButton( floatingActionButton: FloatingActionButton(
child: const Icon(Icons.delete), child: const Icon(Icons.delete),
onPressed: () { onPressed: () async {
ViewEntriesDialogHelper.deleteAllMainEntries( await ViewEntriesDialogHelper.deleteAllMainEntries(
context, context,
widget.dbType, widget.dbType,
); );
setState(() {
reloadAllEntries();
});
}, },
), ),
body: Column( body: Column(
@@ -170,13 +178,13 @@ class _ViewEntriesState extends State<ViewEntries> {
], ],
), ),
child: ListTile( child: ListTile(
title: Text('Standort ${index + 1}'), title: Text(
'${widget.dbType == DatabasesEnum.place ? AppLocalizations.of(context)!.justplace : AppLocalizations.of(context)!.excursion} ${mainEntries[index]["ID"]}'),
subtitle: Text( subtitle: Text(
'ID: ${mainEntries[index]['ID']} DATUM: ${widget.dbType == DatabasesEnum.place ? mainEntries[index]['Datum'] : mainEntries[index]["LogDat"]}', dateFormat.format(DateTime.parse(mainEntries[index]["Datum"])),
), ),
trailing: Checkbox( trailing: Checkbox(
value: value: mainEntries[index]['Sent'] == 0
mainEntries[index]['Sent'] == 0
? false ? false
: true, : true,
onChanged: null, onChanged: null,
@@ -186,10 +194,8 @@ class _ViewEntriesState extends State<ViewEntries> {
Navigator.push( Navigator.push(
context, context,
MaterialPageRoute( MaterialPageRoute(
builder: builder: (context) => AddCamMain(
(context) => AddCamMain( isSent: mainEntries[index]['Sent'] == 1
isSent:
mainEntries[index]['Sent'] == 1
? true ? true
: false, : false,
existingData: mainEntries[index], existingData: mainEntries[index],
@@ -201,10 +207,8 @@ class _ViewEntriesState extends State<ViewEntries> {
Navigator.push( Navigator.push(
context, context,
MaterialPageRoute( MaterialPageRoute(
builder: builder: (context) => ExcursionMain(
(context) => ExcursionMain( isSent: mainEntries[index]['Sent'] == 1
isSent:
mainEntries[index]['Sent'] == 1
? true ? true
: false, : false,
existingData: mainEntries[index], existingData: mainEntries[index],
@@ -226,11 +230,14 @@ class _ViewEntriesState extends State<ViewEntries> {
child: Scaffold( child: Scaffold(
floatingActionButton: FloatingActionButton( floatingActionButton: FloatingActionButton(
child: const Icon(Icons.delete), child: const Icon(Icons.delete),
onPressed: () { onPressed: () async {
ViewEntriesDialogHelper.deleteAllTemplates( await ViewEntriesDialogHelper.deleteAllTemplates(
context, context,
widget.dbType, widget.dbType,
); );
setState(() {
reloadAllEntries();
});
}, },
), ),
body: Column( body: Column(
@@ -263,13 +270,11 @@ class _ViewEntriesState extends State<ViewEntries> {
), ),
child: ListTile( child: ListTile(
onTap: () { onTap: () {
if (widget.dbType == DatabasesEnum.place) { if (widget.dbType == DatabasesEnum.place) {
Navigator.push( Navigator.push(
context, context,
MaterialPageRoute( MaterialPageRoute(
builder: builder: (context) => AddCamMain(
(context) => AddCamMain(
isTemplate: true, isTemplate: true,
existingData: templates[index], existingData: templates[index],
), ),
@@ -280,34 +285,18 @@ class _ViewEntriesState extends State<ViewEntries> {
Navigator.push( Navigator.push(
context, context,
MaterialPageRoute( MaterialPageRoute(
builder: builder: (context) => ExcursionMain(
(context) => ExcursionMain(
isTemplate: true, isTemplate: true,
existingData: templates[index], existingData: templates[index],
), ),
), ),
); );
} }
// Navigator.push(
// context,
// MaterialPageRoute(
// builder:
// (context) => AddCamMain(
// isTemplate: true,
// existingData: templates[index],
// ),
// ),
// );
}, },
title: Text(
'${widget.dbType == DatabasesEnum.place ? AppLocalizations.of(context)!.justplace : AppLocalizations.of(context)!.excursion} ${templates[index]["ID"]}'),
title: Text('Place ${index + 1}'),
subtitle: Text( subtitle: Text(
'ID: ${templates[index]['CID']} DATUM: ${templates[index]['Datum']} RUDEL: ${templates[index]['Rudel']} STATUS: ${templates[index]['Status']}', dateFormat.format(DateTime.parse(templates[index]["Datum"])),
), ),
), ),
); );
@@ -322,13 +311,11 @@ class _ViewEntriesState extends State<ViewEntries> {
Tab( Tab(
child: FlutterMap( child: FlutterMap(
options: MapOptions( options: MapOptions(
initialCenter: initialCenter: marker.isEmpty
marker.isEmpty
? const LatLng(50, 10) ? const LatLng(50, 10)
: marker.first.point, : marker.first.point,
interactionOptions: const InteractionOptions( interactionOptions: const InteractionOptions(
flags: flags: InteractiveFlag.pinchZoom |
InteractiveFlag.pinchZoom |
InteractiveFlag.drag | InteractiveFlag.drag |
InteractiveFlag.pinchMove, InteractiveFlag.pinchMove,
), ),
@@ -337,7 +324,7 @@ class _ViewEntriesState extends State<ViewEntries> {
TileLayer( TileLayer(
urlTemplate: urlTemplate:
'https://tile.openstreetmap.org/{z}/{x}/{y}.png', 'https://tile.openstreetmap.org/{z}/{x}/{y}.png',
userAgentPackageName: 'com.example.app', userAgentPackageName: 'de.lupus.apps',
), ),
MarkerLayer(markers: marker), MarkerLayer(markers: marker),
], ],