forked from firka/firka
tt: stats for nerds
This commit is contained in:
3
firka/assets/majesticons/wrenchSolid.svg
Normal file
3
firka/assets/majesticons/wrenchSolid.svg
Normal 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 |
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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(
|
||||
|
||||
Submodule firka/lib/l10n updated: e69d8c3723...4557640339
@@ -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
|
||||
],
|
||||
)
|
||||
])
|
||||
|
||||
Reference in New Issue
Block a user