diff --git a/lib/helpers/widgets/dashbaord/attendance_overview_chart.dart b/lib/helpers/widgets/dashbaord/attendance_overview_chart.dart index b46f8d3..9cf0a75 100644 --- a/lib/helpers/widgets/dashbaord/attendance_overview_chart.dart +++ b/lib/helpers/widgets/dashbaord/attendance_overview_chart.dart @@ -319,10 +319,13 @@ class _AttendanceChart extends StatelessWidget { primaryXAxis: CategoryAxis(labelRotation: 45), primaryYAxis: NumericAxis(minimum: 0, interval: 1), series: rolesWithData.map((role) { - final seriesData = filteredDates.map((date) { - final key = '${role}_$date'; - return {'date': date, 'present': formattedMap[key] ?? 0}; - }).where((d) => (d['present'] ?? 0) > 0).toList(); // ✅ remove 0 bars + final seriesData = filteredDates + .map((date) { + final key = '${role}_$date'; + return {'date': date, 'present': formattedMap[key] ?? 0}; + }) + .where((d) => (d['present'] ?? 0) > 0) + .toList(); // ✅ remove 0 bars return StackedColumnSeries, String>( dataSource: seriesData, @@ -334,8 +337,10 @@ class _AttendanceChart extends StatelessWidget { isVisible: true, builder: (dynamic data, _, __, ___, ____) { return (data['present'] ?? 0) > 0 - ? Text('${data['present']}', - style: const TextStyle(fontSize: 11)) + ? Text( + NumberFormat.decimalPattern().format(data['present']), + style: const TextStyle(fontSize: 11), + ) : const SizedBox.shrink(); }, ), @@ -426,8 +431,13 @@ class _AttendanceTable extends StatelessWidget { DataCell(_RolePill(role: role, color: getRoleColor(role))), ...filteredDates.map((date) { final key = '${role}_$date'; - return DataCell(Text('${formattedMap[key] ?? 0}', - style: const TextStyle(fontSize: 13))); + return DataCell( + Text( + NumberFormat.decimalPattern() + .format(formattedMap[key] ?? 0), + style: const TextStyle(fontSize: 13), + ), + ); }), ], ); diff --git a/lib/helpers/widgets/dashbaord/dashboard_overview_widgets.dart b/lib/helpers/widgets/dashbaord/dashboard_overview_widgets.dart index c9b5ff5..ac21276 100644 --- a/lib/helpers/widgets/dashbaord/dashboard_overview_widgets.dart +++ b/lib/helpers/widgets/dashbaord/dashboard_overview_widgets.dart @@ -5,6 +5,7 @@ import 'package:marco/helpers/widgets/my_spacing.dart'; import 'package:marco/controller/dashboard/dashboard_controller.dart'; import 'package:syncfusion_flutter_charts/charts.dart'; import 'package:marco/helpers/widgets/my_text.dart'; // import MyText +import 'package:intl/intl.dart'; class DashboardOverviewWidgets { static final DashboardController dashboardController = @@ -32,6 +33,7 @@ class DashboardOverviewWidgets { fontWeight: FontWeight.bold, color: Colors.white, ); + static final NumberFormat _commaFormatter = NumberFormat.decimalPattern(); /// Teams Overview Card without chart, labels & values in rows static Widget teamsOverview() { @@ -79,8 +81,9 @@ class DashboardOverviewWidgets { Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ - MyText(total.toString(), style: _infoNumberTextStyle), - MyText(inToday.toString(), + MyText(_commaFormatter.format(total), + style: _infoNumberTextStyle), + MyText(_commaFormatter.format(inToday), style: _infoNumberGreenTextStyle.copyWith( color: Colors.green[700])), ], @@ -209,11 +212,11 @@ class DashboardOverviewWidgets { ), child: Column( children: [ - MyText(value.toString(), + MyText(_commaFormatter.format(value), style: const TextStyle( fontSize: 16, fontWeight: FontWeight.bold, - color: Colors.white, // text in white for contrast + color: Colors.white, )), MySpacing.height(2), MyText(label, diff --git a/lib/helpers/widgets/dashbaord/project_progress_chart.dart b/lib/helpers/widgets/dashbaord/project_progress_chart.dart index e79ca9a..3162f11 100644 --- a/lib/helpers/widgets/dashbaord/project_progress_chart.dart +++ b/lib/helpers/widgets/dashbaord/project_progress_chart.dart @@ -48,6 +48,7 @@ class ProjectProgressChart extends StatelessWidget { Color(0xFFFFB74D), Color(0xFF64B5F6), ]; + static final NumberFormat _commaFormatter = NumberFormat.decimalPattern(); static final Map _taskColorMap = {}; @@ -228,9 +229,17 @@ class ProjectProgressChart extends StatelessWidget { xValueMapper: (d, _) => DateFormat('MMM d').format(d.date), yValueMapper: (d, _) => d.planned, color: _getTaskColor('Planned'), - dataLabelSettings: const DataLabelSettings( + dataLabelSettings: DataLabelSettings( isVisible: true, - textStyle: TextStyle(fontSize: 11), + builder: (data, point, series, pointIndex, seriesIndex) { + final value = seriesIndex == 0 + ? (data as ChartTaskData).planned + : (data as ChartTaskData).completed; + return Text( + _commaFormatter.format(value), + style: const TextStyle(fontSize: 11), + ); + }, ), ), ColumnSeries( @@ -239,9 +248,17 @@ class ProjectProgressChart extends StatelessWidget { xValueMapper: (d, _) => DateFormat('MMM d').format(d.date), yValueMapper: (d, _) => d.completed, color: _getTaskColor('Completed'), - dataLabelSettings: const DataLabelSettings( + dataLabelSettings: DataLabelSettings( isVisible: true, - textStyle: TextStyle(fontSize: 11), + builder: (data, point, series, pointIndex, seriesIndex) { + final value = seriesIndex == 0 + ? (data as ChartTaskData).planned + : (data as ChartTaskData).completed; + return Text( + _commaFormatter.format(value), + style: const TextStyle(fontSize: 11), + ); + }, ), ), ],