sort errors by number, prevent horizontal scrolling of analytics tab, join chat on analytics tile click

pull/1183/head
ggurdin 1 year ago
parent 417d0fde02
commit 4e8f9abfb0

@ -104,7 +104,6 @@ class AnalyticsListTileState extends State<AnalyticsListTile> {
) )
: null, : null,
selected: widget.selected, selected: widget.selected,
enabled: widget.enabled,
onTap: () { onTap: () {
(room?.isSpace ?? false) && widget.allowNavigateOnSelect (room?.isSpace ?? false) && widget.allowNavigateOnSelect
? context.go( ? context.go(

@ -5,6 +5,7 @@ import 'package:fluffychat/pangea/extensions/client_extension.dart';
import 'package:fluffychat/pangea/pages/analytics/base_analytics_view.dart'; import 'package:fluffychat/pangea/pages/analytics/base_analytics_view.dart';
import 'package:fluffychat/pangea/pages/analytics/student_analytics/student_analytics.dart'; import 'package:fluffychat/pangea/pages/analytics/student_analytics/student_analytics.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:future_loading_dialog/future_loading_dialog.dart';
import 'package:matrix/matrix.dart'; import 'package:matrix/matrix.dart';
import '../../../widgets/matrix.dart'; import '../../../widgets/matrix.dart';
@ -101,18 +102,40 @@ class BaseAnalyticsController extends State<BaseAnalyticsPage> {
} }
} }
void toggleSelection(AnalyticsSelected selectedParam) { Future<void> toggleSelection(AnalyticsSelected selectedParam) async {
final bool joinSelectedRoom =
selectedParam.type == AnalyticsEntryType.room &&
!enableSelection(
selectedParam,
);
if (joinSelectedRoom) {
await showFutureLoadingDialog(
context: context,
future: () async {
final waitForRoom = Matrix.of(context).client.waitForRoomInSync(
selectedParam.id,
join: true,
);
await Matrix.of(context).client.joinRoom(selectedParam.id);
await waitForRoom;
},
);
}
setState(() { setState(() {
debugPrint("selectedParam.id is ${selectedParam.id}"); debugPrint("selectedParam.id is ${selectedParam.id}");
currentLemma = null; currentLemma = null;
selected = isSelected(selectedParam.id) ? null : selectedParam; selected = isSelected(selectedParam.id) ? null : selectedParam;
}); });
pangeaController.analytics.setConstructs( pangeaController.analytics.setConstructs(
constructType: ConstructType.grammar, constructType: ConstructType.grammar,
defaultSelected: widget.defaultSelected, defaultSelected: widget.defaultSelected,
selected: selected, selected: selected,
removeIT: true, removeIT: true,
); );
Future.delayed(Duration.zero, () => setState(() {})); Future.delayed(Duration.zero, () => setState(() {}));
} }

@ -145,6 +145,7 @@ class BaseAnalyticsView extends StatelessWidget {
) * ) *
72, 72,
child: TabBarView( child: TabBarView(
physics: const NeverScrollableScrollPhysics(),
children: [ children: [
Column( Column(
crossAxisAlignment: crossAxisAlignment:

@ -243,9 +243,13 @@ class ConstructListViewState extends State<ConstructListView> {
List<AggregateConstructUses>? get constructs => List<AggregateConstructUses>? get constructs =>
widget.pangeaController.analytics.constructs != null widget.pangeaController.analytics.constructs != null
? widget.pangeaController.myAnalytics.aggregateConstructData( ? widget.pangeaController.myAnalytics
.aggregateConstructData(
widget.pangeaController.analytics.constructs!, widget.pangeaController.analytics.constructs!,
) )
.sorted(
(a, b) => b.uses.length.compareTo(a.uses.length),
)
: null; : null;
AggregateConstructUses? get currentConstruct => constructs?.firstWhereOrNull( AggregateConstructUses? get currentConstruct => constructs?.firstWhereOrNull(

Loading…
Cancel
Save