Skip to content

Commit

Permalink
Add short term hints and refactor interpolation
Browse files Browse the repository at this point in the history
  • Loading branch information
FauconSpartiate committed Feb 10, 2024
1 parent e387f0d commit e97cd68
Show file tree
Hide file tree
Showing 3 changed files with 60 additions and 62 deletions.
27 changes: 8 additions & 19 deletions lib/ui/routes/main_route.dart
Original file line number Diff line number Diff line change
Expand Up @@ -200,27 +200,16 @@ class RouteWidgetState extends State<RouteWidget> with TickerProviderStateMixin
}

List<Widget> getTabs() {
final List<String> items = switch (getCurrentYear().termCount) {
1 => [
translations.yearOne,
],
2 => [
"${translations.semesterOne} 1",
"${translations.semesterOne} 2",
],
3 => [
"${translations.trimesterOne} 1",
"${translations.trimesterOne} 2",
"${translations.trimesterOne} 3",
],
4 => [
"${translations.quarterOne} 1",
"${translations.quarterOne} 2",
"${translations.quarterOne} 3",
"${translations.quarterOne} 4",
],
final int termCount = getCurrentYear().termCount;
final List<String> items = List<String>.generate(termCount, (i) {
return switch (termCount) {
1 => translations.yearOne,
2 => translations.semester_num.replaceFirst("%s", "${i + 1}"),
3 => translations.trimester_num.replaceFirst("%s", "${i + 1}"),
4 => translations.quartile_num.replaceFirst("%s", "${i + 1}"),
_ => throw const FormatException("Invalid"),
};
});

if (getCurrentYear().validatedYear == 1) {
items.add(translations.exams);
Expand Down
93 changes: 51 additions & 42 deletions lib/ui/utilities/hints.dart
Original file line number Diff line number Diff line change
@@ -1,42 +1,51 @@
// Project imports:
import "package:graded/calculations/calculation_object.dart";
import "package:graded/calculations/manager.dart";
import "package:graded/calculations/subject.dart";
import "package:graded/localization/translations.dart";

String getHint(String prefix, List<CalculationObject> data) {
String hint = "";
int i = data.length;

do {
i++;
hint = "$prefix $i";
} while (isDuplicateName(hint, data));

return hint;
}

bool isDuplicateName(String name, List<CalculationObject> data) {
return data.any((e) => e.name == name || (e is Subject && e.children.any((child) => child.name == name)));
}

String getTermName({required int termIndex}) {
final int termCount = getCurrentYear().termCount;

if (termIndex == -1) return translations.year_overview;

if (termIndex == termCount) return translations.exams;

switch (termCount) {
case 4:
return "${translations.quarterOne} ${termIndex + 1}";
case 3:
return "${translations.trimesterOne} ${termIndex + 1}";
case 2:
return "${translations.semesterOne} ${termIndex + 1}";
case 1:
return translations.yearOne;
default:
return "${translations.school_termOne} ${termIndex + 1}";
}
}
// Project imports:
import "package:graded/calculations/calculation_object.dart";
import "package:graded/calculations/manager.dart";
import "package:graded/calculations/subject.dart";
import "package:graded/localization/translations.dart";

String getHint(String prefix, List<CalculationObject> data) {
String hint = "";
int i = data.length;

do {
i++;
hint = "$prefix $i";
} while (isDuplicateName(hint, data));

return hint;
}

bool isDuplicateName(String name, List<CalculationObject> data) {
return data.any((e) => e.name == name || (e is Subject && e.children.any((child) => child.name == name)));
}

String getTermName({required int termIndex}) {
final int termCount = getCurrentYear().termCount;

if (termIndex == -1) return translations.year_overview;

if (termIndex == termCount) return translations.exams;

return switch (termCount) {
4 => translations.quartile_num.replaceFirst("%s", (termIndex + 1).toString()),
3 => translations.trimester_num.replaceFirst("%s", (termIndex + 1).toString()),
2 => translations.semester_num.replaceFirst("%s", (termIndex + 1).toString()),
1 => translations.yearOne,
_ => translations.school_term_num.replaceFirst("%s", (termIndex + 1).toString()),
};
}

String getTermNameShort({required int termIndex}) {
final int termCount = getCurrentYear().termCount;

if (termIndex == -1) return translations.year_overview;

return switch (termCount) {
4 => translations.quartile_short_num.replaceFirst("%s", (termIndex + 1).toString()),
3 => translations.trimester_short_num.replaceFirst("%s", (termIndex + 1).toString()),
2 => translations.semester_short_num.replaceFirst("%s", (termIndex + 1).toString()),
1 => translations.yearOne,
_ => translations.school_term_short_num.replaceFirst("%s", (termIndex + 1).toString()),
};
}
2 changes: 1 addition & 1 deletion lib/ui/widgets/settings_tiles.dart
Original file line number Diff line number Diff line change
Expand Up @@ -109,7 +109,7 @@ class TermCountSettingsTile extends StatelessWidget {
settingKey: "term_count",
selected: DefaultValues.termCount,
values: <int, String>{
4: translations.quarterOther,
4: translations.quartileOther,
3: translations.trimesterOther,
2: translations.semesterOther,
1: translations.yearOne,
Expand Down

0 comments on commit e97cd68

Please sign in to comment.