monitor2/lib/log/screen_logspage.dart
supercodeur 822418fe54
All checks were successful
continuous-integration/drone/push Build is passing
[VERSION CONTROL] - Add the killswitch
2025-05-24 20:39:35 +02:00

57 lines
1.6 KiB
Dart

import 'package:flutter/material.dart';
import 'package:monitor2/log/class_sitelog.dart';
class LogsPage extends StatefulWidget {
final List<SiteLog> logs;
const LogsPage({super.key, required this.logs});
@override
State<LogsPage> createState() => _LogsPageState();
}
class _LogsPageState extends State<LogsPage> {
String sortBy = 'date';
@override
Widget build(BuildContext context) {
final logs = List.of(widget.logs);
if (sortBy == 'date') {
logs.sort((a, b) => b.date.compareTo(a.date));
} else {
logs.sort((a, b) => a.statusCode.compareTo(b.statusCode));
}
return Scaffold(
appBar: AppBar(
title: Text('📝 Logs'),
actions: [
PopupMenuButton<String>(
onSelected: (value) => setState(() => sortBy = value),
itemBuilder: (context) => [
PopupMenuItem(value: 'date', child: Text('Trier par date')),
PopupMenuItem(value: 'status', child: Text('Trier par statut')),
],
),
],
),
body: ListView.builder(
itemCount: logs.length,
itemBuilder: (context, index) {
final log = logs[index];
final isOk = log.statusCode == 200;
return ListTile(
leading: Text(isOk ? '🟢' : '🔴', style: TextStyle(fontSize: 20)),
title: Text(log.url),
subtitle: Text(
'${log.date.toLocal()} - '
'${isOk ? 'OK' : 'Erreur: ${log.statusCode == -1 ? 'Timeout/Network' : log.statusCode}'}',
),
tileColor: isOk ? null : Colors.red.withAlpha(10),
);
},
),
);
}
}