From d192419ac8286daeff9b354fb9aaf4d652e081c0 Mon Sep 17 00:00:00 2001 From: "mr.mojtaba" Date: Sun, 27 Jul 2025 09:26:48 +0330 Subject: [PATCH] feat : statistics page --- assets/icons/cube_card.svg | 6 + assets/icons/excel_download.svg | 28 ++-- assets/icons/pdf_download.svg | 25 +-- assets/vec/cube_card.svg.vec | Bin 0 -> 977 bytes assets/vec/excel_download.svg.vec | Bin 9183 -> 1297 bytes assets/vec/pdf_download.svg.vec | Bin 7647 -> 1940 bytes .../lib/presentation/common/assets.gen.dart | 8 + .../presentation/pages/statistics/view.dart | 142 ++++++++++++------ 8 files changed, 138 insertions(+), 71 deletions(-) create mode 100644 assets/icons/cube_card.svg create mode 100644 assets/vec/cube_card.svg.vec diff --git a/assets/icons/cube_card.svg b/assets/icons/cube_card.svg new file mode 100644 index 0000000..d20d965 --- /dev/null +++ b/assets/icons/cube_card.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/assets/icons/excel_download.svg b/assets/icons/excel_download.svg index a1c7e4b..b2597c5 100644 --- a/assets/icons/excel_download.svg +++ b/assets/icons/excel_download.svg @@ -1,12 +1,18 @@ - - - - - - - - - - - + + + + + + + + + + + + + + + + + diff --git a/assets/icons/pdf_download.svg b/assets/icons/pdf_download.svg index bb80401..fb17107 100644 --- a/assets/icons/pdf_download.svg +++ b/assets/icons/pdf_download.svg @@ -1,12 +1,15 @@ - - - - - - - - - - - + + + + + + + + + + + + + + diff --git a/assets/vec/cube_card.svg.vec b/assets/vec/cube_card.svg.vec new file mode 100644 index 0000000000000000000000000000000000000000..786a6e3e78b2d57eff69ffbc474fbb8d44a890b6 GIT binary patch literal 977 zcmZvbPiPZS5XRrzJxI4gFTqQ~RxgqSTBPf#Sa_cY?aA2a$+Ut><3XW{f?5OhPg~-t z6fd=UvIRkiQ79Tk8rq;iXh9IHJvGJNBHDxYy1tpss0ZJ&d~bH>+pqP(~8wU`&LaiVpY;QsL20<0n=VojX)K_@pTC3eO zfOaBRwc~c%Q09<2IVbnXz0ybe3WsnBr*O+0GMCILbBhn+i})nIiI3u|_$<6}?I^D` z4-e$-r%3g0<}vQy18JjFWz8+Wv%a1}Zux`tBV+S*WGmfh^Qt(M|854FZT|E z6k+a(DUCj2ZS$sCUyf&3HyVeLYc83MMlYJBHIwmS`<%u=^R~VJ97ZnP<-SYFNmk;C zEBC*=`#NthFDdbo67OW?4)dl{MdodvpJCpI`32jj4AFFI5yYELy$A7<5-%z7k`nKU riK^9Jlw)r|ywg*+nD=D1z`WF#c!lSHPi}^xuND2Ez7vW4FKzT20}oTi literal 0 HcmV?d00001 diff --git a/assets/vec/excel_download.svg.vec b/assets/vec/excel_download.svg.vec index 623671dcb4c7de7db1ad5b8dd70a6f7b3937b50f..9d5ec2e1abe24c478d4956d74151baa6113c3c36 100644 GIT binary patch literal 1297 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 const SvgGenImage('assets/icons/cube_bottom_rotation.svg'); + /// File path: assets/icons/cube_card.svg + SvgGenImage get cubeCard => const SvgGenImage('assets/icons/cube_card.svg'); + /// File path: assets/icons/cube_rotate.svg SvgGenImage get cubeRotate => const SvgGenImage('assets/icons/cube_rotate.svg'); @@ -293,6 +296,7 @@ class $AssetsIconsGen { cow, cube, cubeBottomRotation, + cubeCard, cubeRotate, cubeScan, cubeSearch, @@ -453,6 +457,9 @@ class $AssetsVecGen { /// File path: assets/vec/cube_bottom_rotation.svg.vec SvgGenImage get cubeBottomRotationSvg => const SvgGenImage.vec('assets/vec/cube_bottom_rotation.svg.vec'); + /// File path: assets/vec/cube_card.svg.vec + SvgGenImage get cubeCardSvg => const SvgGenImage.vec('assets/vec/cube_card.svg.vec'); + /// File path: assets/vec/cube_rotate.svg.vec SvgGenImage get cubeRotateSvg => const SvgGenImage.vec('assets/vec/cube_rotate.svg.vec'); @@ -646,6 +653,7 @@ class $AssetsVecGen { cowSvg, cubeSvg, cubeBottomRotationSvg, + cubeCardSvg, cubeRotateSvg, cubeScanSvg, cubeSearchSvg, diff --git a/packages/inspection/lib/presentation/pages/statistics/view.dart b/packages/inspection/lib/presentation/pages/statistics/view.dart index e369e6f..4d05d6e 100644 --- a/packages/inspection/lib/presentation/pages/statistics/view.dart +++ b/packages/inspection/lib/presentation/pages/statistics/view.dart @@ -150,57 +150,102 @@ class StatisticsPage extends GetView { ), SizedBox(height: 8.h), Container( - height: 152.h, + decoration: BoxDecoration( borderRadius: BorderRadius.circular(8), border: Border.all(color: AppColor.lightGreyNormalHover, width: 1), ), - child: Padding( - padding: const EdgeInsets.fromLTRB(0, 10, 0, 13), - child: Row( - spacing: 8, - children: [ - Expanded( - child: ObxValue( - (data) => _informationLabelCard( - title: 'تعداد تراکنش ها', - titleColor: AppColor.blueNormal, - isLoading: data.value == null, - description: 25369654.separatedByComma, - iconPath: Assets.vec.cubeSearchSvg.path, - iconColor: AppColor.blueNormal, - bgDescriptionColor: Colors.white, - gradient: LinearGradient( - begin: Alignment.topCenter, - end: Alignment.bottomCenter, - colors: [AppColor.blueLight, Colors.white], + padding: EdgeInsets.all(8), + child: Column( + spacing: 8, + children: [ + Row( + spacing: 8, + children: [ + Expanded( + child: ObxValue( + (data) => _informationLabelCard( + title: 'تعداد تراکنش ها', + titleColor: AppColor.blueNormal, + isLoading: data.value == null, + description: 25369654.separatedByComma, + iconPath: Assets.vec.cubeScanSvg.path, + bgDescriptionColor: Colors.white, + gradient: LinearGradient( + begin: Alignment.topCenter, + end: Alignment.bottomCenter, + colors: [AppColor.blueLight, Colors.white], + ), ), + controller.s1, ), - controller.s1, ), - ), - Expanded( - child: ObxValue((data) { - return _informationLabelCard( - title: 'جمع تراکنش ها', - isLoading: data.value == null, - description: data.value.separatedByComma ?? '0', - unit: 'ريال', - iconPath: Assets.vec.cubeWattingSvg.path, - bgDescriptionColor: Colors.white, - gradient: LinearGradient( - begin: Alignment.topCenter, - end: Alignment.bottomCenter, - colors: [const Color(0xFFFFE7BB), Colors.white], - ), - ); - }, controller.s2), - ), - ], - ), + Expanded( + child: ObxValue((data) { + return _informationLabelCard( + title: 'جمع تراکنش ها', + isLoading: data.value == null, + description: data.value.separatedByComma ?? '0', + unit: 'ريال', + iconPath: Assets.vec.cubeCardSvg.path, + bgDescriptionColor: Colors.white, + titleColor: AppColor.greenDarkHover, + gradient: LinearGradient( + begin: Alignment.topCenter, + end: Alignment.bottomCenter, + colors: [AppColor.greenLightHover, Colors.white], + ), + ); + }, controller.s2), + ), + ], + ), + Row( + spacing: 16, + mainAxisAlignment: MainAxisAlignment.center, + children: [ + RElevated( + width: 160.w, + height: 40.h, + backgroundColor: AppColor.greenNormal, + onPressed: () {}, + child: Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Assets.vec.excelDownloadSvg.svg( + width: 24.w, + height: 24.h, + colorFilter: const ColorFilter.mode(Colors.white, BlendMode.srcIn), + ), + SizedBox(width: 4.w), + Text('EXCEL', style: AppFonts.yekan14.copyWith(color: Colors.white)), + ], + ), + ), + ROutlinedElevated( + width: 160.w, + height: 40.h, + borderColor: AppColor.error, + child: Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Assets.vec.pdfDownloadSvg.svg( + width: 24.w, + height: 24.h, + colorFilter: const ColorFilter.mode(AppColor.error, BlendMode.srcIn), + ), + SizedBox(width: 4.w), + Text('PDF', style: AppFonts.yekan14.copyWith(color: AppColor.error)), + ], + ), + ), + ], + ), + ], ), ), + SizedBox(height: 8.h), ], ), ); @@ -239,7 +284,6 @@ class StatisticsPage extends GetView { }) { return Container( height: 82.h, - margin: EdgeInsets.symmetric(horizontal: 12.w), decoration: BoxDecoration( borderRadius: BorderRadius.circular(8), border: Border.all(color: AppColor.lightGreyNormalHover, width: 1), @@ -249,10 +293,10 @@ class StatisticsPage extends GetView { children: [ // Left side with icon and title Expanded( - flex: 2, + flex: 91, child: Container( height: 82.h, - padding: EdgeInsets.all(8), + padding: EdgeInsets.all(4), decoration: BoxDecoration( color: gradient == null ? bgLabelColor : null, borderRadius: BorderRadius.only( @@ -263,7 +307,7 @@ class StatisticsPage extends GetView { ), child: Column( mainAxisAlignment: MainAxisAlignment.center, - spacing: 4, + spacing: 8, children: [ SvgGenImage.vec(iconPath).svg( width: 24, @@ -285,7 +329,7 @@ class StatisticsPage extends GetView { ), // Right side with description and unit Expanded( - flex: 3, + flex: 109, child: Container( decoration: BoxDecoration( color: bgDescriptionColor, @@ -302,13 +346,13 @@ class StatisticsPage extends GetView { children: [ Text( description, - textAlign: TextAlign.right, - style: AppFonts.yekan16.copyWith(color: AppColor.mediumGreyDarkActive), + textAlign: TextAlign.center, + style: AppFonts.yekan14.copyWith(color: AppColor.mediumGreyDarkActive), ), Visibility( visible: unit != null, child: Text( - unit, + unit ?? '', textAlign: TextAlign.center, style: AppFonts.yekan12.copyWith(color: AppColor.mediumGreyDarkActive), ),