forked from firka/firka
Compare commits
5 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 5a42884d20 | |||
|
|
858d558cc3 | ||
|
|
76f345cd6b | ||
|
|
e211d64ffb | ||
|
|
c67ce7472a |
@@ -294,4 +294,26 @@ extension StringExtension on String {
|
|||||||
if (length == 1) this[0].toUpperCase();
|
if (length == 1) this[0].toUpperCase();
|
||||||
return this[0].toUpperCase() + substring(1, length);
|
return this[0].toUpperCase() + substring(1, length);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
String shortenName([int start = 0]) {
|
||||||
|
if (length <= 16 || start >= length) {
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
int index = indexOf(" ", start);
|
||||||
|
if (index == -1) {
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
String string = substring(start, index);
|
||||||
|
if (string.endsWith(".")) {
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
return replaceRange(
|
||||||
|
start,
|
||||||
|
index,
|
||||||
|
"${string[0]}.",
|
||||||
|
).shortenName(index - string.length + 2 + 1);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -137,6 +137,27 @@ Future<void> showLessonBottomSheet(
|
|||||||
size: 26,
|
size: 26,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
SizedBox(width: 6),
|
||||||
|
if (lesson.roomName != null)
|
||||||
|
Card(
|
||||||
|
shadowColor: Colors.transparent,
|
||||||
|
color: appStyle.colors.a15p,
|
||||||
|
margin: EdgeInsets.all(0),
|
||||||
|
shape: RoundedRectangleBorder(
|
||||||
|
borderRadius: BorderRadius.circular(10),
|
||||||
|
),
|
||||||
|
child: Padding(
|
||||||
|
padding: EdgeInsets.symmetric(horizontal: 6),
|
||||||
|
child: Text(
|
||||||
|
lesson.roomName!,
|
||||||
|
style: appStyle.fonts.B_14R.apply(
|
||||||
|
color: appStyle.colors.secondary,
|
||||||
|
),
|
||||||
|
overflow: TextOverflow.ellipsis,
|
||||||
|
textAlign: TextAlign.center,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
SizedBox(height: 20),
|
SizedBox(height: 20),
|
||||||
@@ -165,7 +186,6 @@ Future<void> showLessonBottomSheet(
|
|||||||
lesson.substituteTeacher!,
|
lesson.substituteTeacher!,
|
||||||
style: appStyle.fonts.B_14R.apply(color: appStyle.colors.textSecondary),
|
style: appStyle.fonts.B_14R.apply(color: appStyle.colors.textSecondary),
|
||||||
),
|
),
|
||||||
SizedBox(height: 8),
|
|
||||||
Text(
|
Text(
|
||||||
'${lesson.start.format(data.l10n, FormatMode.hmm)} - ${lesson.end.format(data.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.textSecondary),
|
style: appStyle.fonts.B_14R.apply(color: appStyle.colors.textSecondary),
|
||||||
|
|||||||
@@ -259,6 +259,7 @@ class _HomeMainScreen extends FirkaState<HomeMainScreen> {
|
|||||||
WelcomeWidget(widget.data.l10n, now, student!, lessons!),
|
WelcomeWidget(widget.data.l10n, now, student!, lessons!),
|
||||||
SizedBox(height: 48),
|
SizedBox(height: 48),
|
||||||
LessonSlider(lessonTestMap, testsTomorrow),
|
LessonSlider(lessonTestMap, testsTomorrow),
|
||||||
|
SizedBox(height: 24),
|
||||||
...noticeBoardWidgets
|
...noticeBoardWidgets
|
||||||
.groupList((e) => e.$2)
|
.groupList((e) => e.$2)
|
||||||
.entries
|
.entries
|
||||||
|
|||||||
@@ -166,7 +166,7 @@ class LessonWidget extends StatelessWidget {
|
|||||||
),
|
),
|
||||||
showSubstitutions
|
showSubstitutions
|
||||||
? Text(
|
? Text(
|
||||||
lesson.substituteTeacher!,
|
lesson.substituteTeacher!.shortenName(),
|
||||||
style: appStyle.fonts.B_14R.apply(
|
style: appStyle.fonts.B_14R.apply(
|
||||||
color: appStyle.colors.textSecondary,
|
color: appStyle.colors.textSecondary,
|
||||||
),
|
),
|
||||||
|
|||||||
@@ -204,7 +204,7 @@ class LessonBigWidget extends StatelessWidget {
|
|||||||
),
|
),
|
||||||
if (isSubstituted)
|
if (isSubstituted)
|
||||||
Text(
|
Text(
|
||||||
lesson.substituteTeacher!,
|
lesson.substituteTeacher!.shortenName(),
|
||||||
style: appStyle.fonts.B_14R.apply(
|
style: appStyle.fonts.B_14R.apply(
|
||||||
color: appStyle.colors.textSecondary,
|
color: appStyle.colors.textSecondary,
|
||||||
),
|
),
|
||||||
|
|||||||
@@ -32,10 +32,8 @@ class TimeTableDayWidget extends StatelessWidget {
|
|||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
Widget ttBody;
|
|
||||||
|
|
||||||
if (lessons.isEmpty) {
|
if (lessons.isEmpty) {
|
||||||
ttBody = Column(
|
return Column(
|
||||||
mainAxisAlignment: MainAxisAlignment.center,
|
mainAxisAlignment: MainAxisAlignment.center,
|
||||||
crossAxisAlignment: CrossAxisAlignment.center,
|
crossAxisAlignment: CrossAxisAlignment.center,
|
||||||
children: [
|
children: [
|
||||||
@@ -92,95 +90,93 @@ class TimeTableDayWidget extends StatelessWidget {
|
|||||||
),
|
),
|
||||||
],
|
],
|
||||||
);
|
);
|
||||||
} else {
|
}
|
||||||
List<Widget> ttLessons = List.empty(growable: true);
|
|
||||||
for (var i = 0; i < events.length; i++) {
|
List<Widget> ttLessons = List.empty(growable: true);
|
||||||
var event = events[i];
|
for (final event in events) {
|
||||||
ttLessons.add(
|
ttLessons.add(
|
||||||
FirkaCard.single(
|
FirkaCard.single(
|
||||||
margin: EdgeInsets.zero,
|
margin: EdgeInsets.zero,
|
||||||
padding: EdgeInsets.all(16),
|
padding: EdgeInsets.all(16),
|
||||||
child: Text(
|
child: Text(
|
||||||
event.name,
|
event.name,
|
||||||
style: appStyle.fonts.B_16R.apply(
|
style: appStyle.fonts.B_16R.apply(
|
||||||
color: appStyle.colors.textPrimary,
|
color: appStyle.colors.textPrimary,
|
||||||
),
|
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (events.isNotEmpty) {
|
|
||||||
ttLessons.add(SizedBox());
|
|
||||||
}
|
|
||||||
|
|
||||||
var showBreak = data.settings
|
|
||||||
.group("settings")
|
|
||||||
.subGroup("timetable_toast")
|
|
||||||
.boolean("breaks");
|
|
||||||
|
|
||||||
for (var i = 0; i < lessons.length; i++) {
|
|
||||||
var lesson = lessons[i];
|
|
||||||
var nextLesson = lessons.length > i + 1 ? lessons[i + 1] : null;
|
|
||||||
ttLessons.add(
|
|
||||||
LessonWidget(
|
|
||||||
data,
|
|
||||||
lesson,
|
|
||||||
tests.firstWhereOrNull(
|
|
||||||
(test) => test.lessonNumber == lesson.lessonNumber,
|
|
||||||
),
|
|
||||||
active: timeNow().isBetween(
|
|
||||||
i > 0 ? lessons[i - 1].end : lesson.start,
|
|
||||||
lesson.end,
|
|
||||||
),
|
|
||||||
),
|
|
||||||
);
|
|
||||||
|
|
||||||
if (!showBreak || nextLesson == null) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
var breakMins = nextLesson.start.difference(lesson.end).inMinutes;
|
|
||||||
ttLessons.add(
|
|
||||||
FirkaCard(
|
|
||||||
color: appStyle.colors.cardTranslucent,
|
|
||||||
margin: EdgeInsets.all(0),
|
|
||||||
padding: EdgeInsets.symmetric(vertical: 11, horizontal: 16),
|
|
||||||
shadow: false,
|
|
||||||
left: [
|
|
||||||
Text(
|
|
||||||
initData.l10n.breakTxt,
|
|
||||||
style: appStyle.fonts.B_14SB.copyWith(
|
|
||||||
color: appStyle.colors.textSecondary,
|
|
||||||
),
|
|
||||||
),
|
|
||||||
],
|
|
||||||
right: [
|
|
||||||
Text(
|
|
||||||
"$breakMins ${breakMins > 1 ? initData.l10n.starting_min_plural : initData.l10n.starting_min}",
|
|
||||||
style: appStyle.fonts.B_14R.copyWith(
|
|
||||||
color: appStyle.colors.textSecondary,
|
|
||||||
),
|
|
||||||
),
|
|
||||||
],
|
|
||||||
),
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
ttBody = Padding(
|
|
||||||
padding: const EdgeInsets.only(top: 70 + 16 + 20, left: 20, right: 20),
|
|
||||||
child: SingleChildScrollView(
|
|
||||||
child: Column(
|
|
||||||
mainAxisSize: MainAxisSize.min,
|
|
||||||
mainAxisAlignment: MainAxisAlignment.start,
|
|
||||||
crossAxisAlignment: CrossAxisAlignment.start,
|
|
||||||
spacing: 16,
|
|
||||||
children: [...ttLessons, SizedBox(height: 55)],
|
|
||||||
),
|
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
return ttBody;
|
if (events.isNotEmpty) {
|
||||||
|
ttLessons.add(SizedBox());
|
||||||
|
}
|
||||||
|
|
||||||
|
var showBreak = data.settings
|
||||||
|
.group("settings")
|
||||||
|
.subGroup("timetable_toast")
|
||||||
|
.boolean("breaks");
|
||||||
|
|
||||||
|
for (var i = 0; i < lessons.length; i++) {
|
||||||
|
var lesson = lessons[i];
|
||||||
|
var nextLesson = lessons.length > i + 1 ? lessons[i + 1] : null;
|
||||||
|
ttLessons.add(
|
||||||
|
LessonWidget(
|
||||||
|
data,
|
||||||
|
lesson,
|
||||||
|
tests.firstWhereOrNull(
|
||||||
|
(test) => test.lessonNumber == lesson.lessonNumber,
|
||||||
|
),
|
||||||
|
active: timeNow().isBetween(
|
||||||
|
i > 0 ? lessons[i - 1].end : lesson.start,
|
||||||
|
lesson.end,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
|
||||||
|
if (!showBreak || nextLesson == null) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
var breakMins = nextLesson.start.difference(lesson.end).inMinutes;
|
||||||
|
ttLessons.add(
|
||||||
|
FirkaCard(
|
||||||
|
color: appStyle.colors.cardTranslucent,
|
||||||
|
margin: EdgeInsets.all(0),
|
||||||
|
padding: EdgeInsets.symmetric(vertical: 11, horizontal: 16),
|
||||||
|
shadow: false,
|
||||||
|
left: [
|
||||||
|
Text(
|
||||||
|
initData.l10n.breakTxt,
|
||||||
|
style: appStyle.fonts.B_14SB.copyWith(
|
||||||
|
color: appStyle.colors.textSecondary,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
right: [
|
||||||
|
Text(
|
||||||
|
"$breakMins ${breakMins > 1 ? initData.l10n.starting_min_plural : initData.l10n.starting_min}",
|
||||||
|
style: appStyle.fonts.B_14R.copyWith(
|
||||||
|
color: appStyle.colors.textSecondary,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
return Padding(
|
||||||
|
padding: const EdgeInsets.only(top: 70 + 16 + 20, left: 20, right: 20),
|
||||||
|
child: ListView.separated(
|
||||||
|
separatorBuilder: (context, index) => SizedBox(height: 16),
|
||||||
|
itemBuilder: (context, index) {
|
||||||
|
if (ttLessons.length == index) {
|
||||||
|
return SizedBox(height: 55);
|
||||||
|
}
|
||||||
|
return ttLessons[index];
|
||||||
|
},
|
||||||
|
itemCount: ttLessons.length + 1,
|
||||||
|
),
|
||||||
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user