[WIFI-10810] ESLint run, package upgrades, TS fixes

Signed-off-by: Charles <charles.bourque96@gmail.com>
This commit is contained in:
Charles
2022-10-27 10:52:34 +01:00
parent 16e46cded0
commit eb3dd2032f
521 changed files with 11228 additions and 24891 deletions

3
.env
View File

@@ -1,2 +1 @@
REACT_APP_VERSION=$npm_package_version
REACT_APP_UCENTRALSEC_URL="https://ucentral.dpaas.arilia.com:16001"
VITE_UCENTRALSEC_URL="https://ucentral.dpaas.arilia.com:16001"

View File

@@ -1,5 +1,10 @@
/src/assets
/build
/node_modules
/dist
/icons
helm
docker-entrypoint.d
.dockerignore
DockerFile
.github

View File

@@ -3,14 +3,6 @@
"browser": true,
"es2021": true
},
"extends": [
"plugin:react/recommended",
"plugin:@typescript-eslint/eslint-recommended",
"plugin:@typescript-eslint/recommended",
"airbnb",
"airbnb-typescript",
"prettier"
],
"parser": "@typescript-eslint/parser",
"parserOptions": {
"ecmaFeatures": {
@@ -22,7 +14,19 @@
"codeFrame": false,
"project": "./tsconfig.json"
},
"plugins": ["react", "@typescript-eslint", "prettier"],
"ignorePatterns": ["build/", "dist/"],
"plugins": ["import", "react", "@typescript-eslint", "prettier"],
"extends": [
"plugin:react/recommended",
"plugin:@typescript-eslint/eslint-recommended",
"plugin:@typescript-eslint/recommended",
"airbnb",
"airbnb-typescript",
"prettier",
"plugin:import/errors",
"plugin:import/warnings",
"plugin:import/typescript"
],
"rules": {
"import/extensions": [
"error",
@@ -34,21 +38,42 @@
"tsx": "never"
}
],
"@typescript-eslint/ban-ts-comment": ["off"],
"max-len": ["error", { "code": 150 }],
"prefer-promise-reject-errors": ["off"],
"react/jsx-filename-extension": ["off"],
"react/prop-types": ["warn"],
"no-return-assign": ["off"],
"react/jsx-props-no-spreading": ["off"],
"react/destructuring-assignment": ["off"],
"@typescript-eslint/naming-convention": [
"error",
{
"selector": "function",
"format": ["PascalCase", "camelCase"],
"leadingUnderscore": "allowSingleOrDouble"
}
],
"no-restricted-syntax": ["error", "ForInStatement", "LabeledStatement", "WithStatement"],
"react/jsx-one-expression-per-line": "off",
"react/jsx-wrap-multilines": "off",
"react/function-component-definition": [2, { "namedComponents": "arrow-function" }],
"import/order": [
"error",
{
"alphabetize": {
"order": "asc",
"caseInsensitive": true
},
"newlines-between": "never",
"groups": ["builtin", "external", "parent", "sibling", "index"],
"pathGroups": [
{
"pattern": "react",
"group": "external",
"position": "before"
}
],
"pathGroupsExcludedImportTypes": ["builtin"]
}
],
"max-len": ["error", { "code": 150 }],
"@typescript-eslint/ban-ts-comment": ["off"],
"react/prop-types": ["warn"],
"react/require-default-props": "off",
"react/jsx-props-no-spreading": ["off"],
"react/jsx-curly-newline": "off",
"no-underscore-dangle": "off",
"react/function-component-definition": "off"
"no-underscore-dangle": "off"
},
"settings": {
"import/resolver": {

1
.gitignore vendored
View File

@@ -4,6 +4,7 @@
.pnp.js
# testing
/dev-dist
/coverage
# production

View File

@@ -1,4 +1,5 @@
/src/assets
build
dist
node_modules
.github

20
index.html Normal file
View File

@@ -0,0 +1,20 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>Provisioning</title>
<meta name="description" content="OpenWiFi Provisioning App" />
<link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png" />
<link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png" />
<link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png" />
<link rel="mask-icon" href="/safari-pinned-tab.svg" color="#5bbad5" />
<meta name="msapplication-TileColor" content="#da532c" />
<meta name="theme-color" content="#000000" />
</head>
<body>
<noscript>You need to enable JavaScript to run this app.</noscript>
<div id="root"></div>
<script type="module" src="./src/index.tsx"></script>
</body>
</html>

28821
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@@ -1,85 +1,93 @@
{
"name": "wlan-cloud-owprov-ui",
"version": "2.7.1(1)",
"version": "2.8.0(4)",
"description": "",
"main": "index.tsx",
"scripts": {
"start": "react-scripts start",
"build": "react-scripts build",
"dev": "vite",
"build": "vite build",
"format": "prettier --write \"src/**/*.js\"",
"analyze": "source-map-explorer 'build/static/js/*.js'"
"analyze": "source-map-explorer 'build/static/js/*.js'",
"lint": "TIMING=1 eslint \"src/**/*.{ts,tsx,js,jsx}\" --fix",
"clean": "rm -rf node_modules && rm -rf build"
},
"author": "",
"license": "ISC",
"dependencies": {
"@chakra-ui/icons": "^1.1.1",
"@chakra-ui/react": "^1.7.3",
"@chakra-ui/theme-tools": "^1.3.1",
"@chakra-ui/utils": "^1.10.4",
"@fontsource/inter": "^4.5.1",
"@nivo/circle-packing": "^0.79.1",
"@nivo/core": "^0.79.0",
"@react-spring/web": "^9.4.4",
"cronstrue": "2.11.0",
"axios": "^0.24.0",
"@chakra-ui/icons": "^2.0.11",
"@chakra-ui/react": "^2.3.6",
"@chakra-ui/theme-tools": "^2.0.12",
"@chakra-ui/utils": "^2.0.11",
"@emotion/react": "^11.10.4",
"@emotion/styled": "^11.10.4",
"@fontsource/inter": "^4.5.14",
"@nivo/circle-packing": "^0.80.0",
"@nivo/core": "^0.80.0",
"@react-spring/web": "^9.5.5",
"axios": "^1.1.3",
"buffer": "^6.0.3",
"chakra-react-select": "^3.0.0",
"chakra-react-select": "^4.3.0",
"cronstrue": "2.14.0",
"currency-codes": "^2.1.0",
"dagre": "^0.8.5",
"dotenv": "^16.0.3",
"formik": "^2.2.9",
"i18next": "^21.6.3",
"i18next-browser-languagedetector": "^6.1.2",
"i18next-http-backend": "^1.3.1",
"libphonenumber-js": "^1.9.49",
"papaparse": "^5.3.1",
"phosphor-react": "^1.3.1",
"prop-types": "^15.7.2",
"react": "^17.0.2",
"framer-motion": "^6.3.6",
"i18next": "^22.0.0",
"i18next-browser-languagedetector": "^6.1.8",
"i18next-http-backend": "^1.4.4",
"libphonenumber-js": "^1.10.14",
"papaparse": "^5.3.2",
"phosphor-react": "^1.4.1",
"prop-types": "^15.8.1",
"react": "^18.2.0",
"react-app-polyfill": "^3.0.0",
"react-country-flag": "^3.0.2",
"react-csv": "^2.2.2",
"react-datepicker": "^4.7.0",
"react-datepicker": "^4.8.0",
"react-dom": "^18.2.0",
"react-fast-compare": "^3.2.0",
"react-flow-renderer": "^9.6.6",
"react-full-screen": "^1.1.0",
"react-i18next": "^11.15.1",
"react-flow-renderer": "^10.3.17",
"react-full-screen": "^1.1.1",
"react-i18next": "^11.18.6",
"react-masonry-css": "^1.0.16",
"react-papaparse": "^4.0.2",
"react-query": "^3.35.0",
"react-router-dom": "^6.2.1",
"react-scripts": "^5.0.1",
"react-table": "^7.7.0",
"react-tooltip": "^4.2.21",
"source-map-explorer": "^2.5.2",
"typescript": "^4.6.3",
"uuid": "^8.3.2",
"yup": "^0.32.11"
"react-papaparse": "^4.1.0",
"@tanstack/react-query": "^4.12.0",
"react-router-dom": "^6.4.2",
"react-table": "^7.8.0",
"react-tooltip": "^4.4.2",
"source-map-explorer": "^2.5.3",
"vite": "^3.1.8",
"typescript": "^4.8.4",
"uuid": "^9.0.0",
"yup": "^0.32.11",
"zustand": "^4.1.2"
},
"devDependencies": {
"@types/node": "^17.0.27",
"@types/react": "^17.0.44",
"@types/react-csv": "^1.1.2",
"@types/react-dom": "^18.0.0",
"@types/node": "^18.11.2",
"@types/react": "^18.0.21",
"@types/react-csv": "^1.1.3",
"@types/react-dom": "^18.0.6",
"@types/react-table": "^7.7.12",
"@types/uuid": "^8.3.4",
"@typescript-eslint/eslint-plugin": "^5.21.0",
"@typescript-eslint/parser": "^5.21.0",
"babel-eslint": "^10.1.0",
"eslint": "^7.32.0",
"eslint": "8.25.0",
"vite-tsconfig-paths": "^3.5.1",
"lint-staged": "^13.0.3",
"@vitejs/plugin-react": "^2.1.0",
"vite-plugin-pwa": "^0.13.1",
"prettier": "^2.7.1",
"eslint-config-airbnb": "^19.0.4",
"eslint-config-airbnb-typescript": "^17.0.0",
"eslint-config-airbnb-typescript-prettier": "^5.0.0",
"eslint-config-prettier": "^8.3.0",
"eslint-config-prettier": "^8.5.0",
"eslint-import-resolver-alias": "^1.1.2",
"eslint-loader": "^4.0.2",
"eslint-plugin-babel": "^5.3.1",
"eslint-plugin-import": "^2.25.3",
"eslint-plugin-jsx-a11y": "^6.5.1",
"eslint-plugin-import": "^2.26.0",
"eslint-plugin-jsx-a11y": "^6.6.1",
"eslint-plugin-no-inline-styles": "^1.0.5",
"eslint-plugin-prettier": "^4.0.0",
"eslint-plugin-react": "^7.29.4",
"eslint-plugin-react-hooks": "^4.3.0",
"lint-staged": "^12.1.3",
"prettier": "^2.5.1"
"eslint-plugin-prettier": "^4.2.1",
"eslint-plugin-react": "^7.31.10",
"eslint-plugin-react-hooks": "^4.6.0"
},
"browserslist": {
"production": [

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

BIN
public/apple-touch-icon.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

9
public/browserconfig.xml Normal file
View File

@@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<browserconfig>
<msapplication>
<tile>
<square150x150logo src="/mstile-150x150.png"/>
<TileColor>#414141</TileColor>
</tile>
</msapplication>
</browserconfig>

BIN
public/favicon copy.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

BIN
public/favicon-16x16.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1021 B

BIN
public/favicon-32x32.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

View File

@@ -219,6 +219,7 @@
"device_details": "Gerätedetails",
"discard_changes": "Änderungen verwerfen?",
"disconnected": "Getrennt",
"display_name": "Anzeigename",
"download": "Herunterladen",
"download_instructions": "Herunterladen erfolgreich! Wenn Sie die Datei nicht finden können, bestätigen Sie bitte, dass Sie Downloads von dieser Website zulassen",
"duplicate": "Duplikat",
@@ -277,6 +278,7 @@
"notes": "Anmerkungen",
"of": "Von",
"password": "Passwort",
"preview": "Vorschau",
"quarterly": "vierteljährlich",
"redirector": "Umleitung",
"refresh": "Aktualisierung",
@@ -287,6 +289,7 @@
"save": "sparen",
"search": "Suche",
"seconds": "Sekunden",
"select_all": "Zeige alles",
"select_value": "Wähle Wert",
"sending": "Senden",
"sent_code": "Code gesendet!",
@@ -404,6 +407,168 @@
"to_claim": "Kontakte zu beanspruchen",
"visual": "Visual"
},
"controller": {
"configurations": {
"create_success": "Konfiguration erstellt!",
"delete_success": "Konfiguration ist jetzt gelöscht!",
"title": "Standardkonfigurationen",
"update_success": "Aktualisierte Konfiguration!"
},
"configure": {
"invalid": "Ihre neue Konfiguration muss gültiges JSON sein",
"success": "Die neue Konfiguration wird jetzt auf dem Gerät bereitgestellt",
"title": "Konfigurieren",
"warning": "Seien Sie gewarnt: Es werden nur minimale Tests mit dieser Konfiguration durchgeführt"
},
"crud": {
"choose_time": "Benutzerdefinierter Zeitrahmen",
"clear_time": "Klare Zeit",
"delete_success_obj": " {{obj}}gelöscht"
},
"dashboard": {
"associations": "Verbände",
"associations_explanation": "Alle aktuell verbundenen Assoziationen (oder UEs)",
"certificates": "Zertifikate",
"certificates_explanation": "Status der Zertifikate aktuell verbundener Geräte",
"commands": "Befehle",
"commands_explanation": "Alle ausgeführten Befehle",
"device_dashboard_refresh": "Neue Verbindungsstatistik",
"device_types": "Gerätetypen",
"device_types_explanation": "Gerätetypen aller Geräte, die auf diesen Controller verweisen",
"devices_explanation": "Alle Geräte zeigen auf diesen Controller-Endpunkt",
"error_fetching": "Fehler beim Abrufen des Dashboards",
"expand": "Erweitern",
"last_ping_explanation": "Wann diese Daten erhoben wurden",
"memory": "Speichernutzung",
"memory_explanation": "Derzeit verbundene Geräte mit der entsprechenden Menge an belegtem Speicher",
"no_certificate": "Kein Zertifikat",
"not_connected": "Nicht verbunden",
"others": "andere",
"overall_health": "Allgemeine Gesundheit",
"overall_health_explanation": "Durchschnittlicher Gesundheitszustand aller derzeit verbundenen Geräte, von denen wir Gesundheitsdaten erhalten. Die genaue Berechnung lautet: (Geräte = 100 % * 100 + Geräte > 90 * 95 + Geräte > 60 * 75 + Geräte < 60 * 30) / Verbundene Geräte",
"overall_health_explanation_pie": "Die Anzahl der Geräte mit einem Integritätsprozentsatz innerhalb dieser Kategorien",
"serial_mismatch": "Serielle Diskrepanz",
"status": "Status",
"status_explanation": "Status aller Geräte, die auf diesen Controller-Endpunkt verweisen",
"unknown_status": "Unbekannter Status",
"unrecognized": "Unerkannt",
"uptimes": "",
"uptimes_explanation": "Aktuell verbundene Geräte mit den entsprechenden Uptimes",
"vendors": "Anbieter",
"vendors_explanation": "Anbieter der Geräte, die auf diesen Controller verweisen",
"verified": "Verifiziert"
},
"devices": {
"add_blacklist": "Seriennummer hinzufügen",
"added": "hinzugefügt",
"added_blacklist": "Seriennummer zur Blacklist hinzugefügt!",
"average_uptime": "Durchschnittliche Betriebszeit",
"blacklist": "Schwarze Liste",
"blacklist_update": " {{serialNumber}} Datensatz aktualisieren",
"by": "Durch",
"capabilities": "Fähigkeiten",
"command_one": "Befehl",
"commands": "Befehle",
"complete_data": "Vollständige Daten",
"config_id": "Konfigurations-ID",
"connecting": "Anschließen",
"connection_changes": "Verbindungsstatus",
"delete_blacklist": "Seriennummer von Blacklist entfernt!",
"delete_health_explanation": "Dadurch werden alle Zustandsprüfungen vor dem von Ihnen gewählten Datum dauerhaft gelöscht",
"delete_logs_explanation": "Dadurch werden alle Protokolle vor dem von Ihnen gewählten Datum dauerhaft gelöscht",
"error_code": "Fehlercode",
"executed": "Hingerichtet",
"finished_reboot": "{{serialNumber}} hat gerade den Neustart beendet!",
"finished_upgrade": "{{serialNumber}} hat das Upgrade abgeschlossen!",
"from_to": "Von {{from}} bis {{to}}",
"healthchecks": "Gesundheitschecks",
"last_modified": "Zuletzt bearbeitet:",
"last_upgrade": "Letzte Aktualisierung",
"localtime": "Ortszeit",
"logs": "LOGS",
"new_statistics": "Neue Statistiken",
"no_more_available": "Alle abgerufen",
"reason": "Grund",
"results": "Ergebnisse",
"sent_upgrade_to_latest": "Befehl „Auf neueste Version aktualisieren“ an das Gerät gesendet",
"severity": "Schwere",
"show_more": "Zeig mehr",
"started_reboot": "{{serialNumber}} zum Neustart abschalten!",
"started_upgrade": "{{serialNumber}} einfach herunterfahren, um das Upgrade zu starten!",
"trace": "Spur",
"trace_description": "Starten Sie eine Fernverfolgung dieses Geräts für eine bestimmte Dauer oder eine Anzahl von Paketen",
"update_success": "Gerät aktualisiert!",
"updated_blacklist": "Schwarze Liste aktualisiert!"
},
"firmware": {
"devices_explanation": "Geräte, die auf diesen Firmware-Server verwiesen haben. Dies könnte Diskrepanzen zwischen dieser Nummer und der des Geräte-Dashboards erklären",
"endpoints": "Endpunkte",
"endpoints_explanation": "Alle Endpunkte, die auf diesen Firmware-Server verweisen",
"firmware_age": "Firmware-Alter",
"firmware_age_explanation": "Durchschnittliches Firmware-Alter für die Geräte, für die uns diese Daten vorliegen",
"latest": "Neueste Firmware installiert",
"old_firmware": "Alte Firmware",
"ouis_explanation": "OUIs von Geräten, die sich mit diesem Firmware-Server verbunden haben",
"outdated_one": "Firmware {{count}} Tag alt",
"outdated_other": "Firmware {{count}} Tage alt",
"release": "Veröffentlichung",
"show_dev_releases": "Entwicklerversionen",
"status_explanation": "Verbindungsstatus von Geräten, die sich mit diesem Firmware-Server verbunden haben",
"unrecognized": "Unbekannte Firmware",
"unrecognized_firmware": "Unbekannte Firmware",
"unrecognized_firmware_explanation": "Firmware, die derzeit von Geräten verwendet wird und von diesem Firmware-Server nicht erkannt wird",
"up_to_date": "Aktuelle Geräte",
"up_to_date_explanation": "Geräte, die die neueste verfügbare Software verwenden, die ihnen zur Verfügung steht"
},
"provisioning": {
"title": "Bereitstellung"
},
"queue": {
"title": "Ereigniswarteschlange"
},
"stats": {
"load": "Belastung (1 | 5 | 15 m.)",
"seconds_ago": " Vor {{s}} Sekunden",
"used": "Gebraucht"
},
"telemetry": {
"duration": "Dauer",
"interval": "Intervall",
"kafka": "Kafka",
"kafka_success": "Kafka-Telemetrie ist jetzt gestartet!",
"last_update": "Letztes Update",
"minutes": "Protokoll",
"need_types": "Sie müssen mindestens einen Typ auswählen",
"output": "Ausgabemodus",
"seconds_ago": " Vor{{seconds}} Sekunden",
"title": "Telemetrie",
"types": "Typen",
"websocket": "WebSocket"
},
"trace": {
"down": "Nieder",
"download": "Trace herunterladen",
"duration": "Dauer",
"network": "Netzwerk",
"packets": "Pakete",
"success": "Trace auf Gerät Nr.{{serialNumber}}abgeschlossen. Das Ergebnis können Sie jetzt herunterladen",
"up": "Oben",
"wait": "Auf die Ergebnisse warten?"
},
"wifi": {
"active_ms": "Aktiv",
"busy_ms": "Beschäftigt",
"channel_width": "Ch-Breite",
"mode": "Modus",
"noise": "Lärm",
"receive_ms": "Erhalten",
"rx_rate": "Rx-Rate",
"station": "Bahnhof",
"tx_rate": "Tx-Rate",
"vendor": "Verkäufer",
"wifi_analysis": "WLAN-Analyse"
}
},
"crud": {
"add": "Hinzufügen",
"confirm_cancel": "Möchten Sie die vorgenommenen Änderungen wirklich verwerfen?",
@@ -445,6 +610,7 @@
"new_devices": "Neue Geräte",
"not_connected": "Nicht verbunden",
"not_found_gateway": "Fehler: Gerät hat sich noch nicht mit dem Gateway verbunden",
"notifications": "Gerätebenachrichtigungen",
"one": "Gerät",
"reassign_already_owned": "Geräte neu zuweisen, die bereits vorhanden sind und einem anderen Unternehmen/Veranstaltungsort/Abonnenten gehören?",
"sanity": "Gesundheit",
@@ -647,6 +813,18 @@
"my_organization": "Meine Organisation",
"title": "Organisation"
},
"profile": {
"about_me": "Über mich",
"activate": "",
"add_new_note": "Notiz hinzufügen",
"deactivate": "Deaktivieren",
"disabled": "Deaktiviert",
"enabled": "aktiviert",
"manage_avatar": "Avatar verwalten",
"new_password": "Neues Kennwort",
"new_password_confirmation": "Bestätige neues Passwort",
"your_profile": "Dein Profil"
},
"resources": {
"configuration_resource": "Ressource",
"title": "Ressourcen",
@@ -675,6 +853,10 @@
"one": "Serviceklasse",
"other": "Serviceklassen"
},
"statistics": {
"last_stats": "Letzte Statistik",
"memory": "Erinnerung"
},
"subscribers": {
"billing_contact_info": "Rechnungs- und Kontaktdaten",
"claim_device_explanation": "Um Geräte zu beanspruchen, können Sie die folgende Tabelle verwenden. Wenn ein Gerät bereits von einem Benutzer beansprucht wurde, müssen Sie zu dessen Details gehen und die Zuweisung aufheben, bevor Sie es beanspruchen können.",
@@ -692,10 +874,14 @@
"title": "Abonnenten"
},
"system": {
"backend_logs": "Back-End-Protokolle",
"could_not_retrieve": "Fehler: {{name}} Systeminformationen konnten nicht abgerufen werden",
"endpoint": "Endpunkt",
"hostname": "Hostname",
"info": "Systeminformationen",
"level": "Protokollstufe",
"logging": "Protokollierung",
"no_log_levels": "Keine gemeldeten Protokollebenen",
"os": "Betriebssystem",
"processors": "Prozessoren",
"reload_chosen_subsystems": "Ausgewählte Subsysteme neu laden",
@@ -704,6 +890,8 @@
"success_reload": "Reload-Befehl erfolgreich gesendet!",
"systems_to_reload": "Wählen Sie Systeme zum Neuladen aus",
"title": "System",
"update_level_success": "Loglevel aktualisiert!",
"update_levels": "Aktualisieren",
"uptime": "Betriebszeit",
"version": "Ausführung"
},
@@ -744,6 +932,7 @@
"stop_suspension": "Reaktivieren",
"success_sending_validation": "Bestätigungs-E-Mail gesendet!",
"suspend": "Aussetzen",
"suspend_success": "Der Benutzer ist jetzt gesperrt",
"suspended": "Suspendiert",
"title": "Benutzer",
"waitiing_for_email_verification": "E-Mail nicht verifiziert"

View File

@@ -219,6 +219,7 @@
"device_details": "Device Details",
"discard_changes": "Discard Changes?",
"disconnected": "Disconnected",
"display_name": "Display Name",
"download": "Download",
"download_instructions": "Download Successful! If you cannot find the file, please confirm that you are allowing downloads from this website",
"duplicate": "Duplicate",
@@ -277,6 +278,7 @@
"notes": "Notes",
"of": "of",
"password": "Password",
"preview": "Preview",
"quarterly": "Quarterly",
"redirector": "Redirector",
"refresh": "Refresh",
@@ -287,6 +289,7 @@
"save": "Save",
"search": "Search",
"seconds": "Seconds",
"select_all": "Show All",
"select_value": "Select Value",
"sending": "Sending",
"sent_code": "Sent Code!",
@@ -404,6 +407,168 @@
"to_claim": "Contacts to claim",
"visual": "Visual"
},
"controller": {
"configurations": {
"create_success": "Created Configuration!",
"delete_success": "Configuration is now deleted!",
"title": "Default Configurations",
"update_success": "Updated Configuration!"
},
"configure": {
"invalid": "Your new configuration needs to be valid JSON",
"success": "New configuration is now deploying to the device",
"title": "Configure",
"warning": "Be warned: there will only be minimal tests done on this configuration"
},
"crud": {
"choose_time": "Custom Time-Frame",
"clear_time": "Clear Time",
"delete_success_obj": "Deleted {{obj}}"
},
"dashboard": {
"associations": "Associations",
"associations_explanation": "All current connected associations (or UEs)",
"certificates": "Certificates",
"certificates_explanation": "Status of certificates of currently connected devices",
"commands": "Commands",
"commands_explanation": "All executed commands",
"device_dashboard_refresh": "New Connection Statistics",
"device_types": "Device Types",
"device_types_explanation": "Device types of all devices pointing to this controller",
"devices_explanation": "All devices are pointing towards this controller ",
"error_fetching": "Error fetching dashboard",
"expand": "Expand",
"last_ping_explanation": "When this data was gathered ",
"memory": "Memory Use",
"memory_explanation": "Currently connected devices with the corresponding amount of used memory",
"no_certificate": "No Certificate",
"not_connected": "Not Connected",
"others": "Others",
"overall_health": "Overall Health",
"overall_health_explanation": "Average health of all currently connected devices from which we receive health data. The exact calculation is: (Devices=100% * 100 + Devices>90 * 95 + Devices>60 * 75 + Devices<60 * 30) / Connected Devices",
"overall_health_explanation_pie": "The number of devices with a health percentage within these categories",
"serial_mismatch": "Serial Mismatch",
"status": "Status",
"status_explanation": "Status of all devices pointing at this controller ",
"unknown_status": "Unrecognized Status",
"unrecognized": "Unrecognized",
"uptimes": "Uptimes",
"uptimes_explanation": "Currently connected devices with the corresponding uptimes",
"vendors": "Vendors",
"vendors_explanation": "Vendors of the devices pointing to this controller",
"verified": "Verified"
},
"devices": {
"add_blacklist": "Add Serial Number",
"added": "Added",
"added_blacklist": "Added serial number to blacklist!",
"average_uptime": "Average Uptime",
"blacklist": "Blacklist",
"blacklist_update": "Update {{serialNumber}} Record",
"by": "By",
"capabilities": "Capabilities",
"command_one": "Command",
"commands": "Commands",
"complete_data": "Complete Data",
"config_id": "Config ID",
"connecting": "Connecting",
"connection_changes": "Connection Statuses",
"delete_blacklist": "Removed serial number from blacklist!",
"delete_health_explanation": "This will permanently delete all of the health checks before the date you choose",
"delete_logs_explanation": "This will permanently delete all of the logs before the date you choose",
"error_code": "Error Code",
"executed": "Executed",
"finished_reboot": "{{serialNumber}} just finished rebooting!",
"finished_upgrade": "{{serialNumber}} has finished upgrading!",
"from_to": "From {{from}} to {{to}}",
"healthchecks": "Health Checks",
"last_modified": "Last Modified: ",
"last_upgrade": "Last Upgrade",
"localtime": "Local Time",
"logs": "Logs",
"new_statistics": "New Statistics",
"no_more_available": "All Retrieved",
"reason": "Reason",
"results": "Results",
"sent_upgrade_to_latest": "Sent 'Upgrade to Latest' command to device",
"severity": "Severity",
"show_more": "Show More",
"started_reboot": "{{serialNumber}} shut off to reboot!",
"started_upgrade": "{{serialNumber}} just shut down to start the upgrade!",
"trace": "Trace",
"trace_description": "Launch a remote trace of this device for either a specific duration or a number of packets",
"update_success": "Device updated!",
"updated_blacklist": "Updated Blacklist!"
},
"firmware": {
"devices_explanation": "Devices that have pointed towards this firmware server. This could explain discrepancies between this number and the device dashboard's ",
"endpoints": "Endpoints",
"endpoints_explanation": "All endpoints that will point towards this firmware server",
"firmware_age": "Firmware Age",
"firmware_age_explanation": "Average firmware age for the devices for which we have that data",
"latest": "Latest Firmware Installed",
"old_firmware": "Old Firmware",
"ouis_explanation": "OUIs of devices that have connected to this firmware server",
"outdated_one": "Firmware {{count}} day old",
"outdated_other": "Firmware {{count}} days old",
"release": "Release",
"show_dev_releases": "Dev Releases",
"status_explanation": "Connection status of devices that have connected to this firmware server",
"unrecognized": "Unrecognized Firmware",
"unrecognized_firmware": "Unrecognized Firmware",
"unrecognized_firmware_explanation": "Firmware that is currently used by devices and is not recognized by this firmware server",
"up_to_date": "Up To Date Devices",
"up_to_date_explanation": "Devices using the latest available software available to them"
},
"provisioning": {
"title": "Provisioning"
},
"queue": {
"title": "Event Queue"
},
"stats": {
"load": "Load (1 | 5 | 15 m.)",
"seconds_ago": "{{s}} seconds ago",
"used": "used"
},
"telemetry": {
"duration": "Duration",
"interval": "Interval",
"kafka": "Kafka",
"kafka_success": "Kafka telemetry is now started!",
"last_update": "Last Update",
"minutes": "Minutes",
"need_types": "You need to select at least one type",
"output": "Output Mode",
"seconds_ago": "{{seconds}} seconds ago",
"title": "Telemetry",
"types": "Types",
"websocket": "WebSocket"
},
"trace": {
"down": "Down",
"download": "Download Trace",
"duration": "Duration",
"network": "Network",
"packets": "Packets",
"success": "Completed trace on device #{{serialNumber}}. You can now download the result",
"up": "Up",
"wait": "Wait for the results?"
},
"wifi": {
"active_ms": "Active",
"busy_ms": "Busy",
"channel_width": "Ch Width",
"mode": "Mode",
"noise": "Noise",
"receive_ms": "Receive",
"rx_rate": "Rx Rate",
"station": "Station",
"tx_rate": "Tx Rate",
"vendor": "Vendor",
"wifi_analysis": "Wi-Fi Analysis "
}
},
"crud": {
"add": "Add",
"confirm_cancel": "Are you sure you want to discard the changes you have made?",
@@ -445,6 +610,7 @@
"new_devices": "new devices",
"not_connected": "Not Connected",
"not_found_gateway": "Error: device has not yet connected to the controller",
"notifications": "Device Notifications",
"one": "Device",
"reassign_already_owned": "Reassign devices which already exist and are owned by another entity/venue/subscriber?",
"sanity": "Sanity",
@@ -524,7 +690,7 @@
"invalid_port_range": "Invalid port value. It needs to be more than 0 and less than 65 535. If using a port range, please make sure the second port is a higher number than the first one.",
"invalid_port_ranges": "Invalid port range combination! Please make sure both port values are the same type (single or range). If they are ranges, make sure they are both covering the same amount of ports",
"invalid_proto_6g": "This encryption protocol cannot be used on an SSID which uses 6G",
"invalid_proto_passpoint": "This encryption protocol cannot be used with a passpoint SSID. Please select a protocol which can use Radius",
"invalid_proto_passpoint": "",
"invalid_select_ports": "Incompatible values between interfaces! Please make sure that there is no duplicate PORT/VLAN ID combination between your interfaces",
"invalid_third_party": "Invalid Third Party JSON string. Please confirm that your value is a valid JSON",
"key_file_explanation": "Please use a .pem file that starts with \"-----BEGIN PRIVATE KEY-----\" and ends with \"-----END PRIVATE KEY-----\"",
@@ -647,6 +813,18 @@
"my_organization": "My Organization",
"title": "Organization"
},
"profile": {
"about_me": "About Me",
"activate": "Activate",
"add_new_note": "Add Note",
"deactivate": "Deactivate",
"disabled": "Disabled",
"enabled": "Enabled",
"manage_avatar": "Manage Avatar",
"new_password": "New Password",
"new_password_confirmation": "Confirm New Password",
"your_profile": "Your Profile"
},
"resources": {
"configuration_resource": "Resource",
"title": "Resources",
@@ -675,6 +853,10 @@
"one": "Service Class",
"other": "Service Classes"
},
"statistics": {
"last_stats": "Last Statistics",
"memory": "Memory"
},
"subscribers": {
"billing_contact_info": "Billing and Contact Details",
"claim_device_explanation": "To claim devices you can use the table below. If a device was already claimed by a user, you will need to go to to their details and unassign it before claiming it.",
@@ -692,10 +874,14 @@
"title": "Subscribers"
},
"system": {
"backend_logs": "Back-End Logs",
"could_not_retrieve": "Error: could not retrieve {{name}} system information",
"endpoint": "Endpoint",
"hostname": "Host Name",
"info": "System Info",
"level": "Log Level",
"logging": "Logging",
"no_log_levels": "No Reported Log Levels ",
"os": "Operating System",
"processors": "Processors",
"reload_chosen_subsystems": "Reload Chosen Subsystems",
@@ -704,6 +890,8 @@
"success_reload": "Successfully sent reload command!",
"systems_to_reload": "Choose systems to reload",
"title": "System",
"update_level_success": "Updated log levels!",
"update_levels": "Update",
"uptime": "Uptime",
"version": "Version"
},
@@ -744,6 +932,7 @@
"stop_suspension": "Re-activate",
"success_sending_validation": "Validation email sent!",
"suspend": "Suspend",
"suspend_success": "User is now suspended",
"suspended": "Suspended",
"title": "Users",
"waitiing_for_email_verification": "Email Not Verified"

View File

@@ -219,6 +219,7 @@
"device_details": "Detalles del dispositivo",
"discard_changes": "¿Descartar los cambios?",
"disconnected": "Desconectado",
"display_name": "Nombre para mostrar",
"download": "Descargar",
"download_instructions": "¡Descarga Exitosa! Si no puede encontrar el archivo, confirme que está permitiendo las descargas desde este sitio web",
"duplicate": "Duplicar",
@@ -277,6 +278,7 @@
"notes": "Notas",
"of": "de",
"password": "Contraseña",
"preview": "Avance",
"quarterly": "Trimestral",
"redirector": "redirector",
"refresh": "Refrescar",
@@ -287,6 +289,7 @@
"save": "Salvar",
"search": "Buscar",
"seconds": "Segundos",
"select_all": "Mostrar todo",
"select_value": "Selecciona valor",
"sending": "Enviando",
"sent_code": "¡Código enviado!",
@@ -404,6 +407,168 @@
"to_claim": "Contactos para reclamar",
"visual": "Visual"
},
"controller": {
"configurations": {
"create_success": "¡Configuración creada!",
"delete_success": "¡La configuración ahora está eliminada!",
"title": "Configuraciones predeterminadas",
"update_success": "¡Configuración actualizada!"
},
"configure": {
"invalid": "Su nueva configuración debe ser JSON válido",
"success": "La nueva configuración ahora se está implementando en el dispositivo",
"title": "configurar",
"warning": "Tenga cuidado: solo se realizarán pruebas mínimas en esta configuración"
},
"crud": {
"choose_time": "Marco de tiempo personalizado",
"clear_time": "Tiempo claro",
"delete_success_obj": "Eliminado {{obj}}"
},
"dashboard": {
"associations": "Asociaciones",
"associations_explanation": "Todas las asociaciones conectadas actuales (o UE)",
"certificates": "Certificados",
"certificates_explanation": "Estado de los certificados de los dispositivos actualmente conectados",
"commands": "comandos",
"commands_explanation": "Todos los comandos ejecutados",
"device_dashboard_refresh": "Nuevas estadísticas de conexión",
"device_types": "Tipos de dispositivos",
"device_types_explanation": "Tipos de dispositivos de todos los dispositivos que apuntan a este controlador",
"devices_explanation": "Todos los dispositivos apuntan hacia este punto final del controlador",
"error_fetching": "Error al obtener el panel",
"expand": "Expandir",
"last_ping_explanation": "Cuando se recopilaron estos datos",
"memory": "Uso de memoria",
"memory_explanation": "Dispositivos conectados actualmente con la cantidad correspondiente de memoria utilizada",
"no_certificate": "Sin certificado",
"not_connected": "No conectado",
"others": "Otros",
"overall_health": "Salud en general",
"overall_health_explanation": "Salud promedio de todos los dispositivos actualmente conectados de los cuales recibimos datos de salud. El cálculo exacto es: (Dispositivos=100% * 100 + Dispositivos>90 * 95 + Dispositivos>60 * 75 + Dispositivos<60 * 30) / Dispositivos conectados",
"overall_health_explanation_pie": "La cantidad de dispositivos con un porcentaje de salud dentro de estas categorías",
"serial_mismatch": "Discrepancia de serie",
"status": "Estado",
"status_explanation": "Estado de todos los dispositivos que apuntan a este punto final del controlador",
"unknown_status": "Estado no reconocido",
"unrecognized": "Poco reconocido",
"uptimes": "",
"uptimes_explanation": "Dispositivos conectados actualmente con los tiempos de actividad correspondientes",
"vendors": "Vendedores",
"vendors_explanation": "Proveedores de los dispositivos que apuntan a este controlador",
"verified": "Verificado"
},
"devices": {
"add_blacklist": "Agregar número de serie",
"added": "Adicional",
"added_blacklist": "¡Número de serie agregado a la lista negra!",
"average_uptime": "Tiempo de actividad promedio",
"blacklist": "Lista negra",
"blacklist_update": "Actualizar registro {{serialNumber}} ",
"by": "Por",
"capabilities": "capacidades",
"command_one": "Mando",
"commands": "comandos",
"complete_data": "Datos completos",
"config_id": "ID de configuración",
"connecting": "Conectando",
"connection_changes": "Estados de conexión",
"delete_blacklist": "¡Se eliminó el número de serie de la lista negra!",
"delete_health_explanation": "Esto eliminará de forma permanente todas las comprobaciones de estado antes de la fecha que elija",
"delete_logs_explanation": "Esto eliminará permanentemente todos los registros anteriores a la fecha que elija",
"error_code": "código de error",
"executed": "ejecutado",
"finished_reboot": " ¡{{serialNumber}} acaba de terminar de reiniciarse!",
"finished_upgrade": " ¡{{serialNumber}} ha terminado de actualizarse!",
"from_to": "De {{from}} a {{to}}",
"healthchecks": "Chequeos de salud",
"last_modified": "Última modificación:",
"last_upgrade": "Última actualización",
"localtime": "Hora local",
"logs": "registros",
"new_statistics": "Nuevas estadísticas",
"no_more_available": "Todo recuperado",
"reason": "Razón",
"results": "Resultados",
"sent_upgrade_to_latest": "Se envió el comando 'Actualizar a la última' al dispositivo",
"severity": "Gravedad",
"show_more": "Mostrar más",
"started_reboot": " ¡{{serialNumber}} apague para reiniciar!",
"started_upgrade": " ¡{{serialNumber}} simplemente apague para iniciar la actualización!",
"trace": "Rastro",
"trace_description": "Lanzar un rastreo remoto de este dispositivo por una duración específica o por una cantidad de paquetes",
"update_success": "¡Dispositivo actualizado!",
"updated_blacklist": "¡Lista negra actualizada!"
},
"firmware": {
"devices_explanation": "Dispositivos que han apuntado hacia este servidor de firmware. Esto podría explicar las discrepancias entre este número y el tablero del dispositivo.",
"endpoints": "Puntos finales",
"endpoints_explanation": "Todos los puntos finales que apuntarán hacia este servidor de firmware",
"firmware_age": "Edad del firmware",
"firmware_age_explanation": "Antigüedad media del firmware de los dispositivos de los que tenemos esos datos",
"latest": "Último firmware instalado",
"old_firmware": "Firmware antiguo",
"ouis_explanation": "OUI de dispositivos que se han conectado a este servidor de firmware",
"outdated_one": "Firmware {{count}} día de antigüedad",
"outdated_other": "Firmware de {{count}} días de antigüedad",
"release": "Lanzamiento",
"show_dev_releases": "Lanzamientos de desarrollo",
"status_explanation": "Estado de conexión de los dispositivos que se han conectado a este servidor de firmware",
"unrecognized": "Firmware no reconocido",
"unrecognized_firmware": "Firmware no reconocido",
"unrecognized_firmware_explanation": "Firmware que utilizan actualmente los dispositivos y no es reconocido por este servidor de firmware",
"up_to_date": "Dispositivos actualizados",
"up_to_date_explanation": "Dispositivos que utilizan el último software disponible disponible para ellos"
},
"provisioning": {
"title": "Aprovisionamiento"
},
"queue": {
"title": "Cola de eventos"
},
"stats": {
"load": "Carga (1 | 5 | 15 m.)",
"seconds_ago": " Hace {{s}} segundos",
"used": "Usado"
},
"telemetry": {
"duration": "Duración",
"interval": "intervalo",
"kafka": "Kafka",
"kafka_success": "¡La telemetría de Kafka ya ha comenzado!",
"last_update": "Última actualización",
"minutes": "Minutos",
"need_types": "Debe seleccionar al menos un tipo",
"output": "Modo de salida",
"seconds_ago": " Hace{{seconds}} segundos",
"title": "Telemetria",
"types": "Los tipos",
"websocket": "WebSocket"
},
"trace": {
"down": "ABAJO",
"download": "Descargar seguimiento",
"duration": "Duración",
"network": "Red",
"packets": "Paquetes",
"success": "Rastreo completado en el dispositivo #{{serialNumber}}. Ya puedes descargar el resultado.",
"up": "Arriba",
"wait": "¿Esperar los resultados?"
},
"wifi": {
"active_ms": "Activo",
"busy_ms": "Ocupado",
"channel_width": "ancho de canal",
"mode": "Modo",
"noise": "Ruido",
"receive_ms": "Recibir",
"rx_rate": "Tasa de prescripción",
"station": "Estación",
"tx_rate": "Tasa de transmisión",
"vendor": "Vendedor",
"wifi_analysis": "Análisis de Wi-Fi"
}
},
"crud": {
"add": "Añadir",
"confirm_cancel": "¿Está seguro de que desea descartar los cambios que ha realizado?",
@@ -445,6 +610,7 @@
"new_devices": "Nuevos dispositivos",
"not_connected": "No conectado",
"not_found_gateway": "Error: el dispositivo aún no se ha conectado a la puerta de enlace",
"notifications": "notificaciones de dispositivos",
"one": "Dispositivo",
"reassign_already_owned": "¿Reasignar dispositivos que ya existen y son propiedad de otra entidad/lugar/suscriptor?",
"sanity": "Cordura",
@@ -647,6 +813,18 @@
"my_organization": "MI ORGANIZACION",
"title": "Organización"
},
"profile": {
"about_me": "Sobre mí",
"activate": "",
"add_new_note": "Añadir la nota",
"deactivate": "Desactivar",
"disabled": "Discapacitado",
"enabled": "Habilitado",
"manage_avatar": "Administrar avatar",
"new_password": "Nueva contraseña",
"new_password_confirmation": "confirmar nueva contraseña",
"your_profile": "Tu Perfil"
},
"resources": {
"configuration_resource": "Recurso",
"title": "Recursos",
@@ -675,6 +853,10 @@
"one": "Clase de servicio",
"other": "Clases de servicio"
},
"statistics": {
"last_stats": "Últimas estadísticas",
"memory": "Memoria"
},
"subscribers": {
"billing_contact_info": "Detalles de facturación y contacto",
"claim_device_explanation": "Para reclamar dispositivos, puede usar la tabla a continuación. Si un dispositivo ya fue reclamado por un usuario, deberá ir a sus detalles y anular la asignación antes de reclamarlo.",
@@ -692,10 +874,14 @@
"title": "Suscriptores"
},
"system": {
"backend_logs": "Registros de back-end",
"could_not_retrieve": "Error: no se pudo recuperar la información del sistema {{name}} ",
"endpoint": "punto final",
"hostname": "Nombre de host",
"info": "Información del sistema",
"level": "nivel de registro",
"logging": "Inicio sesión",
"no_log_levels": "Niveles de registro no informados",
"os": "sistema operativo",
"processors": "Procesadores",
"reload_chosen_subsystems": "Recargar subsistemas elegidos",
@@ -704,6 +890,8 @@
"success_reload": "¡Comando de recarga enviado con éxito!",
"systems_to_reload": "Elige sistemas para recargar",
"title": "Sistema",
"update_level_success": "¡Niveles de registro actualizados!",
"update_levels": "Actualizar",
"uptime": "Tiempo de actividad",
"version": "Versión"
},
@@ -744,6 +932,7 @@
"stop_suspension": "reactivar",
"success_sending_validation": "¡Correo electrónico de validación enviado!",
"suspend": "Suspender",
"suspend_success": "El usuario ahora está suspendido",
"suspended": "Suspendido",
"title": "Usuarios",
"waitiing_for_email_verification": "Correo electrónico no verificado"

View File

@@ -219,6 +219,7 @@
"device_details": "Détails de l'appareil",
"discard_changes": "Annuler les modifications?",
"disconnected": "Débranché",
"display_name": "Afficher un nom",
"download": "Télécharger",
"download_instructions": "Téléchargement réussi ! Si vous ne trouvez pas le fichier, veuillez confirmer que vous autorisez les téléchargements à partir de ce site Web",
"duplicate": "Dupliquer",
@@ -277,6 +278,7 @@
"notes": "Remarques",
"of": "De",
"password": "Mot de passe",
"preview": "Aperçu",
"quarterly": "TRIMESTRIEL",
"redirector": "redirecteur",
"refresh": "Rafraîchir",
@@ -287,6 +289,7 @@
"save": "sauvegarder",
"search": "Chercher",
"seconds": "Secondes",
"select_all": "Montre tout",
"select_value": "Sélectionnez une valeur",
"sending": "Envoi",
"sent_code": "Code envoyé !",
@@ -404,6 +407,168 @@
"to_claim": "Contacts pour réclamer",
"visual": "Visuel"
},
"controller": {
"configurations": {
"create_success": "Configuration créée !",
"delete_success": "La configuration est maintenant supprimée !",
"title": "Configurations par défaut",
"update_success": "Configuration mise à jour !"
},
"configure": {
"invalid": "Votre nouvelle configuration doit être valide JSON",
"success": "La nouvelle configuration est en cours de déploiement sur l'appareil",
"title": "configurer",
"warning": "Soyez averti : il n'y aura que des tests minimaux effectués sur cette configuration."
},
"crud": {
"choose_time": "Délai personnalisé",
"clear_time": "Effacer le temps",
"delete_success_obj": "Supprimé {{obj}}"
},
"dashboard": {
"associations": "Les associations",
"associations_explanation": "Toutes les associations (ou UE) actuellement connectées",
"certificates": "Certificats",
"certificates_explanation": "État des certificats des appareils actuellement connectés",
"commands": "Les commandes",
"commands_explanation": "Toutes les commandes exécutées",
"device_dashboard_refresh": "Nouvelles statistiques de connexion",
"device_types": "Types d'appareils",
"device_types_explanation": "Types d'appareils de tous les appareils pointant vers ce contrôleur",
"devices_explanation": "Tous les appareils pointent vers ce point de terminaison du contrôleur",
"error_fetching": "Erreur lors de la récupération du tableau de bord",
"expand": "Développer",
"last_ping_explanation": "Lorsque ces données ont été recueillies",
"memory": "Utilisation de la mémoire",
"memory_explanation": "Appareils actuellement connectés avec la quantité de mémoire utilisée correspondante",
"no_certificate": "Aucun certificat",
"not_connected": "Pas connecté",
"others": "autres",
"overall_health": "Santé globale",
"overall_health_explanation": "Santé moyenne de tous les appareils actuellement connectés à partir desquels nous recevons des données de santé. Le calcul exact est : (Appareils=100 % * 100 + Appareils>90 * 95 + Appareils>60 * 75 + Appareils<60 * 30) / Appareils connectés",
"overall_health_explanation_pie": "Le nombre d'appareils avec un pourcentage de santé dans ces catégories",
"serial_mismatch": "Incompatibilité de série",
"status": "Statut",
"status_explanation": "État de tous les appareils pointant vers ce point de terminaison de contrôleur",
"unknown_status": "Statut non reconnu",
"unrecognized": "Méconnu",
"uptimes": "",
"uptimes_explanation": "Appareils actuellement connectés avec les temps de disponibilité correspondants",
"vendors": "Vendeurs",
"vendors_explanation": "Fournisseurs des appareils pointant vers ce contrôleur",
"verified": "Vérifié"
},
"devices": {
"add_blacklist": "Ajouter un numéro de série",
"added": "Ajoutée",
"added_blacklist": "Numéro de série ajouté à la liste noire !",
"average_uptime": "Disponibilité moyenne",
"blacklist": "Liste noire",
"blacklist_update": "Mettre à jour {{serialNumber}} enregistrement",
"by": "Par",
"capabilities": "Capacités",
"command_one": "Commander",
"commands": "Les commandes",
"complete_data": "Données complètes",
"config_id": "Identifiant de configuration",
"connecting": "De liaison",
"connection_changes": "États de connexion",
"delete_blacklist": "Numéro de série supprimé de la liste noire !",
"delete_health_explanation": "Cela supprimera définitivement tous les bilans de santé avant la date que vous avez choisie",
"delete_logs_explanation": "Cela supprimera définitivement tous les journaux avant la date que vous choisissez",
"error_code": "Code d'erreur",
"executed": "réalisé",
"finished_reboot": "{{serialNumber}} vient de terminer le redémarrage !",
"finished_upgrade": "{{serialNumber}} a terminé la mise à jour !",
"from_to": "de {{from}} à {{to}}",
"healthchecks": "Bilans de santé",
"last_modified": "Dernière modification:",
"last_upgrade": "Dernière mise à jour",
"localtime": "heure locale",
"logs": "LOGS",
"new_statistics": "Nouvelles statistiques",
"no_more_available": "Tous récupérés",
"reason": "raison",
"results": "Résultats",
"sent_upgrade_to_latest": "Commande \"Mettre à niveau vers la dernière version\" envoyée à l'appareil",
"severity": "Gravité",
"show_more": "Montre plus",
"started_reboot": "{{serialNumber}} s'éteint pour redémarrer !",
"started_upgrade": "{{serialNumber}} vient de s'arrêter pour commencer la mise à jour !",
"trace": "Trace",
"trace_description": "Lancer une trace à distance de cet appareil pour une durée spécifique ou un nombre de paquets",
"update_success": "Appareil mis à jour !",
"updated_blacklist": "Liste noire mise à jour !"
},
"firmware": {
"devices_explanation": "Périphériques qui ont pointé vers ce serveur de firmware. Cela pourrait expliquer les écarts entre ce nombre et le tableau de bord de l'appareil",
"endpoints": "Points de terminaison",
"endpoints_explanation": "Tous les terminaux pointant vers ce serveur de firmware",
"firmware_age": "Âge du micrologiciel",
"firmware_age_explanation": "Âge moyen du micrologiciel des appareils pour lesquels nous disposons de ces données",
"latest": "Dernier micrologiciel installé",
"old_firmware": "Ancien micrologiciel",
"ouis_explanation": "OUI des appareils qui se sont connectés à ce serveur de firmware",
"outdated_one": "Micrologiciel vieux de {{count}} jours",
"outdated_other": "Micrologiciel vieux de {{count}} jours",
"release": "libération",
"show_dev_releases": "Versions de développement",
"status_explanation": "État de connexion des appareils qui se sont connectés à ce serveur de micrologiciel",
"unrecognized": "Micrologiciel non reconnu",
"unrecognized_firmware": "Micrologiciel non reconnu",
"unrecognized_firmware_explanation": "Firmware actuellement utilisé par les appareils et non reconnu par ce serveur de firmware",
"up_to_date": "Appareils à jour",
"up_to_date_explanation": "Appareils utilisant les derniers logiciels disponibles à leur disposition"
},
"provisioning": {
"title": "Provisioning"
},
"queue": {
"title": "File d'attente d'événements"
},
"stats": {
"load": "Charge (1 | 5 | 15 m.)",
"seconds_ago": " Il y a {{s}} secondes",
"used": "Utilisé"
},
"telemetry": {
"duration": "Durée",
"interval": "Intervalle",
"kafka": "Kafka",
"kafka_success": "La télémétrie Kafka est maintenant lancée !",
"last_update": "Dernière mise à jour",
"minutes": "Minutes",
"need_types": "Vous devez sélectionner au moins un type",
"output": "Mode de sortie",
"seconds_ago": " Il y a{{seconds}} secondes",
"title": "Télémétrie",
"types": "Les types",
"websocket": "Websocket"
},
"trace": {
"down": "VERS LE BAS",
"download": "Télécharger Trace",
"duration": "Durée",
"network": "Réseau",
"packets": "Paquets",
"success": "Suivi terminé sur l'appareil n° {{serialNumber}}. Vous pouvez maintenant télécharger le résultat",
"up": "UP",
"wait": "Attendre les résultats ?"
},
"wifi": {
"active_ms": "actif",
"busy_ms": "Occupé",
"channel_width": "Largeur Ch",
"mode": "Mode",
"noise": "Bruit",
"receive_ms": "Recevoir",
"rx_rate": "Taux de réception",
"station": "Station",
"tx_rate": "Taux d'émission",
"vendor": "vendeur",
"wifi_analysis": "Analyse Wi-Fi"
}
},
"crud": {
"add": "Ajouter",
"confirm_cancel": "Voulez-vous vraiment annuler les modifications que vous avez apportées ?",
@@ -445,6 +610,7 @@
"new_devices": "nouveaux appareils",
"not_connected": "Pas connecté",
"not_found_gateway": "Erreur : l'appareil n'est pas encore connecté à la passerelle",
"notifications": "notifications de l'appareil",
"one": "Dispositif",
"reassign_already_owned": "Réattribuer des appareils qui existent déjà et qui appartiennent à une autre entité/salle/abonné ?",
"sanity": "Santé mentale",
@@ -647,6 +813,18 @@
"my_organization": "Mon organisation",
"title": "Organisation"
},
"profile": {
"about_me": "À propos de moi",
"activate": "",
"add_new_note": "Ajouter une note",
"deactivate": "Désactiver",
"disabled": "Désactivé",
"enabled": "Activée",
"manage_avatar": "Gérer l'avatar",
"new_password": "Nouveau mot de passe",
"new_password_confirmation": "Confirmer le nouveau mot de passe",
"your_profile": "Votre profil"
},
"resources": {
"configuration_resource": "ressource",
"title": "Ressources",
@@ -675,6 +853,10 @@
"one": "Classe de service",
"other": "Catégories de services"
},
"statistics": {
"last_stats": "Dernières statistiques",
"memory": "mémoire"
},
"subscribers": {
"billing_contact_info": "Facturation et coordonnées",
"claim_device_explanation": "Pour réclamer des appareils, vous pouvez utiliser le tableau ci-dessous. Si un appareil a déjà été réclamé par un utilisateur, vous devrez accéder à ses détails et le désattribuer avant de le réclamer.",
@@ -692,10 +874,14 @@
"title": "Les abonnés"
},
"system": {
"backend_logs": "Journaux principaux",
"could_not_retrieve": "Erreur : impossible de récupérer les informations système {{name}} ",
"endpoint": "Point final",
"hostname": "nom d'hôte",
"info": "Information système",
"level": "niveau de journal",
"logging": "Enregistrement",
"no_log_levels": "Aucun niveau de journal signalé",
"os": "Système opérateur",
"processors": "Processeurs",
"reload_chosen_subsystems": "Recharger les sous-systèmes choisis",
@@ -704,6 +890,8 @@
"success_reload": "Commande de rechargement envoyée avec succès !",
"systems_to_reload": "Choisissez les systèmes à recharger",
"title": "Système",
"update_level_success": "Niveaux de journal mis à jour !",
"update_levels": "Mettre à jour",
"uptime": "La disponibilité",
"version": "Version"
},
@@ -744,6 +932,7 @@
"stop_suspension": "Réactiver",
"success_sending_validation": "E-mail de validation envoyé !",
"suspend": "Suspendre",
"suspend_success": "L'utilisateur est maintenant suspendu",
"suspended": "Suspendu",
"title": "utilisateurs",
"waitiing_for_email_verification": "Email non vérifié"

View File

@@ -219,6 +219,7 @@
"device_details": "Detalhes do dispositivo",
"discard_changes": "Descartar mudanças?",
"disconnected": "Desconectado",
"display_name": "Mostrar nome",
"download": "Baixar",
"download_instructions": "Baixe com sucesso! Se você não conseguir encontrar o arquivo, confirme se está permitindo downloads deste site",
"duplicate": "Duplicado",
@@ -277,6 +278,7 @@
"notes": "notas",
"of": "Do",
"password": "Senha",
"preview": "Visualizar",
"quarterly": "Trimestral",
"redirector": "Redirecionador",
"refresh": "REFRESH",
@@ -287,6 +289,7 @@
"save": "Salve ",
"search": "Procurar",
"seconds": "Segundos",
"select_all": "mostre tudo",
"select_value": "Selecione o valor",
"sending": "Enviando",
"sent_code": "Código enviado!",
@@ -404,6 +407,168 @@
"to_claim": "Contatos para reivindicar",
"visual": "Visual"
},
"controller": {
"configurations": {
"create_success": "Configuração criada!",
"delete_success": "A configuração agora foi excluída!",
"title": "Configurações padrão",
"update_success": "Configuração atualizada!"
},
"configure": {
"invalid": "Sua nova configuração precisa ser um JSON válido",
"success": "A nova configuração está sendo implantada no dispositivo",
"title": "configurar",
"warning": "Esteja avisado: haverá apenas testes mínimos feitos nesta configuração"
},
"crud": {
"choose_time": "Período personalizado",
"clear_time": "Tempo de limpeza",
"delete_success_obj": "Excluído {{obj}}"
},
"dashboard": {
"associations": "Associações",
"associations_explanation": "Todas as associações conectadas atuais (ou UEs)",
"certificates": "Certificados",
"certificates_explanation": "Status dos certificados dos dispositivos atualmente conectados",
"commands": "comandos",
"commands_explanation": "Todos os comandos executados",
"device_dashboard_refresh": "Novas estatísticas de conexão",
"device_types": "Tipos de dispositivos",
"device_types_explanation": "Tipos de dispositivos de todos os dispositivos que apontam para este controlador",
"devices_explanation": "Todos os dispositivos estão apontando para este endpoint do controlador",
"error_fetching": "Erro ao buscar o painel",
"expand": "Expandir",
"last_ping_explanation": "Quando esses dados foram coletados",
"memory": "Uso de memória",
"memory_explanation": "Dispositivos atualmente conectados com a quantidade correspondente de memória usada",
"no_certificate": "Sem certificado",
"not_connected": "Não conectado",
"others": "outras",
"overall_health": "Saúde geral",
"overall_health_explanation": "Saúde média de todos os dispositivos atualmente conectados dos quais recebemos dados de saúde. O cálculo exato é: (Dispositivos = 100% * 100 + Dispositivos> 90 * 95 + Dispositivos> 60 * 75 + Dispositivos <60 * 30) / Dispositivos conectados",
"overall_health_explanation_pie": "O número de dispositivos com uma porcentagem de integridade nessas categorias",
"serial_mismatch": "Incompatibilidade de série",
"status": "Status",
"status_explanation": "Status de todos os dispositivos que apontam para este endpoint do controlador",
"unknown_status": "Status não reconhecido",
"unrecognized": "Não reconhecido",
"uptimes": "",
"uptimes_explanation": "Dispositivos atualmente conectados com os tempos de atividade correspondentes",
"vendors": "Vendedores",
"vendors_explanation": "Fornecedores dos dispositivos que apontam para este controlador",
"verified": "Verificado"
},
"devices": {
"add_blacklist": "Adicionar número de série",
"added": "Adicionado",
"added_blacklist": "Número de série adicionado à lista negra!",
"average_uptime": "Tempo de atividade médio",
"blacklist": "Lista negra",
"blacklist_update": "Atualizar registro {{serialNumber}} ",
"by": "Por",
"capabilities": "Recursos",
"command_one": "Comando",
"commands": "comandos",
"complete_data": "Dados completos",
"config_id": "ID de configuração",
"connecting": "Conectando",
"connection_changes": "Status de conexão",
"delete_blacklist": "Removido o número de série da lista negra!",
"delete_health_explanation": "Isso excluirá permanentemente todas as verificações de integridade antes da data escolhida",
"delete_logs_explanation": "Isso excluirá permanentemente todos os logs antes da data que você escolher",
"error_code": "Erro de código",
"executed": "Executado",
"finished_reboot": "{{serialNumber}} acabou de reiniciar!",
"finished_upgrade": "{{serialNumber}} concluiu o upgrade!",
"from_to": "De {{from}} a {{to}}",
"healthchecks": "Verificações de integridade",
"last_modified": "Última modificação:",
"last_upgrade": "Última atualização",
"localtime": "Horário local",
"logs": "toras",
"new_statistics": "Novas estatísticas",
"no_more_available": "Todos recuperados",
"reason": "RAZÃO",
"results": "resultados",
"sent_upgrade_to_latest": "Enviado o comando 'Atualizar para o mais recente' para o dispositivo",
"severity": "Gravidade",
"show_more": "Mostre mais",
"started_reboot": "{{serialNumber}} desligue para reiniciar!",
"started_upgrade": "{{serialNumber}} apenas desligue para iniciar o upgrade!",
"trace": "Vestígio",
"trace_description": "Lançar um rastreamento remoto deste dispositivo para uma duração específica ou um número de pacotes",
"update_success": "Dispositivo atualizado!",
"updated_blacklist": "Lista negra atualizada!"
},
"firmware": {
"devices_explanation": "Dispositivos que apontaram para este servidor de firmware. Isso pode explicar as discrepâncias entre esse número e o do painel do dispositivo",
"endpoints": "Pontos finais",
"endpoints_explanation": "Todos os endpoints que apontarão para este servidor de firmware",
"firmware_age": "Idade do Firmware",
"firmware_age_explanation": "Idade média do firmware para os dispositivos para os quais temos esses dados",
"latest": "Último firmware instalado",
"old_firmware": "Firmware antigo",
"ouis_explanation": "OUIs de dispositivos que se conectaram a este servidor de firmware",
"outdated_one": "Firmware com {{count}} dias",
"outdated_other": "Firmware com {{count}} dias",
"release": "LANÇAMENTO",
"show_dev_releases": "Lançamentos do desenvolvedor",
"status_explanation": "Status da conexão dos dispositivos que se conectaram a este servidor de firmware",
"unrecognized": "Firmware não reconhecido",
"unrecognized_firmware": "Firmware não reconhecido",
"unrecognized_firmware_explanation": "Firmware que é usado atualmente por dispositivos e não é reconhecido por este servidor de firmware",
"up_to_date": "Dispositivos atualizados",
"up_to_date_explanation": "Dispositivos usando o software mais recente disponível para eles"
},
"provisioning": {
"title": "Provisioning"
},
"queue": {
"title": "Fila de Eventos"
},
"stats": {
"load": "Carga (1 | 5 | 15 m.)",
"seconds_ago": "{{s}} segundos atrás",
"used": "Usava"
},
"telemetry": {
"duration": "Duração",
"interval": "intervalo",
"kafka": "Kafka",
"kafka_success": "A telemetria Kafka está agora iniciada!",
"last_update": "Última atualização",
"minutes": "Minutos",
"need_types": "Você precisa selecionar pelo menos um tipo",
"output": "Modo de saída",
"seconds_ago": "{{seconds}} segundos atrás",
"title": "Telemetria",
"types": "Tipos",
"websocket": "WebSocket"
},
"trace": {
"down": "BAIXA",
"download": "Baixar rastreamento",
"duration": "Duração",
"network": "Rede",
"packets": "Pacotes",
"success": "Rastreamento concluído no dispositivo #{{serialNumber}}. Agora você pode baixar o resultado",
"up": "acima",
"wait": "Esperar os resultados?"
},
"wifi": {
"active_ms": "Ativo",
"busy_ms": "Ocupado",
"channel_width": "Largura do canal",
"mode": "Modo",
"noise": "Barulho",
"receive_ms": "Receber",
"rx_rate": "Taxa Rx",
"station": "estação",
"tx_rate": "Taxa Tx",
"vendor": "fornecedor",
"wifi_analysis": "Análise de Wi-Fi"
}
},
"crud": {
"add": "Adicionar",
"confirm_cancel": "Tem certeza de que deseja descartar as alterações feitas?",
@@ -445,6 +610,7 @@
"new_devices": "novos dispositivos",
"not_connected": "Não conectado",
"not_found_gateway": "Erro: o dispositivo ainda não se conectou ao gateway",
"notifications": "Notificações do dispositivo",
"one": "Dispositivo",
"reassign_already_owned": "Reatribuir dispositivos que já existem e são de propriedade de outra entidade/local/assinante?",
"sanity": "Sanidade",
@@ -647,6 +813,18 @@
"my_organization": "Minha organização",
"title": "Organização"
},
"profile": {
"about_me": "Sobre mim",
"activate": "",
"add_new_note": "Adicionar nota",
"deactivate": "Desativar",
"disabled": "Desativado",
"enabled": "ativado",
"manage_avatar": "Gerenciar Avatar",
"new_password": "Nova senha",
"new_password_confirmation": "confirme a nova senha",
"your_profile": "Seu perfil"
},
"resources": {
"configuration_resource": "recurso",
"title": "Recursos",
@@ -675,6 +853,10 @@
"one": "Classe de serviço",
"other": "Classes de serviço"
},
"statistics": {
"last_stats": "Últimas estatísticas",
"memory": "Memória"
},
"subscribers": {
"billing_contact_info": "Detalhes de cobrança e contato",
"claim_device_explanation": "Para reivindicar dispositivos, você pode usar a tabela abaixo. Se um dispositivo já foi reivindicado por um usuário, você precisará acessar os detalhes dele e cancelar a atribuição antes de reivindicá-lo.",
@@ -692,10 +874,14 @@
"title": "Inscritos"
},
"system": {
"backend_logs": "Registros de back-end",
"could_not_retrieve": "Erro: não foi possível recuperar {{name}} informações do sistema",
"endpoint": "Ponto final",
"hostname": "Nome de anfitrião",
"info": "Informação do sistema",
"level": "nível de log",
"logging": "Exploração madeireira",
"no_log_levels": "Nenhum nível de registro relatado",
"os": "Sistema Operacional",
"processors": "Processadores",
"reload_chosen_subsystems": "Recarregar Subsistemas Escolhidos",
@@ -704,6 +890,8 @@
"success_reload": "Comando de recarga enviado com sucesso!",
"systems_to_reload": "Escolha sistemas para recarregar",
"title": "Sistema",
"update_level_success": "Níveis de log atualizados!",
"update_levels": "Atualizar",
"uptime": "Tempo de atividade",
"version": "Versão"
},
@@ -744,6 +932,7 @@
"stop_suspension": "Reativar",
"success_sending_validation": "Email de validação enviado!",
"suspend": "Suspender",
"suspend_success": "O usuário agora está suspenso",
"suspended": "Suspenso",
"title": "Comercial",
"waitiing_for_email_verification": "Email não verificado"

