From 72da5beeec052bb97f999d2b9cf134e3405eb07f Mon Sep 17 00:00:00 2001 From: ggurdin <46800240+ggurdin@users.noreply.github.com> Date: Tue, 2 Sep 2025 15:59:36 -0400 Subject: [PATCH] chore: add default names to course filters (#3845) --- lib/l10n/intl_en.arb | 3 ++- .../course_plan_filter_widget.dart | 20 ++++++++++++++----- .../course_creation/new_course_view.dart | 14 +++++++------ 3 files changed, 25 insertions(+), 12 deletions(-) diff --git a/lib/l10n/intl_en.arb b/lib/l10n/intl_en.arb index 1915f92b8..ee1c86784 100644 --- a/lib/l10n/intl_en.arb +++ b/lib/l10n/intl_en.arb @@ -5264,5 +5264,6 @@ "waitNotDone": "Wait I’m not done!", "waitingForOthersToFinish": "Waiting for the rest to finish up...", "saveToCompletedActivities": "Save to completed activities", - "generatingSummary": "Analyzing chat and generating results" + "generatingSummary": "Analyzing chat and generating results", + "instructionsLanguage": "Instructions language" } diff --git a/lib/pangea/course_creation/course_plan_filter_widget.dart b/lib/pangea/course_creation/course_plan_filter_widget.dart index 3ae82cb17..cad9311d8 100644 --- a/lib/pangea/course_creation/course_plan_filter_widget.dart +++ b/lib/pangea/course_creation/course_plan_filter_widget.dart @@ -9,7 +9,9 @@ class CoursePlanFilter extends StatefulWidget { final List items; final void Function(T?) onChanged; - final String Function(T?) displayname; + final String defaultName; + final String? shortName; + final String Function(T) displayname; final bool enableSearch; @@ -21,10 +23,12 @@ class CoursePlanFilter extends StatefulWidget { required this.value, required this.items, required this.onChanged, + required this.defaultName, required this.displayname, required this.fontSize, required this.iconSize, this.enableSearch = false, + this.shortName, }); @override @@ -59,7 +63,9 @@ class CoursePlanFilterState extends State> { mainAxisSize: MainAxisSize.min, children: [ Text( - widget.displayname(widget.value), + widget.value != null + ? widget.displayname(widget.value as T) + : widget.defaultName, style: TextStyle( color: theme.colorScheme.onPrimary, fontSize: widget.fontSize, @@ -79,7 +85,9 @@ class CoursePlanFilterState extends State> { (item) => DropdownMenuItem( value: item, child: DropdownTextButton( - text: item == null ? "" : widget.displayname(item), + text: item != null + ? widget.displayname(item) + : widget.shortName ?? widget.defaultName, isSelected: item == widget.value, ), ), @@ -110,8 +118,10 @@ class CoursePlanFilterState extends State> { ), ), searchMatchFn: (item, searchValue) { - final displayName = - widget.displayname(item.value).toLowerCase(); + final displayName = (item.value != null + ? widget.displayname(item.value as T) + : widget.defaultName) + .toLowerCase(); final search = searchValue.toLowerCase(); return displayName.startsWith(search); diff --git a/lib/pangea/course_creation/new_course_view.dart b/lib/pangea/course_creation/new_course_view.dart index bb36b6ae0..78bba5d70 100644 --- a/lib/pangea/course_creation/new_course_view.dart +++ b/lib/pangea/course_creation/new_course_view.dart @@ -59,10 +59,10 @@ class NewCourseView extends StatelessWidget { value: controller.languageLevelFilter, onChanged: controller.setLanguageLevelFilter, items: LanguageLevelTypeEnum.values, - displayname: (v) => - v?.string ?? L10n.of(context).cefrLevelLabel, + displayname: (v) => v.string, fontSize: descFontSize, iconSize: iconSize, + defaultName: L10n.of(context).cefrLevelLabel, ), CoursePlanFilter( value: controller.instructionLanguageFilter, @@ -70,11 +70,13 @@ class NewCourseView extends StatelessWidget { items: MatrixState .pangeaController.pLanguageStore.baseOptions, displayname: (v) => - v?.getDisplayName(context) ?? - L10n.of(context).languageOfInstructionsLabel, + v.getDisplayName(context) ?? v.displayName, enableSearch: true, fontSize: descFontSize, iconSize: iconSize, + defaultName: + L10n.of(context).languageOfInstructionsLabel, + shortName: L10n.of(context).instructionsLanguage, ), CoursePlanFilter( value: controller.targetLanguageFilter, @@ -82,11 +84,11 @@ class NewCourseView extends StatelessWidget { items: MatrixState .pangeaController.pLanguageStore.targetOptions, displayname: (v) => - v?.getDisplayName(context) ?? - L10n.of(context).targetLanguageLabel, + v.getDisplayName(context) ?? v.displayName, enableSearch: true, fontSize: descFontSize, iconSize: iconSize, + defaultName: L10n.of(context).targetLanguageLabel, ), ], ),