Merge pull request #6 from stephb9959/bugfix/21-general-ui-fixes

Bugfix/21 general UI fixes
This commit is contained in:
Charles
2021-06-29 15:48:49 -04:00
committed by GitHub
26 changed files with 159 additions and 140 deletions

View File

@@ -7,7 +7,7 @@
"factory_reset": "Werkseinstellungen zurückgesetzt", "factory_reset": "Werkseinstellungen zurückgesetzt",
"firmware_upgrade": "Firmware-Aktualisierung", "firmware_upgrade": "Firmware-Aktualisierung",
"reboot": "Starten Sie neu", "reboot": "Starten Sie neu",
"title": "Geräteaktionen", "title": "Befehle",
"trace": "Spur", "trace": "Spur",
"wifi_scan": "WLAN-Scan" "wifi_scan": "WLAN-Scan"
}, },
@@ -20,7 +20,7 @@
"commands": { "commands": {
"error": "Fehler beim Senden des Befehls!", "error": "Fehler beim Senden des Befehls!",
"success": "Der Befehl wurde erfolgreich gesendet. Sie können das Ergebnis im Befehlsprotokoll anzeigen", "success": "Der Befehl wurde erfolgreich gesendet. Sie können das Ergebnis im Befehlsprotokoll anzeigen",
"title": "Gerätebefehle" "title": "Befehlsverlauf"
}, },
"common": { "common": {
"are_you_sure": "Bist du sicher?", "are_you_sure": "Bist du sicher?",
@@ -70,6 +70,8 @@
"refresh": "Aktualisierung", "refresh": "Aktualisierung",
"refresh_device": "Gerät aktualisieren", "refresh_device": "Gerät aktualisieren",
"result": "Ergebnis", "result": "Ergebnis",
"save": "Sparen",
"saving": "Speichern ...",
"schedule": "Zeitplan", "schedule": "Zeitplan",
"seconds_elapsed": "Sekunden verstrichen", "seconds_elapsed": "Sekunden verstrichen",
"serial_number": "Ordnungsnummer", "serial_number": "Ordnungsnummer",
@@ -85,14 +87,14 @@
}, },
"configuration": { "configuration": {
"created": "Erstellt", "created": "Erstellt",
"details": "Gerätedetails", "details": "Einzelheiten",
"device_password": "Passwort", "device_password": "Passwort",
"last_configuration_change": "Letzte Konfigurationsänderung", "last_configuration_change": "Letzte Konfigurationsänderung",
"last_configuration_download": "Letzter Konfigurations-Download", "last_configuration_download": "Letzter Konfigurations-Download",
"location": "Ort", "location": "Ort",
"notes": "Anmerkungen", "notes": "Anmerkungen",
"owner": "Inhaber", "owner": "Inhaber",
"title": "Gerätekonfiguration", "title": "Aufbau",
"type": "Gerätetyp", "type": "Gerätetyp",
"view_json": "Rohes JSON anzeigen" "view_json": "Rohes JSON anzeigen"
}, },
@@ -100,7 +102,7 @@
"choose_file": "Sie müssen eine gültige .json-Datei auswählen:", "choose_file": "Sie müssen eine gültige .json-Datei auswählen:",
"enter_new": "Geben Sie die JSON für die neue Gerätekonfiguration ein:", "enter_new": "Geben Sie die JSON für die neue Gerätekonfiguration ein:",
"placeholder": "JSON konfigurieren", "placeholder": "JSON konfigurieren",
"title": "Gerät konfigurieren", "title": "Konfigurieren",
"valid_json": "Sie müssen gültiges JSON eingeben" "valid_json": "Sie müssen gültiges JSON eingeben"
}, },
"delete_command": { "delete_command": {
@@ -120,7 +122,9 @@
}, },
"factory_reset": { "factory_reset": {
"redirector": "Weiterleitung beibehalten:", "redirector": "Weiterleitung beibehalten:",
"title": "Gerät auf Werkseinstellungen zurücksetzen", "reset": "Zurücksetzen",
"resetting": "Zurücksetzen...",
"title": "Werkseinstellungen zurückgesetzt",
"warning": "Achtung: Nach dem Absenden kann dies nicht rückgängig gemacht werden" "warning": "Achtung: Nach dem Absenden kann dies nicht rückgängig gemacht werden"
}, },
"footer": { "footer": {
@@ -130,7 +134,7 @@
}, },
"health": { "health": {
"sanity": "Gesundheit", "sanity": "Gesundheit",
"title": "Gerätezustand" "title": "Gesundheit"
}, },
"login": { "login": {
"login": "Anmeldung", "login": "Anmeldung",
@@ -144,7 +148,7 @@
}, },
"reboot": { "reboot": {
"directions": "Wann möchten Sie dieses Gerät neu starten?", "directions": "Wann möchten Sie dieses Gerät neu starten?",
"title": "Gerät neustarten" "title": "Starten Sie neu"
}, },
"scan": { "scan": {
"active": "Aktiven Scan aktivieren", "active": "Aktiven Scan aktivieren",
@@ -168,7 +172,8 @@
"directions": "Starten Sie eine Fernverfolgung dieses Geräts für eine bestimmte Dauer oder eine Anzahl von Paketen", "directions": "Starten Sie eine Fernverfolgung dieses Geräts für eine bestimmte Dauer oder eine Anzahl von Paketen",
"download_trace": "Klicke hier zum herunterladen", "download_trace": "Klicke hier zum herunterladen",
"packets": "Pakete", "packets": "Pakete",
"title": "Trace-Gerät", "title": "Spur",
"trace": "Spur",
"wait_for_file": "Möchten Sie warten, bis die Trace-Datei fertig ist?", "wait_for_file": "Möchten Sie warten, bis die Trace-Datei fertig ist?",
"waiting_directions": "Bitte warten Sie auf die Trace-Datendatei. Dies könnte eine Weile dauern. Sie können das Warten beenden und die Ablaufverfolgungsdatei später aus der Befehlstabelle abrufen.", "waiting_directions": "Bitte warten Sie auf die Trace-Datendatei. Dies könnte eine Weile dauern. Sie können das Warten beenden und die Ablaufverfolgungsdatei später aus der Befehlstabelle abrufen.",
"waiting_seconds": "Verstrichene Zeit: {{seconds}} Sekunden" "waiting_seconds": "Verstrichene Zeit: {{seconds}} Sekunden"
@@ -185,6 +190,7 @@
"offline_device": "Diese Option ist gesperrt, da dieses Gerät nicht verbunden ist", "offline_device": "Diese Option ist gesperrt, da dieses Gerät nicht verbunden ist",
"time": "Zeitpunkt der Aktualisierung:", "time": "Zeitpunkt der Aktualisierung:",
"title": "Firmware-Aktualisierung", "title": "Firmware-Aktualisierung",
"upgrade": "Aktualisierung",
"wait_for_upgrade": "Möchten Sie warten, bis das Upgrade abgeschlossen ist?", "wait_for_upgrade": "Möchten Sie warten, bis das Upgrade abgeschlossen ist?",
"waiting_for_device": "Warten, bis das Gerät wieder verbunden ist" "waiting_for_device": "Warten, bis das Gerät wieder verbunden ist"
} }

