From abed426de2b1159e9f9f145f848ee99442c2e564 Mon Sep 17 00:00:00 2001 From: WaseemAbbasi22 Date: Wed, 23 Oct 2024 11:39:18 +0300 Subject: [PATCH] in progress --- .../widgets/request_category_fragment.dart | 4 + .../components/weekly_calendar_fragment.dart | 90 +++++++++++++++++++ 2 files changed, 94 insertions(+) create mode 100644 lib/service_request_latest/views/components/weekly_calendar_fragment.dart diff --git a/lib/dashboard_latest/widgets/request_category_fragment.dart b/lib/dashboard_latest/widgets/request_category_fragment.dart index 6e797797..b3c1b634 100644 --- a/lib/dashboard_latest/widgets/request_category_fragment.dart +++ b/lib/dashboard_latest/widgets/request_category_fragment.dart @@ -10,6 +10,7 @@ import 'package:test_sa/extensions/widget_extensions.dart'; import 'package:test_sa/models/enums/user_types.dart'; import 'package:test_sa/models/new_models/dashboard_detail.dart'; import 'package:test_sa/new_views/common_widgets/tab_button.dart'; +import 'package:test_sa/service_request_latest/views/components/weekly_calendar_fragment.dart'; import 'package:test_sa/views/widgets/loaders/no_data_found.dart'; class RequestCategoryFragment extends StatelessWidget { @@ -20,6 +21,9 @@ class RequestCategoryFragment extends StatelessWidget { return Consumer(builder: (context, dashboardProvider, child) { return Column(mainAxisSize: MainAxisSize.min, crossAxisAlignment: CrossAxisAlignment.start, children: [ context.translation.allWorkOrder.heading4(context).paddingOnly(start: 16, end: 16), + 12.height, + const WeeklyCalendarFragment(), + 12.height, getTabs( requestsProvider: dashboardProvider, context: context, diff --git a/lib/service_request_latest/views/components/weekly_calendar_fragment.dart b/lib/service_request_latest/views/components/weekly_calendar_fragment.dart new file mode 100644 index 00000000..4ed24ef7 --- /dev/null +++ b/lib/service_request_latest/views/components/weekly_calendar_fragment.dart @@ -0,0 +1,90 @@ +import 'package:flutter/material.dart'; +import 'package:intl/intl.dart'; +import 'package:provider/provider.dart'; +import 'package:test_sa/dashboard_latest/dashboard_provider.dart'; +import 'package:test_sa/extensions/context_extension.dart'; +import 'package:test_sa/extensions/int_extensions.dart'; +import 'package:test_sa/extensions/text_extensions.dart'; +import 'package:test_sa/extensions/widget_extensions.dart'; +import 'package:test_sa/new_views/app_style/app_color.dart'; +import 'package:test_sa/new_views/app_style/app_text_style.dart'; +import 'package:test_sa/views/app_style/sizing.dart'; + +class WeeklyCalendarFragment extends StatelessWidget { + const WeeklyCalendarFragment({Key? key}) : super(key: key); + + @override + Widget build(BuildContext context) { + // Generate the list of dates for the current week (3 days before and 3 days after today) + List weekDates = getWeekDates(); + + return Consumer( + builder: (context, snapshot, _) => GridView.builder( + padding: const EdgeInsets.only(left: 16, right: 16), + physics: const NeverScrollableScrollPhysics(), + shrinkWrap: true, + gridDelegate: const SliverGridDelegateWithFixedCrossAxisCount( + crossAxisCount: 7, + childAspectRatio: 70 / 60, + crossAxisSpacing: 2, + mainAxisSpacing: 12, + ), + itemCount: weekDates.length, // Now we have 7 items + itemBuilder: (context, index) { + DateTime date = weekDates[index]; + String formattedDate = DateFormat('EEE\ndd').format(date); // EEE: Day name, dd: Day number + + return listItem( + formattedDate, // Pass the formatted date + snapshot.dashboardCount?.data?.countOpen ?? 0, // Adjust as needed + context, + snapshot.isAllCountLoading, + index, + AppColor.primary10, + ); + }, + ), + ); + } + + // Function to generate a list of dates for 3 days before and 3 days after the current date + List getWeekDates() { + DateTime today = DateTime.now(); + List weekDates = []; + + for (int i = -3; i <= 3; i++) { + weekDates.add(today.add(Duration(days: i))); + } + + return weekDates; + } + + Widget listItem(String formattedDate, int value, BuildContext context, bool isLoading, int index, Color iconColor) { + return GestureDetector( + onTap: isLoading + ? null + : () { + // Action on tapping the date (if required) + }, + child: Column( + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisSize: MainAxisSize.min, + children: [ + 8.height, + Column( + children: [ + Container( + color: Colors.red, + child: Text( + formattedDate, + style: AppTextStyles.tinyFont2, + ), + ), + // Any other widgets you want to display (e.g. counts, icons) + ], + ), + ], + ), + ); + } +}