feat: Ajout de la gestion des maintenances et intégration de la synthèse vocale
This commit is contained in:
@@ -8,12 +8,14 @@ class EquipmentMaintenanceHistorySection extends StatelessWidget {
|
||||
final List<MaintenanceModel> maintenances;
|
||||
final bool isLoading;
|
||||
final bool hasManagePermission;
|
||||
final VoidCallback? onAddMaintenance;
|
||||
|
||||
const EquipmentMaintenanceHistorySection({
|
||||
super.key,
|
||||
required this.maintenances,
|
||||
required this.isLoading,
|
||||
required this.hasManagePermission,
|
||||
this.onAddMaintenance,
|
||||
});
|
||||
|
||||
@override
|
||||
@@ -37,19 +39,42 @@ class EquipmentMaintenanceHistorySection extends StatelessWidget {
|
||||
),
|
||||
),
|
||||
),
|
||||
if (hasManagePermission && onAddMaintenance != null)
|
||||
IconButton(
|
||||
icon: const Icon(Icons.add_circle, color: AppColors.bleuFonce),
|
||||
tooltip: 'Planifier une maintenance',
|
||||
onPressed: onAddMaintenance,
|
||||
),
|
||||
],
|
||||
),
|
||||
const Divider(height: 24),
|
||||
if (isLoading)
|
||||
const Center(child: CircularProgressIndicator())
|
||||
else if (maintenances.isEmpty)
|
||||
const Padding(
|
||||
padding: EdgeInsets.all(16.0),
|
||||
child: Center(
|
||||
child: Text(
|
||||
'Aucune maintenance enregistrée',
|
||||
style: TextStyle(color: Colors.grey),
|
||||
),
|
||||
Padding(
|
||||
padding: const EdgeInsets.all(16.0),
|
||||
child: Column(
|
||||
children: [
|
||||
const Center(
|
||||
child: Text(
|
||||
'Aucune maintenance enregistrée',
|
||||
style: TextStyle(color: Colors.grey),
|
||||
),
|
||||
),
|
||||
if (hasManagePermission && onAddMaintenance != null) ...[
|
||||
const SizedBox(height: 16),
|
||||
Center(
|
||||
child: ElevatedButton.icon(
|
||||
onPressed: onAddMaintenance,
|
||||
icon: const Icon(Icons.add),
|
||||
label: const Text('Planifier une maintenance'),
|
||||
style: ElevatedButton.styleFrom(
|
||||
backgroundColor: AppColors.bleuFonce,
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
],
|
||||
),
|
||||
)
|
||||
else
|
||||
|
||||
@@ -5,6 +5,7 @@ import 'package:em2rp/views/my_account_page.dart';
|
||||
import 'package:em2rp/views/user_management_page.dart';
|
||||
import 'package:em2rp/views/data_management_page.dart';
|
||||
import 'package:em2rp/views/equipment_management_page.dart';
|
||||
import 'package:em2rp/views/maintenance_management_page.dart';
|
||||
import 'package:em2rp/config/app_version.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:em2rp/views/widgets/image/profile_picture.dart';
|
||||
@@ -113,6 +114,24 @@ class MainDrawer extends StatelessWidget {
|
||||
},
|
||||
),
|
||||
),
|
||||
PermissionGate(
|
||||
requiredPermissions: const ['manage_maintenances'],
|
||||
child: ListTile(
|
||||
leading: const Icon(Icons.build_circle),
|
||||
title: const Text('Maintenances'),
|
||||
selected: currentPage == '/maintenance_management',
|
||||
selectedColor: AppColors.rouge,
|
||||
onTap: () {
|
||||
Navigator.pop(context);
|
||||
Navigator.pushReplacement(
|
||||
context,
|
||||
MaterialPageRoute(
|
||||
builder: (context) =>
|
||||
const MaintenanceManagementPage()),
|
||||
);
|
||||
},
|
||||
),
|
||||
),
|
||||
ExpansionTileTheme(
|
||||
data: const ExpansionTileThemeData(
|
||||
iconColor: AppColors.noir,
|
||||
|
||||
Reference in New Issue
Block a user