From 19936764708c759eb70e63a5694bee0ed8961368 Mon Sep 17 00:00:00 2001 From: Vaibhav Surve Date: Tue, 30 Sep 2025 14:59:53 +0530 Subject: [PATCH] removed the unwanted menus --- lib/view/dashboard/dashboard_screen.dart | 233 ++++++----------------- 1 file changed, 53 insertions(+), 180 deletions(-) diff --git a/lib/view/dashboard/dashboard_screen.dart b/lib/view/dashboard/dashboard_screen.dart index 5f89aec..ff91892 100644 --- a/lib/view/dashboard/dashboard_screen.dart +++ b/lib/view/dashboard/dashboard_screen.dart @@ -10,25 +10,15 @@ import 'package:marco/helpers/widgets/my_container.dart'; import 'package:marco/helpers/widgets/my_spacing.dart'; import 'package:marco/helpers/widgets/my_text.dart'; import 'package:marco/helpers/widgets/dashbaord/attendance_overview_chart.dart'; -import 'package:marco/helpers/widgets/dashbaord/project_progress_chart.dart'; import 'package:marco/view/layouts/layout.dart'; -import 'package:marco/controller/dynamicMenu/dynamic_menu_controller.dart'; -import 'package:marco/helpers/widgets/dashbaord/dashboard_overview_widgets.dart'; class DashboardScreen extends StatefulWidget { const DashboardScreen({super.key}); - static const String dashboardRoute = "/dashboard"; static const String employeesRoute = "/dashboard/employees"; - static const String projectsRoute = "/dashboard"; static const String attendanceRoute = "/dashboard/attendance"; - static const String tasksRoute = "/dashboard/daily-task"; - static const String dailyTasksRoute = "/dashboard/daily-task-Planning"; - static const String dailyTasksProgressRoute = - "/dashboard/daily-task-progress"; static const String directoryMainPageRoute = "/dashboard/directory-main-page"; static const String expenseMainPageRoute = "/dashboard/expense-main-page"; - static const String documentMainPageRoute = "/dashboard/document-main-page"; @override State createState() => _DashboardScreenState(); @@ -37,7 +27,6 @@ class DashboardScreen extends StatefulWidget { class _DashboardScreenState extends State with UIMixin { final DashboardController dashboardController = Get.put(DashboardController(), permanent: true); - final DynamicMenuController menuController = Get.put(DynamicMenuController()); bool hasMpin = true; @@ -62,82 +51,34 @@ class _DashboardScreenState extends State with UIMixin { children: [ _buildDashboardStats(context), MySpacing.height(24), - SizedBox( - width: double.infinity, - child: DashboardOverviewWidgets.teamsOverview(), - ), - MySpacing.height(24), - SizedBox( - width: double.infinity, - child: DashboardOverviewWidgets.tasksOverview(), - ), - MySpacing.height(24), _buildAttendanceChartSection(), - MySpacing.height(24), - _buildProjectProgressChartSection(), ], ), ), ); } - /// Project Progress Chart Section - Widget _buildProjectProgressChartSection() { - return Obx(() { - - - if (dashboardController.projectChartData.isEmpty) { - return const Padding( - padding: EdgeInsets.all(16), - child: Center( - child: Text("No project progress data available."), - ), - ); - } - - return ClipRRect( - borderRadius: BorderRadius.circular(5), - child: SizedBox( - height: 400, - child: ProjectProgressChart( - data: dashboardController.projectChartData, - ), - ), - ); - }); - } - /// Attendance Chart Section Widget _buildAttendanceChartSection() { - return Obx(() { - - final isAttendanceAllowed = menuController.isMenuAllowed("Attendance"); - - if (!isAttendanceAllowed) { - // 🚫 Don't render anything if attendance menu is not allowed - return const SizedBox.shrink(); - } - - return GetBuilder( - id: 'dashboard_controller', - builder: (projectController) { - final isProjectSelected = projectController.selectedProject != null; - return Opacity( - opacity: isProjectSelected ? 1.0 : 0.4, - child: IgnorePointer( - ignoring: !isProjectSelected, - child: ClipRRect( - borderRadius: BorderRadius.circular(5), - child: SizedBox( - height: 400, - child: AttendanceDashboardChart(), - ), + return GetBuilder( + id: 'dashboard_controller', + builder: (projectController) { + final isProjectSelected = projectController.selectedProject != null; + return Opacity( + opacity: isProjectSelected ? 1.0 : 0.4, + child: IgnorePointer( + ignoring: !isProjectSelected, + child: ClipRRect( + borderRadius: BorderRadius.circular(5), + child: SizedBox( + height: 400, + child: AttendanceDashboardChart(), ), ), - ); - }, - ); - }); + ), + ); + }, + ); } /// No Project Assigned Message @@ -165,116 +106,48 @@ class _DashboardScreenState extends State with UIMixin { ); } - /// Loading Skeletons - Widget _buildLoadingSkeleton(BuildContext context) { - return Wrap( - spacing: 10, - runSpacing: 10, - children: List.generate( - 4, - (index) => - _buildStatCardSkeleton(MediaQuery.of(context).size.width / 3), - ), - ); - } - - /// Skeleton Card - Widget _buildStatCardSkeleton(double width) { - return MyCard.bordered( - width: width, - height: 100, - paddingAll: 5, - borderRadiusAll: 5, - border: Border.all(color: Colors.grey.withOpacity(0.15)), - child: Column( - mainAxisAlignment: MainAxisAlignment.center, - children: [ - MyContainer.rounded( - paddingAll: 12, - color: Colors.grey.shade300, - child: const SizedBox(width: 18, height: 18), - ), - MySpacing.height(8), - Container( - height: 12, - width: 60, - color: Colors.grey.shade300, - ), - ], - ), - ); - } /// Dashboard Statistics Section Widget _buildDashboardStats(BuildContext context) { - return Obx(() { - if (menuController.isLoading.value) { - return _buildLoadingSkeleton(context); - } + final stats = [ + _StatItem(LucideIcons.scan_face, "Attendance", contentTheme.success, + DashboardScreen.attendanceRoute), + _StatItem(LucideIcons.users, "Employees", contentTheme.warning, + DashboardScreen.employeesRoute), + _StatItem(LucideIcons.folder, "Directory", contentTheme.info, + DashboardScreen.directoryMainPageRoute), + _StatItem(LucideIcons.badge_dollar_sign, "Expense", contentTheme.info, + DashboardScreen.expenseMainPageRoute), + ]; - if (menuController.hasError.value && menuController.menuItems.isEmpty) { - return Padding( - padding: const EdgeInsets.all(16), - child: Center( - child: MyText.bodySmall( - "Failed to load menus. Please try again later.", - color: Colors.red, - ), - ), - ); - } + final projectController = Get.find(); + final isProjectSelected = projectController.selectedProject != null; - final stats = [ - _StatItem(LucideIcons.scan_face, "Attendance", contentTheme.success, - DashboardScreen.attendanceRoute), - _StatItem(LucideIcons.users, "Employees", contentTheme.warning, - DashboardScreen.employeesRoute), - _StatItem(LucideIcons.logs, "Daily Task Planning", contentTheme.info, - DashboardScreen.dailyTasksRoute), - _StatItem(LucideIcons.list_todo, "Daily Progress Report", - contentTheme.info, DashboardScreen.dailyTasksProgressRoute), - _StatItem(LucideIcons.folder, "Directory", contentTheme.info, - DashboardScreen.directoryMainPageRoute), - _StatItem(LucideIcons.badge_dollar_sign, "Expense", contentTheme.info, - DashboardScreen.expenseMainPageRoute), - _StatItem(LucideIcons.file_text, "Documents", contentTheme.info, - DashboardScreen.documentMainPageRoute), - ]; + return Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + if (!isProjectSelected) _buildNoProjectMessage(), + LayoutBuilder( + builder: (context, constraints) { + int crossAxisCount = (constraints.maxWidth ~/ 80).clamp(2, 8); + double cardWidth = + (constraints.maxWidth - (crossAxisCount - 1) * 6) / + crossAxisCount; - final projectController = Get.find(); - final isProjectSelected = projectController.selectedProject != null; - - return Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - if (!isProjectSelected) _buildNoProjectMessage(), - LayoutBuilder( - builder: (context, constraints) { - // ✅ smaller width cards → fit more in a row - int crossAxisCount = (constraints.maxWidth ~/ 80).clamp(2, 8); - double cardWidth = - (constraints.maxWidth - (crossAxisCount - 1) * 6) / - crossAxisCount; - - return Wrap( - spacing: 6, - runSpacing: 6, - alignment: WrapAlignment.start, - children: stats - .where((stat) { - if (stat.title == "Documents") return true; - return menuController.isMenuAllowed(stat.title); - }) - .map((stat) => - _buildStatCard(stat, isProjectSelected, cardWidth)) - .toList() - .cast(), - ); - }, - ), - ], - ); - }); + return Wrap( + spacing: 6, + runSpacing: 6, + alignment: WrapAlignment.start, + children: stats + .map((stat) => + _buildStatCard(stat, isProjectSelected, cardWidth)) + .toList() + .cast(), + ); + }, + ), + ], + ); } /// Stat Card (Compact + Small)