feat(alerts): add device alerts screen with pagination, filters, and WebSocket

This commit is contained in:
2026-04-17 04:00:25 +02:00
parent 27e26ca921
commit cbc40f7d95
27 changed files with 2665 additions and 2 deletions

View File

@@ -54,6 +54,7 @@ class AppRoutes {
static const controlPanel = '$legacyDashboard/control_panel';
static const customerService = '$controlPanel/customer_service';
static const deviceAlertsNotifications = '$controlPanel/device_alerts_notifications';
static const deviceManagement = '$legacyDashboard/device_management';
static const legacyLocation = '$legacyDashboard/location';

View File

@@ -760,6 +760,22 @@
"addAlarm": "Neuen Alarm hinzufügen",
"addNewSaveFamilyDevice": "Neues SaveFamily hinzufügen",
"alarm": "Alarme",
"alertsTitle": "Alarme",
"alertsEmpty": "Keine Alarme",
"alertsFilterAll": "Alle",
"alertsLoadError": "Fehler beim Laden der Alarme",
"alertTypeSos": "SOS",
"alertTypeFalldown": "Sturz erkannt",
"alertTypeLowBattery": "Niedriger Akkustand",
"alertTypeDisconnect": "Getrennt",
"alertTypeReconnected": "Verbunden",
"alertTypeBraceletRemoved": "Armband entfernt",
"alertTypeStandstill": "Inaktivität",
"alertTypeAbnormalHeartRate": "Abnormale Herzfrequenz",
"alertTypeGeofenceIn": "Zone betreten",
"alertTypeGeofenceOut": "Zone verlassen",
"alertTypeMovement": "Bewegung",
"alertGeofenceDetail": "Zone",
"alarmSettings": "Alarmeinstellungen",
"alarmsMessage": "*Bis zu 3 Alarme einstellen",
"appStore": "App Store",

View File

@@ -614,6 +614,22 @@
"deleteContactMessage": "Are you sure you want to delete this phone from the list?",
"deviceSettingsTitle": "Settings",
"alarm": "Alarms",
"alertsTitle": "Alerts",
"alertsEmpty": "No alerts",
"alertsFilterAll": "All",
"alertsLoadError": "Error loading alerts",
"alertTypeSos": "SOS",
"alertTypeFalldown": "Fall detected",
"alertTypeLowBattery": "Low battery",
"alertTypeDisconnect": "Disconnected",
"alertTypeReconnected": "Reconnected",
"alertTypeBraceletRemoved": "Bracelet removed",
"alertTypeStandstill": "Inactivity",
"alertTypeAbnormalHeartRate": "Abnormal heart rate",
"alertTypeGeofenceIn": "Entered zone",
"alertTypeGeofenceOut": "Left zone",
"alertTypeMovement": "Movement",
"alertGeofenceDetail": "Zone",
"appStore": "App Store",
"batteryNightSavingMode": "Night Battery Saver",
"blockPhone": "Number Blocking",

View File

@@ -615,6 +615,22 @@
"deleteContactMessage": "¿Estás seguro de que deseas eliminar este número de la lista?",
"deviceSettingsTitle": "Ajustes",
"alarm": "Alarmas",
"alertsTitle": "Alertas",
"alertsEmpty": "No hay alertas",
"alertsFilterAll": "Todas",
"alertsLoadError": "Error al cargar alertas",
"alertTypeSos": "SOS",
"alertTypeFalldown": "Caída detectada",
"alertTypeLowBattery": "Batería baja",
"alertTypeDisconnect": "Desconectado",
"alertTypeReconnected": "Reconectado",
"alertTypeBraceletRemoved": "Pulsera retirada",
"alertTypeStandstill": "Inactividad",
"alertTypeAbnormalHeartRate": "Ritmo cardíaco anormal",
"alertTypeGeofenceIn": "Entró en zona",
"alertTypeGeofenceOut": "Salió de zona",
"alertTypeMovement": "Movimiento",
"alertGeofenceDetail": "Zona",
"appStore": "App Store",
"batteryNightSavingMode": "Ahorro Nocturno de Batería",
"blockPhone": "Bloqueo de números",

View File

@@ -760,6 +760,22 @@
"addAlarm": "Ajouter une nouvelle alarme",
"addNewSaveFamilyDevice": "Ajouter un nouveau SaveFamily",
"alarm": "Alarmes",
"alertsTitle": "Alertes",
"alertsEmpty": "Aucune alerte",
"alertsFilterAll": "Toutes",
"alertsLoadError": "Erreur lors du chargement des alertes",
"alertTypeSos": "SOS",
"alertTypeFalldown": "Chute détectée",
"alertTypeLowBattery": "Batterie faible",
"alertTypeDisconnect": "Déconnecté",
"alertTypeReconnected": "Reconnecté",
"alertTypeBraceletRemoved": "Bracelet retiré",
"alertTypeStandstill": "Inactivité",
"alertTypeAbnormalHeartRate": "Rythme cardiaque anormal",
"alertTypeGeofenceIn": "Entré dans la zone",
"alertTypeGeofenceOut": "Sorti de la zone",
"alertTypeMovement": "Mouvement",
"alertGeofenceDetail": "Zone",
"alarmSettings": "Paramètres d'alarme",
"alarmsMessage": "*Configurer jusqu'à 3 alarmes",
"appStore": "App Store",

View File

@@ -760,6 +760,22 @@
"addAlarm": "Aggiungi nuova sveglia",
"addNewSaveFamilyDevice": "Aggiungi un nuovo SaveFamily",
"alarm": "Sveglie",
"alertsTitle": "Avvisi",
"alertsEmpty": "Nessun avviso",
"alertsFilterAll": "Tutti",
"alertsLoadError": "Errore nel caricamento degli avvisi",
"alertTypeSos": "SOS",
"alertTypeFalldown": "Caduta rilevata",
"alertTypeLowBattery": "Batteria scarica",
"alertTypeDisconnect": "Disconnesso",
"alertTypeReconnected": "Riconnesso",
"alertTypeBraceletRemoved": "Braccialetto rimosso",
"alertTypeStandstill": "Inattività",
"alertTypeAbnormalHeartRate": "Frequenza cardiaca anomala",
"alertTypeGeofenceIn": "Entrato nella zona",
"alertTypeGeofenceOut": "Uscito dalla zona",
"alertTypeMovement": "Movimento",
"alertGeofenceDetail": "Zona",
"alarmSettings": "Impostazioni sveglia",
"alarmsMessage": "*Imposta fino a 3 sveglie",
"appStore": "App Store",

View File

@@ -760,6 +760,22 @@
"addAlarm": "Adicionar novo alarme",
"addNewSaveFamilyDevice": "Adicionar um novo SaveFamily",
"alarm": "Alarmes",
"alertsTitle": "Alertas",
"alertsEmpty": "Sem alertas",
"alertsFilterAll": "Todos",
"alertsLoadError": "Erro ao carregar alertas",
"alertTypeSos": "SOS",
"alertTypeFalldown": "Queda detetada",
"alertTypeLowBattery": "Bateria fraca",
"alertTypeDisconnect": "Desconectado",
"alertTypeReconnected": "Reconectado",
"alertTypeBraceletRemoved": "Pulseira removida",
"alertTypeStandstill": "Inatividade",
"alertTypeAbnormalHeartRate": "Frequência cardíaca anormal",
"alertTypeGeofenceIn": "Entrou na zona",
"alertTypeGeofenceOut": "Saiu da zona",
"alertTypeMovement": "Movimento",
"alertGeofenceDetail": "Zona",
"alarmSettings": "Configurações de alarme",
"alarmsMessage": "*Configure até 3 alarmes",
"appStore": "App Store",

View File

@@ -36,6 +36,22 @@ class I18n {
static const String addSosContact = 'addSosContact';
static const String addWifiNetwork = 'addWifiNetwork';
static const String alarm = 'alarm';
static const String alertsTitle = 'alertsTitle';
static const String alertsEmpty = 'alertsEmpty';
static const String alertsFilterAll = 'alertsFilterAll';
static const String alertsLoadError = 'alertsLoadError';
static const String alertTypeSos = 'alertTypeSos';
static const String alertTypeFalldown = 'alertTypeFalldown';
static const String alertTypeLowBattery = 'alertTypeLowBattery';
static const String alertTypeDisconnect = 'alertTypeDisconnect';
static const String alertTypeReconnected = 'alertTypeReconnected';
static const String alertTypeBraceletRemoved = 'alertTypeBraceletRemoved';
static const String alertTypeStandstill = 'alertTypeStandstill';
static const String alertTypeAbnormalHeartRate = 'alertTypeAbnormalHeartRate';
static const String alertTypeGeofenceIn = 'alertTypeGeofenceIn';
static const String alertTypeGeofenceOut = 'alertTypeGeofenceOut';
static const String alertTypeMovement = 'alertTypeMovement';
static const String alertGeofenceDetail = 'alertGeofenceDetail';
static const String alarmCreated = 'alarmCreated';
static const String alarmDeleted = 'alarmDeleted';
static const String alarmError = 'alarmError';