|
|
|
|
@ -1,18 +1,16 @@
|
|
|
|
|
import 'dart:async';
|
|
|
|
|
|
|
|
|
|
import 'package:flutter/material.dart';
|
|
|
|
|
|
|
|
|
|
import 'package:fluffychat/pangea/analytics_details_popup/analytics_details_popup.dart';
|
|
|
|
|
import 'package:fluffychat/pangea/analytics_misc/construct_list_model.dart';
|
|
|
|
|
import 'package:fluffychat/pangea/analytics_misc/construct_type_enum.dart';
|
|
|
|
|
import 'package:fluffychat/pangea/analytics_misc/get_analytics_controller.dart';
|
|
|
|
|
import 'package:fluffychat/pangea/analytics_summary/learning_progress_bar.dart';
|
|
|
|
|
import 'package:fluffychat/pangea/analytics_summary/learning_progress_indicator_button.dart';
|
|
|
|
|
import 'package:fluffychat/pangea/analytics_summary/level_bar_popup.dart';
|
|
|
|
|
import 'package:fluffychat/pangea/analytics_summary/progress_indicator.dart';
|
|
|
|
|
import 'package:fluffychat/pangea/analytics_summary/progress_indicators_enum.dart';
|
|
|
|
|
import 'package:fluffychat/pangea/learning_settings/pages/settings_learning.dart';
|
|
|
|
|
import 'package:fluffychat/widgets/matrix.dart';
|
|
|
|
|
import 'package:flutter/material.dart';
|
|
|
|
|
import 'package:go_router/go_router.dart';
|
|
|
|
|
|
|
|
|
|
/// A summary of "My Analytics" shown at the top of the chat list
|
|
|
|
|
/// It shows a variety of progress indicators such as
|
|
|
|
|
@ -20,11 +18,9 @@ import 'package:fluffychat/widgets/matrix.dart';
|
|
|
|
|
/// be clicked to access more fine-grained analytics data.
|
|
|
|
|
class LearningProgressIndicators extends StatefulWidget {
|
|
|
|
|
final ProgressIndicatorEnum? selected;
|
|
|
|
|
final Function(ProgressIndicatorEnum)? onIndicatorSelected;
|
|
|
|
|
const LearningProgressIndicators({
|
|
|
|
|
super.key,
|
|
|
|
|
this.selected,
|
|
|
|
|
this.onIndicatorSelected,
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
@ -114,16 +110,8 @@ class LearningProgressIndicatorsState
|
|
|
|
|
(c) => HoverButton(
|
|
|
|
|
selected: widget.selected == c.indicator,
|
|
|
|
|
onPressed: () {
|
|
|
|
|
if (widget.onIndicatorSelected != null) {
|
|
|
|
|
widget.onIndicatorSelected?.call(
|
|
|
|
|
c.indicator,
|
|
|
|
|
);
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
AnalyticsPopupWrapper.show(
|
|
|
|
|
context,
|
|
|
|
|
view: c,
|
|
|
|
|
context.go(
|
|
|
|
|
"/rooms/analytics?mode=${c.indicator.toShortString()}",
|
|
|
|
|
);
|
|
|
|
|
},
|
|
|
|
|
child: ProgressIndicatorBadge(
|
|
|
|
|
@ -180,16 +168,7 @@ class LearningProgressIndicatorsState
|
|
|
|
|
cursor: SystemMouseCursors.click,
|
|
|
|
|
child: GestureDetector(
|
|
|
|
|
onTap: () {
|
|
|
|
|
if (widget.onIndicatorSelected != null) {
|
|
|
|
|
widget.onIndicatorSelected
|
|
|
|
|
?.call(ProgressIndicatorEnum.level);
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
showDialog<LevelBarPopup>(
|
|
|
|
|
context: context,
|
|
|
|
|
builder: (c) => const LevelBarPopup(),
|
|
|
|
|
);
|
|
|
|
|
context.go("/rooms/analytics?mode=level");
|
|
|
|
|
},
|
|
|
|
|
child: Row(
|
|
|
|
|
spacing: 8.0,
|
|
|
|
|
|