1
0
forked from firka/firka

tt: stats for nerds

This commit is contained in:
2025-08-30 21:35:16 +02:00
parent 0661b58b8c
commit 6359896197
5 changed files with 41 additions and 10 deletions

View File

@@ -0,0 +1,3 @@
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="none" viewBox="0 0 24 24">
<path fill="#1F2937" d="M18.26 2.926a7.002 7.002 0 0 0-9.612 8.67l-5.254 5.253a3 3 0 0 0 4.243 4.243l5.253-5.254a7.003 7.003 0 0 0 8.67-9.613 1 1 0 0 0-1.61-.275l-2.828 2.828a1 1 0 1 1-1.414-1.414l2.828-2.828a1 1 0 0 0-.276-1.61Z"/>
</svg>

After

Width:  |  Height:  |  Size: 338 B

View File

@@ -42,7 +42,8 @@ enum FormatMode {
da,
dd,
yyyymmddwedd,
yyyymmmm
yyyymmmm,
yyyymmddhhmmss
}
enum Cycle { morning, day, afternoon, night }
@@ -56,7 +57,7 @@ extension DateExtension on DateTime {
var yesterday = today.subtract(Duration(days: 1));
var yesterdayLim = today.subtract(Duration(days: 2));
var weekStart = today.subtract(Duration(days: today.weekday - 1));
var weekStart = subtract(Duration(days: weekday - 1));
var weekEnd = weekStart.add(Duration(days: 6));
switch (mode) {
@@ -91,6 +92,8 @@ extension DateExtension on DateTime {
return "${DateFormat('yyyy MMM. dd').format(weekStart).toLowerCase()}-${DateFormat('dd').format(weekEnd)}";
case FormatMode.yyyymmmm:
return DateFormat('yyyy MMMM').format(this);
case FormatMode.yyyymmddhhmmss:
return DateFormat('yyyy-MM-dd hh:mm:ss').format(this);
}
}

View File

@@ -31,6 +31,8 @@ const ttToastLessonNo = 1012;
const ttToastTestsAndHw = 1013;
const ttToastBreaks = 1014;
const statsForNerds = 1015;
bool always() {
return true;
}
@@ -226,6 +228,13 @@ class SettingsStore {
isAndroid),
}),
always),
"stats_for_nerds": SettingsBoolean(
statsForNerds,
FirkaIconType.majesticonsLocal,
"wrenchSolid",
l10n.s_stats_for_nerds,
false,
always),
"notifications": SettingsSubGroup(0, FirkaIconType.majesticons,
Majesticon.bellSolid, "Értesítések", LinkedHashMap.of({}), never),
"extras": SettingsSubGroup(

View File

@@ -1,7 +1,6 @@
import 'package:firka/helpers/extensions.dart';
import 'package:firka/helpers/settings/setting.dart';
import 'package:firka/helpers/ui/firka_card.dart';
import 'package:firka/l10n/app_localizations.dart';
import 'package:firka/main.dart';
import 'package:firka/ui/model/style.dart';
import 'package:flutter/material.dart';
@@ -48,7 +47,7 @@ class LessonWidget extends StatelessWidget {
elements.add(GestureDetector(
onTap: () {
showLessonBottomSheet(
context, data.l10n, lesson, lessonNo, accent, secondary, bgColor);
context, data, lesson, lessonNo, accent, secondary, bgColor);
},
child: FirkaCard(
left: [
@@ -179,12 +178,14 @@ class LessonWidget extends StatelessWidget {
void showLessonBottomSheet(
BuildContext context,
AppLocalizations l10n,
AppInitialization data,
Lesson lesson,
int? lessonNo,
Color accent,
Color secondary,
Color bgColor) {
final statsForNerdsEnabled =
data.settings.group("settings").boolean("stats_for_nerds");
showModalBottomSheet(
context: context,
elevation: 100,
@@ -193,9 +194,22 @@ void showLessonBottomSheet(
backgroundColor: Colors.transparent,
barrierColor: appStyle.colors.a15p,
constraints: BoxConstraints(
maxHeight: MediaQuery.of(context).size.height * 0.3,
maxHeight: MediaQuery.of(context).size.height *
(statsForNerdsEnabled ? 0.35 : 0.3),
),
builder: (BuildContext context) {
Widget statsForNerds = SizedBox();
final y2k = DateTime(2000, 1);
if (statsForNerdsEnabled) {
final stats =
"${data.l10n.stats_date}: ${lesson.start.isAfter(y2k) ? lesson.start.format(data.l10n, FormatMode.yyyymmddhhmmss) : "N/A"}\n"
"${data.l10n.stats_created_at}: ${lesson.createdAt.isAfter(y2k) ? lesson.createdAt.format(data.l10n, FormatMode.yyyymmddhhmmss) : "N/A"}\n"
"${data.l10n.stats_last_mod}: ${lesson.lastModifiedAt.isAfter(y2k) ? lesson.lastModifiedAt.format(data.l10n, FormatMode.yyyymmddhhmmss) : "N/A"}";
statsForNerds = Text(stats, style: appStyle.fonts.B_16R);
}
return Stack(
children: [
Positioned.fill(
@@ -262,7 +276,7 @@ void showLessonBottomSheet(
.apply(color: appStyle.colors.textPrimary),
),
Text(
'${lesson.start.format(l10n, FormatMode.hmm)} - ${lesson.end.format(l10n, FormatMode.hmm)}',
'${lesson.start.format(data.l10n, FormatMode.hmm)} - ${lesson.end.format(data.l10n, FormatMode.hmm)}',
style: appStyle.fonts.B_14R
.apply(color: appStyle.colors.textPrimary),
),
@@ -275,14 +289,16 @@ void showLessonBottomSheet(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
l10n.lesson_subject,
data.l10n.lesson_subject,
style: appStyle.fonts.H_14px,
),
SizedBox(height: 4),
Text(
lesson.theme ?? 'N/A',
style: appStyle.fonts.B_16R,
)
),
SizedBox(height: 4),
statsForNerds
],
)
])