// import 'dart:math'; // import 'package:fluffychat/pangea/enum/bar_chart_view_enum.dart'; // import 'package:fluffychat/pangea/enum/construct_type_enum.dart'; // import 'package:fluffychat/pangea/enum/time_span.dart'; // import 'package:fluffychat/pangea/pages/analytics/analytics_language_button.dart'; // import 'package:fluffychat/pangea/pages/analytics/analytics_list_tile.dart'; // import 'package:fluffychat/pangea/pages/analytics/analytics_view_button.dart'; // import 'package:fluffychat/pangea/pages/analytics/base_analytics.dart'; // import 'package:fluffychat/pangea/pages/analytics/construct_list.dart'; // import 'package:fluffychat/pangea/pages/analytics/messages_bar_chart.dart'; // import 'package:fluffychat/pangea/pages/analytics/time_span_menu_button.dart'; // import 'package:fluffychat/widgets/layouts/max_width_body.dart'; // import 'package:flutter/gestures.dart'; // import 'package:flutter/material.dart'; // import 'package:flutter_gen/gen_l10n/l10n.dart'; // import 'package:go_router/go_router.dart'; // class BaseAnalyticsView extends StatelessWidget { // const BaseAnalyticsView({ // super.key, // required this.controller, // }); // final BaseAnalyticsController controller; // Widget chartView(BuildContext context) { // switch (controller.currentView) { // case BarChartViewSelection.messages: // return MessagesBarChart( // chartAnalytics: controller.chartData, // ); // case BarChartViewSelection.grammar: // return ConstructList( // constructType: ConstructTypeEnum.grammar, // defaultSelected: controller.widget.defaultSelected, // selected: controller.selected, // controller: controller, // pangeaController: controller.pangeaController, // refreshStream: controller.refreshStream, // ); // } // } // @override // Widget build(BuildContext context) { // return Scaffold( // appBar: AppBar( // centerTitle: true, // title: RichText( // text: TextSpan( // style: TextStyle( // color: Theme.of(context).textTheme.bodyLarge!.color, // fontSize: 18, // fontWeight: FontWeight.w700, // ), // children: [ // TextSpan( // text: controller.widget.pageTitle, // style: const TextStyle(decoration: TextDecoration.underline), // recognizer: TapGestureRecognizer() // ..onTap = () { // final String route = // "/rooms/${controller.widget.defaultSelected.type.route}"; // context.go(route); // }, // ), // if (controller.activeSpace != null) // const TextSpan( // text: " > ", // ), // if (controller.activeSpace != null) // TextSpan( // text: controller.activeSpace!.getLocalizedDisplayname(), // ), // const TextSpan( // text: " > ", // ), // TextSpan( // text: controller.currentView.string(context), // ), // ], // ), // overflow: TextOverflow.ellipsis, // textAlign: TextAlign.center, // ), // ), // body: MaxWidthBody( // withScrolling: false, // child: Column( // children: [ // Row( // mainAxisAlignment: MainAxisAlignment.spaceBetween, // children: [ // TimeSpanMenuButton( // value: controller.currentTimeSpan, // onChange: (TimeSpan value) => // controller.toggleTimeSpan(context, value), // ), // AnalyticsViewButton( // value: controller.currentView, // onChange: controller.toggleView, // ), // AnalyticsLanguageButton( // value: controller // .pangeaController.analytics.currentAnalyticsLang, // onChange: (lang) => controller.toggleSpaceLang(lang), // languages: controller.widget.targetLanguages, // ), // ], // ), // const SizedBox( // height: 10, // ), // Expanded( // flex: 1, // child: chartView(context), // ), // Expanded( // flex: 1, // child: DefaultTabController( // length: 2, // child: Column( // children: [ // TabBar( // tabs: [ // ...controller.widget.tabs.map( // (tab) => Tab( // icon: Icon( // tab.icon, // color: Theme.of(context) // .colorScheme // .onSurfaceVariant, // ), // ), // ), // ], // ), // Expanded( // child: SingleChildScrollView( // child: SizedBox( // height: max( // controller.widget.tabs[0].items.length + 1, // controller.widget.tabs[1].items.length, // ) * // 72, // child: TabBarView( // physics: const NeverScrollableScrollPhysics(), // children: [ // Column( // crossAxisAlignment: CrossAxisAlignment.stretch, // children: [ // ...controller.widget.tabs[0].items.map( // (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, // ), // ), // allowNavigateOnSelect: controller // .widget.tabs[0].allowNavigateOnSelect, // pangeaController: // controller.pangeaController, // controller: controller, // ), // ), // if (controller.widget.defaultSelected.type == // AnalyticsEntryType.space) // AnalyticsListTile( // refreshStream: controller.refreshStream, // defaultSelected: // controller.widget.defaultSelected, // avatar: null, // selected: AnalyticsSelected( // controller.widget.defaultSelected.id, // AnalyticsEntryType.privateChats, // L10n.of(context)!.allPrivateChats, // ), // allowNavigateOnSelect: false, // isSelected: controller.isSelected( // controller.widget.defaultSelected.id, // ), // onTap: controller.toggleSelection, // pangeaController: // controller.pangeaController, // controller: controller, // ), // ], // ), // Column( // crossAxisAlignment: CrossAxisAlignment.stretch, // children: controller.widget.tabs[1].items // .map( // (item) => AnalyticsListTile( // refreshStream: controller.refreshStream, // avatar: item.avatar, // defaultSelected: // controller.widget.defaultSelected, // selected: AnalyticsSelected( // item.id, // controller.widget.tabs[1].type, // item.displayName, // ), // isSelected: // controller.isSelected(item.id), // onTap: controller.toggleSelection, // allowNavigateOnSelect: controller.widget // .tabs[1].allowNavigateOnSelect, // pangeaController: // controller.pangeaController, // controller: controller, // ), // ) // .toList(), // ), // ], // ), // ), // ), // ), // ], // ), // ), // ), // ], // ), // ), // ); // } // }