import 'package:flutter/material.dart'; import 'package:intl/intl.dart'; import 'package:syncrow_web/pages/device_managment/all_devices/models/device_reports.dart'; import 'package:syncrow_web/pages/device_managment/shared/table/table_cell_widget.dart'; import 'package:syncrow_web/pages/device_managment/shared/table/table_header.dart'; class ReportsTable extends StatelessWidget { final DeviceReport report; final String? thirdColumnTitle; final String? thirdColumnDescription; final Function(int index) onRowTap; final VoidCallback onClose; const ReportsTable({ super.key, required this.report, required this.onRowTap, required this.onClose, this.thirdColumnTitle, this.thirdColumnDescription, }); @override Widget build(BuildContext context) { return Stack( children: [ Padding( padding: const EdgeInsets.all(20.0), child: Table( border: TableBorder.all(color: Colors.grey.shade300, width: 1), columnWidths: const { 0: FlexColumnWidth(), 1: FlexColumnWidth(), 2: FlexColumnWidth(), }, children: [ TableRow( decoration: BoxDecoration(color: Colors.grey.shade200), children: [ const TableHeader(title: 'Date'), const TableHeader(title: 'Time'), TableHeader(title: thirdColumnTitle ?? 'Status'), ], ), if (report.data != null) ...report.data!.asMap().entries.map((entry) { int index = entry.key; DeviceEvent data = entry.value; // Parse eventTime into Date and Time DateTime eventDateTime = DateTime.fromMillisecondsSinceEpoch(data.eventTime!); String date = DateFormat('dd/MM/yyyy').format(eventDateTime); String time = DateFormat('HH:mm').format(eventDateTime); return TableRow( children: [ TableCellWidget(value: date), TableCellWidget(value: time), TableCellWidget( value: '${data.value!} ${thirdColumnDescription ?? ''}', onTap: () => onRowTap(index), ), ], ); }), ], ), ), Positioned( top: 0, right: 0, child: IconButton( icon: const Icon( Icons.close, color: Colors.red, size: 18, ), onPressed: onClose, ), ), ], ); } }