Fix invalid categories finally!
This commit is contained in:
parent
fd171b8aa7
commit
ececb7439a
1
ltx_flutter/.direnv/flake-profile
Symbolic link
1
ltx_flutter/.direnv/flake-profile
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
flake-profile-2-link
|
||||||
1
ltx_flutter/.direnv/flake-profile-1-link
Symbolic link
1
ltx_flutter/.direnv/flake-profile-1-link
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
/nix/store/548c9rk983kzvkfiicqmkslqmd7s1ldg-nix-shell-env
|
||||||
1
ltx_flutter/.direnv/flake-profile-2-link
Symbolic link
1
ltx_flutter/.direnv/flake-profile-2-link
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
/nix/store/rmm84806g3pgv1nc8wvi7g72ivh6axsi-nix-shell-env
|
||||||
@ -56,7 +56,7 @@ class Category {
|
|||||||
}
|
}
|
||||||
|
|
||||||
bool hasParent() {
|
bool hasParent() {
|
||||||
return parent == number ? false : true;
|
return parent != number;
|
||||||
}
|
}
|
||||||
|
|
||||||
double leftPadding() {
|
double leftPadding() {
|
||||||
@ -99,10 +99,17 @@ class CategoriesAPI extends ChangeNotifier {
|
|||||||
if (!_ready) {
|
if (!_ready) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
try{
|
||||||
return Category(_categories.singleWhere((e) {
|
return Category(_categories.singleWhere((e) {
|
||||||
return e.data['number'] == double.parse(n.toString());
|
return e.data['number'] == double.parse(n.toString());
|
||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
|
catch(e){
|
||||||
|
return Category(_categories.singleWhere((e) {
|
||||||
|
return e.data['number'] == -9;
|
||||||
|
}));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
init() {
|
init() {
|
||||||
client.setEndpoint(APPWRITE_URL).setProject(APPWRITE_PROJECT_ID);
|
client.setEndpoint(APPWRITE_URL).setProject(APPWRITE_PROJECT_ID);
|
||||||
|
|||||||
@ -71,6 +71,7 @@ class DatabaseAPI extends ChangeNotifier {
|
|||||||
notifyListeners();
|
notifyListeners();
|
||||||
// _entries.add(entry);
|
// _entries.add(entry);
|
||||||
// sortByDate(_entries);
|
// sortByDate(_entries);
|
||||||
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@ -81,10 +82,14 @@ class DatabaseAPI extends ChangeNotifier {
|
|||||||
var referenceDate = DateTime.parse("2023-01-01");
|
var referenceDate = DateTime.parse("2023-01-01");
|
||||||
|
|
||||||
final date = DateTime.parse(dateISO);
|
final date = DateTime.parse(dateISO);
|
||||||
return date.difference(referenceDate).inDays + 1;
|
|
||||||
|
int _total = date.difference(referenceDate).inDays + 1;
|
||||||
|
return _total;
|
||||||
}
|
}
|
||||||
|
|
||||||
getAll() async {
|
getAll() async {
|
||||||
|
print("Loading entries");
|
||||||
|
|
||||||
String paginationQuery = Query.offset(0);
|
String paginationQuery = Query.offset(0);
|
||||||
int max = total();
|
int max = total();
|
||||||
|
|
||||||
@ -102,10 +107,27 @@ class DatabaseAPI extends ChangeNotifier {
|
|||||||
paginationQuery: paginationQuery,
|
paginationQuery: paginationQuery,
|
||||||
);
|
);
|
||||||
|
|
||||||
|
if(newEntries.isEmpty){
|
||||||
|
// This only happens if we were expecting more
|
||||||
|
// (i.e., _entries.length < max),
|
||||||
|
// but getEntries didn't return anything
|
||||||
|
// (i.e., an entry doesn't exist).
|
||||||
|
// So, let's create it.
|
||||||
|
//
|
||||||
|
// BAD CODE: THIS ASSUMES IT NEEDS TO BE TODAY
|
||||||
|
// This will eventually break.
|
||||||
|
//
|
||||||
|
|
||||||
|
Document new_today_entry = await getOne(date: formatter.format(DateTime.now()));
|
||||||
|
|
||||||
|
newEntries.add(new_today_entry);
|
||||||
|
}
|
||||||
|
|
||||||
_entries.addAll(newEntries);
|
_entries.addAll(newEntries);
|
||||||
notifyListeners();
|
notifyListeners();
|
||||||
}
|
}
|
||||||
_ready = true;
|
_ready = true;
|
||||||
|
print("Got ${_entries.length} entries");
|
||||||
}
|
}
|
||||||
|
|
||||||
getOne({required String date}) async {
|
getOne({required String date}) async {
|
||||||
@ -126,11 +148,14 @@ class DatabaseAPI extends ChangeNotifier {
|
|||||||
print("No entry in database; creating $date");
|
print("No entry in database; creating $date");
|
||||||
Document newEntry = await addEntry(date: date);
|
Document newEntry = await addEntry(date: date);
|
||||||
_entries.add(newEntry);
|
_entries.add(newEntry);
|
||||||
|
notifyListeners();
|
||||||
|
return(newEntry);
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
_entries.add(response.first);
|
_entries.add(response.first);
|
||||||
|
notifyListeners();
|
||||||
|
return(response.first);
|
||||||
}
|
}
|
||||||
notifyListeners();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -31,7 +31,7 @@ class _CategoriesPageState extends State<CategoriesPage> {
|
|||||||
),
|
),
|
||||||
body: Consumer<CategoriesAPI>(builder: (context, categories, child) {
|
body: Consumer<CategoriesAPI>(builder: (context, categories, child) {
|
||||||
return ListView.builder(
|
return ListView.builder(
|
||||||
itemCount: categories.total + 1,
|
itemCount: categories.total,
|
||||||
itemBuilder: (context, i) {
|
itemBuilder: (context, i) {
|
||||||
if (i < categories.total) {
|
if (i < categories.total) {
|
||||||
Category category = categories.get(i);
|
Category category = categories.get(i);
|
||||||
@ -42,15 +42,17 @@ class _CategoriesPageState extends State<CategoriesPage> {
|
|||||||
height: 0,
|
height: 0,
|
||||||
thickness: 2,
|
thickness: 2,
|
||||||
),
|
),
|
||||||
category.number == -1
|
category.number < 0
|
||||||
? SizedBox.shrink()
|
? SizedBox.shrink()
|
||||||
: CategoryRow(category: category),
|
: CategoryRow(category: category),
|
||||||
],
|
],
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
return CategoryRow(category: category);
|
return CategoryRow(category: category);
|
||||||
}
|
}
|
||||||
|
else{
|
||||||
|
print("Huh?");
|
||||||
|
}
|
||||||
return null;
|
return null;
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
|
|||||||
@ -47,29 +47,34 @@ class _DayViewState extends State<DayView> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
void getDayEntry() async{
|
||||||
Widget build(BuildContext context) {
|
|
||||||
List<Document> entries = database.entries;
|
List<Document> entries = database.entries;
|
||||||
String formattedDate = formatDate(
|
String formattedDate = formatDate(
|
||||||
dateISO: _date.toIso8601String(),
|
dateISO: _date.toIso8601String(),
|
||||||
format: "yyyy-MM-dd",
|
format: "yyyy-MM-dd",
|
||||||
);
|
);
|
||||||
|
|
||||||
try {
|
try {
|
||||||
dayEntry = entries.singleWhere((element) => element.$id == formattedDate);
|
dayEntry = entries.singleWhere((element) => element.$id == formattedDate);
|
||||||
String date = formatDate(
|
String date = formatDate(
|
||||||
format: "LLL d", dateISO: dayEntry?.data['date'].toString());
|
format: "LLL d", dateISO: dayEntry?.data['date'].toString());
|
||||||
print("Got entry for $date");
|
print("Got entry for $date");
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
database.getOne(date: formattedDate).then((value) {
|
dayEntry = entries.last;
|
||||||
dayEntry = value;
|
print("Got entry for ${entries.last.$id}");
|
||||||
});
|
|
||||||
}
|
}
|
||||||
// print(entries.length);
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
Widget build(BuildContext context) {
|
||||||
|
getDayEntry();
|
||||||
|
|
||||||
setState(() {
|
setState(() {
|
||||||
if (dayEntry != null) {
|
if (dayEntry != null) {
|
||||||
comments = dayEntry?.data["comments"];
|
String? newComment = dayEntry?.data["comments"];
|
||||||
|
if(newComment == null){
|
||||||
|
newComment = "";
|
||||||
|
}
|
||||||
|
comments = newComment;
|
||||||
mood = dayEntry?.data["mood"];
|
mood = dayEntry?.data["mood"];
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@ -512,7 +517,7 @@ class _HourFormFieldState extends State<HourFormField> {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
if (widget.category != null) {
|
if (widget.category != null) {
|
||||||
catNum = widget.category!.number.toString();
|
catNum = widget.dayEntry!.data['hours'][widget.index].toString();
|
||||||
fgColor = widget.category!.foregroundColor;
|
fgColor = widget.category!.foregroundColor;
|
||||||
catName = widget.category!.name;
|
catName = widget.category!.name;
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user