View File

@@ -7,7 +7,7 @@
"factory_reset": "Factory Reset", "factory_reset": "Factory Reset",
"firmware_upgrade": "Firmware Upgrade", "firmware_upgrade": "Firmware Upgrade",
"reboot": "Reboot", "reboot": "Reboot",
"title": "Device Actions", "title": "Commands",
"trace": "Trace", "trace": "Trace",
"wifi_scan": "Wifi Scan" "wifi_scan": "Wifi Scan"
}, },
@@ -20,7 +20,7 @@
"commands": { "commands": {
"error": "Error while submitting command!", "error": "Error while submitting command!",
"success": "Command submitted successfully, you can look at the Commands log for the result", "success": "Command submitted successfully, you can look at the Commands log for the result",
"title": "Device Commands" "title": "Command History"
}, },
"common": { "common": {
"are_you_sure": "Are you sure?", "are_you_sure": "Are you sure?",
@@ -70,6 +70,8 @@
"refresh": "Refresh", "refresh": "Refresh",
"refresh_device": "Refresh Device", "refresh_device": "Refresh Device",
"result": "Result", "result": "Result",
"save": "Save",
"saving": "Saving... ",
"schedule": "Schedule", "schedule": "Schedule",
"seconds_elapsed": "Seconds elapsed", "seconds_elapsed": "Seconds elapsed",
"serial_number": "Serial Number", "serial_number": "Serial Number",
@@ -85,14 +87,14 @@
}, },
"configuration": { "configuration": {
"created": "Created", "created": "Created",
"details": "Device Details", "details": "Details",
"device_password": "Password", "device_password": "Password",
"last_configuration_change": "Last Configuration Change", "last_configuration_change": "Last Configuration Change",
"last_configuration_download": "Last Configuration Download", "last_configuration_download": "Last Configuration Download",
"location": "Location", "location": "Location",
"notes": "Notes", "notes": "Notes",
"owner": "Owner", "owner": "Owner",
"title": "Device Configuration", "title": "Configuration",
"type": "Device Type", "type": "Device Type",
"view_json": "View raw JSON" "view_json": "View raw JSON"
}, },
@@ -100,7 +102,7 @@
"choose_file": "You need to choose a valid .json file: ", "choose_file": "You need to choose a valid .json file: ",
"enter_new": "Enter new device configuration JSON: ", "enter_new": "Enter new device configuration JSON: ",
"placeholder": "Config JSON", "placeholder": "Config JSON",
"title": "Configure Device", "title": "Configure",
"valid_json": "You need to enter valid JSON" "valid_json": "You need to enter valid JSON"
}, },
"delete_command": { "delete_command": {
@@ -116,11 +118,13 @@
"device_logs": { "device_logs": {
"log": "Log", "log": "Log",
"severity": "Severity", "severity": "Severity",
"title": "Device Logs" "title": "Logs"
}, },
"factory_reset": { "factory_reset": {
"redirector": "Keep redirector: ", "redirector": "Keep redirector: ",
"title": "Factory Reset Device", "reset": "Reset",
"resetting": "Resetting... ",
"title": "Factory Reset",
"warning": "Warning: Once you submit this cannot be reverted" "warning": "Warning: Once you submit this cannot be reverted"
}, },
"footer": { "footer": {
@@ -130,7 +134,7 @@
}, },
"health": { "health": {
"sanity": "Sanity", "sanity": "Sanity",
"title": "Device Health" "title": "Health"
}, },
"login": { "login": {
"login": "Login", "login": "Login",
@@ -144,7 +148,7 @@
}, },
"reboot": { "reboot": {
"directions": "When would you like to reboot this device?", "directions": "When would you like to reboot this device?",
"title": "Reboot Device" "title": "Reboot"
}, },
"scan": { "scan": {
"active": "Enable active scan", "active": "Enable active scan",
@@ -168,7 +172,8 @@
"directions": "Launch a remote trace of this device for either a specific duration or a number of packets", "directions": "Launch a remote trace of this device for either a specific duration or a number of packets",
"download_trace": "Click here to download", "download_trace": "Click here to download",
"packets": "Packets", "packets": "Packets",
"title": "Trace Device", "title": "Trace",
"trace": "Trace",
"wait_for_file": "Would you like to wait until the trace file is ready?", "wait_for_file": "Would you like to wait until the trace file is ready?",
"waiting_directions": "Please wait for the trace data file. This may take some time. You can exit the wait and retrieve the trace file from the commands table later.", "waiting_directions": "Please wait for the trace data file. This may take some time. You can exit the wait and retrieve the trace file from the commands table later.",
"waiting_seconds": "Time Elapsed: {{seconds}} seconds" "waiting_seconds": "Time Elapsed: {{seconds}} seconds"
@@ -185,6 +190,7 @@
"offline_device": "This option is blocked because this device is not connected", "offline_device": "This option is blocked because this device is not connected",
"time": "Time of upgrade:", "time": "Time of upgrade:",
"title": "Firmware Upgrade", "title": "Firmware Upgrade",
"upgrade": "Upgrade",
"wait_for_upgrade": "Would you like to wait for the upgrade to finish?", "wait_for_upgrade": "Would you like to wait for the upgrade to finish?",
"waiting_for_device": "Waiting for device to reconnect" "waiting_for_device": "Waiting for device to reconnect"
} }

View File

@@ -7,7 +7,7 @@
"factory_reset": "Restablecimiento De Fábrica", "factory_reset": "Restablecimiento De Fábrica",
"firmware_upgrade": "Actualización de firmware", "firmware_upgrade": "Actualización de firmware",
"reboot": "Reiniciar", "reboot": "Reiniciar",
"title": "Acciones del dispositivo", "title": "Comandos",
"trace": "Rastro", "trace": "Rastro",
"wifi_scan": "Escaneo Wifi" "wifi_scan": "Escaneo Wifi"
}, },
@@ -20,7 +20,7 @@
"commands": { "commands": {
"error": "¡Error al enviar el comando!", "error": "¡Error al enviar el comando!",
"success": "Comando enviado con éxito, puede consultar el registro de Comandos para ver el resultado", "success": "Comando enviado con éxito, puede consultar el registro de Comandos para ver el resultado",
"title": "Comandos del dispositivo" "title": "Historial de Comandos"
}, },
"common": { "common": {
"are_you_sure": "¿Estás seguro?", "are_you_sure": "¿Estás seguro?",
@@ -70,6 +70,8 @@
"refresh": "Refrescar", "refresh": "Refrescar",
"refresh_device": "Actualizar dispositivo", "refresh_device": "Actualizar dispositivo",
"result": "Resultado", "result": "Resultado",
"save": "Salvar",
"saving": "Ahorro...",
"schedule": "Programar", "schedule": "Programar",
"seconds_elapsed": "Segundos transcurridos", "seconds_elapsed": "Segundos transcurridos",
"serial_number": "Número de serie", "serial_number": "Número de serie",
@@ -85,14 +87,14 @@
}, },
"configuration": { "configuration": {
"created": "creado", "created": "creado",
"details": "Detalles del dispositivo", "details": "Detalles",
"device_password": "Contraseña", "device_password": "Contraseña",
"last_configuration_change": "Último cambio de configuración", "last_configuration_change": "Último cambio de configuración",
"last_configuration_download": "Descarga de la última configuración", "last_configuration_download": "Descarga de la última configuración",
"location": "Ubicación", "location": "Ubicación",
"notes": "Notas", "notes": "Notas",
"owner": "Propietario", "owner": "Propietario",
"title": "Configuración del dispositivo", "title": "Configuración",
"type": "Tipo de dispositivo", "type": "Tipo de dispositivo",
"view_json": "Ver JSON sin procesar" "view_json": "Ver JSON sin procesar"
}, },
@@ -100,7 +102,7 @@
"choose_file": "Debe elegir un archivo .json válido:", "choose_file": "Debe elegir un archivo .json válido:",
"enter_new": "Ingrese la nueva configuración del dispositivo JSON:", "enter_new": "Ingrese la nueva configuración del dispositivo JSON:",
"placeholder": "Configurar JSON", "placeholder": "Configurar JSON",
"title": "Configurar dispositivo", "title": "Configurar",
"valid_json": "Debes ingresar un JSON válido" "valid_json": "Debes ingresar un JSON válido"
}, },
"delete_command": { "delete_command": {
@@ -116,11 +118,13 @@
"device_logs": { "device_logs": {
"log": "Iniciar sesión", "log": "Iniciar sesión",
"severity": "Gravedad", "severity": "Gravedad",
"title": "Registros de dispositivos" "title": "Registros"
}, },
"factory_reset": { "factory_reset": {
"redirector": "Mantener el redirector:", "redirector": "Mantener el redirector:",
"title": "Dispositivo de restablecimiento de fábrica", "reset": "Reiniciar",
"resetting": "Restableciendo…",
"title": "Restablecimiento De Fábrica",
"warning": "Advertencia: una vez que envíe, esto no se podrá revertir" "warning": "Advertencia: una vez que envíe, esto no se podrá revertir"
}, },
"footer": { "footer": {
@@ -130,7 +134,7 @@
}, },
"health": { "health": {
"sanity": "Cordura", "sanity": "Cordura",
"title": "Salud del dispositivo" "title": "Salud"
}, },
"login": { "login": {
"login": "Iniciar sesión", "login": "Iniciar sesión",
@@ -144,7 +148,7 @@
}, },
"reboot": { "reboot": {
"directions": "¿Cuándo le gustaría reiniciar este dispositivo?", "directions": "¿Cuándo le gustaría reiniciar este dispositivo?",
"title": "Reiniciar dispositivo" "title": "Reiniciar"
}, },
"scan": { "scan": {
"active": "Habilitar escaneo activo", "active": "Habilitar escaneo activo",
@@ -168,7 +172,8 @@
"directions": "Lanzar un rastreo remoto de este dispositivo por una duración específica o por una cantidad de paquetes", "directions": "Lanzar un rastreo remoto de este dispositivo por una duración específica o por una cantidad de paquetes",
"download_trace": "Haga click aquí para descargar", "download_trace": "Haga click aquí para descargar",
"packets": "Paquetes", "packets": "Paquetes",
"title": "Dispositivo de seguimiento", "title": "Rastro",
"trace": "Rastro",
"wait_for_file": "¿Le gustaría esperar hasta que el archivo de seguimiento esté listo?", "wait_for_file": "¿Le gustaría esperar hasta que el archivo de seguimiento esté listo?",
"waiting_directions": "Espere el archivo de datos de seguimiento. Esto puede tomar algo de tiempo. Puede salir de la espera y recuperar el archivo de seguimiento de la tabla de comandos más tarde.", "waiting_directions": "Espere el archivo de datos de seguimiento. Esto puede tomar algo de tiempo. Puede salir de la espera y recuperar el archivo de seguimiento de la tabla de comandos más tarde.",
"waiting_seconds": "Tiempo transcurrido: {{seconds}} segundos" "waiting_seconds": "Tiempo transcurrido: {{seconds}} segundos"
@@ -185,6 +190,7 @@
"offline_device": "Esta opción está bloqueada porque este dispositivo no está conectado", "offline_device": "Esta opción está bloqueada porque este dispositivo no está conectado",
"time": "Hora de actualización:", "time": "Hora de actualización:",
"title": "Actualización de firmware", "title": "Actualización de firmware",
"upgrade": "Mejorar",
"wait_for_upgrade": "¿Le gustaría esperar a que finalice la actualización?", "wait_for_upgrade": "¿Le gustaría esperar a que finalice la actualización?",
"waiting_for_device": "Esperando que el dispositivo se vuelva a conectar" "waiting_for_device": "Esperando que el dispositivo se vuelva a conectar"
} }

View File

@@ -7,7 +7,7 @@
"factory_reset": "Retour aux paramètres d'usine", "factory_reset": "Retour aux paramètres d'usine",
"firmware_upgrade": "Mise à jour du firmware", "firmware_upgrade": "Mise à jour du firmware",
"reboot": "Redémarrer", "reboot": "Redémarrer",
"title": "Actions de l'appareil", "title": "Les commandes",
"trace": "Trace", "trace": "Trace",
"wifi_scan": "Balayage Wi-Fi" "wifi_scan": "Balayage Wi-Fi"
}, },
@@ -20,7 +20,7 @@
"commands": { "commands": {
"error": "Erreur lors de la soumission de la commande !", "error": "Erreur lors de la soumission de la commande !",
"success": "Commande soumise avec succès, vous pouvez consulter le journal des commandes pour le résultat", "success": "Commande soumise avec succès, vous pouvez consulter le journal des commandes pour le résultat",
"title": "Commandes de l'appareil" "title": "Historique des commandes"
}, },
"common": { "common": {
"are_you_sure": "Êtes-vous sûr?", "are_you_sure": "Êtes-vous sûr?",
@@ -70,6 +70,8 @@
"refresh": "Rafraîchir", "refresh": "Rafraîchir",
"refresh_device": "Actualiser l'appareil", "refresh_device": "Actualiser l'appareil",
"result": "Résultat", "result": "Résultat",
"save": "Sauvegarder",
"saving": "Économie...",
"schedule": "Programme", "schedule": "Programme",
"seconds_elapsed": "Secondes écoulées", "seconds_elapsed": "Secondes écoulées",
"serial_number": "Numéro de série", "serial_number": "Numéro de série",
@@ -85,14 +87,14 @@
}, },
"configuration": { "configuration": {
"created": "Créé", "created": "Créé",
"details": "Détails de l'appareil", "details": "Détails",
"device_password": "Mot de passe", "device_password": "Mot de passe",
"last_configuration_change": "Dernière modification de configuration", "last_configuration_change": "Dernière modification de configuration",
"last_configuration_download": "Téléchargement de la dernière configuration", "last_configuration_download": "Téléchargement de la dernière configuration",
"location": "Emplacement", "location": "Emplacement",
"notes": "Remarques", "notes": "Remarques",
"owner": "Propriétaire", "owner": "Propriétaire",
"title": "Configuration de l'appareil", "title": "Configuration",
"type": "Type d'appareil", "type": "Type d'appareil",
"view_json": "Afficher le JSON brut" "view_json": "Afficher le JSON brut"
}, },
@@ -100,7 +102,7 @@
"choose_file": "Vous devez choisir un fichier .json valide :", "choose_file": "Vous devez choisir un fichier .json valide :",
"enter_new": "Entrez la nouvelle configuration de l'appareil JSON :", "enter_new": "Entrez la nouvelle configuration de l'appareil JSON :",
"placeholder": "Configurer JSON", "placeholder": "Configurer JSON",
"title": "Configurer l'appareil", "title": "Configurer",
"valid_json": "Vous devez entrer un JSON valide" "valid_json": "Vous devez entrer un JSON valide"
}, },
"delete_command": { "delete_command": {
@@ -116,11 +118,13 @@
"device_logs": { "device_logs": {
"log": "Bûche", "log": "Bûche",
"severity": "Gravité", "severity": "Gravité",
"title": "Journaux de l'appareil" "title": "Journaux"
}, },
"factory_reset": { "factory_reset": {
"redirector": "Conserver le redirecteur :", "redirector": "Conserver le redirecteur :",
"title": "Dispositif de réinitialisation d'usine", "reset": "Réinitialiser",
"resetting": "Réinitialisation…",
"title": "Retour aux paramètres d'usine",
"warning": "Avertissement : Une fois que vous avez soumis, cela ne peut pas être annulé" "warning": "Avertissement : Une fois que vous avez soumis, cela ne peut pas être annulé"
}, },
"footer": { "footer": {
@@ -130,7 +134,7 @@
}, },
"health": { "health": {
"sanity": "Santé mentale", "sanity": "Santé mentale",
"title": "Santé de l'appareil" "title": "Santé"
}, },
"login": { "login": {
"login": "S'identifier", "login": "S'identifier",
@@ -144,7 +148,7 @@
}, },
"reboot": { "reboot": {
"directions": "Quand souhaitez-vous redémarrer cet appareil ?", "directions": "Quand souhaitez-vous redémarrer cet appareil ?",
"title": "Redémarrez l'appareil" "title": "Redémarrer"
}, },
"scan": { "scan": {
"active": "Activer l'analyse active", "active": "Activer l'analyse active",
@@ -168,7 +172,8 @@
"directions": "Lancer une trace à distance de cet appareil pour une durée spécifique ou un nombre de paquets", "directions": "Lancer une trace à distance de cet appareil pour une durée spécifique ou un nombre de paquets",
"download_trace": "Cliquez ici pour télécharger", "download_trace": "Cliquez ici pour télécharger",
"packets": "Paquets", "packets": "Paquets",
"title": "Dispositif de traçage", "title": "Trace",
"trace": "Trace",
"wait_for_file": "Souhaitez-vous attendre que le fichier de trace soit prêt ?", "wait_for_file": "Souhaitez-vous attendre que le fichier de trace soit prêt ?",
"waiting_directions": "Veuillez attendre le fichier de données de trace. Cela peut prendre un certain temps. Vous pouvez quitter l'attente et récupérer le fichier de trace de la table des commandes plus tard.", "waiting_directions": "Veuillez attendre le fichier de données de trace. Cela peut prendre un certain temps. Vous pouvez quitter l'attente et récupérer le fichier de trace de la table des commandes plus tard.",
"waiting_seconds": "Temps écoulé : {{seconds}} secondes" "waiting_seconds": "Temps écoulé : {{seconds}} secondes"
@@ -185,6 +190,7 @@
"offline_device": "Cette option est bloquée car cet appareil n'est pas connecté", "offline_device": "Cette option est bloquée car cet appareil n'est pas connecté",
"time": "Heure de la mise à niveau :", "time": "Heure de la mise à niveau :",
"title": "Mise à jour du firmware", "title": "Mise à jour du firmware",
"upgrade": "Améliorer",
"wait_for_upgrade": "Souhaitez-vous attendre la fin de la mise à niveau ?", "wait_for_upgrade": "Souhaitez-vous attendre la fin de la mise à niveau ?",
"waiting_for_device": "En attente de la reconnexion de l'appareil" "waiting_for_device": "En attente de la reconnexion de l'appareil"
} }

View File

@@ -7,7 +7,7 @@
"factory_reset": "Restauração de fábrica", "factory_reset": "Restauração de fábrica",
"firmware_upgrade": "Atualização de firmware", "firmware_upgrade": "Atualização de firmware",
"reboot": "Reiniciar", "reboot": "Reiniciar",
"title": "Ações do dispositivo", "title": "Comandos",
"trace": "Vestígio", "trace": "Vestígio",
"wifi_scan": "Wifi Scan" "wifi_scan": "Wifi Scan"
}, },
@@ -20,7 +20,7 @@
"commands": { "commands": {
"error": "Erro ao enviar comando!", "error": "Erro ao enviar comando!",
"success": "Comando enviado com sucesso, você pode consultar o log de Comandos para ver o resultado", "success": "Comando enviado com sucesso, você pode consultar o log de Comandos para ver o resultado",
"title": "Comandos de dispositivo" "title": "Histórico de Comandos"
}, },
"common": { "common": {
"are_you_sure": "Você tem certeza?", "are_you_sure": "Você tem certeza?",
@@ -70,6 +70,8 @@
"refresh": "REFRESH", "refresh": "REFRESH",
"refresh_device": "Atualizar dispositivo", "refresh_device": "Atualizar dispositivo",
"result": "Resultado", "result": "Resultado",
"save": "Salve",
"saving": "Salvando ...",
"schedule": "Cronograma", "schedule": "Cronograma",
"seconds_elapsed": "Segundos decorridos", "seconds_elapsed": "Segundos decorridos",
"serial_number": "Número de série", "serial_number": "Número de série",
@@ -85,14 +87,14 @@
}, },
"configuration": { "configuration": {
"created": "Criado", "created": "Criado",
"details": "Detalhes do dispositivo", "details": "Detalhes",
"device_password": "Senha", "device_password": "Senha",
"last_configuration_change": "Última Mudança de Configuração", "last_configuration_change": "Última Mudança de Configuração",
"last_configuration_download": "Último download da configuração", "last_configuration_download": "Último download da configuração",
"location": "Localização", "location": "Localização",
"notes": "notas", "notes": "notas",
"owner": "Proprietário", "owner": "Proprietário",
"title": "Configuração do dispositivo", "title": "Configuração",
"type": "Tipo de dispositivo", "type": "Tipo de dispositivo",
"view_json": "Exibir JSON bruto" "view_json": "Exibir JSON bruto"
}, },
@@ -100,7 +102,7 @@
"choose_file": "Você precisa escolher um arquivo .json válido:", "choose_file": "Você precisa escolher um arquivo .json válido:",
"enter_new": "Insira a nova configuração do dispositivo JSON:", "enter_new": "Insira a nova configuração do dispositivo JSON:",
"placeholder": "Config JSON", "placeholder": "Config JSON",
"title": "Configurar dispositivo", "title": "Configurar",
"valid_json": "Você precisa inserir um JSON válido" "valid_json": "Você precisa inserir um JSON válido"
}, },
"delete_command": { "delete_command": {
@@ -116,11 +118,13 @@
"device_logs": { "device_logs": {
"log": "Registro", "log": "Registro",
"severity": "Gravidade", "severity": "Gravidade",
"title": "Registros de dispositivos" "title": "Toras"
}, },
"factory_reset": { "factory_reset": {
"redirector": "Manter redirecionador:", "redirector": "Manter redirecionador:",
"title": "Dispositivo de redefinição de fábrica", "reset": "Restabelecer",
"resetting": "Reiniciando ...",
"title": "Restauração de fábrica",
"warning": "Aviso: depois de enviar, isso não pode ser revertido" "warning": "Aviso: depois de enviar, isso não pode ser revertido"
}, },
"footer": { "footer": {
@@ -130,7 +134,7 @@
}, },
"health": { "health": {
"sanity": "Sanidade", "sanity": "Sanidade",
"title": "Saúde do Dispositivo" "title": "Saúde"
}, },
"login": { "login": {
"login": "Entrar", "login": "Entrar",
@@ -144,7 +148,7 @@
}, },
"reboot": { "reboot": {
"directions": "Quando você gostaria de reinicializar este dispositivo?", "directions": "Quando você gostaria de reinicializar este dispositivo?",
"title": "Reiniciar dispositivo" "title": "Reiniciar"
}, },
"scan": { "scan": {
"active": "Habilitar varredura ativa", "active": "Habilitar varredura ativa",
@@ -168,7 +172,8 @@
"directions": "Lançar um rastreamento remoto deste dispositivo para uma duração específica ou um número de pacotes", "directions": "Lançar um rastreamento remoto deste dispositivo para uma duração específica ou um número de pacotes",
"download_trace": "Clique aqui para baixar", "download_trace": "Clique aqui para baixar",
"packets": "Pacotes", "packets": "Pacotes",
"title": "Dispositivo de rastreamento", "title": "Vestígio",
"trace": "Vestígio",
"wait_for_file": "Você gostaria de esperar até que o arquivo de rastreamento esteja pronto?", "wait_for_file": "Você gostaria de esperar até que o arquivo de rastreamento esteja pronto?",
"waiting_directions": "Aguarde o arquivo de dados de rastreamento. Isto pode tomar algum tempo. Você pode sair da espera e recuperar o arquivo de rastreamento da tabela de comandos mais tarde.", "waiting_directions": "Aguarde o arquivo de dados de rastreamento. Isto pode tomar algum tempo. Você pode sair da espera e recuperar o arquivo de rastreamento da tabela de comandos mais tarde.",
"waiting_seconds": "Tempo decorrido: {{seconds}} segundos" "waiting_seconds": "Tempo decorrido: {{seconds}} segundos"
@@ -185,6 +190,7 @@
"offline_device": "Esta opção está bloqueada porque este dispositivo não está conectado", "offline_device": "Esta opção está bloqueada porque este dispositivo não está conectado",
"time": "Tempo de atualização:", "time": "Tempo de atualização:",
"title": "Atualização de firmware", "title": "Atualização de firmware",
"upgrade": "Melhorar",
"wait_for_upgrade": "Você gostaria de esperar a conclusão da atualização?", "wait_for_upgrade": "Você gostaria de esperar a conclusão da atualização?",
"waiting_for_device": "Esperando que o dispositivo se reconecte" "waiting_for_device": "Esperando que o dispositivo se reconecte"
} }

View File

@@ -173,11 +173,10 @@ const BlinkModal = ({ show, toggleModal }) => {
</CModalBody> </CModalBody>
<CModalFooter> <CModalFooter>
<LoadingButton <LoadingButton
label={t('common.schedule')} label={isNow ? t('blink.blink') : t('common.schedule')}
isLoadingLabel={t('common.loading_ellipsis')} isLoadingLabel={t('common.loading_ellipsis')}
isLoading={waiting} isLoading={waiting}
action={doAction} action={doAction}
variant="outline"
block={false} block={false}
disabled={waiting} disabled={waiting}
/> />

View File

@@ -449,7 +449,6 @@ const DeviceCommands = ({ selectedDeviceId }) => {
date={chosenWifiScanDate} date={chosenWifiScanDate}
/> />
<ConfirmModal show={showConfirmModal} toggle={toggleConfirmModal} action={deleteCommand} /> <ConfirmModal show={showConfirmModal} toggle={toggleConfirmModal} action={deleteCommand} />
<CIcon name="cilNotes" className={styles.whiteIcon} size="lg" />
</CWidgetDropdown> </CWidgetDropdown>
); );
}; };

View File

@@ -191,7 +191,7 @@ const ConfigureModal = ({ show, toggleModal }) => {
color="primary" color="primary"
onClick={confirmingIfSure} onClick={confirmingIfSure}
> >
{t('common.submit')} {t('common.save')}
</CButton> </CButton>
<CButton <CButton
hidden={!checkingIfSure} hidden={!checkingIfSure}
@@ -199,7 +199,7 @@ const ConfigureModal = ({ show, toggleModal }) => {
color="primary" color="primary"
onClick={() => doAction(false)} onClick={() => doAction(false)}
> >
{waiting && !doingNow ? 'Loading...' : 'Yes'} {' '} {waiting && !doingNow ? t('common.saving') : t('common.yes')} {' '}
<CSpinner color="light" hidden={!waiting || doingNow} component="span" size="sm" /> <CSpinner color="light" hidden={!waiting || doingNow} component="span" size="sm" />
</CButton> </CButton>
<CButton color="secondary" onClick={toggleModal}> <CButton color="secondary" onClick={toggleModal}>

View File

@@ -0,0 +1,36 @@
import React, { useState } from 'react';
import { useTranslation } from 'react-i18next';
import CIcon from '@coreui/icons-react';
import { cilClone } from '@coreui/icons';
import PropTypes from 'prop-types';
import { CButton, CPopover } from '@coreui/react';
const CopyToClipboardButton = ({content, size}) => {
const { t } = useTranslation();
const [result, setResult] = useState('');
const copyToClipboard = () => {
navigator.clipboard.writeText(content);
setResult(t('common.copied'));
}
return (
<CPopover content={t('common.copy_to_clipboard')}>
<CButton onClick={copyToClipboard} size={size}>
<CIcon content={cilClone} />
{' '}{result || ''}
</CButton>
</CPopover>
);
}
CopyToClipboardButton.propTypes = {
content: PropTypes.string.isRequired,
size: PropTypes.string
};
CopyToClipboardButton.defaultProps = {
size: 'sm',
};
export default CopyToClipboardButton;

View File

@@ -12,6 +12,7 @@ import TraceModal from 'components/TraceModal';
import WifiScanModal from 'components/WifiScanModal'; import WifiScanModal from 'components/WifiScanModal';
import BlinkModal from 'components/BlinkModal'; import BlinkModal from 'components/BlinkModal';
import FactoryResetModal from 'components/FactoryResetModal'; import FactoryResetModal from 'components/FactoryResetModal';
import styles from './index.module.scss'; import styles from './index.module.scss';
const DeviceActions = ({ selectedDeviceId }) => { const DeviceActions = ({ selectedDeviceId }) => {

View File

@@ -0,0 +1,3 @@
.spacedRow {
margin-top: 10px;
}

View File

@@ -17,10 +17,11 @@ import {
} from '@coreui/react'; } from '@coreui/react';
import CIcon from '@coreui/icons-react'; import CIcon from '@coreui/icons-react';
import PropTypes from 'prop-types'; import PropTypes from 'prop-types';
import { cilWindowMaximize, cilClone } from '@coreui/icons'; import { cilWindowMaximize } from '@coreui/icons';
import { prettyDate } from 'utils/helper'; import { prettyDate } from 'utils/helper';
import axiosInstance from 'utils/axiosInstance'; import axiosInstance from 'utils/axiosInstance';
import { getToken } from 'utils/authHelper'; import { getToken } from 'utils/authHelper';
import CopyToClipboardButton from 'components/CopyToClipboardButton';
import DeviceConfigurationModal from './DeviceConfigurationModal'; import DeviceConfigurationModal from './DeviceConfigurationModal';
import styles from './index.module.scss'; import styles from './index.module.scss';
@@ -29,7 +30,6 @@ const DeviceConfiguration = ({ selectedDeviceId }) => {
const [collapse, setCollapse] = useState(false); const [collapse, setCollapse] = useState(false);
const [showModal, setShowModal] = useState(false); const [showModal, setShowModal] = useState(false);
const [device, setDevice] = useState(null); const [device, setDevice] = useState(null);
const [copyPasswordSuccess, setCopyPasswordSuccess] = useState('');
const toggle = (e) => { const toggle = (e) => {
setCollapse(!collapse); setCollapse(!collapse);
@@ -40,12 +40,6 @@ const DeviceConfiguration = ({ selectedDeviceId }) => {
setShowModal(!showModal); setShowModal(!showModal);
}; };
const copyPasswordToClipboard = () => {
const password = device.devicePassword === '' ? 'openwifi' : device.devicePassword;
navigator.clipboard.writeText(password);
setCopyPasswordSuccess(t('common.copied'));
};
const getDevice = () => { const getDevice = () => {
const options = { const options = {
headers: { headers: {
@@ -64,7 +58,6 @@ const DeviceConfiguration = ({ selectedDeviceId }) => {
useEffect(() => { useEffect(() => {
if (selectedDeviceId) getDevice(); if (selectedDeviceId) getDevice();
setCopyPasswordSuccess(null);
}, [selectedDeviceId]); }, [selectedDeviceId]);
if (device) { if (device) {
@@ -73,7 +66,7 @@ const DeviceConfiguration = ({ selectedDeviceId }) => {
<CCard> <CCard>
<CCardHeader> <CCardHeader>
<CRow> <CRow>
<CCol><div className="text-value-lg">{t('configuration.details')}</div></CCol> <CCol><div className="text-value-lg">{t('configuration.title')}</div></CCol>
<CCol> <CCol>
<div className={styles.alignRight}> <div className={styles.alignRight}>
<CPopover content={t('configuration.view_json')}> <CPopover content={t('configuration.view_json')}>
@@ -106,6 +99,7 @@ const DeviceConfiguration = ({ selectedDeviceId }) => {
</CCol> </CCol>
<CCol xs="12" md="9"> <CCol xs="12" md="9">
{device.serialNumber} {device.serialNumber}
<CopyToClipboardButton size="sm" content={device.serialNumber}/>
</CCol> </CCol>
</CFormGroup> </CFormGroup>
<CFormGroup row> <CFormGroup row>
@@ -149,17 +143,12 @@ const DeviceConfiguration = ({ selectedDeviceId }) => {
</CCol> </CCol>
</CFormGroup> </CFormGroup>
<CFormGroup row> <CFormGroup row>
<CCol md="3"> <CCol md="3" className={styles.topPadding}>
<CLabel>{t('configuration.device_password')} : </CLabel> <CLabel>{t('configuration.device_password')} : </CLabel>
</CCol> </CCol>
<CCol xs="12" md="9"> <CCol xs="12" md="9">
{device.devicePassword === '' ? 'openwifi' : device.devicePassword} {device.devicePassword === '' ? 'openwifi' : device.devicePassword}
<CPopover content={t('common.copy_to_clipboard')}> <CopyToClipboardButton size="sm" content={device?.devicePassword === '' ? 'openwifi' : device.devicePassword}/>
<CButton onClick={copyPasswordToClipboard} size="sm">
<CIcon content={cilClone} />
</CButton>
</CPopover>
{copyPasswordSuccess}
</CCol> </CCol>
</CFormGroup> </CFormGroup>
<CCollapse show={collapse}> <CCollapse show={collapse}>

View File

@@ -9,3 +9,7 @@
.modalTitle { .modalTitle {
color: black; color: black;
} }
.topPadding {
padding-top: 5px;
}

View File

@@ -256,9 +256,7 @@ const DeviceLogs = ({ selectedDeviceId }) => {
</CButton> </CButton>
</div> </div>
} }
> />
<CIcon name="cilList" className={styles.whiteIcon} size="lg" />
</CWidgetDropdown>
<DeleteLogModal <DeleteLogModal
serialNumber={selectedDeviceId} serialNumber={selectedDeviceId}
object="logs" object="logs"

View File

@@ -116,7 +116,7 @@ const ConfigureModal = ({ show, toggleModal }) => {
color="primary" color="primary"
onClick={() => confirmingIfSure()} onClick={() => confirmingIfSure()}
> >
{t('common.submit')} {t('factory_reset.reset')}
</CButton> </CButton>
<CButton <CButton
hidden={!checkingIfSure} hidden={!checkingIfSure}
@@ -124,7 +124,7 @@ const ConfigureModal = ({ show, toggleModal }) => {
color="primary" color="primary"
onClick={() => doAction(false)} onClick={() => doAction(false)}
> >
{waiting && !doingNow ? 'Loading...' : 'Yes'} {' '} {waiting && !doingNow ? t('factory_reset.resetting') : t('common.yes')} {' '}
<CSpinner color="light" hidden={!waiting || doingNow} component="span" size="sm" /> <CSpinner color="light" hidden={!waiting || doingNow} component="span" size="sm" />
</CButton> </CButton>
<CButton color="secondary" onClick={toggleModal}> <CButton color="secondary" onClick={toggleModal}>

View File

@@ -3,7 +3,7 @@ import { useTranslation } from 'react-i18next';
import PropTypes from 'prop-types'; import PropTypes from 'prop-types';
import { CButton, CSpinner, CModalFooter } from '@coreui/react'; import { CButton, CSpinner, CModalFooter } from '@coreui/react';
const UpgradeFooter = ({ isShown, isLoading, action, color, variant, block, toggleParent }) => { const UpgradeFooter = ({ isNow, isShown, isLoading, action, color, variant, block, toggleParent }) => {
const { t } = useTranslation(); const { t } = useTranslation();
const [askingIfSure, setAskingIfSure] = useState(false); const [askingIfSure, setAskingIfSure] = useState(false);
@@ -26,7 +26,7 @@ const UpgradeFooter = ({ isShown, isLoading, action, color, variant, block, togg
onClick={() => confirmingIfSure()} onClick={() => confirmingIfSure()}
block={block} block={block}
> >
{t('common.submit')} {isNow ? t('upgrade.upgrade') : t('common.schedule')}
</CButton> </CButton>
<CButton <CButton
disabled={isLoading} disabled={isLoading}
@@ -46,6 +46,7 @@ const UpgradeFooter = ({ isShown, isLoading, action, color, variant, block, togg
}; };
UpgradeFooter.propTypes = { UpgradeFooter.propTypes = {
isNow: PropTypes.bool.isRequired,
isLoading: PropTypes.bool.isRequired, isLoading: PropTypes.bool.isRequired,
block: PropTypes.bool, block: PropTypes.bool,
action: PropTypes.func.isRequired, action: PropTypes.func.isRequired,

View File

@@ -218,6 +218,7 @@ const FirmwareUpgradeModal = ({ show, toggleModal }) => {
</CRow> </CRow>
</CModalBody> </CModalBody>
<ButtonFooter <ButtonFooter
isNow={isNow}
isShown={show} isShown={show}
isLoading={waitingForUpgrade} isLoading={waitingForUpgrade}
action={postUpgrade} action={postUpgrade}

View File

@@ -37,9 +37,9 @@ const DeviceStatisticsCard = ({ selectedDeviceId }) => {
<CCardHeader> <CCardHeader>
<CRow> <CRow>
<CCol> <CCol>
<div className="text-value-lg">{t('statistics.title')}</div> <div className={["text-value-lg", styles.cardTitle].join(" ")}>{t('statistics.title')}</div>
</CCol> </CCol>
<CCol className={styles.alignRight}> <CCol className={styles.cardOptions}>
<CDropdown className="m-1 btn-group"> <CDropdown className="m-1 btn-group">
<CDropdownToggle> <CDropdownToggle>
<CIcon name="cil-options" content={cilOptions} size="lg" color="primary" /> <CIcon name="cil-options" content={cilOptions} size="lg" color="primary" />

View File

@@ -1,7 +1,11 @@
.alignRight { .cardOptions {
text-align: right; text-align: right;
} }
.cardTitle {
padding-top: 10px;
}
.statsBody { .statsBody {
padding: 5%; padding: 5%;
} }

View File

@@ -124,11 +124,10 @@ const ActionModal = ({ show, toggleModal }) => {
</CModalBody> </CModalBody>
<CModalFooter> <CModalFooter>
<LoadingButton <LoadingButton
label={t('common.schedule')} label={isNow ? t('reboot.title') : t('common.schedule')}
isLoadingLabel={t('common.loading_ellipsis')} isLoadingLabel={t('common.loading_ellipsis')}
isLoading={waiting} isLoading={waiting}
action={doAction} action={doAction}
variant="outline"
block={false} block={false}
disabled={waiting} disabled={waiting}
/> />

View File

@@ -5,3 +5,7 @@
.spacedColumn { .spacedColumn {
margin-top: 7px; margin-top: 7px;
} }
.spacedDate {
margin-top: 7px;
}

View File

@@ -7,7 +7,6 @@ import {
CModalFooter, CModalFooter,
CCol, CCol,
CRow, CRow,
CInvalidFeedback,
CSelect, CSelect,
CSwitch, CSwitch,
CForm, CForm,
@@ -17,10 +16,8 @@ import {
} from '@coreui/react'; } from '@coreui/react';
import React, { useState, useEffect } from 'react'; import React, { useState, useEffect } from 'react';
import { useTranslation } from 'react-i18next'; import { useTranslation } from 'react-i18next';
import DatePicker from 'react-widgets/DatePicker';
import PropTypes from 'prop-types'; import PropTypes from 'prop-types';
import { useSelector } from 'react-redux'; import { useSelector } from 'react-redux';
import { dateToUnix } from 'utils/helper';
import 'react-widgets/styles.css'; import 'react-widgets/styles.css';
import { getToken } from 'utils/authHelper'; import { getToken } from 'utils/authHelper';
import axiosInstance from 'utils/axiosInstance'; import axiosInstance from 'utils/axiosInstance';
@@ -39,11 +36,9 @@ const TraceModal = ({ show, toggleModal }) => {
const [usingDuration, setUsingDuration] = useState(true); const [usingDuration, setUsingDuration] = useState(true);
const [duration, setDuration] = useState(20); const [duration, setDuration] = useState(20);
const [packets, setPackets] = useState(100); const [packets, setPackets] = useState(100);
const [chosenDate, setChosenDate] = useState(new Date().toString());
const [responseBody, setResponseBody] = useState(''); const [responseBody, setResponseBody] = useState('');
const [chosenInterface, setChosenInterface] = useState('up'); const [chosenInterface, setChosenInterface] = useState('up');
const [isDeviceConnected, setIsDeviceConnected] = useState(false); const [isDeviceConnected, setIsDeviceConnected] = useState(false);
const [isNow, setIsNow] = useState(true);
const [waitForTrace, setWaitForTrace] = useState(false); const [waitForTrace, setWaitForTrace] = useState(false);
const [waitingForTrace, setWaitingForTrace] = useState(false); const [waitingForTrace, setWaitingForTrace] = useState(false);
const [commandUuid, setCommandUuid] = useState(null); const [commandUuid, setCommandUuid] = useState(null);
@@ -54,21 +49,10 @@ const TraceModal = ({ show, toggleModal }) => {
setWaitForTrace(!waitForTrace); setWaitForTrace(!waitForTrace);
} }
const toggleNow = () => {
setIsNow(!isNow);
}
const setDate = (date) => {
if (date) {
setChosenDate(date.toString());
}
};
useEffect(() => { useEffect(() => {
setWaitForTrace(false); setWaitForTrace(false);
setHadSuccess(false); setHadSuccess(false);
setHadFailure(false); setHadFailure(false);
setChosenDate(new Date().toString());
setResponseBody(''); setResponseBody('');
setDuration(20); setDuration(20);
setPackets(100); setPackets(100);
@@ -85,7 +69,7 @@ const TraceModal = ({ show, toggleModal }) => {
const parameters = { const parameters = {
serialNumber: selectedDeviceId, serialNumber: selectedDeviceId,
when: isNow ? 0 : dateToUnix(new Date(chosenDate)), when: 0,
network: chosenInterface, network: chosenInterface,
}; };
@@ -235,39 +219,7 @@ const TraceModal = ({ show, toggleModal }) => {
</CForm> </CForm>
</CCol> </CCol>
</CRow> </CRow>
<CRow className={styles.spacedRow}> <CRow className={styles.spacedRow} hidden={!isDeviceConnected}>
<CCol md="8">
<p className={styles.spacedText}>{t('common.execute_now')}</p>
</CCol>
<CCol>
<CSwitch
disabled={blockFields}
color="primary"
defaultChecked={isNow}
onClick={toggleNow}
labelOn={t('common.yes')}
labelOff={t('common.no')}
/>
</CCol>
</CRow>
<CRow className={styles.spacedRow} hidden={isNow}>
<CCol md="4" className={styles.spacedColumn}>
<p>{t('common.date')}:</p>
</CCol>
<CCol xs="12" md="8">
<DatePicker
selected={new Date(chosenDate)}
includeTime
value={new Date(chosenDate)}
placeholder="Select custom date"
disabled={blockFields}
onChange={(date) => setDate(date)}
min={new Date()}
/>
</CCol>
</CRow>
<CInvalidFeedback>{t('common.need_date')}</CInvalidFeedback>
<CRow className={styles.spacedRow} hidden={!isNow || !isDeviceConnected}>
<CCol md="8"> <CCol md="8">
<p className={styles.spacedText}> <p className={styles.spacedText}>
{t('trace.wait_for_file')} {t('trace.wait_for_file')}
@@ -292,11 +244,10 @@ const TraceModal = ({ show, toggleModal }) => {
</CModalBody> </CModalBody>
<CModalFooter> <CModalFooter>
<LoadingButton <LoadingButton
label="Schedule" label={t('trace.trace')}
isLoadingLabel="Loading..." isLoadingLabel={t('common.loading_ellipsis')}
isLoading={blockFields} isLoading={blockFields}
action={doAction} action={doAction}
variant="outline"
block={false} block={false}
disabled={blockFields} disabled={blockFields}
/> />

View File

@@ -195,7 +195,7 @@ const WifiScanModal = ({ show, toggleModal }) => {
disabled={waiting} disabled={waiting}
/> />
<CButton color="secondary" onClick={toggleModal}> <CButton color="secondary" onClick={toggleModal}>
{(!hadSuccess && !hadFailure && waiting) ? t('common.cancel') : t('common.close')} {(!hadSuccess && !hadFailure) ? t('common.cancel') : t('common.exit')}
</CButton> </CButton>
</CModalFooter> </CModalFooter>
</CModal> </CModal>

View File

@@ -4,10 +4,10 @@ import { useParams } from 'react-router-dom';
import { CRow, CCol } from '@coreui/react'; import { CRow, CCol } from '@coreui/react';
import DeviceHealth from 'components/DeviceHealth'; import DeviceHealth from 'components/DeviceHealth';
import DeviceConfiguration from 'components/DeviceConfiguration'; import DeviceConfiguration from 'components/DeviceConfiguration';
import DeviceCommandsLog from 'components/DeviceCommandsLog'; import CommandHistory from 'components/CommandHistory';
import DeviceLogs from 'components/DeviceLogs'; import DeviceLogs from 'components/DeviceLogs';
import DeviceStatisticsCard from 'components/InterfaceStatistics'; import DeviceStatisticsCard from 'components/InterfaceStatistics';
import DeviceActionCard from './DeviceActionCard'; import DeviceActionCard from '../../components/DeviceActionCard';
const DevicePage = () => { const DevicePage = () => {
const dispatch = useDispatch(); const dispatch = useDispatch();
@@ -36,7 +36,7 @@ const DevicePage = () => {
<CRow> <CRow>
<CCol> <CCol>
<DeviceStatisticsCard selectedDeviceId={deviceId} /> <DeviceStatisticsCard selectedDeviceId={deviceId} />
<DeviceCommandsLog selectedDeviceId={deviceId} /> <CommandHistory selectedDeviceId={deviceId} />
</CCol> </CCol>
</CRow> </CRow>
</div> </div>