extracted reusable helper methods into global extensions.

This commit is contained in:
Faris Armoush
2025-04-30 15:02:22 +03:00
parent 63718185e7
commit 9431dd4500
3 changed files with 33 additions and 30 deletions

View File

@ -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';
}
}

View File

@ -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'
};
}
}

View File

@ -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(', ');
}
}