BIN
public/mstile-150x150.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.9 KiB

View File

@@ -0,0 +1,38 @@
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
<svg version="1.0" xmlns="http://www.w3.org/2000/svg"
width="744.000000pt" height="744.000000pt" viewBox="0 0 744.000000 744.000000"
preserveAspectRatio="xMidYMid meet">
<metadata>
Created by potrace 1.14, written by Peter Selinger 2001-2017
</metadata>
<g transform="translate(0.000000,744.000000) scale(0.100000,-0.100000)"
fill="#000000" stroke="none">
<path d="M1827 7404 c-2 -2 -50 -6 -108 -8 -57 -3 -120 -10 -139 -15 -19 -6
-56 -16 -82 -22 -27 -7 -48 -16 -48 -20 0 -4 -14 -10 -30 -14 -17 -4 -36 -12
-43 -18 -7 -7 -28 -21 -46 -31 -115 -64 -247 -224 -304 -366 -59 -150 -55 65
-56 -3180 0 -3270 -5 -3017 60 -3178 92 -232 303 -410 546 -463 32 -7 65 -14
73 -16 22 -5 4127 -3 4180 2 77 7 279 77 300 104 3 3 25 19 50 35 56 37 135
116 180 181 19 28 38 52 43 53 4 2 5 7 2 12 -3 4 2 13 10 20 8 7 15 21 15 31
0 10 4 20 9 23 8 6 39 91 47 131 2 11 7 31 11 45 4 14 8 1364 9 3000 2 3142 3
3032 -42 3165 -43 130 -131 255 -245 350 -33 28 -123 90 -127 87 -1 -1 -16 5
-34 14 -35 18 -128 50 -173 59 -30 6 -187 18 -215 16 -57 -3 -122 -1 -129 4
-5 3 -11 1 -13 -4 -1 -5 -23 -6 -48 -2 -25 4 -58 4 -75 1 -16 -3 -49 -3 -72 1
-23 3 -44 2 -45 -2 -2 -4 -23 -4 -48 0 -25 4 -58 4 -75 1 -16 -3 -49 -3 -72 1
-23 3 -44 2 -45 -2 -2 -4 -23 -4 -48 0 -25 4 -58 4 -75 1 -16 -3 -49 -3 -72 1
-23 3 -44 2 -45 -2 -2 -4 -23 -4 -48 0 -25 4 -58 4 -75 1 -16 -3 -49 -3 -72 1
-23 3 -44 2 -45 -2 -2 -4 -23 -4 -48 0 -25 4 -58 4 -75 1 -16 -3 -49 -3 -72 1
-23 3 -44 2 -45 -2 -2 -4 -23 -4 -48 0 -25 4 -58 4 -75 1 -16 -3 -49 -3 -72 1
-23 3 -44 2 -45 -2 -2 -4 -23 -4 -48 0 -25 4 -58 4 -75 1 -16 -3 -49 -3 -72 1
-23 3 -44 2 -45 -2 -2 -4 -23 -4 -48 0 -25 4 -58 4 -75 1 -16 -3 -49 -3 -72 1
-23 3 -44 2 -45 -2 -2 -4 -23 -4 -48 0 -25 4 -58 4 -75 1 -16 -3 -49 -3 -72 1
-23 3 -44 2 -45 -2 -2 -4 -23 -4 -48 0 -25 4 -58 4 -75 1 -16 -3 -49 -3 -72 1
-23 3 -44 2 -45 -2 -2 -4 -23 -4 -48 0 -25 4 -58 4 -75 1 -16 -3 -49 -3 -72 1
-23 3 -44 2 -45 -2 -2 -4 -23 -4 -48 0 -25 4 -58 4 -75 1 -16 -3 -49 -3 -72 1
-23 3 -44 2 -45 -2 -2 -4 -23 -4 -48 0 -25 4 -58 4 -75 1 -16 -3 -49 -3 -72 1
-23 3 -44 2 -45 -2 -2 -4 -23 -4 -48 0 -25 4 -58 4 -75 1 -16 -3 -49 -3 -72 1
-23 3 -44 2 -45 -2 -2 -4 -23 -4 -48 0 -25 4 -58 4 -75 1 -16 -3 -49 -3 -72 1
-23 3 -44 2 -45 -2 -2 -4 -24 -4 -50 0 -27 5 -49 6 -51 5z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.3 KiB

