From 9431dd450023ce1de297ca4101c9ffd08fa708ba Mon Sep 17 00:00:00 2001 From: Faris Armoush Date: Wed, 30 Apr 2025 15:02:22 +0300 Subject: [PATCH] extracted reusable helper methods into global extensions. --- .../helpers/format_number_to_kwh.dart | 6 +++ .../helpers/get_month_name_from_int.dart | 19 ++++++++++ .../total_energy_consumption_chart.dart | 38 ++++--------------- 3 files changed, 33 insertions(+), 30 deletions(-) create mode 100644 lib/pages/analytics/helpers/format_number_to_kwh.dart create mode 100644 lib/pages/analytics/helpers/get_month_name_from_int.dart diff --git a/lib/pages/analytics/helpers/format_number_to_kwh.dart b/lib/pages/analytics/helpers/format_number_to_kwh.dart new file mode 100644 index 00000000..65789ada --- /dev/null +++ b/lib/pages/analytics/helpers/format_number_to_kwh.dart @@ -0,0 +1,6 @@ +extension FormatNumberToKwh on num { + String get formatNumberToKwh { + final regExp = RegExp(r'(\d)(?=(\d{3})+$)'); + return '${toStringAsFixed(0).replaceAllMapped(regExp, (match) => '${match[1]},')} kWh'; + } +} diff --git a/lib/pages/analytics/helpers/get_month_name_from_int.dart b/lib/pages/analytics/helpers/get_month_name_from_int.dart new file mode 100644 index 00000000..54b0fa87 --- /dev/null +++ b/lib/pages/analytics/helpers/get_month_name_from_int.dart @@ -0,0 +1,19 @@ +extension GetMonthNameFromNumber on num { + String get getMonthName { + return switch (this) { + 1 => 'JAN', + 2 => 'FEB', + 3 => 'MAR', + 4 => 'APR', + 5 => 'MAY', + 6 => 'JUN', + 7 => 'JUL', + 8 => 'AUG', + 9 => 'SEP', + 10 => 'OCT', + 11 => 'NOV', + 12 => 'DEC', + _ => 'N/A' + }; + } +} \ No newline at end of file diff --git a/lib/pages/analytics/modules/energy_management/widgets/total_energy_consumption_chart.dart b/lib/pages/analytics/modules/energy_management/widgets/total_energy_consumption_chart.dart index 054e3391..2d7d5dbe 100644 --- a/lib/pages/analytics/modules/energy_management/widgets/total_energy_consumption_chart.dart +++ b/lib/pages/analytics/modules/energy_management/widgets/total_energy_consumption_chart.dart @@ -1,5 +1,7 @@ import 'package:fl_chart/fl_chart.dart'; import 'package:flutter/material.dart'; +import 'package:syncrow_web/pages/analytics/helpers/format_number_to_kwh.dart'; +import 'package:syncrow_web/pages/analytics/helpers/get_month_name_from_int.dart'; import 'package:syncrow_web/utils/color_manager.dart'; import 'package:syncrow_web/utils/extension/build_context_x.dart'; @@ -25,7 +27,7 @@ class EnergyData { } // energy_consumption_chart will return id, name and consumption -final s = { +const phasesJson = { "1": { "phaseOne": 1000, "phaseTwo": 2000, @@ -145,7 +147,7 @@ class TotalEnergyConsumptionChart extends StatelessWidget { child: FittedBox( fit: BoxFit.scaleDown, child: Text( - _formatNumberToKwh(value), + value.formatNumberToKwh, style: context.textTheme.bodySmall?.copyWith( fontSize: 12, color: ColorsManager.greyColor, @@ -185,33 +187,9 @@ class TotalEnergyConsumptionChart extends StatelessWidget { } String _getToolTipLabel(num month, double value) { - final monthLabel = _getMonthNameFrom(month); - final valueLabel = _formatNumberToKwh(value); - return [monthLabel, valueLabel] - .where((element) => element.isNotEmpty) - .join(', '); - } - - String _formatNumberToKwh(double value) { - final regExp = RegExp(r'(\d)(?=(\d{3})+$)'); - return '${value.toStringAsFixed(0).replaceAllMapped(regExp, (match) => '${match[1]},')} kWh'; - } - - String _getMonthNameFrom(num month) { - final values = { - 1: 'JAN', - 2: 'FEB', - 3: 'MAR', - 4: 'APR', - 5: 'MAY', - 6: 'JUN', - 7: 'JUL', - 8: 'AUG', - 9: 'SEP', - 10: 'OCT', - 11: 'NOV', - 12: 'DEC', - }; - return values[month.toInt()] ?? 'N/A'; + final monthLabel = month.getMonthName; + final valueLabel = value.formatNumberToKwh; + final labels = [monthLabel, valueLabel]; + return labels.where((element) => element.isNotEmpty).join(', '); } }