improved databases
This commit is contained in:
11
Todo.txt
11
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
|
||||
|
||||
@@ -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<AddCamMain> {
|
||||
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<AddCamMain> {
|
||||
|
||||
Map<String, dynamic> getPlace() {
|
||||
Map<String, dynamic> 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<AddCamMain> {
|
||||
|
||||
// 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<AddCamMain> {
|
||||
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<AddCamMain> {
|
||||
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<AddCamMain> {
|
||||
List<String> emptyFields = <String>[];
|
||||
|
||||
Map<String, TextEditingController> fields = {
|
||||
'CID': id,
|
||||
'CID': cid,
|
||||
'Rudel': rudelC,
|
||||
'Adresse1': adresse1C,
|
||||
'BLand': bLandC,
|
||||
@@ -419,7 +419,7 @@ class _AddCamMainState extends State<AddCamMain> {
|
||||
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<AddCamMain> {
|
||||
height: 20,
|
||||
),
|
||||
VarTextField(
|
||||
textController: id,
|
||||
textController: cid,
|
||||
localization: AppLocalizations.of(context)!.camLink,
|
||||
dbName: "CID",
|
||||
required: true),
|
||||
|
||||
@@ -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<String, Object?>,
|
||||
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<void> deleteTemplate(String cid) async {
|
||||
Future<void> deleteTemplate(String id) async {
|
||||
var placeDBClient = await placeDB;
|
||||
await placeDBClient.delete(
|
||||
'templates',
|
||||
where: 'CID = ?',
|
||||
whereArgs: [cid],
|
||||
where: 'ID = ?',
|
||||
whereArgs: [id],
|
||||
);
|
||||
}
|
||||
|
||||
// delete specific place
|
||||
Future<void> deletePlace(String cid) async {
|
||||
Future<void> deletePlace(String id) async {
|
||||
var placeDBClient = await placeDB;
|
||||
await placeDBClient.delete(
|
||||
'place',
|
||||
where: 'CID = ?',
|
||||
whereArgs: [cid],
|
||||
where: 'ID = ?',
|
||||
whereArgs: [id],
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -159,115 +159,13 @@ class _ViewCamsState extends State<ViewCams> {
|
||||
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,
|
||||
)));
|
||||
},
|
||||
);
|
||||
},
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user