only show top-level spaces in analytics
This commit is contained in:
parent
a9105c0804
commit
df611e5f82
5 changed files with 67 additions and 57 deletions
|
|
@ -1,7 +1,10 @@
|
|||
import 'dart:developer';
|
||||
|
||||
import 'package:fluffychat/pangea/matrix_event_wrappers/pangea_message_event.dart';
|
||||
import 'package:fluffychat/pangea/models/analytics/analytics_model.dart';
|
||||
import 'package:fluffychat/pangea/models/pangea_token_model.dart';
|
||||
import 'package:fluffychat/pangea/utils/error_handler.dart';
|
||||
import 'package:flutter/foundation.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:matrix/matrix.dart';
|
||||
|
||||
|
|
@ -54,7 +57,7 @@ class ConstructAnalyticsModel extends AnalyticsModel {
|
|||
s: s,
|
||||
m: "Error parsing ConstructAnalyticsModel",
|
||||
);
|
||||
// debugger(when: kDebugMode);
|
||||
debugger(when: kDebugMode);
|
||||
}
|
||||
}
|
||||
return ConstructAnalyticsModel(
|
||||
|
|
|
|||
|
|
@ -164,37 +164,34 @@ class BaseAnalyticsView extends StatelessWidget {
|
|||
CrossAxisAlignment.stretch,
|
||||
children: [
|
||||
...controller.widget.tabs[0].items.map(
|
||||
(item) => Expanded(
|
||||
child: AnalyticsListTile(
|
||||
refreshStream:
|
||||
controller.refreshStream,
|
||||
avatar: item.avatar,
|
||||
defaultSelected: controller
|
||||
.widget.defaultSelected,
|
||||
selected: AnalyticsSelected(
|
||||
(item) => AnalyticsListTile(
|
||||
refreshStream:
|
||||
controller.refreshStream,
|
||||
avatar: item.avatar,
|
||||
defaultSelected: controller
|
||||
.widget.defaultSelected,
|
||||
selected: AnalyticsSelected(
|
||||
item.id,
|
||||
controller.widget.tabs[0].type,
|
||||
item.displayName,
|
||||
),
|
||||
isSelected:
|
||||
controller.isSelected(item.id),
|
||||
onTap: (_) =>
|
||||
controller.toggleSelection(
|
||||
AnalyticsSelected(
|
||||
item.id,
|
||||
controller.widget.tabs[0].type,
|
||||
item.displayName,
|
||||
),
|
||||
isSelected: controller
|
||||
.isSelected(item.id),
|
||||
onTap: (_) =>
|
||||
controller.toggleSelection(
|
||||
AnalyticsSelected(
|
||||
item.id,
|
||||
controller
|
||||
.widget.tabs[0].type,
|
||||
item.displayName,
|
||||
),
|
||||
),
|
||||
allowNavigateOnSelect: controller
|
||||
.widget
|
||||
.tabs[0]
|
||||
.allowNavigateOnSelect,
|
||||
pangeaController:
|
||||
controller.pangeaController,
|
||||
controller: controller,
|
||||
),
|
||||
allowNavigateOnSelect: controller
|
||||
.widget
|
||||
.tabs[0]
|
||||
.allowNavigateOnSelect,
|
||||
pangeaController:
|
||||
controller.pangeaController,
|
||||
controller: controller,
|
||||
),
|
||||
),
|
||||
if (controller
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
import 'dart:async';
|
||||
|
||||
import 'package:fluffychat/pangea/enum/time_span.dart';
|
||||
import 'package:fluffychat/pangea/extensions/client_extension/client_extension.dart';
|
||||
import 'package:fluffychat/pangea/pages/analytics/base_analytics.dart';
|
||||
import 'package:fluffychat/pangea/pages/analytics/class_list/class_list_view.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
|
|
@ -22,6 +23,24 @@ class AnalyticsClassList extends StatefulWidget {
|
|||
class AnalyticsClassListController extends State<AnalyticsClassList> {
|
||||
PangeaController pangeaController = MatrixState.pangeaController;
|
||||
List<ChartAnalyticsModel> models = [];
|
||||
List<Room> spaces = [];
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
Matrix.of(context).client.classesAndExchangesImTeaching.then((spaceList) {
|
||||
spaceList = spaceList
|
||||
.where(
|
||||
(space) => !spaceList.any(
|
||||
(parentSpace) => parentSpace.spaceChildren
|
||||
.any((child) => child.roomId == space.id),
|
||||
),
|
||||
)
|
||||
.toList();
|
||||
spaces = spaceList;
|
||||
setState(() {});
|
||||
});
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
|
|
|
|||
|
|
@ -1,11 +1,9 @@
|
|||
import 'package:fluffychat/pangea/extensions/client_extension/client_extension.dart';
|
||||
import 'package:fluffychat/pangea/pages/analytics/analytics_list_tile.dart';
|
||||
import 'package:fluffychat/pangea/pages/analytics/time_span_menu_button.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_gen/gen_l10n/l10n.dart';
|
||||
import 'package:go_router/go_router.dart';
|
||||
|
||||
import '../../../../widgets/matrix.dart';
|
||||
import '../../../enum/time_span.dart';
|
||||
import '../base_analytics.dart';
|
||||
import 'class_list.dart';
|
||||
|
|
@ -45,31 +43,28 @@ class AnalyticsClassListView extends StatelessWidget {
|
|||
body: Column(
|
||||
children: [
|
||||
Flexible(
|
||||
child: FutureBuilder(
|
||||
future: Matrix.of(context).client.classesAndExchangesImTeaching,
|
||||
builder: (context, snapshot) => ListView.builder(
|
||||
itemCount: snapshot.hasData ? snapshot.data?.length ?? 0 : 0,
|
||||
itemBuilder: (context, i) => AnalyticsListTile(
|
||||
defaultSelected: AnalyticsSelected(
|
||||
snapshot.data![i].id,
|
||||
AnalyticsEntryType.space,
|
||||
"",
|
||||
),
|
||||
avatar: snapshot.data![i].avatar,
|
||||
selected: AnalyticsSelected(
|
||||
snapshot.data![i].id,
|
||||
AnalyticsEntryType.space,
|
||||
snapshot.data![i].name,
|
||||
),
|
||||
onTap: (selected) {
|
||||
context.go(
|
||||
'/rooms/analytics/${selected.id}',
|
||||
);
|
||||
},
|
||||
allowNavigateOnSelect: true,
|
||||
isSelected: false,
|
||||
pangeaController: controller.pangeaController,
|
||||
child: ListView.builder(
|
||||
itemCount: controller.spaces.length,
|
||||
itemBuilder: (context, i) => AnalyticsListTile(
|
||||
defaultSelected: AnalyticsSelected(
|
||||
controller.spaces[i].id,
|
||||
AnalyticsEntryType.space,
|
||||
"",
|
||||
),
|
||||
avatar: controller.spaces[i].avatar,
|
||||
selected: AnalyticsSelected(
|
||||
controller.spaces[i].id,
|
||||
AnalyticsEntryType.space,
|
||||
controller.spaces[i].name,
|
||||
),
|
||||
onTap: (selected) {
|
||||
context.go(
|
||||
'/rooms/analytics/${selected.id}',
|
||||
);
|
||||
},
|
||||
allowNavigateOnSelect: true,
|
||||
isSelected: false,
|
||||
pangeaController: controller.pangeaController,
|
||||
),
|
||||
),
|
||||
),
|
||||
|
|
|
|||
|
|
@ -117,7 +117,6 @@ class ConstructListViewState extends State<ConstructListView> {
|
|||
.then((value) => setState(() => _constructs = value));
|
||||
|
||||
refreshSubscription = widget.refreshStream.stream.listen((forceUpdate) {
|
||||
debugPrint("updating constructs");
|
||||
// postframe callback to let widget rebuild with the new selected parameter
|
||||
// before sending selected to getConstructs function
|
||||
WidgetsBinding.instance.addPostFrameCallback((_) {
|
||||
|
|
@ -132,9 +131,6 @@ class ConstructListViewState extends State<ConstructListView> {
|
|||
.then(
|
||||
(value) => setState(() {
|
||||
_constructs = value;
|
||||
debugPrint(
|
||||
"constructs is now: ${constructs?.map((event) => event.uses.map((use) => use.lemma)).toList()}",
|
||||
);
|
||||
}),
|
||||
);
|
||||
});
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue