Merge pull request #68 from stephb9959/dev

2.3.11
This commit is contained in:
Charles
2021-11-01 17:29:01 -04:00
committed by GitHub
13 changed files with 186 additions and 46 deletions

18
package-lock.json generated
View File

@@ -1,12 +1,12 @@
{
"name": "ucentral-client",
"version": "2.3.9",
"version": "2.3.11",
"lockfileVersion": 2,
"requires": true,
"packages": {
"": {
"name": "ucentral-client",
"version": "2.3.9",
"version": "2.3.11",
"dependencies": {
"@coreui/coreui": "^3.4.0",
"@coreui/icons": "^2.0.1",
@@ -32,7 +32,7 @@
"react-tooltip": "^4.2.21",
"react-widgets": "^5.1.1",
"sass": "^1.35.1",
"ucentral-libs": "^0.9.98",
"ucentral-libs": "^1.0.5",
"uuid": "^8.3.2"
},
"devDependencies": {
@@ -14842,9 +14842,9 @@
}
},
"node_modules/ucentral-libs": {
"version": "0.9.98",
"resolved": "https://registry.npmjs.org/ucentral-libs/-/ucentral-libs-0.9.98.tgz",
"integrity": "sha512-Fwn0sqFS2u5bIN5gtbslgAZnki2J4iz6ucGVJmKdvghm+E45+KYFC2yGWGNlBfBkKIsSDlSIIhQHFEo0JTTCZg==",
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/ucentral-libs/-/ucentral-libs-1.0.5.tgz",
"integrity": "sha512-AI/opiiwxivcKDmXlnKKEHsFb2lBruzCb2e8BEXGsZ2ECtCQRj4tnvoxuejc1H8PLUyU2uT0UAnNFkCm4QwMGA==",
"dependencies": {
"@coreui/coreui": "^3.4.0",
"@coreui/icons": "^2.0.1",
@@ -27716,9 +27716,9 @@
}
},
"ucentral-libs": {
"version": "0.9.98",
"resolved": "https://registry.npmjs.org/ucentral-libs/-/ucentral-libs-0.9.98.tgz",
"integrity": "sha512-Fwn0sqFS2u5bIN5gtbslgAZnki2J4iz6ucGVJmKdvghm+E45+KYFC2yGWGNlBfBkKIsSDlSIIhQHFEo0JTTCZg==",
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/ucentral-libs/-/ucentral-libs-1.0.5.tgz",
"integrity": "sha512-AI/opiiwxivcKDmXlnKKEHsFb2lBruzCb2e8BEXGsZ2ECtCQRj4tnvoxuejc1H8PLUyU2uT0UAnNFkCm4QwMGA==",
"requires": {
"@coreui/coreui": "^3.4.0",
"@coreui/icons": "^2.0.1",

View File

@@ -1,6 +1,6 @@
{
"name": "ucentral-client",
"version": "2.3.9",
"version": "2.3.11",
"dependencies": {
"@coreui/coreui": "^3.4.0",
"@coreui/icons": "^2.0.1",
@@ -26,7 +26,7 @@
"react-tooltip": "^4.2.21",
"react-widgets": "^5.1.1",
"sass": "^1.35.1",
"ucentral-libs": "^0.9.98",
"ucentral-libs": "^1.0.5",
"uuid": "^8.3.2"
},
"main": "index.js",

View File

@@ -54,6 +54,7 @@
"completed": "Abgeschlossen",
"config_id": "Konfigurations ID",
"confirm": "Bestätigen",
"confirm_stop_editing": "Möchten Sie die Bearbeitung wirklich beenden? Dadurch werden alle nicht gespeicherten Änderungen, die Sie vorgenommen haben, verworfen.",
"connected": "Verbindung wurde hergestellt",
"copied": "kopiert!",
"copy_to_clipboard": "In die Zwischenablage kopieren",
@@ -102,6 +103,7 @@
"forgot_password_title": "Passwort vergessen",
"from": "Von",
"general_error": "API-Fehler, wenden Sie sich bitte an Ihren Administrator",
"go_back": "Geh zurück",
"hide": "verbergen",
"hour": "stunde",
"hours": "std",
@@ -121,6 +123,7 @@
"loading_more_ellipsis": "Mehr laden ...",
"logout": "Ausloggen",
"mac": "MAC-Adresse",
"main": "Main",
"manufacturer": "Hersteller",
"memory_used": "Verwendeter Speicher",
"minute": "Minute",
@@ -155,6 +158,7 @@
"second": "zweite",
"seconds": "sekunden",
"seconds_elapsed": "Sekunden verstrichen",
"see_details": "Siehe Einzelheiten",
"select": "wählen",
"serial_number": "Seriennummer",
"show_all": "Zeige alles",
@@ -205,6 +209,7 @@
"device_password": "Passwort",
"device_type": "Gerätetyp",
"device_types": "Gerätetypen",
"devices_affected": "Von dieser Konfiguration betroffene Geräte:",
"edit_configuration": "Konfiguration bearbeiten",
"error_delete": "Fehler beim Versuch zu löschen: {{error}}",
"error_fetching_config": "Fehler beim Abrufen der Konfiguration",
@@ -232,6 +237,7 @@
"used_by": "Benutzt von",
"used_by_details": "{{entities}} Entitäten, {{venues}} Veranstaltungsorte und {{devices}} Geräte",
"uuid": "Konfigurations-ID",
"view_affected_devices": "Betroffene Geräte anzeigen",
"view_config": "Konfiguration anzeigen",
"view_in_use": "In Verwendung anzeigen",
"view_json": "Rohe Konfiguration anzeigen"
@@ -250,6 +256,7 @@
"access_pin": "Zugangs-PIN",
"add_contact": "Kontakt hinzufügen",
"create_contact": "Kontakt erstellen",
"currently_selected_contact": "Aktuell ausgewählter Kontakt: {{contact}}",
"delete": "Kontakt löschen?",
"error_assign": "Fehler beim Versuch, Kontakt zuzuweisen: {{error}}",
"error_creation": "Fehler beim Versuch, einen Kontakt zu erstellen: {{error}}",
@@ -351,6 +358,7 @@
"latest_version_installed": "Neueste Version installiert Version",
"newer_firmware_available": "Neuere Versionen verfügbar",
"reinstall_latest": "Neu installieren",
"release": "Veröffentlichung",
"revision": "Revision",
"show_dev": "Dev-Releases anzeigen",
"size": "Größe",
@@ -457,7 +465,8 @@
"unassigned_deleted_devices": "{{number}} Geräte gelöscht und nicht zugewiesen",
"unassigned_tags": "Nicht zugewiesene Tags",
"validating_import_file": "Importdatei und -daten werden validiert...",
"venue": "Tagungsort"
"venue": "Tagungsort",
"view_in_gateway": "Im Gateway anzeigen"
},
"location": {
"add": "Ort hinzufügen",
@@ -465,13 +474,16 @@
"city": "Stadt",
"country": "Land",
"create": "Standort erstellen",
"currently_selected": "Aktuell ausgewählter Standort: {{location}}",
"delete": "Ort löschen?",
"error_assign": "Fehler beim Versuch, den Standort zuzuweisen: {{error}}",
"error_creation": "Fehler beim Versuch, Standorte zu erstellen: {{error}}",
"error_delete": "Fehler beim Löschen des Standorts: {{error}}",
"error_fetching_single": "Fehler beim Versuch, den Standort abzurufen: {{error}}",
"geocode": "GeoCode",
"mobiles": "MOBILES",
"no_associated": "Kein zugeordneter Standort",
"phones": "Telefone",
"postal": "Postleitzahl",
"search": "Suchen Sie nach Standorten, um die Felder unten automatisch auszufüllen",
"state": "Zustand",

View File

@@ -54,6 +54,7 @@
"completed": "Completed",
"config_id": "Config. Id",
"confirm": "Confirm",
"confirm_stop_editing": "Are you sure you want to stop editing? This will cancel any unsaved changes you have made.",
"connected": "Connected",
"copied": "Copied!",
"copy_to_clipboard": "Copy to clipboard",
@@ -102,6 +103,7 @@
"forgot_password_title": "Forgot Password",
"from": "From",
"general_error": "API Error, please consult your administrator",
"go_back": "Go Back",
"hide": "Hide",
"hour": "hour",
"hours": "hours",
@@ -121,6 +123,7 @@
"loading_more_ellipsis": "Loading more...",
"logout": "Logout",
"mac": "MAC Address",
"main": "Main",
"manufacturer": "Manufacturer",
"memory_used": "Memory Used",
"minute": "minute",
@@ -155,6 +158,7 @@
"second": "second",
"seconds": "seconds",
"seconds_elapsed": "Seconds elapsed",
"see_details": "See Details",
"select": "Select",
"serial_number": "Serial Number",
"show_all": "Show All",
@@ -205,6 +209,7 @@
"device_password": "Password",
"device_type": "Device Type",
"device_types": "Device Types",
"devices_affected": "Devices affected by this configuration: ",
"edit_configuration": "Edit Configuration",
"error_delete": "Error while trying to delete: {{error}}",
"error_fetching_config": "Error while fetching configuration",
@@ -232,6 +237,7 @@
"used_by": "Used By",
"used_by_details": "{{entities}} Entities, {{venues}} Venues and {{devices}} Devices",
"uuid": "Config ID",
"view_affected_devices": "View Affected Devices",
"view_config": "View Configuration",
"view_in_use": "View In Use",
"view_json": "View raw JSON"
@@ -250,6 +256,7 @@
"access_pin": "Access PIN",
"add_contact": "Add Contact",
"create_contact": "Create Contact",
"currently_selected_contact": "Currently Selected Contact: {{contact}}",
"delete": "Delete Contact?",
"error_assign": "Error while trying to assign contact: {{error}}",
"error_creation": "Error while trying to create contact: {{error}}",
@@ -351,6 +358,7 @@
"latest_version_installed": "Latest Version Installed",
"newer_firmware_available": "Newer Revisions Available",
"reinstall_latest": "Reinstall ",
"release": "Release",
"revision": "Revision",
"show_dev": "Show Dev Releases",
"size": "Size",
@@ -457,7 +465,8 @@
"unassigned_deleted_devices": "{{number}} Devices Deleted and Unassigned",
"unassigned_tags": "Unassigned tags",
"validating_import_file": "Validating import file and data...",
"venue": "Venue"
"venue": "Venue",
"view_in_gateway": "View in Gateway"
},
"location": {
"add": "Add Location",
@@ -465,13 +474,16 @@
"city": "City",
"country": "Country",
"create": "Create Location",
"currently_selected": "Currently Selected Location: {{location}}",
"delete": "Delete Location?",
"error_assign": "Error while trying to assign location: {{error}}",
"error_creation": "Error while trying to create locations: {{error}}",
"error_delete": "Error while deleting location: {{error}}",
"error_fetching_single": "Error while trying to fetch location: {{error}}",
"geocode": "GeoCode",
"mobiles": "Mobiles",
"no_associated": "No Associated Location",
"phones": "Phones",
"postal": "ZIP/Postal Code",
"search": "Search locations to auto fill the fields below",
"state": "State",

View File

@@ -54,6 +54,7 @@
"completed": "terminado",
"config_id": "Config. Identificación",
"confirm": "Confirmar",
"confirm_stop_editing": "¿Estás seguro de que quieres dejar de editar? Esto cancelará cualquier cambio no guardado que haya realizado.",
"connected": "Conectado",
"copied": "Copiado!",
"copy_to_clipboard": "Copiar al portapapeles",
@@ -102,6 +103,7 @@
"forgot_password_title": "Se te olvidó tu contraseña",
"from": "Desde",
"general_error": "Error de API, consulte a su administrador",
"go_back": "Regresa",
"hide": "Esconder",
"hour": "hora",
"hours": "horas",
@@ -121,6 +123,7 @@
"loading_more_ellipsis": "Cargando más ...",
"logout": "Cerrar sesión",
"mac": "Dirección MAC",
"main": "Principal",
"manufacturer": "Fabricante",
"memory_used": "Memoria usada",
"minute": "minuto",
@@ -155,6 +158,7 @@
"second": "segundo",
"seconds": "segundos",
"seconds_elapsed": "Segundos transcurridos",
"see_details": "Ver detalles",
"select": "Seleccionar",
"serial_number": "Número de serie",
"show_all": "Mostrar todo",
@@ -205,6 +209,7 @@
"device_password": "Contraseña",
"device_type": "Tipo de dispositivo",
"device_types": "Tipos de dispositivos",
"devices_affected": "Dispositivos afectados por esta configuración:",
"edit_configuration": "Editar configuración",
"error_delete": "Error al intentar eliminar: {{error}}",
"error_fetching_config": "Error al obtener la configuración",
@@ -232,6 +237,7 @@
"used_by": "Usado por",
"used_by_details": "{{entities}} Entidades, {{venues}} lugares y {{devices}} dispositivos",
"uuid": "ID de configuración",
"view_affected_devices": "Ver dispositivos afectados",
"view_config": "Ver configuración",
"view_in_use": "Ver en uso",
"view_json": "Ver JSON sin procesar"
@@ -250,6 +256,7 @@
"access_pin": "PIN de acceso",
"add_contact": "Agregar contacto",
"create_contact": "Crear contacto",
"currently_selected_contact": "Contacto seleccionado actualmente: {{contact}}",
"delete": "¿Borrar contacto?",
"error_assign": "Error al intentar asignar el contacto: {{error}}",
"error_creation": "Error al intentar crear contacto: {{error}}",
@@ -351,6 +358,7 @@
"latest_version_installed": "Última versión instalada",
"newer_firmware_available": "Nuevas revisiones disponibles",
"reinstall_latest": "Reinstalar",
"release": "Lanzamiento",
"revision": "Revisión",
"show_dev": "Mostrar lanzamientos para desarrolladores",
"size": "Tamaño",
@@ -457,7 +465,8 @@
"unassigned_deleted_devices": "{{number}} Dispositivos eliminados y sin asignar",
"unassigned_tags": "Etiquetas sin asignar",
"validating_import_file": "Validando archivo y datos de importación ...",
"venue": "Lugar de encuentro"
"venue": "Lugar de encuentro",
"view_in_gateway": "Ver en Gateway"
},
"location": {
"add": "Añade una ubicación",
@@ -465,13 +474,16 @@
"city": "ciudad",
"country": "País",
"create": "Crear ubicación",
"currently_selected": "Ubicación seleccionada actualmente: {{location}}",
"delete": "¿Eliminar ubicación?",
"error_assign": "Error al intentar asignar la ubicación: {{error}}",
"error_creation": "Error al intentar crear ubicaciones: {{error}}",
"error_delete": "Error al eliminar la ubicación: {{error}}",
"error_fetching_single": "Error al intentar obtener la ubicación: {{error}}",
"geocode": "Geocode",
"mobiles": "MOBILES",
"no_associated": "Sin ubicación asociada",
"phones": "Los telefonos",
"postal": "código postal",
"search": "Busque ubicaciones para completar automáticamente los campos a continuación",
"state": "Estado",

View File

@@ -54,6 +54,7 @@
"completed": "Terminé",
"config_id": "Config. Identifiant",
"confirm": "Confirmer",
"confirm_stop_editing": "Voulez-vous vraiment arrêter la modification ? Cela annulera toutes les modifications non enregistrées que vous avez apportées.",
"connected": "Connecté",
"copied": "Copié!",
"copy_to_clipboard": "Copier dans le presse-papier",
@@ -102,6 +103,7 @@
"forgot_password_title": "Mot de passe oublié",
"from": "De",
"general_error": "Erreur API, veuillez consulter votre administrateur",
"go_back": "Retourner",
"hide": "Cacher",
"hour": "heure",
"hours": "heures",
@@ -121,6 +123,7 @@
"loading_more_ellipsis": "Chargement plus ...",
"logout": "Connectez - Out",
"mac": "ADRESSE MAC",
"main": "Principale",
"manufacturer": "fabricant",
"memory_used": "Mémoire utilisée",
"minute": "minute",
@@ -155,6 +158,7 @@
"second": "seconde",
"seconds": "secondes",
"seconds_elapsed": "Secondes écoulées",
"see_details": "Voir les détails",
"select": "sélectionner",
"serial_number": "Numéro de série",
"show_all": "Montre tout",
@@ -205,6 +209,7 @@
"device_password": "Mot de passe",
"device_type": "Type d'appareil",
"device_types": "Types d'appareils",
"devices_affected": "Appareils concernés par cette configuration :",
"edit_configuration": "Modifier la configuration",
"error_delete": "Erreur lors de la tentative de suppression : {{error}}",
"error_fetching_config": "Erreur lors de la récupération de la configuration",
@@ -232,6 +237,7 @@
"used_by": "Utilisé par",
"used_by_details": "{{entities}} Entités, {{venues}} Lieux et {{devices}} Appareils",
"uuid": "Identifiant de configuration",
"view_affected_devices": "Afficher les appareils concernés",
"view_config": "Afficher la configuration",
"view_in_use": "Afficher en cours d'utilisation",
"view_json": "Afficher le JSON brut"
@@ -250,6 +256,7 @@
"access_pin": "NIP d'accès",
"add_contact": "Ajouter le contact",
"create_contact": "Créer un contact",
"currently_selected_contact": "Contact actuellement sélectionné : {{contact}}",
"delete": "Effacer le contact?",
"error_assign": "Erreur lors de la tentative d'attribution du contact : {{error}}",
"error_creation": "Erreur lors de la tentative de création du contact : {{error}}",
@@ -351,6 +358,7 @@
"latest_version_installed": "Dernière version installée",
"newer_firmware_available": "Révisions plus récentes disponibles",
"reinstall_latest": "Réinstaller",
"release": "libération",
"revision": "Révision",
"show_dev": "Afficher les versions des développeurs",
"size": "Taille",
@@ -457,7 +465,8 @@
"unassigned_deleted_devices": "{{number}} appareils supprimés et non attribués",
"unassigned_tags": "Balises non attribuées",
"validating_import_file": "Validation du fichier d'importation et des données...",
"venue": "Lieu"
"venue": "Lieu",
"view_in_gateway": "Afficher dans la passerelle"
},
"location": {
"add": "Ajouter un emplacement",
@@ -465,13 +474,16 @@
"city": "Ville",
"country": "Pays",
"create": "Créer un lieu",
"currently_selected": "Emplacement actuellement sélectionné : {{location}}",
"delete": "Supprimer le lieu?",
"error_assign": "Erreur lors de la tentative d'attribution de l'emplacement : {{error}}",
"error_creation": "Erreur lors de la tentative de création d'établissements : {{error}}",
"error_delete": "Erreur lors de la suppression de l'emplacement : {{error}}",
"error_fetching_single": "Erreur lors de la tentative de récupération de l'emplacement : {{error}}",
"geocode": "Géocode",
"mobiles": "MOBILES",
"no_associated": "Aucun emplacement associé",
"phones": "Téléphones",
"postal": "Zip / code postal",
"search": "Recherchez des emplacements pour remplir automatiquement les champs ci-dessous",
"state": "Etat",

View File

@@ -54,6 +54,7 @@
"completed": "Concluído",
"config_id": "Config. Identidade",
"confirm": "confirme",
"confirm_stop_editing": "Tem certeza que deseja parar de editar? Isso cancelará todas as alterações não salvas que você fez.",
"connected": "Conectado",
"copied": "Copiado!",
"copy_to_clipboard": "Copiar para área de transferência",
@@ -102,6 +103,7 @@
"forgot_password_title": "Esqueceu a senha",
"from": "De",
"general_error": "Erro de API, consulte o seu administrador",
"go_back": "Volte",
"hide": "Ocultar",
"hour": "hora",
"hours": "horas",
@@ -121,6 +123,7 @@
"loading_more_ellipsis": "Carregando mais ...",
"logout": "Sair",
"mac": "Endereço MAC",
"main": "a Principal",
"manufacturer": "Fabricante",
"memory_used": "Memória Usada",
"minute": "minuto",
@@ -155,6 +158,7 @@
"second": "segundo",
"seconds": "segundos",
"seconds_elapsed": "Segundos decorridos",
"see_details": "Veja detalhes",
"select": "Selecione",
"serial_number": "Número de série",
"show_all": "mostre tudo",
@@ -205,6 +209,7 @@
"device_password": "Senha",
"device_type": "Tipo de dispositivo",
"device_types": "Tipos de dispositivos",
"devices_affected": "Dispositivos afetados por esta configuração:",
"edit_configuration": "Editar configuração",
"error_delete": "Erro ao tentar excluir: {{error}}",
"error_fetching_config": "Erro ao buscar configuração",
@@ -232,6 +237,7 @@
"used_by": "Usado por",
"used_by_details": "{{entities}} Entidades, {{venues}} Locais e {{devices}} Dispositivos",
"uuid": "ID de configuração",
"view_affected_devices": "Exibir dispositivos afetados",
"view_config": "Ver configuração",
"view_in_use": "Visualização em uso",
"view_json": "Exibir JSON bruto"
@@ -250,6 +256,7 @@
"access_pin": "PIN de acesso",
"add_contact": "Adicionar contato",
"create_contact": "Criar Contato",
"currently_selected_contact": "Contato atualmente selecionado: {{contact}}",
"delete": "Excluir contato?",
"error_assign": "Erro ao tentar atribuir contato: {{error}}",
"error_creation": "Erro ao tentar criar contato: {{error}}",
@@ -351,6 +358,7 @@
"latest_version_installed": "Última versão instalada",
"newer_firmware_available": "Novas revisões disponíveis",
"reinstall_latest": "Reinstalar",
"release": "LANÇAMENTO",
"revision": "Revisão",
"show_dev": "Mostrar lançamentos de desenvolvimento",
"size": "Tamanho",
@@ -457,7 +465,8 @@
"unassigned_deleted_devices": "{{number}} Dispositivos excluídos e não atribuídos",
"unassigned_tags": "Tags não atribuídas",
"validating_import_file": "Validando arquivo de importação e dados ...",
"venue": "Local"
"venue": "Local",
"view_in_gateway": "Ver no Gateway"
},
"location": {
"add": "Adicionar Local",
@@ -465,13 +474,16 @@
"city": "Cidade",
"country": "País",
"create": "Criar local",
"currently_selected": "Local selecionado atualmente: {{location}}",
"delete": "Excluir localização?",
"error_assign": "Erro ao tentar atribuir local: {{error}}",
"error_creation": "Erro ao tentar criar locais: {{error}}",
"error_delete": "Erro ao excluir localização: {{error}}",
"error_fetching_single": "Erro ao tentar buscar localização: {{error}}",
"geocode": "GeoCode",
"mobiles": "Móbiles",
"no_associated": "Sem localização associada",
"phones": "Telefones",
"postal": "CEP / Código Postal",
"search": "Pesquise locais para preencher automaticamente os campos abaixo",
"state": "Estado",

View File

@@ -1,6 +1,6 @@
import React, { useEffect, useState } from 'react';
import { useTranslation } from 'react-i18next';
import { useHistory, useLocation } from 'react-router-dom';
import { useHistory } from 'react-router-dom';
import axiosInstance from 'utils/axiosInstance';
import { getItem, setItem } from 'utils/localStorageHelper';
import DeviceSearchBar from 'components/DeviceSearchBar';
@@ -16,8 +16,7 @@ const DeviceList = () => {
const { t } = useTranslation();
const { addToast } = useToast();
const history = useHistory();
const { search } = useLocation();
const page = new URLSearchParams(search).get('page');
const [page, setPage] = useState(parseInt(sessionStorage.getItem('deviceTable') ?? 0, 10));
const { currentToken, endpoints } = useAuth();
const [upgradeStatus, setUpgradeStatus] = useState({
loading: false,
@@ -225,7 +224,8 @@ const DeviceList = () => {
};
const updatePageCount = ({ selected: selectedPage }) => {
history.push(`/devices?page=${selectedPage}`);
sessionStorage.setItem('deviceTable', selectedPage);
setPage(selectedPage);
getDeviceInformation(selectedPage);
};
@@ -354,9 +354,6 @@ const DeviceList = () => {
};
useEffect(() => {
if (page === undefined || page === null || Number.isNaN(page)) {
history.push(`/devices?page=0`);
}
getCount();
}, []);

View File

@@ -1,11 +1,28 @@
import React, { useEffect, useState } from 'react';
import PropTypes from 'prop-types';
import { useTranslation } from 'react-i18next';
import { CButton, CModal, CModalBody, CModalHeader, CModalTitle, CPopover } from '@coreui/react';
import {
CButton,
CModal,
CModalBody,
CModalHeader,
CModalTitle,
CPopover,
CNav,
CNavLink,
CTabPane,
CTabContent,
} from '@coreui/react';
import CIcon from '@coreui/icons-react';
import { cilPencil, cilSave, cilX } from '@coreui/icons';
import axiosInstance from 'utils/axiosInstance';
import { useFormFields, useAuth, useToast, FirmwareDetailsForm } from 'ucentral-libs';
import {
useFormFields,
useAuth,
useToast,
FirmwareDetailsForm,
DetailedNotesTable,
} from 'ucentral-libs';
const initialState = {
created: {
@@ -33,11 +50,6 @@ const initialState = {
error: false,
editable: true,
},
owner: {
value: '',
error: false,
editable: true,
},
revision: {
value: '',
error: false,
@@ -65,6 +77,7 @@ const EditFirmwareModal = ({ show, toggle, firmwareId, refreshTable }) => {
const { addToast } = useToast();
const [loading, setLoading] = useState(false);
const [editing, setEditing] = useState(false);
const [index, setIndex] = useState(0);
const [firmware, updateWithId, updateWithKey, setFirmware] = useFormFields(initialState);
const getFirmware = () => {
@@ -168,6 +181,7 @@ const EditFirmwareModal = ({ show, toggle, firmwareId, refreshTable }) => {
if (show) {
getFirmware();
setEditing(false);
setIndex(0);
}
}, [show]);
@@ -201,14 +215,48 @@ const EditFirmwareModal = ({ show, toggle, firmwareId, refreshTable }) => {
</CPopover>
</div>
</CModalHeader>
<CModalBody>
<FirmwareDetailsForm
t={t}
fields={firmware}
addNote={addNote}
updateFieldsWithId={updateWithId}
editing={editing}
/>
<CModalBody className="px-3 pt-0">
<CNav variant="tabs" className="mb-0 p-0">
<CNavLink
className="font-weight-bold"
href="#"
active={index === 0}
onClick={() => setIndex(0)}
>
{t('common.main')}
</CNavLink>
<CNavLink
className="font-weight-bold"
href="#"
active={index === 1}
onClick={() => setIndex(1)}
>
{t('configuration.notes')}
</CNavLink>
</CNav>
<CTabContent>
<CTabPane active={index === 0} className="pt-2">
{index === 0 ? (
<FirmwareDetailsForm
t={t}
fields={firmware}
updateFieldsWithId={updateWithId}
editing={editing}
/>
) : null}
</CTabPane>
<CTabPane active={index === 1}>
{index === 1 ? (
<DetailedNotesTable
t={t}
notes={firmware.notes.value}
addNote={addNote}
loading={loading}
editable={editing}
/>
) : null}
</CTabPane>
</CTabContent>
</CModalBody>
</CModal>
);

View File

@@ -31,7 +31,7 @@ const ActionModal = ({ show, toggleModal }) => {
const [waiting, setWaiting] = useState(false);
const [result, setResult] = useState(null);
const [chosenDate, setChosenDate] = useState(new Date().toString());
const [isNow, setIsNow] = useState(false);
const [isNow, setIsNow] = useState(true);
const toggleNow = () => {
setIsNow(!isNow);
@@ -48,6 +48,7 @@ const ActionModal = ({ show, toggleModal }) => {
setResult(null);
setWaiting(false);
setChosenDate(new Date().toString());
setIsNow(true);
}
}, [show]);

View File

@@ -57,6 +57,7 @@ const TheLayout = () => {
endpoints={endpoints}
user={user}
avatar={avatar}
hideBreadcrumb
/>
<div className="c-body">
<ToastProvider>

View File

@@ -1,22 +1,44 @@
import React, { useState } from 'react';
import React, { useEffect, useState } from 'react';
import DeviceList from 'components/DeviceListTable';
import DeviceDashboard from 'components/DeviceDashboard';
import { CCard, CCardBody, CNav, CNavLink, CTabPane, CTabContent } from '@coreui/react';
import {
CCard,
CCardBody,
CNav,
CNavLink,
CTabPane,
CTabContent,
CCardHeader,
} from '@coreui/react';
import { useTranslation } from 'react-i18next';
const DeviceListPage = () => {
const { t } = useTranslation();
const [index, setIndex] = useState(0);
const updateNav = (target) => {
sessionStorage.setItem('devicePage', target);
setIndex(target);
};
useEffect(() => {
const target = sessionStorage.getItem('devicePage');
if (target !== null) setIndex(parseInt(target, 10));
}, []);
return (
<CCard>
<CCardHeader className="dark-header">
<div className="text-value-lg mr-auto">{t('common.devices')}</div>
</CCardHeader>
<CCardBody className="p-0">
<CNav variant="tabs">
<CNavLink
className="font-weight-bold"
href="#"
active={index === 0}
onClick={() => setIndex(0)}
onClick={() => updateNav(0)}
>
{t('common.dashboard')}
</CNavLink>
@@ -24,9 +46,9 @@ const DeviceListPage = () => {
className="font-weight-bold"
href="#"
active={index === 1}
onClick={() => setIndex(1)}
onClick={() => updateNav(1)}
>
{t('common.devices')}
{t('common.table')}
</CNavLink>
</CNav>
<CTabContent>

View File

@@ -2,7 +2,15 @@
import React, { useState, useEffect } from 'react';
import { useTranslation } from 'react-i18next';
import axiosInstance from 'utils/axiosInstance';
import { CCard, CCardBody, CNav, CNavLink, CTabPane, CTabContent } from '@coreui/react';
import {
CCard,
CCardBody,
CNav,
CNavLink,
CTabPane,
CTabContent,
CCardHeader,
} from '@coreui/react';
import { FirmwareList, useAuth, useToast } from 'ucentral-libs';
import FirmwareDashboard from 'components/FirmwareDashboard';
import EditFirmwareModal from 'components/EditFirmwareModal';
@@ -161,6 +169,9 @@ const FirmwareListPage = () => {
return (
<CCard>
<CCardHeader className="dark-header">
<div className="text-value-lg mr-auto">{t('common.firmware')}</div>
</CCardHeader>
<CCardBody className="p-0">
<CNav variant="tabs">
<CNavLink
@@ -177,7 +188,7 @@ const FirmwareListPage = () => {
active={index === 1}
onClick={() => setIndex(1)}
>
{t('common.firmware')}
{t('common.table')}
</CNavLink>
</CNav>
<CTabContent>