View File

@@ -1,11 +1,10 @@
import React, { Suspense } from 'react';
import { Spinner } from '@chakra-ui/react';
import { QueryClientProvider, QueryClient } from '@tanstack/react-query';
import { HashRouter } from 'react-router-dom';
import { ChakraProvider, Spinner } from '@chakra-ui/react';
import { QueryClientProvider, QueryClient } from 'react-query';
import theme from 'theme/theme';
import { AuthProvider } from 'contexts/AuthProvider';
import { ProvisioningSocketProvider } from 'contexts/ProvisioningSocketProvider';
import Router from 'router';
import { WebSocketProvider } from 'contexts/WebSocketProvider';
const queryClient = new QueryClient({
defaultOptions: {
@@ -22,15 +21,13 @@ const App = () => {
return (
<QueryClientProvider client={queryClient}>
<HashRouter>
<ChakraProvider portalZIndex={40} theme={theme}>
<Suspense fallback={<Spinner />}>
<AuthProvider token={storageToken !== null ? storageToken : undefined}>
<WebSocketProvider>
<Router />
</WebSocketProvider>
</AuthProvider>
</Suspense>
</ChakraProvider>
<Suspense fallback={<Spinner />}>
<AuthProvider token={storageToken !== null ? storageToken : undefined}>
<ProvisioningSocketProvider>
<Router />
</ProvisioningSocketProvider>
</AuthProvider>
</Suspense>
</HashRouter>
</QueryClientProvider>
);

View File

@@ -1,7 +1,7 @@
import React from 'react';
import { useTranslation } from 'react-i18next';
import { Button, IconButton, Tooltip, useBreakpoint } from '@chakra-ui/react';
import { Warning } from 'phosphor-react';
import { useTranslation } from 'react-i18next';
import { ThemeProps } from 'models/Theme';
interface Props extends ThemeProps {

View File

@@ -1,7 +1,7 @@
import React from 'react';
import { useTranslation } from 'react-i18next';
import { IconButton, Tooltip } from '@chakra-ui/react';
import { X } from 'phosphor-react';
import { useTranslation } from 'react-i18next';
interface Props {
onClick: () => void;

View File

@@ -1,7 +1,7 @@
import React from 'react';
import { useTranslation } from 'react-i18next';
import { Button, IconButton, Tooltip, useBreakpoint, LayoutProps, SpaceProps } from '@chakra-ui/react';
import { Plus } from 'phosphor-react';
import { useTranslation } from 'react-i18next';
interface Props extends LayoutProps, SpaceProps {
onClick?: () => void;

View File

@@ -1,7 +1,7 @@
import React from 'react';
import { useTranslation } from 'react-i18next';
import { Button, IconButton, Tooltip, useBreakpoint } from '@chakra-ui/react';
import { Trash } from 'phosphor-react';
import { useTranslation } from 'react-i18next';
interface Props {
onClick: () => void;

View File

@@ -1,7 +1,7 @@
import React from 'react';
import { useTranslation } from 'react-i18next';
import { Button, IconButton, Tooltip, useBreakpoint } from '@chakra-ui/react';
import { ArrowsClockwise } from 'phosphor-react';
import { useTranslation } from 'react-i18next';
interface Props {
onClick: () => void;

View File

@@ -1,7 +1,7 @@
import React from 'react';
import { useTranslation } from 'react-i18next';
import { Button, IconButton, Tooltip, useBreakpoint } from '@chakra-ui/react';
import { FloppyDisk } from 'phosphor-react';
import { useTranslation } from 'react-i18next';
interface Props extends React.DetailedHTMLProps<React.ButtonHTMLAttributes<HTMLButtonElement>, HTMLButtonElement> {
onClick: () => void;

View File

@@ -1,7 +1,7 @@
import React, { useCallback, useMemo } from 'react';
import { useTranslation } from 'react-i18next';
import { Button, IconButton, Tooltip, useBreakpoint } from '@chakra-ui/react';
import { ArrowRight, FloppyDisk } from 'phosphor-react';
import { useTranslation } from 'react-i18next';
interface Props {
onNext: () => void;

View File

@@ -1,7 +1,7 @@
import React from 'react';
import { useTranslation } from 'react-i18next';
import { Button, IconButton, Tooltip, useBreakpoint, useDisclosure } from '@chakra-ui/react';
import { Pencil, X } from 'phosphor-react';
import { useTranslation } from 'react-i18next';
import ConfirmCloseAlert from 'components/Modals/Actions/ConfirmCloseAlert';
interface Props {

View File

@@ -1,7 +1,7 @@
import React from 'react';
import { useTranslation } from 'react-i18next';
import { Button, IconButton, Tooltip, useBreakpoint } from '@chakra-ui/react';
import { Warning } from 'phosphor-react';
import { useTranslation } from 'react-i18next';
import { ThemeProps } from 'models/Theme';
interface Props extends ThemeProps {

View File

@@ -4,6 +4,7 @@ import { ThemeProps } from 'models/Theme';
interface Props extends ThemeProps {
variant?: string;
children: React.ReactNode;
}
const defaultProps = {

View File

@@ -1,9 +1,9 @@
import React, { useEffect } from 'react';
import { v4 as uuid } from 'uuid';
import { useTranslation } from 'react-i18next';
import { Button, Checkbox, IconButton, Menu, MenuButton, MenuItem, MenuList, useBreakpoint } from '@chakra-ui/react';
import { useAuth } from 'contexts/AuthProvider';
import { FunnelSimple } from 'phosphor-react';
import { useTranslation } from 'react-i18next';
import { v4 as uuid } from 'uuid';
import { useAuth } from 'contexts/AuthProvider';
import { Column } from 'models/Table';
interface Props {

View File

@@ -1,12 +1,12 @@
import React from 'react';
import PropTypes from 'prop-types';
import { SimpleGrid, Box } from '@chakra-ui/react';
import PropTypes from 'prop-types';
import { useTranslation } from 'react-i18next';
import AddressSearchField from 'components/CustomFields/AddressSearchField';
import CreatableSelectField from 'components/FormFields/CreatableSelectField';
import SelectField from 'components/FormFields/SelectField';
import StringField from 'components/FormFields/StringField';
import COUNTRY_LIST from 'constants/countryList';
import AddressSearchField from 'components/CustomFields/AddressSearchField';
import { useTranslation } from 'react-i18next';
import SelectField from 'components/FormFields/SelectField';
import CreatableSelectField from 'components/FormFields/CreatableSelectField';
const propTypes = {
name: PropTypes.string.isRequired,

View File

@@ -1,17 +1,17 @@
import React, { useEffect } from 'react';
import PropTypes from 'prop-types';
import { CloseButton, Modal, ModalBody, ModalContent, ModalOverlay, SimpleGrid, useDisclosure } from '@chakra-ui/react';
import ModalHeader from 'components/Modals/ModalHeader';
import SaveButton from 'components/Buttons/SaveButton';
import ConfirmCloseAlert from 'components/Modals/Actions/ConfirmCloseAlert';
import { Form, Formik } from 'formik';
import { CreateLocationSchema } from 'constants/formSchemas';
import PropTypes from 'prop-types';
import { useTranslation } from 'react-i18next';
import StringField from 'components/FormFields/StringField';
import SelectField from 'components/FormFields/SelectField';
import CreatableSelectField from 'components/FormFields/CreatableSelectField';
import SaveButton from 'components/Buttons/SaveButton';
import AddressSearchField from 'components/CustomFields/AddressSearchField';
import CreatableSelectField from 'components/FormFields/CreatableSelectField';
import SelectField from 'components/FormFields/SelectField';
import StringField from 'components/FormFields/StringField';
import ConfirmCloseAlert from 'components/Modals/Actions/ConfirmCloseAlert';
import ModalHeader from 'components/Modals/ModalHeader';
import COUNTRY_LIST from 'constants/countryList';
import { CreateLocationSchema } from 'constants/formSchemas';
import useFormRef from 'hooks/useFormRef';
const propTypes = {

View File

@@ -1,13 +1,13 @@
import React, { useEffect } from 'react';
import PropTypes from 'prop-types';
import { useField } from 'formik';
import { useGetAllLocations, useGetSelectLocations } from 'hooks/Network/Locations';
import { useTranslation } from 'react-i18next';
import SelectField from 'components/FormFields/SelectField';
import { useToast } from '@chakra-ui/react';
import { useGetEntity } from 'hooks/Network/Entity';
import { useField } from 'formik';
import PropTypes from 'prop-types';
import { useTranslation } from 'react-i18next';
import Form from './Form';
import LocationPickerCreatorModal from './Modal';
import SelectField from 'components/FormFields/SelectField';
import { useGetEntity } from 'hooks/Network/Entity';
import { useGetAllLocations, useGetSelectLocations } from 'hooks/Network/Locations';
const propTypes = {
locationName: PropTypes.string.isRequired,

View File

@@ -1,7 +1,7 @@
import React from 'react';
import { Box, FormControl, LayoutProps, SpaceProps } from '@chakra-ui/react';
import AddressSearchBar from 'components/SearchBars/AddressSearchBar';
import { useFormikContext } from 'formik';
import AddressSearchBar from 'components/SearchBars/AddressSearchBar';
import { AddressObject } from 'models/Location';
const defaultProps = {

View File

@@ -1,12 +1,12 @@
import React from 'react';
import PropTypes from 'prop-types';
import { Box, Button, Center, SimpleGrid } from '@chakra-ui/react';
import { useField } from 'formik';
import PropTypes from 'prop-types';
import { useTranslation } from 'react-i18next';
import DeleteButton from 'components/Buttons/DeleteButton';
import NumberField from 'components/FormFields/NumberField';
import StringField from 'components/FormFields/StringField';
import ToggleField from 'components/FormFields/ToggleField';
import NumberField from 'components/FormFields/NumberField';
import { useTranslation } from 'react-i18next';
import { useField } from 'formik';
import DeleteButton from 'components/Buttons/DeleteButton';
const propTypes = {
editing: PropTypes.bool.isRequired,

View File

@@ -1,9 +1,9 @@
import React from 'react';
import PropTypes from 'prop-types';
import { v4 as uuid } from 'uuid';
import isEqual from 'react-fast-compare';
import { Select } from '@chakra-ui/react';
import PropTypes from 'prop-types';
import isEqual from 'react-fast-compare';
import { useTranslation } from 'react-i18next';
import { v4 as uuid } from 'uuid';
const propTypes = {
value: PropTypes.string.isRequired,

View File

@@ -1,10 +1,10 @@
import React, { useCallback, useMemo } from 'react';
import PropTypes from 'prop-types';
import { useField } from 'formik';
import { useGetAllResources } from 'hooks/Network/Resources';
import { useTranslation } from 'react-i18next';
import { useToast } from '@chakra-ui/react';
import { useField } from 'formik';
import PropTypes from 'prop-types';
import { useTranslation } from 'react-i18next';
import ResourcePicker from './ResourcePicker';
import { useGetAllResources } from 'hooks/Network/Resources';
const propTypes = {
name: PropTypes.string.isRequired,

View File

@@ -1,6 +1,6 @@
import useFastField from 'hooks/useFastField';
import React, { useMemo } from 'react';
import MultiSelectInput from './Input';
import useFastField from 'hooks/useFastField';
interface Props {
isDisabled?: boolean;

View File

@@ -1,7 +1,7 @@
import React from 'react';
import { FormControl, FormLabel, Switch } from '@chakra-ui/react';
import { FieldInputProps } from 'models/Form';
import ConfigurationFieldExplanation from 'components/FormFields/ConfigurationFieldExplanation';
import { FieldInputProps } from 'models/Form';
interface Props extends FieldInputProps<boolean> {
element?: React.ReactNode;

View File

@@ -1,7 +1,7 @@
import React, { useCallback } from 'react';
import Field from './FastToggleInput';
import useFastField from 'hooks/useFastField';
import { FieldProps } from 'models/Form';
import Field from './FastToggleInput';
interface Props extends FieldProps {
defaultValue: object;

View File

@@ -1,5 +1,4 @@
import React from 'react';
import PropTypes from 'prop-types';
import {
FormControl,
FormErrorMessage,
@@ -12,6 +11,7 @@ import {
InputGroup,
InputRightAddon,
} from '@chakra-ui/react';
import PropTypes from 'prop-types';
const propTypes = {
value: PropTypes.number.isRequired,

View File

@@ -1,6 +1,6 @@
import React, { useCallback } from 'react';
import PropTypes from 'prop-types';
import { useField } from 'formik';
import PropTypes from 'prop-types';
import Field from './FastNumberInput';
const parseToInt = (val) => {

View File

@@ -1,5 +1,4 @@
import React, { useCallback, useEffect, useState } from 'react';
import PropTypes from 'prop-types';
import {
Button,
useDisclosure,
@@ -15,13 +14,14 @@ import {
IconButton,
Box,
} from '@chakra-ui/react';
import ModalHeader from 'components/Modals/ModalHeader';
import { ArrowDown, ArrowUp, Plus, Trash } from 'phosphor-react';
import PropTypes from 'prop-types';
import { useTranslation } from 'react-i18next';
import CloseButton from 'components/Buttons/CloseButton';
import SaveButton from 'components/Buttons/SaveButton';
import { useGetConfigurations } from 'hooks/Network/Configurations';
import { ArrowDown, ArrowUp, Plus, Trash } from 'phosphor-react';
import DataTable from 'components/DataTable';
import ModalHeader from 'components/Modals/ModalHeader';
import { useGetConfigurations } from 'hooks/Network/Configurations';
const propTypes = {
initialValue: PropTypes.arrayOf(PropTypes.string).isRequired,

View File

@@ -1,6 +1,6 @@
import React from 'react';
import PropTypes from 'prop-types';
import { Field } from 'formik';
import PropTypes from 'prop-types';
import DeviceConfigurationsModal from './Modal';
const propTypes = {

View File

@@ -1,7 +1,7 @@
import React from 'react';
import { useTranslation } from 'react-i18next';
import SelectField from 'components/FormFields/SelectField';
import RrmFormField from '../RrmFormField';
import SelectField from 'components/FormFields/SelectField';
interface Props {
isDisabled?: boolean;

View File

@@ -1,9 +1,9 @@
import React from 'react';
import PropTypes from 'prop-types';
import ListInputModalField from 'components/FormFields/ListInputModalField';
import { useField } from 'formik';
import { useTranslation } from 'react-i18next';
import { Box, ListItem, UnorderedList } from '@chakra-ui/react';
import { useField } from 'formik';
import PropTypes from 'prop-types';
import { useTranslation } from 'react-i18next';
import ListInputModalField from 'components/FormFields/ListInputModalField';
import IP_REGEX from 'constants/IP_REGEX';
const propTypes = {

View File

@@ -1,8 +1,8 @@
import React, { useCallback } from 'react';
import PropTypes from 'prop-types';
import { isValidNumber, isValidPhoneNumber, parsePhoneNumber } from 'libphonenumber-js';
import { FormControl, FormErrorMessage, FormLabel } from '@chakra-ui/react';
import { CreatableSelect } from 'chakra-react-select';
import { isValidNumber, isValidPhoneNumber, parsePhoneNumber } from 'libphonenumber-js';
import PropTypes from 'prop-types';
import { useTranslation } from 'react-i18next';
import ConfigurationFieldExplanation from 'components/FormFields/ConfigurationFieldExplanation';

View File

@@ -1,6 +1,6 @@
import React, { useCallback } from 'react';
import PropTypes from 'prop-types';
import { useField } from 'formik';
import PropTypes from 'prop-types';
import MultiPhoneNumberFieldInput from './MultiPhoneNumberFieldInput';
const propTypes = {

View File

@@ -1,13 +1,13 @@
import React, { useCallback, useMemo, useState } from 'react';
import { AddIcon } from '@chakra-ui/icons';
import { IconButton, Input, InputGroup, InputRightElement, Tooltip } from '@chakra-ui/react';
import { useField } from 'formik';
import PropTypes from 'prop-types';
import { useTranslation } from 'react-i18next';
import { IconButton, Input, InputGroup, InputRightElement, Tooltip } from '@chakra-ui/react';
import { AddIcon } from '@chakra-ui/icons';
import { useAuth } from 'contexts/AuthProvider';
import DataTable from 'components/DataTable';
import { v4 as uuid } from 'uuid';
import DataTable from 'components/DataTable';
import FormattedDate from 'components/FormattedDate';
import { useField } from 'formik';
import { useAuth } from 'contexts/AuthProvider';
const propTypes = {
name: PropTypes.string,

View File

@@ -1,9 +1,9 @@
import React, { useCallback } from 'react';
import { Select } from '@chakra-ui/react';
import { useField } from 'formik';
import PropTypes from 'prop-types';
import useCurrency from 'hooks/useCurrency';
import useSelectOptions from 'hooks/useSelectOptions';
import { Select } from '@chakra-ui/react';
import { useField } from 'formik';
const propTypes = {
name: PropTypes.string.isRequired,

View File

@@ -1,5 +1,4 @@
import React from 'react';
import PropTypes from 'prop-types';
import {
FormControl,
FormErrorMessage,
@@ -12,8 +11,9 @@ import {
InputGroup,
InputRightAddon,
} from '@chakra-ui/react';
import ConfigurationFieldExplanation from 'components/FormFields/ConfigurationFieldExplanation';
import PropTypes from 'prop-types';
import CurrencySelect from './CurrencySelect';
import ConfigurationFieldExplanation from 'components/FormFields/ConfigurationFieldExplanation';
const propTypes = {
value: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),

View File

@@ -1,6 +1,6 @@
import React, { useCallback } from 'react';
import PropTypes from 'prop-types';
import { useField } from 'formik';
import PropTypes from 'prop-types';
import Field from './Input';
const parseToInt = (e, acceptEmptyValue) => {

View File

@@ -17,9 +17,9 @@ import {
import { Trash } from 'phosphor-react';
import { useTranslation } from 'react-i18next';
import { v4 as uuid } from 'uuid';
import { RrmAlgorithm } from 'hooks/Network/Rrm';
import { InfoPopover } from 'components/InfoPopover';
import { areRrmParamsValid } from './helper';
import { InfoPopover } from 'components/InfoPopover';
import { RrmAlgorithm } from 'hooks/Network/Rrm';
type Props = {
algorithms?: RrmAlgorithm[];

View File

@@ -1,8 +1,8 @@
import * as React from 'react';
import { Alert, Box, Button, Center, Heading } from '@chakra-ui/react';
import { useTranslation } from 'react-i18next';
import { RrmAlgorithm } from 'hooks/Network/Rrm';
import AlgorithmPicker from './AlgorithmPicker';
import { RrmAlgorithm } from 'hooks/Network/Rrm';
type Props = {
algorithms?: RrmAlgorithm[];

View File

@@ -2,13 +2,13 @@ import * as React from 'react';
import { Alert, Box, Flex, FormControl, FormLabel, Select, UseDisclosureReturn } from '@chakra-ui/react';
import { useTranslation } from 'react-i18next';
import { v4 as uuid } from 'uuid';
import { RrmAlgorithm, RrmProvider } from 'hooks/Network/Rrm';
import SaveButton from 'components/Buttons/SaveButton';
import { Modal } from 'components/Modals/Modal';
import DeviceRulesAlgorithms from './Algorithms';
import { CUSTOM_RRM, DEFAULT_RRM_CRON, isCustomRrm, isValidCustomRrm, RRM_VALUE } from './helper';
import RrmProviderPicker from './ProviderPicker';
import RrmScheduler from './Scheduler';
import SaveButton from 'components/Buttons/SaveButton';
import { Modal } from 'components/Modals/Modal';
import { RrmAlgorithm, RrmProvider } from 'hooks/Network/Rrm';
const extractValueFromProps: (value: unknown) => RRM_VALUE = (value: unknown) => {
try {

View File

@@ -1,8 +1,8 @@
import * as React from 'react';
import { FormControl, FormErrorMessage, FormHelperText, FormLabel, Textarea } from '@chakra-ui/react';
import { useTranslation } from 'react-i18next';
import { RrmAlgorithm } from 'hooks/Network/Rrm';
import { areRrmParamsValid } from './helper';
import { RrmAlgorithm } from 'hooks/Network/Rrm';
type Props = {
algorithm?: RrmAlgorithm;

View File

@@ -2,8 +2,8 @@ import * as React from 'react';
import { Alert, Box, Flex, FormControl, FormLabel, Link, Select, Text } from '@chakra-ui/react';
import { useTranslation } from 'react-i18next';
import { v4 as uuid } from 'uuid';
import { RrmProvider } from 'hooks/Network/Rrm';
import { InfoPopover } from 'components/InfoPopover';
import { RrmProvider } from 'hooks/Network/Rrm';
type Props = {
providers: RrmProvider[];

View File

@@ -1,10 +1,10 @@
import * as React from 'react';
import { Button, FormControl, FormErrorMessage, FormLabel, useDisclosure } from '@chakra-ui/react';
import { useTranslation } from 'react-i18next';
import useFastField from 'hooks/useFastField';
import { useGetRrmAlgorithms, useGetRrmProvider } from 'hooks/Network/Rrm';
import EditRrmForm from './Form';
import { isCustomRrm } from './helper';
import { useGetRrmAlgorithms, useGetRrmProvider } from 'hooks/Network/Rrm';
import useFastField from 'hooks/useFastField';
type Props = {
namePrefix?: string;

View File

@@ -1,9 +1,9 @@
import React, { useEffect, useState } from 'react';
import PropTypes from 'prop-types';
import { v4 as uuid } from 'uuid';
import { Formik } from 'formik';
import { SimpleGrid } from '@chakra-ui/react';
import { Formik } from 'formik';
import PropTypes from 'prop-types';
import { useTranslation } from 'react-i18next';
import { v4 as uuid } from 'uuid';
import SelectField from 'components/FormFields/SelectField';
import ToggleField from 'components/FormFields/ToggleField';

View File

@@ -1,13 +1,13 @@
import React, { useCallback, useEffect, useState } from 'react';
import PropTypes from 'prop-types';
import { useTranslation } from 'react-i18next';
import isEqual from 'react-fast-compare';
import { Button, Center, Heading, Spacer } from '@chakra-ui/react';
import PropTypes from 'prop-types';
import isEqual from 'react-fast-compare';
import { useTranslation } from 'react-i18next';
import SpecialConfigurationForm from './SpecialConfigurationForm';
import DeleteButton from 'components/Buttons/DeleteButton';
import { BASE_SECTIONS } from 'constants/configuration';
import { useGetConfiguration } from 'hooks/Network/Configurations';
import ConfigurationSectionsCard from 'pages/ConfigurationPage/ConfigurationCard/ConfigurationSectionsCard';
import { BASE_SECTIONS } from 'constants/configuration';
import DeleteButton from 'components/Buttons/DeleteButton';
import SpecialConfigurationForm from './SpecialConfigurationForm';
const convertConfigManagerData = (form, sections) => {
if (form === null || sections === null) return null;

View File

@@ -1,10 +1,10 @@
import React, { useCallback, useEffect, useState } from 'react';
import PropTypes from 'prop-types';
import { useTranslation } from 'react-i18next';
import isEqual from 'react-fast-compare';
import { Button, Center } from '@chakra-ui/react';
import ConfigurationSectionsCard from 'pages/ConfigurationPage/ConfigurationCard/ConfigurationSectionsCard';
import PropTypes from 'prop-types';
import isEqual from 'react-fast-compare';
import { useTranslation } from 'react-i18next';
import { BASE_SECTIONS } from 'constants/configuration';
import ConfigurationSectionsCard from 'pages/ConfigurationPage/ConfigurationCard/ConfigurationSectionsCard';
const convertConfigManagerData = (sections) => {
if (sections === null) return null;

View File

@@ -1,6 +1,6 @@
import React from 'react';
import { ArrowDown, ArrowUp, Circle } from 'phosphor-react';
import { Icon } from '@chakra-ui/react';
import { ArrowDown, ArrowUp, Circle } from 'phosphor-react';
interface Props {
isSorted: boolean;

View File

@@ -1,5 +1,5 @@
import React, { useEffect, useState } from 'react';
import { v4 as uuid } from 'uuid';
import { ArrowRightIcon, ArrowLeftIcon, ChevronRightIcon, ChevronLeftIcon } from '@chakra-ui/icons';
import {
Table,
Tbody,
@@ -24,13 +24,13 @@ import {
Heading,
useBreakpoint,
} from '@chakra-ui/react';
import { ArrowRightIcon, ArrowLeftIcon, ChevronRightIcon, ChevronLeftIcon } from '@chakra-ui/icons';
// @ts-ignore
import { useTable, usePagination, useSortBy, Row } from 'react-table';
import { useTranslation } from 'react-i18next';
import { useTable, usePagination, useSortBy, Row } from 'react-table';
import { v4 as uuid } from 'uuid';
// @ts-ignore
import SortIcon from './SortIcon';
import LoadingOverlay from 'components/LoadingOverlay';
import { Column, PageInfo } from 'models/Table';
import SortIcon from './SortIcon';
interface Props {
columns: Column[];

View File

@@ -1,6 +1,6 @@
import React, { forwardRef } from 'react';
import PropTypes from 'prop-types';
import { Button } from '@chakra-ui/react';
import PropTypes from 'prop-types';
const propTypes = {
value: PropTypes.string,

View File

@@ -1,6 +1,6 @@
import React from 'react';
import { v4 as uuid } from 'uuid';
import { FormControl, FormLabel, LayoutProps, Select, SpaceProps } from '@chakra-ui/react';
import { v4 as uuid } from 'uuid';
interface Props extends LayoutProps, SpaceProps {
label: string;

View File

@@ -1,7 +1,7 @@
import React, { useMemo } from 'react';
import PropTypes from 'prop-types';
import { Tooltip } from '@chakra-ui/react';
import { InfoIcon } from '@chakra-ui/icons';
import { Tooltip } from '@chakra-ui/react';
import PropTypes from 'prop-types';
import { useAuth } from 'contexts/AuthProvider';
const findDefinition = (definitionKey, CONFIGURATION_DESCRIPTIONS) => {

View File

@@ -1,7 +1,7 @@
import React, { useCallback } from 'react';
import PropTypes from 'prop-types';
import { FormControl, FormErrorMessage, FormLabel } from '@chakra-ui/react';
import { CreatableSelect } from 'chakra-react-select';
import PropTypes from 'prop-types';
import { useTranslation } from 'react-i18next';
import ConfigurationFieldExplanation from '../ConfigurationFieldExplanation';

View File

@@ -1,6 +1,6 @@
import React, { useCallback } from 'react';
import PropTypes from 'prop-types';
import { useField } from 'formik';
import PropTypes from 'prop-types';
import Field from './FastCreatableSelectInput';
const propTypes = {

View File

@@ -1,6 +1,4 @@
import React, { useEffect, useState } from 'react';
import PropTypes from 'prop-types';
import { v4 as uuid } from 'uuid';
import {
Box,
CloseButton,
@@ -18,12 +16,14 @@ import {
Tooltip,
useDisclosure,
} from '@chakra-ui/react';
import ModalHeader from 'components/Modals/ModalHeader';
import FileInputButton from 'components/Buttons/FileInputButton';
import { useTranslation } from 'react-i18next';
import { UploadSimple } from 'phosphor-react';
import SaveButton from 'components/Buttons/SaveButton';
import PropTypes from 'prop-types';
import { useTranslation } from 'react-i18next';
import { v4 as uuid } from 'uuid';
import ConfigurationFieldExplanation from '../ConfigurationFieldExplanation';
import FileInputButton from 'components/Buttons/FileInputButton';
import SaveButton from 'components/Buttons/SaveButton';
import ModalHeader from 'components/Modals/ModalHeader';
const propTypes = {
value: PropTypes.string,

View File

@@ -1,6 +1,6 @@
import React, { useCallback } from 'react';
import PropTypes from 'prop-types';
import { useField } from 'formik';
import PropTypes from 'prop-types';
import FileInputModal from './FileInputModal';
const propTypes = {

View File

@@ -1,7 +1,7 @@
/* eslint-disable react/destructuring-assignment */
import useFastField from 'hooks/useFastField';
import * as React from 'react';
import ImageFieldInput from './Input';
import useFastField from 'hooks/useFastField';
type Props = {
name: string;

View File

@@ -1,6 +1,4 @@
import React, { useEffect, useState } from 'react';
import PropTypes from 'prop-types';
import { v4 as uuid } from 'uuid';
import {
Button,
useDisclosure,
@@ -20,11 +18,13 @@ import {
IconButton,
Tooltip,
} from '@chakra-ui/react';
import ModalHeader from 'components/Modals/ModalHeader';
import { Trash } from 'phosphor-react';
import PropTypes from 'prop-types';
import { useTranslation } from 'react-i18next';
import { v4 as uuid } from 'uuid';
import CloseButton from 'components/Buttons/CloseButton';
import SaveButton from 'components/Buttons/SaveButton';
import { Trash } from 'phosphor-react';
import ModalHeader from 'components/Modals/ModalHeader';
const propTypes = {
initialValue: PropTypes.arrayOf(PropTypes.string).isRequired,

View File

@@ -1,9 +1,9 @@
import React from 'react';
import PropTypes from 'prop-types';
import { FormControl, FormErrorMessage, FormLabel } from '@chakra-ui/react';
import { Select } from 'chakra-react-select';
import { useTranslation } from 'react-i18next';
import PropTypes from 'prop-types';
import isEqual from 'react-fast-compare';
import { useTranslation } from 'react-i18next';
import ConfigurationFieldExplanation from '../ConfigurationFieldExplanation';
const propTypes = {

View File

@@ -1,6 +1,6 @@
import React, { useCallback } from 'react';
import PropTypes from 'prop-types';
import { useField } from 'formik';
import PropTypes from 'prop-types';
import Field from './FastMultiSelectInput';
const propTypes = {

View File

@@ -1,15 +1,15 @@
/* eslint-disable @typescript-eslint/naming-convention */
import React, { useCallback, useMemo, useState } from 'react';
import { useTranslation } from 'react-i18next';
import { IconButton, Input, InputGroup, InputRightElement, Tooltip } from '@chakra-ui/react';
import { AddIcon } from '@chakra-ui/icons';
import { IconButton, Input, InputGroup, InputRightElement, Tooltip } from '@chakra-ui/react';
import { Trash } from 'phosphor-react';
import { useTranslation } from 'react-i18next';
import { v4 as uuid } from 'uuid';
import { useAuth } from 'contexts/AuthProvider';
import { Note } from 'models/Note';
import DataTable from 'components/DataTable';
import useFastField from 'hooks/useFastField';
import FormattedDate from 'components/FormattedDate';
import { useAuth } from 'contexts/AuthProvider';
import useFastField from 'hooks/useFastField';
import { Note } from 'models/Note';
export interface NotesFieldProps {
name?: string;

View File

@@ -11,8 +11,8 @@ import {
InputGroup,
InputRightAddon,
} from '@chakra-ui/react';
import { FieldInputProps } from 'models/Form';
import ConfigurationFieldExplanation from '../ConfigurationFieldExplanation';
import { FieldInputProps } from 'models/Form';
interface Props extends FieldInputProps<string | undefined | string[]> {
onChange: (v: string) => void;

View File

@@ -1,7 +1,7 @@
import React, { useCallback } from 'react';
import Field from './NumberInput';
import useFastField from 'hooks/useFastField';
import { FieldProps } from 'models/Form';
import Field from './NumberInput';
const parseToInt = (val: string, acceptEmptyValue: boolean) => {
if (acceptEmptyValue && val === '') return undefined;

View File

@@ -14,17 +14,20 @@ import {
Tooltip,
IconButton,
} from '@chakra-ui/react';
import { useTranslation } from 'react-i18next';
import { FieldInputProps } from 'models/Form';
import { Trash } from 'phosphor-react';
import { Formik } from 'formik';
import ModalHeader from 'components/Modals/ModalHeader';
import SaveButton from 'components/Buttons/SaveButton';
import { Trash } from 'phosphor-react';
import { useTranslation } from 'react-i18next';
import CloseButton from 'components/Buttons/CloseButton';
import SaveButton from 'components/Buttons/SaveButton';
import DataTable from 'components/DataTable';
import ModalHeader from 'components/Modals/ModalHeader';
import { FieldInputProps } from 'models/Form';
import { Column } from 'models/Table';
// eslint-disable-next-line import/no-cycle
import { ObjectArrayFieldModalOptions } from '.';
interface ObjectArrayFieldModalOptions {
buttonLabel?: string;
modalTitle?: string;
}
interface Props extends FieldInputProps<object[]> {
name: string;
@@ -33,7 +36,7 @@ interface Props extends FieldInputProps<object[]> {
isHidden: boolean;
hideLabel: boolean;
fields: React.ReactNode;
columns: Column[];
columns: Column<unknown>[];
options: ObjectArrayFieldModalOptions;
schema: (t: (e: string) => string, useDefault?: boolean) => object;
}

View File

@@ -1,18 +1,17 @@
import React, { useCallback } from 'react';
import ObjectArrayFieldInput from './Input';
import useFastField from 'hooks/useFastField';
import { FieldProps } from 'models/Form';
import { Column } from 'models/Table';
// eslint-disable-next-line import/no-cycle
import ObjectArrayFieldInput from './Input';
export interface ObjectArrayFieldModalOptions {
interface ObjectArrayFieldModalOptions {
buttonLabel?: string;
modalTitle?: string;
}
interface Props extends FieldProps {
fields: React.ReactNode;
columns: Column[];
columns: Column<unknown>[];
options?: ObjectArrayFieldModalOptions;
schema: (t: (e: string) => string, useDefault?: boolean) => object;
}

View File

@@ -1,8 +1,8 @@
import React, { useCallback, useMemo } from 'react';
import { LayoutProps } from '@chakra-ui/react';
import Input from './Input';
import useFastField from 'hooks/useFastField';
import { FieldProps } from 'models/Form';
import Input from './Input';
const parseToInt = (val: string, acceptEmptyValue: boolean) => {
if (acceptEmptyValue && val === '') return undefined;

View File

@@ -1,9 +1,9 @@
import React from 'react';
import { FormControl, FormErrorMessage, FormLabel, Select } from '@chakra-ui/react';
import { v4 as uuid } from 'uuid';
import isEqual from 'react-fast-compare';
import { defaultFormInput, FormInputProps } from 'models/FormField';
import { v4 as uuid } from 'uuid';
import ConfigurationFieldExplanation from '../ConfigurationFieldExplanation';
import { defaultFormInput, FormInputProps } from 'models/FormField';
interface Props extends FormInputProps {
value?: string;

View File

@@ -1,7 +1,7 @@
import React, { useCallback } from 'react';
import { useField } from 'formik';
import { defaultFormField, FormFieldProps } from 'models/FormField';
import Field from './FastSelectInput';
import { defaultFormField, FormFieldProps } from 'models/FormField';
interface Props extends FormFieldProps {
options: { label: string; value: string | number }[];

View File

@@ -1,8 +1,8 @@
import React from 'react';
import PropTypes from 'prop-types';
import { FormControl, FormErrorMessage, FormLabel } from '@chakra-ui/react';
import { Field, useFormikContext } from 'formik';
import { Select } from 'chakra-react-select';
import { Field, useFormikContext } from 'formik';
import PropTypes from 'prop-types';
const propTypes = {
name: PropTypes.string.isRequired,

View File

@@ -11,8 +11,8 @@ import {
useBoolean,
} from '@chakra-ui/react';
import { useTranslation } from 'react-i18next';
import { FieldInputProps } from 'models/Form';
import ConfigurationFieldExplanation from '../ConfigurationFieldExplanation';
import { FieldInputProps } from 'models/Form';
interface Props extends FieldInputProps<string | undefined | string[]> {
isError: boolean;

View File

@@ -1,8 +1,8 @@
import React, { useCallback } from 'react';
import useFastField from 'hooks/useFastField';
import { FieldProps } from 'models/Form';
import { LayoutProps } from '@chakra-ui/react';
import StringInput from './StringInput';
import useFastField from 'hooks/useFastField';
import { FieldProps } from 'models/Form';
interface Props extends FieldProps, LayoutProps {
hideButton?: boolean;

View File

@@ -1,7 +1,7 @@
import React from 'react';
import { FormControl, FormErrorMessage, FormLabel, Switch } from '@chakra-ui/react';
import { FieldInputProps } from 'models/Form';
import ConfigurationFieldExplanation from '../ConfigurationFieldExplanation';
import { FieldInputProps } from 'models/Form';
interface Props extends FieldInputProps<boolean> {
element?: React.ReactNode;

View File

@@ -1,7 +1,7 @@
import React, { useCallback } from 'react';
import Field from './FastToggleInput';
import useFastField from 'hooks/useFastField';
import { FieldProps } from 'models/Form';
import Field from './FastToggleInput';
interface Props extends FieldProps {
falseIsUndefined?: boolean;

View File

@@ -1,6 +1,6 @@
import React from 'react';
import PropTypes from 'prop-types';
import { Tooltip } from '@chakra-ui/react';
import PropTypes from 'prop-types';
import { compactDate, formatDaysAgo } from 'utils/dateFormatting';
const propTypes = {

View File

@@ -1,5 +1,5 @@
import { IconButton, Menu, MenuButton, MenuItem, MenuList, Tooltip } from '@chakra-ui/react';
import React, { useMemo } from 'react';
import { IconButton, Menu, MenuButton, MenuItem, MenuList, Tooltip } from '@chakra-ui/react';
import ReactCountryFlag from 'react-country-flag';
import { useTranslation } from 'react-i18next';

View File

@@ -1,6 +1,6 @@
import React from 'react';
import PropTypes from 'prop-types';
import { Spinner, useColorMode } from '@chakra-ui/react';
import PropTypes from 'prop-types';
const propTypes = {
isLoading: PropTypes.bool.isRequired,

View File

@@ -1,5 +1,4 @@
import React, { useRef } from 'react';
import PropTypes from 'prop-types';
import {
AlertDialog,
AlertDialogBody,
@@ -9,6 +8,7 @@ import {
AlertDialogOverlay,
Button,
} from '@chakra-ui/react';
import PropTypes from 'prop-types';
import { useTranslation } from 'react-i18next';
const propTypes = {

View File

@@ -1,5 +1,4 @@
import React from 'react';
import PropTypes from 'prop-types';
import {
Modal,
ModalOverlay,
@@ -11,13 +10,14 @@ import {
ListItem,
Heading,
} from '@chakra-ui/react';
import { v4 as uuid } from 'uuid';
import PropTypes from 'prop-types';
import { useTranslation } from 'react-i18next';
import { v4 as uuid } from 'uuid';
import CloseButton from 'components/Buttons/CloseButton';
import ModalHeader from 'components/Modals/ModalHeader';
import { useGetConfigurationInUse } from 'hooks/Network/Configurations';
import EntityCell from 'components/TableCells/EntityCell';
import VenueCell from 'components/TableCells/VenueCell';
import { useGetConfigurationInUse } from 'hooks/Network/Configurations';
const propTypes = {
isOpen: PropTypes.bool.isRequired,

View File

@@ -1,15 +1,15 @@
import React, { useEffect, useState } from 'react';
import { useToast, SimpleGrid, Heading } from '@chakra-ui/react';
import { useQueryClient } from '@tanstack/react-query';
import { Formik, Form } from 'formik';
import PropTypes from 'prop-types';
import { useTranslation } from 'react-i18next';
import { v4 as uuid } from 'uuid';
import { useToast, SimpleGrid, Heading } from '@chakra-ui/react';
import { Formik, Form } from 'formik';
import { EntitySchema } from 'constants/formSchemas';
import StringField from 'components/FormFields/StringField';
import { useCreateEntity } from 'hooks/Network/Entity';
import { useNavigate } from 'react-router-dom';
import { useQueryClient } from 'react-query';
import { v4 as uuid } from 'uuid';
import SelectField from 'components/FormFields/SelectField';
import StringField from 'components/FormFields/StringField';
import { EntitySchema } from 'constants/formSchemas';
import { useCreateEntity } from 'hooks/Network/Entity';
const propTypes = {
isOpen: PropTypes.bool.isRequired,

Some files were not shown because too many files have changed in this diff Show More