100 lines
2.6 KiB
Dart
100 lines
2.6 KiB
Dart
import 'package:ltx_flutter/appwrite/appwrite.dart';
|
|
import 'package:ltx_flutter/appwrite/database_api.dart';
|
|
import 'package:flutter/material.dart';
|
|
import 'package:provider/provider.dart';
|
|
import 'package:appwrite/models.dart';
|
|
import 'package:intl/intl.dart';
|
|
|
|
class TodayPage extends StatefulWidget {
|
|
const TodayPage({Key? key}) : super(key: key);
|
|
|
|
@override
|
|
_TodayPageState createState() => _TodayPageState();
|
|
}
|
|
|
|
class _TodayPageState extends State<TodayPage> {
|
|
final database = DatabaseAPI();
|
|
AuthStatus authStatus = AuthStatus.uninitialized;
|
|
DateTime? date;
|
|
Document? entry;
|
|
|
|
var hours = List<int>.generate(24, (i) => i).map((e) {
|
|
var meridien = "AM";
|
|
var hour = 12;
|
|
if (e > 12) {
|
|
hour = e - 12;
|
|
} else if (e > 0) {
|
|
hour = e;
|
|
}
|
|
if (e > 11) {
|
|
meridien = "PM";
|
|
}
|
|
return {
|
|
"string": "${hour.toString()} $meridien",
|
|
"index": e.toInt(),
|
|
};
|
|
}).toList();
|
|
|
|
@override
|
|
void initState() {
|
|
super.initState();
|
|
final AuthAPI appwrite = context.read<AuthAPI>();
|
|
authStatus = appwrite.status;
|
|
loadEntry();
|
|
}
|
|
|
|
loadEntry() async {
|
|
try {
|
|
final value = await database.getEntries(limit: 1, dateISO: "");
|
|
setState(() {
|
|
entry = value.documents[0];
|
|
});
|
|
} catch (e) {
|
|
print(e);
|
|
}
|
|
}
|
|
|
|
String formatDate({String format = "", String? dateISO}) {
|
|
final DateFormat dateFormatter = DateFormat(format);
|
|
final date = dateISO!.isEmpty ? DateTime.now() : DateTime.parse(dateISO);
|
|
return dateFormatter.format(date);
|
|
}
|
|
|
|
@override
|
|
Widget build(BuildContext context) {
|
|
return Center(
|
|
child: entry == null
|
|
? CircularProgressIndicator()
|
|
: Column(
|
|
children: [
|
|
Text(
|
|
style: TextStyle(
|
|
fontSize: 40,
|
|
),
|
|
formatDate(
|
|
format: "E, MMM dd, yyyy",
|
|
dateISO: entry?.data['date'],
|
|
),
|
|
),
|
|
Expanded(
|
|
child: ListView(
|
|
children: hours.map(
|
|
(e) {
|
|
int h = e["index"] as int;
|
|
List<dynamic> hoursData = entry!.data['hours'];
|
|
String hourData = (h >= hoursData.length)
|
|
? ""
|
|
: hoursData[h].toString();
|
|
return ListTile(
|
|
leading: Text(e["string"] as String),
|
|
title: Text(hourData),
|
|
);
|
|
},
|
|
).toList()),
|
|
),
|
|
],
|
|
),
|
|
);
|
|
}
|
|
}
|