1
0
mirror of https://gitlab.nic.cz/turris/reforis/foris-js.git synced 2025-06-16 13:46:16 +02:00

Compare commits

..

2 Commits

Author SHA1 Message Date
cc1389536e Fix tests 2024-09-05 13:02:14 +02:00
499be46588 Using socket.io for websocket handling and make reforis configurable
Socket.io wrapper is used to handle websockets now,
this means that websocket logic had to be redone.

Also it is necessary to set `REFORIS_PREFIX` env variable
during the build process. To set the path of backend url.
It was previously fixed to `/reforis`.
2024-09-05 13:02:13 +02:00
60 changed files with 1040 additions and 3341 deletions

View File

@ -8,64 +8,6 @@ and this project adheres to
## [Unreleased] ## [Unreleased]
## [6.5.0] - 2024-11-13
### Added
- Added & updated Weblate translations
- Added RichTable component with pagination and sorting
- Added @tanstack/react-table v8.20.5 to dependencies
### Changed
- Updated documentation
- Replaced RebootButton with ActionButtonWithModal component
- Fixed import path for CustomizationContextMock in customTestRender.js
## [6.4.0] - 2024-10-02
### Changed
- Refactored Alert component to include dismiss animation and timeout
- Refactored ThreeDotsMenu component to include additional props
## [6.3.0] - 2024-09-27
### Added
- Added ThreeDotsMenu component
### Changed
- Refactored EmailInput description
- Refactored RadioSet & ignore Radio component
- Refactored npm package badge in introduction.md
- NPM audit fix
## [6.2.1] - 2024-09-25
### Added
- Added & updated Weblate translations
### Changed
- Refactored CopyInput component
- Refactored ForisURLs to include new URLs for Overview page
## [6.2.0] - 2024-09-20
### Added
- Added useFocusTrap hook
- Added extendSession endpoint
### Changed
- Refactored Spinner.css to use CSS variable for color
- Refactored Modal component to use useFocusTrap hook
- Refactored Alert component to use useFocusTrap hook
## [6.1.1] - 2024-08-30 ## [6.1.1] - 2024-08-30
### Added ### Added
@ -419,12 +361,7 @@ and this project adheres to
## [0.0.7] - 2019-09-02 ## [0.0.7] - 2019-09-02
[unreleased]: [unreleased]:
https://gitlab.nic.cz/turris/reforis/foris-js/-/compare/v6.5.0...dev https://gitlab.nic.cz/turris/reforis/foris-js/-/compare/v6.1.1...master
[6.5.0]: https://gitlab.nic.cz/turris/reforis/foris-js/-/compare/v6.4.0...v6.5.0
[6.4.0]: https://gitlab.nic.cz/turris/reforis/foris-js/-/compare/v6.3.0...v6.4.0
[6.3.0]: https://gitlab.nic.cz/turris/reforis/foris-js/-/compare/v6.2.1...v6.3.0
[6.2.1]: https://gitlab.nic.cz/turris/reforis/foris-js/-/compare/v6.2.0...v6.2.1
[6.2.0]: https://gitlab.nic.cz/turris/reforis/foris-js/-/compare/v6.1.1...v6.2.0
[6.1.1]: https://gitlab.nic.cz/turris/reforis/foris-js/-/compare/v6.1.0...v6.1.1 [6.1.1]: https://gitlab.nic.cz/turris/reforis/foris-js/-/compare/v6.1.0...v6.1.1
[6.1.0]: https://gitlab.nic.cz/turris/reforis/foris-js/-/compare/v6.0.3...v6.1.0 [6.1.0]: https://gitlab.nic.cz/turris/reforis/foris-js/-/compare/v6.0.3...v6.1.0
[6.0.3]: https://gitlab.nic.cz/turris/reforis/foris-js/-/compare/v6.0.2...v6.0.3 [6.0.3]: https://gitlab.nic.cz/turris/reforis/foris-js/-/compare/v6.0.2...v6.0.3

View File

@ -33,4 +33,5 @@ To install a specific version:
npm install foris@version npm install foris@version
``` ```
[![npm version](https://badge.fury.io/js/foris.svg)](https://badge.fury.io/js/foris) <a target="_blank" href="https://www.npmjs.com/package/foris">Check
on<img width="100px" src="./docs/forisjs-npm.svg"></a>

418
package-lock.json generated
View File

@ -1,25 +1,25 @@
{ {
"name": "foris", "name": "foris",
"version": "6.5.0", "version": "6.1.1",
"lockfileVersion": 2, "lockfileVersion": 2,
"requires": true, "requires": true,
"packages": { "packages": {
"": { "": {
"name": "foris", "name": "foris",
"version": "6.5.0", "version": "6.1.1",
"license": "GPL-3.0", "license": "GPL-3.0",
"dependencies": { "dependencies": {
"@fortawesome/fontawesome-svg-core": "^6.6.0", "@fortawesome/fontawesome-svg-core": "^6.6.0",
"@fortawesome/free-regular-svg-icons": "^6.6.0", "@fortawesome/free-regular-svg-icons": "^6.6.0",
"@fortawesome/free-solid-svg-icons": "^6.6.0", "@fortawesome/free-solid-svg-icons": "^6.6.0",
"@fortawesome/react-fontawesome": "^0.2.2", "@fortawesome/react-fontawesome": "^0.2.2",
"@tanstack/react-table": "^8.20.5",
"axios": "^1.7.2", "axios": "^1.7.2",
"immutability-helper": "^3.1.1", "immutability-helper": "^3.1.1",
"moment": "^2.30.1", "moment": "^2.30.1",
"qrcode.react": "^3.1.0", "qrcode.react": "^3.1.0",
"react-datetime": "^3.2.0", "react-datetime": "^3.2.0",
"react-uid": "^2.3.3" "react-uid": "^2.3.3",
"socket.io-client": "^4.6.1"
}, },
"devDependencies": { "devDependencies": {
"@babel/cli": "^7.24.7", "@babel/cli": "^7.24.7",
@ -3584,38 +3584,11 @@
"@sinonjs/commons": "^3.0.0" "@sinonjs/commons": "^3.0.0"
} }
}, },
"node_modules/@tanstack/react-table": { "node_modules/@socket.io/component-emitter": {
"version": "8.20.5", "version": "3.1.2",
"resolved": "https://registry.npmjs.org/@tanstack/react-table/-/react-table-8.20.5.tgz", "resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.2.tgz",
"integrity": "sha512-WEHopKw3znbUZ61s9i0+i9g8drmDo6asTWbrQh8Us63DAk/M0FkmIqERew6P71HI75ksZ2Pxyuf4vvKh9rAkiA==", "integrity": "sha512-9BCxFwvbGg/RsZK9tjXd8s4UcwR0MWeFQ1XEKIQVVvAGJyINdrqKMcTRyLoK8Rse1GjzLV9cwjWV1olXRWEXVA==",
"license": "MIT", "license": "MIT"
"dependencies": {
"@tanstack/table-core": "8.20.5"
},
"engines": {
"node": ">=12"
},
"funding": {
"type": "github",
"url": "https://github.com/sponsors/tannerlinsley"
},
"peerDependencies": {
"react": ">=16.8",
"react-dom": ">=16.8"
}
},
"node_modules/@tanstack/table-core": {
"version": "8.20.5",
"resolved": "https://registry.npmjs.org/@tanstack/table-core/-/table-core-8.20.5.tgz",
"integrity": "sha512-P9dF7XbibHph2PFRz8gfBKEXEY/HJPOhym8CHmjF8y3q5mWpKx9xtZapXQUWCgkqvsK0R46Azuz+VaxD4Xl+Tg==",
"license": "MIT",
"engines": {
"node": ">=12"
},
"funding": {
"type": "github",
"url": "https://github.com/sponsors/tannerlinsley"
}
}, },
"node_modules/@testing-library/dom": { "node_modules/@testing-library/dom": {
"version": "5.6.1", "version": "5.6.1",
@ -5051,11 +5024,10 @@
} }
}, },
"node_modules/body-parser": { "node_modules/body-parser": {
"version": "1.20.3", "version": "1.20.2",
"resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.3.tgz", "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz",
"integrity": "sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==", "integrity": "sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==",
"dev": true, "dev": true,
"license": "MIT",
"dependencies": { "dependencies": {
"bytes": "3.1.2", "bytes": "3.1.2",
"content-type": "~1.0.5", "content-type": "~1.0.5",
@ -5065,7 +5037,7 @@
"http-errors": "2.0.0", "http-errors": "2.0.0",
"iconv-lite": "0.4.24", "iconv-lite": "0.4.24",
"on-finished": "2.4.1", "on-finished": "2.4.1",
"qs": "6.13.0", "qs": "6.11.0",
"raw-body": "2.5.2", "raw-body": "2.5.2",
"type-is": "~1.6.18", "type-is": "~1.6.18",
"unpipe": "1.0.0" "unpipe": "1.0.0"
@ -5080,7 +5052,6 @@
"resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz",
"integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==",
"dev": true, "dev": true,
"license": "MIT",
"engines": { "engines": {
"node": ">= 0.8" "node": ">= 0.8"
} }
@ -5090,7 +5061,6 @@
"resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
"integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
"dev": true, "dev": true,
"license": "MIT",
"dependencies": { "dependencies": {
"ms": "2.0.0" "ms": "2.0.0"
} }
@ -5099,8 +5069,7 @@
"version": "2.0.0", "version": "2.0.0",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
"integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
"dev": true, "dev": true
"license": "MIT"
}, },
"node_modules/bonjour-service": { "node_modules/bonjour-service": {
"version": "1.2.1", "version": "1.2.1",
@ -5940,7 +5909,6 @@
"resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz",
"integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==",
"dev": true, "dev": true,
"license": "MIT",
"engines": { "engines": {
"node": ">= 0.6" "node": ">= 0.6"
} }
@ -6411,7 +6379,6 @@
"version": "4.3.5", "version": "4.3.5",
"resolved": "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz",
"integrity": "sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==", "integrity": "sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==",
"dev": true,
"dependencies": { "dependencies": {
"ms": "2.1.2" "ms": "2.1.2"
}, },
@ -6579,7 +6546,6 @@
"resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
"integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==",
"dev": true, "dev": true,
"license": "MIT",
"engines": { "engines": {
"node": ">= 0.8" "node": ">= 0.8"
} }
@ -6598,7 +6564,6 @@
"resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz",
"integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==",
"dev": true, "dev": true,
"license": "MIT",
"engines": { "engines": {
"node": ">= 0.8", "node": ">= 0.8",
"npm": "1.2.8000 || >= 1.4.16" "npm": "1.2.8000 || >= 1.4.16"
@ -6719,8 +6684,7 @@
"version": "1.1.1", "version": "1.1.1",
"resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
"integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==",
"dev": true, "dev": true
"license": "MIT"
}, },
"node_modules/electron-to-chromium": { "node_modules/electron-to-chromium": {
"version": "1.4.792", "version": "1.4.792",
@ -6756,15 +6720,36 @@
} }
}, },
"node_modules/encodeurl": { "node_modules/encodeurl": {
"version": "2.0.0", "version": "1.0.2",
"resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
"integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==",
"dev": true, "dev": true,
"license": "MIT",
"engines": { "engines": {
"node": ">= 0.8" "node": ">= 0.8"
} }
}, },
"node_modules/engine.io-client": {
"version": "6.5.4",
"resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-6.5.4.tgz",
"integrity": "sha512-GeZeeRjpD2qf49cZQ0Wvh/8NJNfeXkXXcoGh+F77oEAgo9gUHwT1fCRxSNU+YEEaysOJTnsFHmM5oAcPy4ntvQ==",
"license": "MIT",
"dependencies": {
"@socket.io/component-emitter": "~3.1.0",
"debug": "~4.3.1",
"engine.io-parser": "~5.2.1",
"ws": "~8.17.1",
"xmlhttprequest-ssl": "~2.0.0"
}
},
"node_modules/engine.io-parser": {
"version": "5.2.3",
"resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.2.3.tgz",
"integrity": "sha512-HqD3yTBfnBxIrbnM1DoD6Pcq8NECnh8d4As1Qgh0z5Gg3jRRIqijury0CL3ghu/edArpUYiYqQiDUQBIs4np3Q==",
"license": "MIT",
"engines": {
"node": ">=10.0.0"
}
},
"node_modules/enhanced-resolve": { "node_modules/enhanced-resolve": {
"version": "5.17.1", "version": "5.17.1",
"resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.17.1.tgz", "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.17.1.tgz",
@ -7952,7 +7937,6 @@
"resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
"integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==",
"dev": true, "dev": true,
"license": "MIT",
"engines": { "engines": {
"node": ">= 0.6" "node": ">= 0.6"
} }
@ -8080,38 +8064,37 @@
} }
}, },
"node_modules/express": { "node_modules/express": {
"version": "4.21.0", "version": "4.19.2",
"resolved": "https://registry.npmjs.org/express/-/express-4.21.0.tgz", "resolved": "https://registry.npmjs.org/express/-/express-4.19.2.tgz",
"integrity": "sha512-VqcNGcj/Id5ZT1LZ/cfihi3ttTn+NJmkli2eZADigjq29qTlWi/hAQ43t/VLPq8+UX06FCEx3ByOYet6ZFblng==", "integrity": "sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q==",
"dev": true, "dev": true,
"license": "MIT",
"dependencies": { "dependencies": {
"accepts": "~1.3.8", "accepts": "~1.3.8",
"array-flatten": "1.1.1", "array-flatten": "1.1.1",
"body-parser": "1.20.3", "body-parser": "1.20.2",
"content-disposition": "0.5.4", "content-disposition": "0.5.4",
"content-type": "~1.0.4", "content-type": "~1.0.4",
"cookie": "0.6.0", "cookie": "0.6.0",
"cookie-signature": "1.0.6", "cookie-signature": "1.0.6",
"debug": "2.6.9", "debug": "2.6.9",
"depd": "2.0.0", "depd": "2.0.0",
"encodeurl": "~2.0.0", "encodeurl": "~1.0.2",
"escape-html": "~1.0.3", "escape-html": "~1.0.3",
"etag": "~1.8.1", "etag": "~1.8.1",
"finalhandler": "1.3.1", "finalhandler": "1.2.0",
"fresh": "0.5.2", "fresh": "0.5.2",
"http-errors": "2.0.0", "http-errors": "2.0.0",
"merge-descriptors": "1.0.3", "merge-descriptors": "1.0.1",
"methods": "~1.1.2", "methods": "~1.1.2",
"on-finished": "2.4.1", "on-finished": "2.4.1",
"parseurl": "~1.3.3", "parseurl": "~1.3.3",
"path-to-regexp": "0.1.10", "path-to-regexp": "0.1.7",
"proxy-addr": "~2.0.7", "proxy-addr": "~2.0.7",
"qs": "6.13.0", "qs": "6.11.0",
"range-parser": "~1.2.1", "range-parser": "~1.2.1",
"safe-buffer": "5.2.1", "safe-buffer": "5.2.1",
"send": "0.19.0", "send": "0.18.0",
"serve-static": "1.16.2", "serve-static": "1.15.0",
"setprototypeof": "1.2.0", "setprototypeof": "1.2.0",
"statuses": "2.0.1", "statuses": "2.0.1",
"type-is": "~1.6.18", "type-is": "~1.6.18",
@ -8138,11 +8121,10 @@
"dev": true "dev": true
}, },
"node_modules/express/node_modules/path-to-regexp": { "node_modules/express/node_modules/path-to-regexp": {
"version": "0.1.10", "version": "0.1.7",
"resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.10.tgz", "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz",
"integrity": "sha512-7lf7qcQidTku0Gu3YDPc8DJ1q7OOucfa/BSsIwjuh56VU7katFvuM8hULfkwB3Fns/rsVF7PwPKVw1sl5KQS9w==", "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==",
"dev": true, "dev": true
"license": "MIT"
}, },
"node_modules/express/node_modules/safe-buffer": { "node_modules/express/node_modules/safe-buffer": {
"version": "5.2.1", "version": "5.2.1",
@ -8318,14 +8300,13 @@
} }
}, },
"node_modules/finalhandler": { "node_modules/finalhandler": {
"version": "1.3.1", "version": "1.2.0",
"resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.1.tgz", "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz",
"integrity": "sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==", "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==",
"dev": true, "dev": true,
"license": "MIT",
"dependencies": { "dependencies": {
"debug": "2.6.9", "debug": "2.6.9",
"encodeurl": "~2.0.0", "encodeurl": "~1.0.2",
"escape-html": "~1.0.3", "escape-html": "~1.0.3",
"on-finished": "2.4.1", "on-finished": "2.4.1",
"parseurl": "~1.3.3", "parseurl": "~1.3.3",
@ -8341,7 +8322,6 @@
"resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
"integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
"dev": true, "dev": true,
"license": "MIT",
"dependencies": { "dependencies": {
"ms": "2.0.0" "ms": "2.0.0"
} }
@ -8350,8 +8330,7 @@
"version": "2.0.0", "version": "2.0.0",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
"integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
"dev": true, "dev": true
"license": "MIT"
}, },
"node_modules/find-cache-dir": { "node_modules/find-cache-dir": {
"version": "3.3.1", "version": "3.3.1",
@ -8728,7 +8707,6 @@
"resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
"integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==",
"dev": true, "dev": true,
"license": "MIT",
"engines": { "engines": {
"node": ">= 0.6" "node": ">= 0.6"
} }
@ -9302,7 +9280,6 @@
"resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz",
"integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==",
"dev": true, "dev": true,
"license": "MIT",
"dependencies": { "dependencies": {
"depd": "2.0.0", "depd": "2.0.0",
"inherits": "2.0.4", "inherits": "2.0.4",
@ -9417,7 +9394,6 @@
"resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
"integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
"dev": true, "dev": true,
"license": "MIT",
"dependencies": { "dependencies": {
"safer-buffer": ">= 2.1.2 < 3" "safer-buffer": ">= 2.1.2 < 3"
}, },
@ -13764,7 +13740,6 @@
"resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
"integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==",
"dev": true, "dev": true,
"license": "MIT",
"engines": { "engines": {
"node": ">= 0.6" "node": ">= 0.6"
} }
@ -13782,14 +13757,10 @@
} }
}, },
"node_modules/merge-descriptors": { "node_modules/merge-descriptors": {
"version": "1.0.3", "version": "1.0.1",
"resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz", "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz",
"integrity": "sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==", "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==",
"dev": true, "dev": true
"license": "MIT",
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
}, },
"node_modules/merge-stream": { "node_modules/merge-stream": {
"version": "2.0.0", "version": "2.0.0",
@ -13854,7 +13825,6 @@
"resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
"integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==",
"dev": true, "dev": true,
"license": "MIT",
"bin": { "bin": {
"mime": "cli.js" "mime": "cli.js"
}, },
@ -14006,8 +13976,7 @@
"node_modules/ms": { "node_modules/ms": {
"version": "2.1.2", "version": "2.1.2",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
"dev": true
}, },
"node_modules/multicast-dns": { "node_modules/multicast-dns": {
"version": "7.2.5", "version": "7.2.5",
@ -14271,7 +14240,6 @@
"resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz",
"integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==",
"dev": true, "dev": true,
"license": "MIT",
"dependencies": { "dependencies": {
"ee-first": "1.1.1" "ee-first": "1.1.1"
}, },
@ -14593,11 +14561,10 @@
"dev": true "dev": true
}, },
"node_modules/path-to-regexp": { "node_modules/path-to-regexp": {
"version": "1.9.0", "version": "1.8.0",
"resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.9.0.tgz", "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.8.0.tgz",
"integrity": "sha512-xIp7/apCFJuUHdDLWe8O1HIkb0kQrOMb/0u6FXQjemHn/ii5LrIzU6bdECnsiTF/GjZkMEKg1xdiZwNqDYlZ6g==", "integrity": "sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA==",
"dev": true, "dev": true,
"license": "MIT",
"dependencies": { "dependencies": {
"isarray": "0.0.1" "isarray": "0.0.1"
} }
@ -15065,13 +15032,12 @@
} }
}, },
"node_modules/qs": { "node_modules/qs": {
"version": "6.13.0", "version": "6.11.0",
"resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz", "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz",
"integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==", "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==",
"dev": true, "dev": true,
"license": "BSD-3-Clause",
"dependencies": { "dependencies": {
"side-channel": "^1.0.6" "side-channel": "^1.0.4"
}, },
"engines": { "engines": {
"node": ">=0.6" "node": ">=0.6"
@ -15138,7 +15104,6 @@
"resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz",
"integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==",
"dev": true, "dev": true,
"license": "MIT",
"dependencies": { "dependencies": {
"bytes": "3.1.2", "bytes": "3.1.2",
"http-errors": "2.0.0", "http-errors": "2.0.0",
@ -15154,7 +15119,6 @@
"resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz",
"integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==",
"dev": true, "dev": true,
"license": "MIT",
"engines": { "engines": {
"node": ">= 0.8" "node": ">= 0.8"
} }
@ -15527,6 +15491,7 @@
"version": "16.9.0", "version": "16.9.0",
"resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.9.0.tgz", "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.9.0.tgz",
"integrity": "sha512-YFT2rxO9hM70ewk9jq0y6sQk8cL02xm4+IzYBz75CQGlClQQ1Bxq0nhHF6OtSbit+AIahujJgb/CPRibFkMNJQ==", "integrity": "sha512-YFT2rxO9hM70ewk9jq0y6sQk8cL02xm4+IzYBz75CQGlClQQ1Bxq0nhHF6OtSbit+AIahujJgb/CPRibFkMNJQ==",
"dev": true,
"dependencies": { "dependencies": {
"loose-envify": "^1.1.0", "loose-envify": "^1.1.0",
"object-assign": "^4.1.1", "object-assign": "^4.1.1",
@ -16280,6 +16245,7 @@
"version": "0.15.0", "version": "0.15.0",
"resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.15.0.tgz", "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.15.0.tgz",
"integrity": "sha512-xAefmSfN6jqAa7Kuq7LIJY0bwAPG3xlCj0HMEBQk1lxYiDKZscY2xJ5U/61ZTrYbmNQbXa+gc7czPkVo11tnCg==", "integrity": "sha512-xAefmSfN6jqAa7Kuq7LIJY0bwAPG3xlCj0HMEBQk1lxYiDKZscY2xJ5U/61ZTrYbmNQbXa+gc7czPkVo11tnCg==",
"dev": true,
"dependencies": { "dependencies": {
"loose-envify": "^1.1.0", "loose-envify": "^1.1.0",
"object-assign": "^4.1.1" "object-assign": "^4.1.1"
@ -16332,11 +16298,10 @@
} }
}, },
"node_modules/send": { "node_modules/send": {
"version": "0.19.0", "version": "0.18.0",
"resolved": "https://registry.npmjs.org/send/-/send-0.19.0.tgz", "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz",
"integrity": "sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==", "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==",
"dev": true, "dev": true,
"license": "MIT",
"dependencies": { "dependencies": {
"debug": "2.6.9", "debug": "2.6.9",
"depd": "2.0.0", "depd": "2.0.0",
@ -16361,7 +16326,6 @@
"resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
"integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
"dev": true, "dev": true,
"license": "MIT",
"dependencies": { "dependencies": {
"ms": "2.0.0" "ms": "2.0.0"
} }
@ -16370,25 +16334,13 @@
"version": "2.0.0", "version": "2.0.0",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
"integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
"dev": true, "dev": true
"license": "MIT"
},
"node_modules/send/node_modules/encodeurl": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
"integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==",
"dev": true,
"license": "MIT",
"engines": {
"node": ">= 0.8"
}
}, },
"node_modules/send/node_modules/ms": { "node_modules/send/node_modules/ms": {
"version": "2.1.3", "version": "2.1.3",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
"integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
"dev": true, "dev": true
"license": "MIT"
}, },
"node_modules/serialize-javascript": { "node_modules/serialize-javascript": {
"version": "6.0.2", "version": "6.0.2",
@ -16478,16 +16430,15 @@
} }
}, },
"node_modules/serve-static": { "node_modules/serve-static": {
"version": "1.16.2", "version": "1.15.0",
"resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.2.tgz", "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz",
"integrity": "sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==", "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==",
"dev": true, "dev": true,
"license": "MIT",
"dependencies": { "dependencies": {
"encodeurl": "~2.0.0", "encodeurl": "~1.0.2",
"escape-html": "~1.0.3", "escape-html": "~1.0.3",
"parseurl": "~1.3.3", "parseurl": "~1.3.3",
"send": "0.19.0" "send": "0.18.0"
}, },
"engines": { "engines": {
"node": ">= 0.8.0" "node": ">= 0.8.0"
@ -16529,8 +16480,7 @@
"version": "1.2.0", "version": "1.2.0",
"resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz",
"integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==",
"dev": true, "dev": true
"license": "ISC"
}, },
"node_modules/shell-quote": { "node_modules/shell-quote": {
"version": "1.8.1", "version": "1.8.1",
@ -16629,6 +16579,34 @@
"integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==",
"dev": true "dev": true
}, },
"node_modules/socket.io-client": {
"version": "4.7.5",
"resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-4.7.5.tgz",
"integrity": "sha512-sJ/tqHOCe7Z50JCBCXrsY3I2k03iOiUe+tj1OmKeD2lXPiGH/RUCdTZFoqVyN7l1MnpIzPrGtLcijffmeouNlQ==",
"license": "MIT",
"dependencies": {
"@socket.io/component-emitter": "~3.1.0",
"debug": "~4.3.2",
"engine.io-client": "~6.5.2",
"socket.io-parser": "~4.2.4"
},
"engines": {
"node": ">=10.0.0"
}
},
"node_modules/socket.io-parser": {
"version": "4.2.4",
"resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.4.tgz",
"integrity": "sha512-/GbIKmo8ioc+NIWIhwdecY0ge+qVBSMdgxGygevmdHj24bsfgtCmcUUcQ5ZzcylGFHsN3k4HB4Cgkl96KVnuew==",
"license": "MIT",
"dependencies": {
"@socket.io/component-emitter": "~3.1.0",
"debug": "~4.3.1"
},
"engines": {
"node": ">=10.0.0"
}
},
"node_modules/sockjs": { "node_modules/sockjs": {
"version": "0.3.24", "version": "0.3.24",
"resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz", "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz",
@ -16751,7 +16729,6 @@
"resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz",
"integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==",
"dev": true, "dev": true,
"license": "MIT",
"engines": { "engines": {
"node": ">= 0.8" "node": ">= 0.8"
} }
@ -17273,7 +17250,6 @@
"resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz",
"integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==",
"dev": true, "dev": true,
"license": "MIT",
"engines": { "engines": {
"node": ">=0.6" "node": ">=0.6"
} }
@ -17400,7 +17376,6 @@
"resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz",
"integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==",
"dev": true, "dev": true,
"license": "MIT",
"dependencies": { "dependencies": {
"media-typer": "0.3.0", "media-typer": "0.3.0",
"mime-types": "~2.1.24" "mime-types": "~2.1.24"
@ -17658,7 +17633,6 @@
"resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
"integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==",
"dev": true, "dev": true,
"license": "MIT",
"engines": { "engines": {
"node": ">= 0.8" "node": ">= 0.8"
} }
@ -18441,7 +18415,6 @@
"version": "8.17.1", "version": "8.17.1",
"resolved": "https://registry.npmjs.org/ws/-/ws-8.17.1.tgz", "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.1.tgz",
"integrity": "sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==", "integrity": "sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==",
"dev": true,
"license": "MIT", "license": "MIT",
"engines": { "engines": {
"node": ">=10.0.0" "node": ">=10.0.0"
@ -18474,6 +18447,14 @@
"integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==",
"dev": true "dev": true
}, },
"node_modules/xmlhttprequest-ssl": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-2.0.0.tgz",
"integrity": "sha512-QKxVRxiRACQcVuQEYFsI1hhkrMlrXHPegbbd1yn9UHOmRxY+si12nQYzri3vbzt8VdTTRviqcKxcyllFas5z2A==",
"engines": {
"node": ">=0.4.0"
}
},
"node_modules/yallist": { "node_modules/yallist": {
"version": "4.0.0", "version": "4.0.0",
"resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
@ -21134,18 +21115,10 @@
"@sinonjs/commons": "^3.0.0" "@sinonjs/commons": "^3.0.0"
} }
}, },
"@tanstack/react-table": { "@socket.io/component-emitter": {
"version": "8.20.5", "version": "3.1.2",
"resolved": "https://registry.npmjs.org/@tanstack/react-table/-/react-table-8.20.5.tgz", "resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.2.tgz",
"integrity": "sha512-WEHopKw3znbUZ61s9i0+i9g8drmDo6asTWbrQh8Us63DAk/M0FkmIqERew6P71HI75ksZ2Pxyuf4vvKh9rAkiA==", "integrity": "sha512-9BCxFwvbGg/RsZK9tjXd8s4UcwR0MWeFQ1XEKIQVVvAGJyINdrqKMcTRyLoK8Rse1GjzLV9cwjWV1olXRWEXVA=="
"requires": {
"@tanstack/table-core": "8.20.5"
}
},
"@tanstack/table-core": {
"version": "8.20.5",
"resolved": "https://registry.npmjs.org/@tanstack/table-core/-/table-core-8.20.5.tgz",
"integrity": "sha512-P9dF7XbibHph2PFRz8gfBKEXEY/HJPOhym8CHmjF8y3q5mWpKx9xtZapXQUWCgkqvsK0R46Azuz+VaxD4Xl+Tg=="
}, },
"@testing-library/dom": { "@testing-library/dom": {
"version": "5.6.1", "version": "5.6.1",
@ -22373,9 +22346,9 @@
"dev": true "dev": true
}, },
"body-parser": { "body-parser": {
"version": "1.20.3", "version": "1.20.2",
"resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.3.tgz", "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz",
"integrity": "sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==", "integrity": "sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==",
"dev": true, "dev": true,
"requires": { "requires": {
"bytes": "3.1.2", "bytes": "3.1.2",
@ -22386,7 +22359,7 @@
"http-errors": "2.0.0", "http-errors": "2.0.0",
"iconv-lite": "0.4.24", "iconv-lite": "0.4.24",
"on-finished": "2.4.1", "on-finished": "2.4.1",
"qs": "6.13.0", "qs": "6.11.0",
"raw-body": "2.5.2", "raw-body": "2.5.2",
"type-is": "~1.6.18", "type-is": "~1.6.18",
"unpipe": "1.0.0" "unpipe": "1.0.0"
@ -23356,7 +23329,6 @@
"version": "4.3.5", "version": "4.3.5",
"resolved": "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz",
"integrity": "sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==", "integrity": "sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==",
"dev": true,
"requires": { "requires": {
"ms": "2.1.2" "ms": "2.1.2"
} }
@ -23611,11 +23583,28 @@
"dev": true "dev": true
}, },
"encodeurl": { "encodeurl": {
"version": "2.0.0", "version": "1.0.2",
"resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
"integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==",
"dev": true "dev": true
}, },
"engine.io-client": {
"version": "6.5.4",
"resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-6.5.4.tgz",
"integrity": "sha512-GeZeeRjpD2qf49cZQ0Wvh/8NJNfeXkXXcoGh+F77oEAgo9gUHwT1fCRxSNU+YEEaysOJTnsFHmM5oAcPy4ntvQ==",
"requires": {
"@socket.io/component-emitter": "~3.1.0",
"debug": "~4.3.1",
"engine.io-parser": "~5.2.1",
"ws": "~8.17.1",
"xmlhttprequest-ssl": "~2.0.0"
}
},
"engine.io-parser": {
"version": "5.2.3",
"resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.2.3.tgz",
"integrity": "sha512-HqD3yTBfnBxIrbnM1DoD6Pcq8NECnh8d4As1Qgh0z5Gg3jRRIqijury0CL3ghu/edArpUYiYqQiDUQBIs4np3Q=="
},
"enhanced-resolve": { "enhanced-resolve": {
"version": "5.17.1", "version": "5.17.1",
"resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.17.1.tgz", "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.17.1.tgz",
@ -24586,37 +24575,37 @@
} }
}, },
"express": { "express": {
"version": "4.21.0", "version": "4.19.2",
"resolved": "https://registry.npmjs.org/express/-/express-4.21.0.tgz", "resolved": "https://registry.npmjs.org/express/-/express-4.19.2.tgz",
"integrity": "sha512-VqcNGcj/Id5ZT1LZ/cfihi3ttTn+NJmkli2eZADigjq29qTlWi/hAQ43t/VLPq8+UX06FCEx3ByOYet6ZFblng==", "integrity": "sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q==",
"dev": true, "dev": true,
"requires": { "requires": {
"accepts": "~1.3.8", "accepts": "~1.3.8",
"array-flatten": "1.1.1", "array-flatten": "1.1.1",
"body-parser": "1.20.3", "body-parser": "1.20.2",
"content-disposition": "0.5.4", "content-disposition": "0.5.4",
"content-type": "~1.0.4", "content-type": "~1.0.4",
"cookie": "0.6.0", "cookie": "0.6.0",
"cookie-signature": "1.0.6", "cookie-signature": "1.0.6",
"debug": "2.6.9", "debug": "2.6.9",
"depd": "2.0.0", "depd": "2.0.0",
"encodeurl": "~2.0.0", "encodeurl": "~1.0.2",
"escape-html": "~1.0.3", "escape-html": "~1.0.3",
"etag": "~1.8.1", "etag": "~1.8.1",
"finalhandler": "1.3.1", "finalhandler": "1.2.0",
"fresh": "0.5.2", "fresh": "0.5.2",
"http-errors": "2.0.0", "http-errors": "2.0.0",
"merge-descriptors": "1.0.3", "merge-descriptors": "1.0.1",
"methods": "~1.1.2", "methods": "~1.1.2",
"on-finished": "2.4.1", "on-finished": "2.4.1",
"parseurl": "~1.3.3", "parseurl": "~1.3.3",
"path-to-regexp": "0.1.10", "path-to-regexp": "0.1.7",
"proxy-addr": "~2.0.7", "proxy-addr": "~2.0.7",
"qs": "6.13.0", "qs": "6.11.0",
"range-parser": "~1.2.1", "range-parser": "~1.2.1",
"safe-buffer": "5.2.1", "safe-buffer": "5.2.1",
"send": "0.19.0", "send": "0.18.0",
"serve-static": "1.16.2", "serve-static": "1.15.0",
"setprototypeof": "1.2.0", "setprototypeof": "1.2.0",
"statuses": "2.0.1", "statuses": "2.0.1",
"type-is": "~1.6.18", "type-is": "~1.6.18",
@ -24640,9 +24629,9 @@
"dev": true "dev": true
}, },
"path-to-regexp": { "path-to-regexp": {
"version": "0.1.10", "version": "0.1.7",
"resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.10.tgz", "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz",
"integrity": "sha512-7lf7qcQidTku0Gu3YDPc8DJ1q7OOucfa/BSsIwjuh56VU7katFvuM8hULfkwB3Fns/rsVF7PwPKVw1sl5KQS9w==", "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==",
"dev": true "dev": true
}, },
"safe-buffer": { "safe-buffer": {
@ -24777,13 +24766,13 @@
} }
}, },
"finalhandler": { "finalhandler": {
"version": "1.3.1", "version": "1.2.0",
"resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.1.tgz", "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz",
"integrity": "sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==", "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==",
"dev": true, "dev": true,
"requires": { "requires": {
"debug": "2.6.9", "debug": "2.6.9",
"encodeurl": "~2.0.0", "encodeurl": "~1.0.2",
"escape-html": "~1.0.3", "escape-html": "~1.0.3",
"on-finished": "2.4.1", "on-finished": "2.4.1",
"parseurl": "~1.3.3", "parseurl": "~1.3.3",
@ -28886,9 +28875,9 @@
} }
}, },
"merge-descriptors": { "merge-descriptors": {
"version": "1.0.3", "version": "1.0.1",
"resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz", "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz",
"integrity": "sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==", "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==",
"dev": true "dev": true
}, },
"merge-stream": { "merge-stream": {
@ -29041,8 +29030,7 @@
"ms": { "ms": {
"version": "2.1.2", "version": "2.1.2",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
"dev": true
}, },
"multicast-dns": { "multicast-dns": {
"version": "7.2.5", "version": "7.2.5",
@ -29471,9 +29459,9 @@
"dev": true "dev": true
}, },
"path-to-regexp": { "path-to-regexp": {
"version": "1.9.0", "version": "1.8.0",
"resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.9.0.tgz", "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.8.0.tgz",
"integrity": "sha512-xIp7/apCFJuUHdDLWe8O1HIkb0kQrOMb/0u6FXQjemHn/ii5LrIzU6bdECnsiTF/GjZkMEKg1xdiZwNqDYlZ6g==", "integrity": "sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA==",
"dev": true, "dev": true,
"requires": { "requires": {
"isarray": "0.0.1" "isarray": "0.0.1"
@ -29805,12 +29793,12 @@
"requires": {} "requires": {}
}, },
"qs": { "qs": {
"version": "6.13.0", "version": "6.11.0",
"resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz", "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz",
"integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==", "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==",
"dev": true, "dev": true,
"requires": { "requires": {
"side-channel": "^1.0.6" "side-channel": "^1.0.4"
} }
}, },
"qss": { "qss": {
@ -30128,6 +30116,7 @@
"version": "16.9.0", "version": "16.9.0",
"resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.9.0.tgz", "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.9.0.tgz",
"integrity": "sha512-YFT2rxO9hM70ewk9jq0y6sQk8cL02xm4+IzYBz75CQGlClQQ1Bxq0nhHF6OtSbit+AIahujJgb/CPRibFkMNJQ==", "integrity": "sha512-YFT2rxO9hM70ewk9jq0y6sQk8cL02xm4+IzYBz75CQGlClQQ1Bxq0nhHF6OtSbit+AIahujJgb/CPRibFkMNJQ==",
"dev": true,
"requires": { "requires": {
"loose-envify": "^1.1.0", "loose-envify": "^1.1.0",
"object-assign": "^4.1.1", "object-assign": "^4.1.1",
@ -30692,6 +30681,7 @@
"version": "0.15.0", "version": "0.15.0",
"resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.15.0.tgz", "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.15.0.tgz",
"integrity": "sha512-xAefmSfN6jqAa7Kuq7LIJY0bwAPG3xlCj0HMEBQk1lxYiDKZscY2xJ5U/61ZTrYbmNQbXa+gc7czPkVo11tnCg==", "integrity": "sha512-xAefmSfN6jqAa7Kuq7LIJY0bwAPG3xlCj0HMEBQk1lxYiDKZscY2xJ5U/61ZTrYbmNQbXa+gc7czPkVo11tnCg==",
"dev": true,
"requires": { "requires": {
"loose-envify": "^1.1.0", "loose-envify": "^1.1.0",
"object-assign": "^4.1.1" "object-assign": "^4.1.1"
@ -30731,9 +30721,9 @@
"dev": true "dev": true
}, },
"send": { "send": {
"version": "0.19.0", "version": "0.18.0",
"resolved": "https://registry.npmjs.org/send/-/send-0.19.0.tgz", "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz",
"integrity": "sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==", "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==",
"dev": true, "dev": true,
"requires": { "requires": {
"debug": "2.6.9", "debug": "2.6.9",
@ -30768,12 +30758,6 @@
} }
} }
}, },
"encodeurl": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
"integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==",
"dev": true
},
"ms": { "ms": {
"version": "2.1.3", "version": "2.1.3",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
@ -30860,15 +30844,15 @@
} }
}, },
"serve-static": { "serve-static": {
"version": "1.16.2", "version": "1.15.0",
"resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.2.tgz", "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz",
"integrity": "sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==", "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==",
"dev": true, "dev": true,
"requires": { "requires": {
"encodeurl": "~2.0.0", "encodeurl": "~1.0.2",
"escape-html": "~1.0.3", "escape-html": "~1.0.3",
"parseurl": "~1.3.3", "parseurl": "~1.3.3",
"send": "0.19.0" "send": "0.18.0"
} }
}, },
"set-function-length": { "set-function-length": {
@ -30975,6 +30959,26 @@
} }
} }
}, },
"socket.io-client": {
"version": "4.7.5",
"resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-4.7.5.tgz",
"integrity": "sha512-sJ/tqHOCe7Z50JCBCXrsY3I2k03iOiUe+tj1OmKeD2lXPiGH/RUCdTZFoqVyN7l1MnpIzPrGtLcijffmeouNlQ==",
"requires": {
"@socket.io/component-emitter": "~3.1.0",
"debug": "~4.3.2",
"engine.io-client": "~6.5.2",
"socket.io-parser": "~4.2.4"
}
},
"socket.io-parser": {
"version": "4.2.4",
"resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.4.tgz",
"integrity": "sha512-/GbIKmo8ioc+NIWIhwdecY0ge+qVBSMdgxGygevmdHj24bsfgtCmcUUcQ5ZzcylGFHsN3k4HB4Cgkl96KVnuew==",
"requires": {
"@socket.io/component-emitter": "~3.1.0",
"debug": "~4.3.1"
}
},
"sockjs": { "sockjs": {
"version": "0.3.24", "version": "0.3.24",
"resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz", "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz",
@ -32296,7 +32300,6 @@
"version": "8.17.1", "version": "8.17.1",
"resolved": "https://registry.npmjs.org/ws/-/ws-8.17.1.tgz", "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.1.tgz",
"integrity": "sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==", "integrity": "sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==",
"dev": true,
"requires": {} "requires": {}
}, },
"xml-name-validator": { "xml-name-validator": {
@ -32311,6 +32314,11 @@
"integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==",
"dev": true "dev": true
}, },
"xmlhttprequest-ssl": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-2.0.0.tgz",
"integrity": "sha512-QKxVRxiRACQcVuQEYFsI1hhkrMlrXHPegbbd1yn9UHOmRxY+si12nQYzri3vbzt8VdTTRviqcKxcyllFas5z2A=="
},
"yallist": { "yallist": {
"version": "4.0.0", "version": "4.0.0",
"resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",

View File

@ -1,6 +1,6 @@
{ {
"name": "foris", "name": "foris",
"version": "6.5.0", "version": "6.1.1",
"description": "Foris JS library is a set of components and utils for reForis application and plugins.", "description": "Foris JS library is a set of components and utils for reForis application and plugins.",
"author": "CZ.NIC, z.s.p.o.", "author": "CZ.NIC, z.s.p.o.",
"repository": { "repository": {
@ -18,13 +18,13 @@
"@fortawesome/free-regular-svg-icons": "^6.6.0", "@fortawesome/free-regular-svg-icons": "^6.6.0",
"@fortawesome/free-solid-svg-icons": "^6.6.0", "@fortawesome/free-solid-svg-icons": "^6.6.0",
"@fortawesome/react-fontawesome": "^0.2.2", "@fortawesome/react-fontawesome": "^0.2.2",
"@tanstack/react-table": "^8.20.5",
"axios": "^1.7.2", "axios": "^1.7.2",
"immutability-helper": "^3.1.1", "immutability-helper": "^3.1.1",
"moment": "^2.30.1", "moment": "^2.30.1",
"qrcode.react": "^3.1.0", "qrcode.react": "^3.1.0",
"react-datetime": "^3.2.0", "react-datetime": "^3.2.0",
"react-uid": "^2.3.3" "react-uid": "^2.3.3",
"socket.io-client": "^4.6.1"
}, },
"peerDependencies": { "peerDependencies": {
"bootstrap": "^5.3.3", "bootstrap": "^5.3.3",

View File

@ -5,12 +5,10 @@
* See /LICENSE for more information. * See /LICENSE for more information.
*/ */
import React, { useRef, useEffect, useState } from "react"; import React from "react";
import PropTypes from "prop-types"; import PropTypes from "prop-types";
import { useFocusTrap } from "../utils/hooks";
export const ALERT_TYPES = Object.freeze({ export const ALERT_TYPES = Object.freeze({
PRIMARY: "primary", PRIMARY: "primary",
SECONDARY: "secondary", SECONDARY: "secondary",
@ -39,37 +37,17 @@ Alert.defaultProps = {
}; };
function Alert({ type, onDismiss, children }) { function Alert({ type, onDismiss, children }) {
const alertRef = useRef();
const [isVisible, setIsVisible] = useState(true);
useFocusTrap(alertRef, !!onDismiss);
useEffect(() => {
if (onDismiss) {
const timeout = setTimeout(() => setIsVisible(false), 7000);
return () => clearTimeout(timeout);
}
}, [onDismiss]);
const handleAnimationEnd = () => {
if (!isVisible && onDismiss) {
onDismiss();
}
};
return ( return (
<div <div
ref={alertRef} className={`alert alert-${type} ${
className={`alert alert-${type} ${isVisible ? "alert-fade-in" : "alert-slide-out-top"} ${
onDismiss ? "alert-dismissible" : "" onDismiss ? "alert-dismissible" : ""
}`.trim()} }`.trim()}
role="alert"
onAnimationEnd={handleAnimationEnd}
> >
{onDismiss && ( {onDismiss && (
<button <button
type="button" type="button"
className="btn-close" className="btn-close"
onClick={() => setIsVisible(false)} onClick={onDismiss}
aria-label={_("Close")} aria-label={_("Close")}
/> />
)} )}

View File

@ -48,13 +48,15 @@ function CopyInput({ value, ...props }) {
return ( return (
<Input type="text" value={value} ref={inputTextRef} {...props}> <Input type="text" value={value} ref={inputTextRef} {...props}>
<button <div className="input-group-append">
className="btn btn-outline-secondary" <button
type="button" className="btn btn-outline-secondary"
onClick={handleCopyClick} type="button"
> onClick={handleCopyClick}
<span>{isCopied ? _("Copied!") : _("Copy")}</span> >
</button> <span>{isCopied ? _("Copied!") : _("Copy")}</span>
</button>
</div>
</Input> </Input>
); );
} }

View File

@ -6,7 +6,6 @@ All additional `props` are passed to the `<input type="email">` HTML component.
```js ```js
import { useState } from "react"; import { useState } from "react";
import Button from "./Button";
const [email, setEmail] = useState("Wrong email"); const [email, setEmail] = useState("Wrong email");
<form onSubmit={(e) => e.preventDefault()}> <form onSubmit={(e) => e.preventDefault()}>
<EmailInput <EmailInput
@ -15,6 +14,6 @@ const [email, setEmail] = useState("Wrong email");
helpText="Read the small text!" helpText="Read the small text!"
onChange={(event) => setEmail(event.target.value)} onChange={(event) => setEmail(event.target.value)}
/> />
<Button type="submit">Try to submit</Button> <button type="submit">Try to submit</button>
</form>; </form>;
``` ```

View File

@ -9,7 +9,7 @@ import React, { useRef, useEffect } from "react";
import PropTypes from "prop-types"; import PropTypes from "prop-types";
import { useClickOutside, useFocusTrap } from "../utils/hooks"; import { useClickOutside } from "../utils/hooks";
import Portal from "../utils/Portal"; import Portal from "../utils/Portal";
import "./Modal.css"; import "./Modal.css";
@ -29,11 +29,10 @@ Modal.propTypes = {
}; };
export function Modal({ shown, setShown, scrollable, size, children }) { export function Modal({ shown, setShown, scrollable, size, children }) {
const modalRef = useRef(); const dialogRef = useRef();
let modalSize = "modal-"; let modalSize = "modal-";
useClickOutside(modalRef, () => setShown(false)); useClickOutside(dialogRef, () => setShown(false));
useFocusTrap(modalRef, shown);
useEffect(() => { useEffect(() => {
const handleEsc = (event) => { const handleEsc = (event) => {
@ -66,13 +65,11 @@ export function Modal({ shown, setShown, scrollable, size, children }) {
return ( return (
<Portal containerId="modal-container"> <Portal containerId="modal-container">
<div <div
ref={modalRef}
className={`modal fade ${shown ? "show" : ""}`.trim()} className={`modal fade ${shown ? "show" : ""}`.trim()}
role="dialog" role="dialog"
aria-modal="true"
aria-labelledby="modal-title"
> >
<div <div
ref={dialogRef}
className={`${modalSize.trim()} modal-dialog modal-dialog-centered ${ className={`${modalSize.trim()} modal-dialog modal-dialog-centered ${
scrollable ? "modal-dialog-scrollable" : "" scrollable ? "modal-dialog-scrollable" : ""
}`.trim()} }`.trim()}
@ -93,7 +90,7 @@ ModalHeader.propTypes = {
export function ModalHeader({ setShown, title }) { export function ModalHeader({ setShown, title }) {
return ( return (
<div className="modal-header"> <div className="modal-header">
<h1 className="modal-title fs-5">{title}</h1> <h5 className="modal-title">{title}</h5>
<button <button
type="button" type="button"
className="btn-close" className="btn-close"

View File

@ -1,48 +0,0 @@
/*
* Copyright (C) 2024 CZ.NIC z.s.p.o. (https://www.nic.cz/)
*
* This is free software, licensed under the GNU General Public License v3.
* See /LICENSE for more information.
*/
import React from "react";
import PropTypes from "prop-types";
Radio.propTypes = {
label: PropTypes.oneOfType([
PropTypes.string,
PropTypes.element,
PropTypes.node,
PropTypes.arrayOf(PropTypes.node),
]).isRequired,
id: PropTypes.string.isRequired,
inline: PropTypes.bool,
helpText: PropTypes.string,
className: PropTypes.string,
};
function Radio({ label, id, helpText, inline, className, ...props }) {
return (
<div
className={`${className || "mb-3"} ${inline ? "form-check form-check-inline" : ""}`.trim()}
>
<input
id={id}
className="form-check-input me-2"
type="radio"
{...props}
/>
<label className="form-check-label" htmlFor={id}>
{label}
{helpText && (
<div className="form-text">
<small>{helpText}</small>
</div>
)}
</label>
</div>
);
}
export default Radio;

View File

@ -10,8 +10,6 @@ import React from "react";
import PropTypes from "prop-types"; import PropTypes from "prop-types";
import { useUID } from "react-uid"; import { useUID } from "react-uid";
import Radio from "./Radio";
RadioSet.propTypes = { RadioSet.propTypes = {
/** Name attribute of the input HTML tag. */ /** Name attribute of the input HTML tag. */
name: PropTypes.string.isRequired, name: PropTypes.string.isRequired,
@ -75,4 +73,40 @@ function RadioSet({ name, label, choices, value, helpText, inline, ...props }) {
); );
} }
Radio.propTypes = {
label: PropTypes.oneOfType([
PropTypes.string,
PropTypes.element,
PropTypes.node,
PropTypes.arrayOf(PropTypes.node),
]).isRequired,
id: PropTypes.string.isRequired,
inline: PropTypes.bool,
helpText: PropTypes.string,
className: PropTypes.string,
};
export function Radio({ label, id, helpText, inline, className, ...props }) {
return (
<div
className={`${className || "mb-3"} ${inline ? "form-check form-check-inline" : ""}`.trim()}
>
<input
id={id}
className="form-check-input me-2"
type="radio"
{...props}
/>
<label className="form-check-label" htmlFor={id}>
{label}
{helpText && (
<div className="form-text">
<small>{helpText}</small>
</div>
)}
</label>
</div>
);
}
export default RadioSet; export default RadioSet;

View File

@ -9,7 +9,7 @@
.spinner-wrapper .spinner-border { .spinner-wrapper .spinner-border {
width: 4rem; width: 4rem;
height: 4rem; height: 4rem;
color: var(--bs-primary); color: #00a2e2;
} }
.spinner-fs-background { .spinner-fs-background {

View File

@ -1,42 +0,0 @@
/*
* Copyright (C) 2024 CZ.NIC z.s.p.o. (https://www.nic.cz/)
*
* This is free software, licensed under the GNU General Public License v3.
* See /LICENSE for more information.
*/
import React from "react";
import { faEllipsisVertical } from "@fortawesome/free-solid-svg-icons";
import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
import PropTypes from "prop-types";
import Button from "./Button";
ThreeDotsMenu.propTypes = {
/** Menu items. */
children: PropTypes.arrayOf(PropTypes.node).isRequired,
};
function ThreeDotsMenu({ children, ...props }) {
return (
<div className="dropdown position-static" {...props}>
<Button
className="btn-sm btn-link text-body"
data-bs-toggle="dropdown"
aria-expanded="false"
>
<FontAwesomeIcon icon={faEllipsisVertical} />
</Button>
<ul className="dropdown-menu">
{children.map((child) => (
<li key={child.key || child.props.id || Math.random()}>
{child}
</li>
))}
</ul>
</div>
);
}
export default ThreeDotsMenu;

View File

@ -1,40 +0,0 @@
ThreeDotsMenu Bootstrap component is a dropdown menu that appears when the user
clicks on three dots. It is used to display a list of actions that can be
performed on a particular item.
```js
import { useState } from "react";
import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
import { faEdit, faTrash } from "@fortawesome/free-solid-svg-icons";
const threeDotsMenuItems = [
{
text: "Edit",
icon: faEdit,
onClick: () => {
alert("Edit clicked");
},
},
{
text: "Delete",
icon: faTrash,
onClick: () => {
alert("Delete clicked");
},
},
];
<ThreeDotsMenu>
{threeDotsMenuItems.map((item, index) => (
<button key={index} onClick={item.onClick} className="dropdown-item">
<FontAwesomeIcon
icon={item.icon}
className="me-1"
width="1rem"
size="sm"
/>
{item.text}
</button>
))}
</ThreeDotsMenu>;
```

View File

@ -1,135 +0,0 @@
/*
* Copyright (C) 2019-2024 CZ.NIC z.s.p.o. (https://www.nic.cz/)
*
* This is free software, licensed under the GNU General Public License v3.
* See /LICENSE for more information.
*/
import React, { useState, useEffect } from "react";
import PropTypes from "prop-types";
import { useAPIPost } from "../../api/hooks";
import { API_STATE } from "../../api/utils";
import Button from "../../bootstrap/Button";
import {
Modal,
ModalHeader,
ModalBody,
ModalFooter,
} from "../../bootstrap/Modal";
import { useAlert } from "../../context/alertContext/AlertContext";
ActionButtonWithModal.propTypes = {
/** Component that triggers the action. */
actionTrigger: PropTypes.elementType.isRequired,
/** URL to send the action to. */
actionUrl: PropTypes.string.isRequired,
/** Title of the modal. */
modalTitle: PropTypes.string.isRequired,
/** Message of the modal. */
modalMessage: PropTypes.string.isRequired,
/** Text of the action button in the modal. */
modalActionText: PropTypes.string,
/** Props for the action button in the modal. */
modalActionProps: PropTypes.object,
/** Message to display on successful action. */
successMessage: PropTypes.string,
/** Message to display on failed action. */
errorMessage: PropTypes.string,
};
function ActionButtonWithModal({
actionTrigger: ActionTriggerComponent,
actionUrl,
modalTitle,
modalMessage,
modalActionText,
modalActionProps,
successMessage,
errorMessage,
}) {
const [triggered, setTriggered] = useState(false);
const [modalShown, setModalShown] = useState(false);
const [triggerActionStatus, triggerAction] = useAPIPost(actionUrl);
const [setAlert] = useAlert();
useEffect(() => {
if (triggerActionStatus.state === API_STATE.SUCCESS) {
setAlert(
successMessage || _("Action successful."),
API_STATE.SUCCESS
);
}
if (triggerActionStatus.state === API_STATE.ERROR) {
setAlert(errorMessage || _("Action failed."));
}
}, [triggerActionStatus, setAlert, successMessage, errorMessage]);
const actionHandler = () => {
setTriggered(true);
triggerAction();
setModalShown(false);
};
return (
<>
<ActionModal
shown={modalShown}
setShown={setModalShown}
onAction={actionHandler}
title={modalTitle}
message={modalMessage}
actionText={modalActionText}
actionProps={modalActionProps}
/>
<ActionTriggerComponent
loading={triggered}
disabled={triggered}
onClick={() => setModalShown(true)}
/>
</>
);
}
ActionModal.propTypes = {
shown: PropTypes.bool.isRequired,
setShown: PropTypes.func.isRequired,
onAction: PropTypes.func.isRequired,
title: PropTypes.string.isRequired,
message: PropTypes.string.isRequired,
actionText: PropTypes.string,
actionProps: PropTypes.object,
};
function ActionModal({
shown,
setShown,
onAction,
title,
message,
actionText,
actionProps,
}) {
return (
<Modal shown={shown} setShown={setShown}>
<ModalHeader setShown={setShown} title={title} />
<ModalBody>
<p className="mb-0">{message}</p>
</ModalBody>
<ModalFooter>
<Button
className="btn-secondary"
onClick={() => setShown(false)}
>
{_("Cancel")}
</Button>
<Button onClick={onAction} {...actionProps}>
{actionText || _("Confirm")}
</Button>
</ModalFooter>
</Modal>
);
}
export default ActionButtonWithModal;

View File

@ -1,39 +0,0 @@
RebootButton component is a button that opens a modal dialog to confirm the
reboot of the device.
## Usage
```jsx
import React, { useEffect, createContext } from "react";
import Button from "../../bootstrap/Button";
import { AlertContextProvider } from "../../context/alertContext/AlertContext";
import ActionButtonWithModal from "./ActionButtonWithModal";
window.AlertContext = React.createContext();
const RebootButtonExample = () => {
const ActionButton = (props) => {
return <Button {...props}>Action</Button>;
};
return (
<AlertContextProvider>
<div id="modal-container" />
<div id="alert-container" />
<ActionButtonWithModal
actionTrigger={ActionButton}
actionUrl="/reforis/api/action"
modalTitle="Warning!"
modalMessage="Are you sure you want to perform this action?"
modalActionText="Confirm action"
modalActionProps={{ className: "btn-danger" }}
successMessage="Action request succeeded."
errorMessage="Action request failed."
/>
</AlertContextProvider>
);
};
<RebootButtonExample />;
```

View File

@ -0,0 +1,80 @@
/*
* Copyright (C) 2019-2024 CZ.NIC z.s.p.o. (https://www.nic.cz/)
*
* This is free software, licensed under the GNU General Public License v3.
* See /LICENSE for more information.
*/
import React, { useState, useEffect } from "react";
import PropTypes from "prop-types";
import { useAPIPost } from "../api/hooks";
import { API_STATE } from "../api/utils";
import Button from "../bootstrap/Button";
import { Modal, ModalHeader, ModalBody, ModalFooter } from "../bootstrap/Modal";
import { useAlert } from "../context/alertContext/AlertContext";
import { ForisURLs } from "../utils/forisUrls";
function RebootButton(props) {
const [triggered, setTriggered] = useState(false);
const [modalShown, setModalShown] = useState(false);
const [triggerRebootStatus, triggerReboot] = useAPIPost(ForisURLs.reboot);
const [setAlert] = useAlert();
useEffect(() => {
if (triggerRebootStatus.state === API_STATE.ERROR) {
setAlert(_("Reboot request failed."));
}
});
const rebootHandler = () => {
setTriggered(true);
triggerReboot();
setModalShown(false);
};
return (
<>
<RebootModal
shown={modalShown}
setShown={setModalShown}
onReboot={rebootHandler}
/>
<Button
className="btn-danger"
loading={triggered}
disabled={triggered}
onClick={() => setModalShown(true)}
{...props}
>
{_("Reboot")}
</Button>
</>
);
}
RebootModal.propTypes = {
shown: PropTypes.bool.isRequired,
setShown: PropTypes.func.isRequired,
onReboot: PropTypes.func.isRequired,
};
function RebootModal({ shown, setShown, onReboot }) {
return (
<Modal shown={shown} setShown={setShown}>
<ModalHeader setShown={setShown} title={_("Warning!")} />
<ModalBody>
<p>{_("Are you sure you want to restart the router?")}</p>
</ModalBody>
<ModalFooter>
<Button onClick={() => setShown(false)}>{_("Cancel")}</Button>
<Button className="btn-danger" onClick={onReboot}>
{_("Confirm reboot")}
</Button>
</ModalFooter>
</Modal>
);
}
export default RebootButton;

View File

@ -1,84 +0,0 @@
/*
* Copyright (C) 2019-2024 CZ.NIC z.s.p.o. (https://www.nic.cz/)
*
* This is free software, licensed under the GNU General Public License v3.
* See /LICENSE for more information.
*/
import React, { useMemo, useState } from "react";
import {
flexRender,
getCoreRowModel,
getSortedRowModel,
getPaginationRowModel,
useReactTable,
} from "@tanstack/react-table";
import PropTypes from "prop-types";
import RichTableBody from "./RichTableBody";
import RichTableHeader from "./RichTableHeader";
import RichTablePagination from "./RichTablePagination";
const fallbackData = [];
RichTable.propTypes = {
/** Columns to be displayed in the table */
columns: PropTypes.array.isRequired,
/** Data to be displayed in the table */
data: PropTypes.array.isRequired,
/** Whether to display pagination */
withPagination: PropTypes.bool,
/** Number of rows per page */
pageSize: PropTypes.number,
/** Index of the current page */
pageIndex: PropTypes.number,
};
function RichTable({
columns,
data,
withPagination,
pageSize = 5,
pageIndex = 0,
}) {
const tableColumns = useMemo(() => columns, [columns]);
const [tableData] = useState(data ?? fallbackData);
const [sorting, setSorting] = useState([]);
const [pagination, setPagination] = useState({
pageIndex,
pageSize,
});
const table = useReactTable({
data: tableData,
columns: tableColumns,
getCoreRowModel: getCoreRowModel(),
getSortedRowModel: getSortedRowModel(),
getPaginationRowModel: getPaginationRowModel(),
onPaginationChange: setPagination,
onSortingChange: setSorting,
state: {
sorting,
pagination,
},
});
return (
<div className="table-responsive">
<table className="table table-hover text-nowrap">
<RichTableHeader table={table} flexRender={flexRender} />
<RichTableBody table={table} flexRender={flexRender} />
</table>
{withPagination && (
<RichTablePagination
table={table}
tablePageSize={pageSize}
allRows={tableData.length}
/>
)}
</div>
);
}
export default RichTable;

View File

@ -1,135 +0,0 @@
### Description
Rich Table is a table component based on
[Tanstack React Table](https://tanstack.com/table/). It adds some features to
the table component, such as:
- **Pagination**: The table can be paginated.
- **Sorting**: The table can be sorted by columns.
- **Row Expansion**: The table rows can be expanded. (To be implemented)
### Example
```js
import RichTable from "./RichTable";
const columns = [
{
header: "Name",
accessorKey: "name",
},
{
header: "Surname",
accessorKey: "surname",
},
{
header: "Age",
accessorKey: "age",
},
{
header: "Phone",
accessorKey: "phone",
},
];
const data = [
{
name: "John",
surname: "Coltrane",
age: 30,
phone: "123456789",
},
{
name: "Jane",
surname: "Doe",
age: 25,
phone: "987654321",
},
{
name: "Alice",
surname: "Smith",
age: 35,
phone: "123456789",
},
{
name: "Bob",
surname: "Smith",
age: 40,
phone: "987654321",
},
{
name: "Charlie",
surname: "Brown",
age: 45,
phone: "123456789",
},
{
name: "Daisy",
surname: "Brown",
age: 50,
phone: "987654321",
},
{
name: "Eve",
surname: "Johnson",
age: 55,
phone: "123456789",
},
{
name: "Frank",
surname: "Johnson",
age: 60,
phone: "987654321",
},
{
name: "Grace",
surname: "Williams",
age: 65,
phone: "123456789",
},
{
name: "Henry",
surname: "Williams",
age: 70,
phone: "987654321",
},
{
name: "Ivy",
surname: "Brown",
age: 75,
phone: "123456789",
},
{
name: "Jack",
surname: "Brown",
age: 80,
phone: "987654321",
},
{
name: "Kelly",
surname: "Johnson",
age: 85,
phone: "123456789",
},
{
name: "Liam",
surname: "Johnson",
age: 90,
phone: "987654321",
},
{
name: "Mia",
surname: "Williams",
age: 95,
phone: "123456789",
},
{
name: "Nathan",
surname: "Williams",
age: 100,
phone: "987654321",
},
];
<RichTable columns={columns} data={data} withPagination />;
```

View File

@ -1,48 +0,0 @@
/*
* Copyright (C) 2019-2024 CZ.NIC z.s.p.o. (https://www.nic.cz/)
*
* This is free software, licensed under the GNU General Public License v3.
* See /LICENSE for more information.
*/
import React from "react";
import propTypes from "prop-types";
RichTableBody.propTypes = {
table: propTypes.shape({
getRowModel: propTypes.func.isRequired,
}).isRequired,
flexRender: propTypes.func.isRequired,
};
function RichTableBody({ table, flexRender }) {
return (
<tbody>
{table.getRowModel().rows.map((row) => {
return (
<tr key={row.id} className="align-middle">
{row.getVisibleCells().map((cell) => {
return (
<td
key={cell.id}
{...(cell.column.columnDef.className && {
className:
cell.column.columnDef.className,
})}
>
{flexRender(
cell.column.columnDef.cell,
cell.getContext()
)}
</td>
);
})}
</tr>
);
})}
</tbody>
);
}
export default RichTableBody;

View File

@ -1,96 +0,0 @@
/*
* Copyright (C) 2019-2024 CZ.NIC z.s.p.o. (https://www.nic.cz/)
*
* This is free software, licensed under the GNU General Public License v3.
* See /LICENSE for more information.
*/
import React from "react";
import {
faSquareCaretUp,
faSquareCaretDown,
} from "@fortawesome/free-solid-svg-icons";
import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
import propTypes from "prop-types";
RichTableHeader.propTypes = {
table: propTypes.shape({
getHeaderGroups: propTypes.func.isRequired,
}).isRequired,
flexRender: propTypes.func.isRequired,
};
function RichTableHeader({ table, flexRender }) {
const getThTitle = (header) => {
if (!header.column.getCanSort()) return undefined;
const nextSortingOrder = header.column.getNextSortingOrder();
if (nextSortingOrder === "asc") return _("Sort ascending");
if (nextSortingOrder === "desc") return _("Sort descending");
return _("Clear sort");
};
return (
<thead className="thead-light">
{table.getHeaderGroups().map((headerGroup) => (
<tr key={headerGroup.id} role="row">
{headerGroup.headers.map((header) => (
<th
key={header.id}
colSpan={header.colSpan}
{...(header.column.columnDef.headerClassName && {
className:
header.column.columnDef.headerClassName,
})}
>
{header.isPlaceholder ||
header.column.columnDef.headerIsHidden ? (
<div className="d-none" aria-hidden="true">
{flexRender(
header.column.columnDef.header,
header.getContext()
)}
</div>
) : (
<button
type="button"
className={`btn btn-link text-decoration-none text-reset fw-bold p-0 d-flex align-items-center
${
header.column.getCanSort()
? "d-flex align-items-center"
: ""
}
`}
onClick={header.column.getToggleSortingHandler()}
title={getThTitle(header)}
>
{flexRender(
header.column.columnDef.header,
header.getContext()
)}
{{
asc: (
<FontAwesomeIcon
icon={faSquareCaretUp}
className="ms-1 text-primary"
/>
),
desc: (
<FontAwesomeIcon
icon={faSquareCaretDown}
className="ms-1 text-primary"
/>
),
}[header.column.getIsSorted()] ?? null}
</button>
)}
</th>
))}
</tr>
))}
</thead>
);
}
export default RichTableHeader;

View File

@ -1,128 +0,0 @@
/*
* Copyright (C) 2019-2024 CZ.NIC z.s.p.o. (https://www.nic.cz/)
*
* This is free software, licensed under the GNU General Public License v3.
* See /LICENSE for more information.
*/
import React, { useMemo } from "react";
import {
faAngleLeft,
faAnglesLeft,
faAngleRight,
faAnglesRight,
} from "@fortawesome/free-solid-svg-icons";
import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
import propTypes from "prop-types";
RichTablePagination.propTypes = {
table: propTypes.shape({
getState: propTypes.func.isRequired,
getCanPreviousPage: propTypes.func.isRequired,
getCanNextPage: propTypes.func.isRequired,
firstPage: propTypes.func.isRequired,
previousPage: propTypes.func.isRequired,
nextPage: propTypes.func.isRequired,
lastPage: propTypes.func.isRequired,
setPageSize: propTypes.func.isRequired,
getPageCount: propTypes.func.isRequired,
}).isRequired,
tablePageSize: propTypes.number,
allRows: propTypes.number,
};
function RichTablePagination({ table, tablePageSize, allRows }) {
const { pagination } = table.getState();
const prevPagBtnDisabled = !table.getCanPreviousPage();
const nextPagBtnDisabled = !table.getCanNextPage();
const pageSizes = useMemo(() => {
return [tablePageSize ?? 5, 10, 25].filter(
(value, index, self) => self.indexOf(value) === index
);
}, [tablePageSize]);
const renderPaginationButton = (icon, ariaLabel, onClick, disabled) => (
<li
className={`page-item ${disabled ? "disabled" : ""}`}
style={{ cursor: disabled ? "not-allowed" : "pointer" }}
>
<button
type="button"
className="page-link"
aria-label={ariaLabel}
onClick={onClick}
disabled={disabled}
>
<FontAwesomeIcon icon={icon} />
</button>
</li>
);
return (
<nav
aria-label={_("Pagination navigation bar")}
className="d-flex gap-2 justify-content-start align-items-center mx-2 mb-1 text-nowrap"
>
<ul className="pagination pagination-sm mb-0">
{renderPaginationButton(
faAnglesLeft,
_("First page"),
() => table.firstPage(),
prevPagBtnDisabled
)}
{renderPaginationButton(
faAngleLeft,
_("Previous page"),
() => table.previousPage(),
prevPagBtnDisabled
)}
{renderPaginationButton(
faAngleRight,
_("Next page"),
() => table.nextPage(),
nextPagBtnDisabled
)}
{renderPaginationButton(
faAnglesRight,
_("Last page"),
() => table.lastPage(),
nextPagBtnDisabled
)}
</ul>
<span>
{_("Page")}&nbsp;
<span className="fw-bold">
{pagination.pageIndex + 1}
&nbsp;{_("of")}&nbsp;
{table.getPageCount().toLocaleString()}
</span>
</span>
<div
className="vr mx-1 align-self-center"
style={{ height: "1.5rem" }}
/>
<span>{_("Rows per page:")}</span>
<select
className="form-select form-select-sm w-auto"
aria-label={_("Select rows per page")}
value={pagination.pageSize}
onChange={(e) => {
table.setPageSize(Number(e.target.value));
}}
>
{pageSizes.map((pageSize) => (
<option key={pageSize} value={pageSize}>
{pageSize}
</option>
))}
<option key={allRows} value={allRows}>
{_("All")}
</option>
</select>
</nav>
);
}
export default RichTablePagination;

View File

@ -26,7 +26,7 @@ function ResetWiFiSettings({ ws, endpoint }) {
useEffect(() => { useEffect(() => {
const module = "wifi"; const module = "wifi";
ws.subscribe(module).bind(module, "reset", () => { ws.bind(module, "reset", () => {
// eslint-disable-next-line no-restricted-globals // eslint-disable-next-line no-restricted-globals
setTimeout(() => location.reload(), 1000); setTimeout(() => location.reload(), 1000);
}); });

View File

@ -1,92 +0,0 @@
/*
* Copyright (C) 2019-2024 CZ.NIC z.s.p.o. (https://www.nic.cz/)
*
* This is free software, licensed under the GNU General Public License v3.
* See /LICENSE for more information.
*/
import React from "react";
import Button from "bootstrap/Button";
import {
fireEvent,
getByText,
queryByText,
render,
wait,
} from "customTestRender";
import mockAxios from "jest-mock-axios";
import { mockJSONError } from "testUtils/network";
import { mockSetAlert } from "testUtils/alertContextMock";
import ActionButtonWithModal from "../ActionButtonWithModal/ActionButtonWithModal";
describe("<ActionButtonWithModal/>", () => {
let componentContainer;
const ActionButton = (props) => (
<Button type="button" {...props}>
Action
</Button>
);
beforeEach(() => {
const { container } = render(
<>
<div id="modal-container" />
<div id="alert-container" />
<ActionButtonWithModal
actionTrigger={ActionButton}
actionUrl="/reforis/api/action"
modalTitle="Warning!"
modalMessage="Are you sure you want to perform this action?"
modalActionText="Confirm action"
modalActionProps={{ className: "btn-danger" }}
successMessage="Action request succeeded."
errorMessage="Action request failed."
/>
</>
);
componentContainer = container;
});
it("Render button.", () => {
expect(componentContainer).toMatchSnapshot();
});
it("Render modal.", () => {
fireEvent.click(getByText(componentContainer, "Action"));
expect(componentContainer).toMatchSnapshot();
});
it("Confirm action.", () => {
fireEvent.click(getByText(componentContainer, "Action"));
fireEvent.click(getByText(componentContainer, "Confirm action"));
expect(mockAxios.post).toHaveBeenCalledWith(
"/reforis/api/action",
undefined,
expect.anything()
);
});
it("Hold error.", async () => {
fireEvent.click(getByText(componentContainer, "Action"));
fireEvent.click(getByText(componentContainer, "Confirm action"));
mockJSONError();
await wait(() =>
expect(mockSetAlert).toBeCalledWith("Action request failed.")
);
});
it("Show success alert on successful action.", async () => {
fireEvent.click(getByText(componentContainer, "Action"));
fireEvent.click(getByText(componentContainer, "Confirm action"));
mockAxios.mockResponse({ status: 200 });
await wait(() =>
expect(mockSetAlert).toBeCalledWith(
"Action request succeeded.",
"success"
)
);
});
});

View File

@ -0,0 +1,63 @@
/*
* Copyright (C) 2019 CZ.NIC z.s.p.o. (http://www.nic.cz/)
*
* This is free software, licensed under the GNU General Public License v3.
* See /LICENSE for more information.
*/
import React from "react";
import {
fireEvent,
getByText,
queryByText,
render,
wait,
} from "customTestRender";
import mockAxios from "jest-mock-axios";
import { mockJSONError } from "testUtils/network";
import { mockSetAlert } from "testUtils/alertContextMock";
import RebootButton from "../RebootButton";
describe("<RebootButton/>", () => {
let componentContainer;
beforeEach(() => {
const { container } = render(
<>
<div id="modal-container" />
<RebootButton />
</>
);
componentContainer = container;
});
it("Render.", () => {
expect(componentContainer).toMatchSnapshot();
});
it("Render modal.", () => {
expect(queryByText(componentContainer, "Confirm reboot")).toBeNull();
fireEvent.click(getByText(componentContainer, "Reboot"));
expect(componentContainer).toMatchSnapshot();
});
it("Confirm reboot.", () => {
fireEvent.click(getByText(componentContainer, "Reboot"));
fireEvent.click(getByText(componentContainer, "Confirm reboot"));
expect(mockAxios.post).toHaveBeenCalledWith(
"/api/reboot",
undefined,
expect.anything()
);
});
it("Hold error.", async () => {
fireEvent.click(getByText(componentContainer, "Reboot"));
fireEvent.click(getByText(componentContainer, "Confirm reboot"));
mockJSONError();
await wait(() =>
expect(mockSetAlert).toBeCalledWith("Reboot request failed.")
);
});
});

View File

@ -1,32 +1,11 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP // Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`<ActionButtonWithModal/> Render button. 1`] = ` exports[`<RebootButton/> Render modal. 1`] = `
<div>
<div
id="modal-container"
/>
<div
id="alert-container"
/>
<button
class="btn btn-primary d-inline-flex justify-content-center align-items-center"
type="button"
>
<span>
Action
</span>
</button>
</div>
`;
exports[`<ActionButtonWithModal/> Render modal. 1`] = `
<div> <div>
<div <div
id="modal-container" id="modal-container"
> >
<div <div
aria-labelledby="modal-title"
aria-modal="true"
class="modal fade show" class="modal fade show"
role="dialog" role="dialog"
> >
@ -40,11 +19,11 @@ exports[`<ActionButtonWithModal/> Render modal. 1`] = `
<div <div
class="modal-header" class="modal-header"
> >
<h1 <h5
class="modal-title fs-5" class="modal-title"
> >
Warning! Warning!
</h1> </h5>
<button <button
aria-label="Close" aria-label="Close"
class="btn-close" class="btn-close"
@ -54,17 +33,15 @@ exports[`<ActionButtonWithModal/> Render modal. 1`] = `
<div <div
class="modal-body" class="modal-body"
> >
<p <p>
class="mb-0" Are you sure you want to restart the router?
>
Are you sure you want to perform this action?
</p> </p>
</div> </div>
<div <div
class="modal-footer" class="modal-footer"
> >
<button <button
class="btn btn-secondary d-inline-flex justify-content-center align-items-center" class="btn btn-primary d-inline-flex justify-content-center align-items-center"
type="button" type="button"
> >
<span> <span>
@ -76,7 +53,7 @@ exports[`<ActionButtonWithModal/> Render modal. 1`] = `
type="button" type="button"
> >
<span> <span>
Confirm action Confirm reboot
</span> </span>
</button> </button>
</div> </div>
@ -84,15 +61,28 @@ exports[`<ActionButtonWithModal/> Render modal. 1`] = `
</div> </div>
</div> </div>
</div> </div>
<div
id="alert-container"
/>
<button <button
class="btn btn-primary d-inline-flex justify-content-center align-items-center" class="btn btn-danger d-inline-flex justify-content-center align-items-center"
type="button" type="button"
> >
<span> <span>
Action Reboot
</span>
</button>
</div>
`;
exports[`<RebootButton/> Render. 1`] = `
<div>
<div
id="modal-container"
/>
<button
class="btn btn-danger d-inline-flex justify-content-center align-items-center"
type="button"
>
<span>
Reboot
</span> </span>
</button> </button>
</div> </div>

View File

@ -43,17 +43,14 @@ describe("AlertContext", () => {
expect(componentContainer).toMatchSnapshot(); expect(componentContainer).toMatchSnapshot();
}); });
it("should dismiss alert with alert button", async () => { it("should dismiss alert with alert button", () => {
fireEvent.click(getByText(componentContainer, "Set alert")); fireEvent.click(getByText(componentContainer, "Set alert"));
// Alert is present // Alert is present
expect(getByText(componentContainer, "Alert content")).toBeDefined(); expect(getByText(componentContainer, "Alert content")).toBeDefined();
fireEvent.click(componentContainer.querySelector(".btn-close")); fireEvent.click(componentContainer.querySelector(".btn-close"));
// Alert is gone // Alert is gone
await (() => expect(queryByText(componentContainer, "Alert content")).toBeNull();
expect(
queryByText(componentContainer, "Alert content")
).toBeNull());
}); });
it("should dismiss alert with external button", () => { it("should dismiss alert with external button", () => {

View File

@ -6,8 +6,7 @@ exports[`AlertContext should render alert 1`] = `
id="alert-container" id="alert-container"
> >
<div <div
class="alert alert-danger alert-fade-in alert-dismissible" class="alert alert-danger alert-dismissible"
role="alert"
> >
<button <button
aria-label="Close" aria-label="Close"

View File

@ -28,22 +28,19 @@ export { default as FileInput } from "./bootstrap/FileInput";
export { default as Input } from "./bootstrap/Input"; export { default as Input } from "./bootstrap/Input";
export { default as NumberInput } from "./bootstrap/NumberInput"; export { default as NumberInput } from "./bootstrap/NumberInput";
export { default as PasswordInput } from "./bootstrap/PasswordInput"; export { default as PasswordInput } from "./bootstrap/PasswordInput";
export { default as Radio } from "./bootstrap/Radio"; export { default as RadioSet, Radio } from "./bootstrap/RadioSet";
export { default as RadioSet } from "./bootstrap/RadioSet";
export { default as Select } from "./bootstrap/Select"; export { default as Select } from "./bootstrap/Select";
export { default as TextInput } from "./bootstrap/TextInput"; export { default as TextInput } from "./bootstrap/TextInput";
export { formFieldsSize, buttonFormFieldsSize } from "./bootstrap/constants"; export { formFieldsSize, buttonFormFieldsSize } from "./bootstrap/constants";
export { default as Switch } from "./bootstrap/Switch"; export { default as Switch } from "./bootstrap/Switch";
export { default as ThreeDotsMenu } from "./bootstrap/ThreeDotsMenu";
export { Spinner, SpinnerElement } from "./bootstrap/Spinner"; export { Spinner, SpinnerElement } from "./bootstrap/Spinner";
export { Modal, ModalBody, ModalFooter, ModalHeader } from "./bootstrap/Modal"; export { Modal, ModalBody, ModalFooter, ModalHeader } from "./bootstrap/Modal";
// Common // Common
export { default as ActionButtonWithModal } from "./common/ActionButtonWithModal/ActionButtonWithModal"; export { default as RebootButton } from "./common/RebootButton";
export { default as WiFiSettings } from "./common/WiFiSettings/WiFiSettings"; export { default as WiFiSettings } from "./common/WiFiSettings/WiFiSettings";
export { default as ResetWiFiSettings } from "./common/WiFiSettings/ResetWiFiSettings"; export { default as ResetWiFiSettings } from "./common/WiFiSettings/ResetWiFiSettings";
export { default as RichTable } from "./common/RichTable/RichTable";
// Form // Form
export { default as ForisForm } from "./form/components/ForisForm"; export { default as ForisForm } from "./form/components/ForisForm";
export { export {

View File

@ -14,7 +14,7 @@ import { render } from "@testing-library/react";
import PropTypes from "prop-types"; import PropTypes from "prop-types";
import { AlertContextMock } from "./alertContextMock"; import { AlertContextMock } from "./alertContextMock";
import { CustomizationContextMock } from "./customizationContextMock"; import { CustomizationContextMock } from "./cutomizationContextMock";
Wrapper.propTypes = { Wrapper.propTypes = {
children: PropTypes.oneOfType([ children: PropTypes.oneOfType([

View File

@ -10,3 +10,4 @@ global._ = (str) => str;
global.ngettext = (str) => str; global.ngettext = (str) => str;
global.babel = { format: (str) => str }; global.babel = { format: (str) => str };
global.ForisTranslations = { locale: "en" }; global.ForisTranslations = { locale: "en" };
global.setImmediate = (fn) => setTimeout(fn, 0);

View File

@ -5,14 +5,12 @@
* See /LICENSE for more information. * See /LICENSE for more information.
*/ */
export const REFORIS_URL_PREFIX = "/reforis"; export const REFORIS_URL_PREFIX = process.env.REFORIS_PREFIX || "";
export const REFORIS_API_URL_PREFIX = `${REFORIS_URL_PREFIX}/api`; export const REFORIS_API_URL_PREFIX = `${REFORIS_URL_PREFIX}/api`;
export const ForisURLs = { export const ForisURLs = {
// turris-auth
login: `/login?${REFORIS_URL_PREFIX}/`, login: `/login?${REFORIS_URL_PREFIX}/`,
logout: `/logout`, logout: `/logout`,
extendSession: `/extend-session`,
static: `${REFORIS_URL_PREFIX}/static/reforis`, static: `${REFORIS_URL_PREFIX}/static/reforis`,
wifi: `${REFORIS_URL_PREFIX}/network-settings/wifi`, wifi: `${REFORIS_URL_PREFIX}/network-settings/wifi`,
@ -27,13 +25,6 @@ export const ForisURLs = {
storage: `${REFORIS_URL_PREFIX}/storage`, storage: `${REFORIS_URL_PREFIX}/storage`,
sentinelAgreement: `${REFORIS_URL_PREFIX}/sentinel/agreement`, sentinelAgreement: `${REFORIS_URL_PREFIX}/sentinel/agreement`,
// URLs without prefix for Overview page
openvpnClientSettings: "/openvpn/client-settings",
packageManagementPackages: "/package-management/packages",
packageManagementUpdateSettings: "/package-management/update-settings",
sentinelLicenseAgreement: "/sentinel/agreement",
librespeedSpeedTest: "/librespeed/speed-test",
// Notifications links are used with <Link/> inside Router, thus url subdir is not required. // Notifications links are used with <Link/> inside Router, thus url subdir is not required.
overview: "/overview", overview: "/overview",
notifications: "/overview#notifications", notifications: "/overview#notifications",

View File

@ -40,40 +40,3 @@ export function useClickOutside(element, callback) {
}; };
}); });
} }
/* Trap focus inside element. */
export function useFocusTrap(elementRef, condition = true) {
useEffect(() => {
if (!condition) {
return;
}
const currentElement = elementRef.current;
const focusableElements = currentElement.querySelectorAll(
'button, [href], input, select, textarea, [tabindex]:not([tabindex="-1"])'
);
const firstElement = focusableElements[0];
const lastElement = focusableElements[focusableElements.length - 1];
const handleTab = (event) => {
if (event.key === "Tab") {
if (event.shiftKey) {
if (document.activeElement === firstElement) {
lastElement.focus();
event.preventDefault();
}
} else if (document.activeElement === lastElement) {
firstElement.focus();
event.preventDefault();
}
}
};
currentElement.addEventListener("keydown", handleTab);
firstElement.focus();
return () => {
currentElement.removeEventListener("keydown", handleTab);
};
}, [elementRef, condition]);
}

View File

@ -1,5 +1,5 @@
/* /*
* Copyright (C) 2020-2022 CZ.NIC z.s.p.o. (http://www.nic.cz/) * Copyright (C) 2020-2024 CZ.NIC z.s.p.o. (https://www.nic.cz/)
* *
* This is free software, licensed under the GNU General Public License v3. * This is free software, licensed under the GNU General Public License v3.
* See /LICENSE for more information. * See /LICENSE for more information.
@ -7,47 +7,33 @@
/* eslint no-console: "off" */ /* eslint no-console: "off" */
const PROTOCOL = window.location.protocol === "http:" ? "ws" : "wss"; import { io } from "socket.io-client";
const URL = process.env.LIGHTTPD import { REFORIS_URL_PREFIX } from "../utils/forisUrls";
? `${PROTOCOL}://${window.location.host}/${process.env.WSPATH || "foris-ws"}`
: `${PROTOCOL}://${window.location.hostname}:9081`;
const WAITING_FOR_CONNECTION_TIMEOUT = 500;
class WebSockets { class WebSockets {
constructor() { constructor() {
this.ws = new WebSocket(URL); this.socket = io("/notifications", {
this.ws.onerror = (e) => { path: `${REFORIS_URL_PREFIX}/reforis-ws`,
console.error("WS: Error:", e); });
}; this.connection = null;
this.ws.onmessage = (e) => { this.socket.on("disconnect", (reason) => {
console.debug(`WS: Received Message: ${e.data}`); this.connection = null;
const data = JSON.parse(e.data); console.debug(`SocketIO disconnected (${reason})`);
this.dispatch(data); });
}; this.socket.on("notification", (message) => {
this.ws.onopen = () => { console.debug("WS: Received Message:", message);
console.debug("WS: Connection open."); this.dispatch(message);
}; });
this.ws.onclose = () => { this.socket.on("connect", (connection) => {
console.debug("WS: Connection closed."); this.connection = connection;
}; console.debug(`SocketIO connected.`);
});
// callbacks[module][action] // callbacks[module][action]
this.callbacks = {}; this.callbacks = {};
} }
waitForConnection(callback) {
if (this.ws.readyState === 1) {
callback();
} else {
const that = this;
setTimeout(() => {
that.waitForConnection(callback);
}, WAITING_FOR_CONNECTION_TIMEOUT);
}
}
bind(module, action, callback) { bind(module, action, callback) {
this.callbacks[module] = this.callbacks[module] || {}; this.callbacks[module] = this.callbacks[module] || {};
this.callbacks[module][action] = this.callbacks[module][action] || []; this.callbacks[module][action] = this.callbacks[module][action] || [];
@ -55,13 +41,6 @@ class WebSockets {
return this; return this;
} }
subscribe(module) {
this.waitForConnection(() => {
this.send("subscribe", module);
});
return this;
}
unbind(module, action, callback) { unbind(module, action, callback) {
const callbacks = this.callbacks[module][action]; const callbacks = this.callbacks[module][action];
@ -75,28 +54,12 @@ class WebSockets {
} }
if (Object.keys(this.callbacks[module]).length === 0) { if (Object.keys(this.callbacks[module]).length === 0) {
this.unsubscribe(module); delete this.callbacks[module];
} }
return this; return this;
} }
unsubscribe(module) {
this.waitForConnection(() => {
this.send("unsubscribe", module);
delete this.callbacks[module];
});
return this;
}
send(action, params) {
const payload = JSON.stringify({ action, params });
this.waitForConnection(() => {
this.ws.send(payload);
});
return this;
}
dispatch(json) { dispatch(json) {
if (!json.module) return; if (!json.module) return;
@ -105,20 +68,17 @@ class WebSockets {
chain = this.callbacks[json.module][json.action]; chain = this.callbacks[json.module][json.action];
} catch (error) { } catch (error) {
if (error instanceof TypeError) { if (error instanceof TypeError) {
console.warn( console.debug(
`Callback for this message wasn't found:${error.data}` `Callbacks for this module wasn't found: ${json.module}`
); );
} else throw error; } else throw error;
} }
if (typeof chain === "undefined") return; if (typeof chain === "undefined") return;
console.debug("Handling WS message", json);
chain.forEach((callback) => callback(json)); chain.forEach((callback) => callback(json));
} }
close() {
this.ws.close();
}
} }
export default WebSockets; export default WebSockets;

View File

@ -33,7 +33,7 @@ function useWSForisModule(
setData(message.data); setData(message.data);
} }
ws.subscribe(module).bind(module, action, callback); ws.bind(module, action, callback);
return () => { return () => {
ws.unbind(module, action, callback); ws.unbind(module, action, callback);

View File

@ -28,11 +28,11 @@ module.exports = {
content: "docs/development.md", content: "docs/development.md",
}, },
{ {
name: "Common Components", name: "Components",
description: "Set of main components.", description: "Set of main components.",
sections: [ sections: [
{ {
name: "ForisForm", name: "Foris forms",
components: [ components: [
"src/form/components/ForisForm.js", "src/form/components/ForisForm.js",
"src/form/components/alerts.js", "src/form/components/alerts.js",
@ -42,52 +42,47 @@ module.exports = {
usageMode: "expand", usageMode: "expand",
}, },
{ {
name: "RichTable", name: "Alert Context",
components: ["src/common/RichTable/RichTable.js"], components: ["src/context/alertContext/AlertContext.js"],
exampleMode: "expand",
usageMode: "expand",
},
{
name: "ActionButtonWithModal",
components: [
"src/common/ActionButtonWithModal/ActionButtonWithModal.js",
],
exampleMode: "expand", exampleMode: "expand",
usageMode: "expand", usageMode: "expand",
}, },
], ],
sectionDepth: 1, sectionDepth: 1,
}, },
{ {
name: "Bootstrap Components", name: "Customization Context",
description: "Set of bootstrap components.",
components: "src/bootstrap/*.js",
exampleMode: "expand",
usageMode: "expand",
ignore: ["src/bootstrap/constants.js", "src/bootstrap/Radio.js"],
sectionDepth: 0,
},
{
name: "Contexts",
components: [ components: [
"src/context/alertContext/AlertContext.js",
"src/context/customizationContext/CustomizationContext.js", "src/context/customizationContext/CustomizationContext.js",
], ],
exampleMode: "expand", exampleMode: "expand",
usageMode: "expand", usageMode: "expand",
}, },
{
name: "Bootstrap components",
description: "Set of bootstrap components.",
components: "src/bootstrap/*.js",
exampleMode: "expand",
usageMode: "expand",
ignore: ["src/bootstrap/constants.js"],
sectionDepth: 0,
},
], ],
template: { template: {
favicon: "/docs/components/logo.svg", favicon: "/docs/components/logo.svg",
}, },
require: [ require: [
"babel-polyfill", "babel-polyfill",
path.join(__dirname, "src/testUtils/mockGlobals.js"), path.join(__dirname, "src/testUtils/mockGlobals"),
path.join( path.join(
__dirname, __dirname,
"node_modules/bootstrap/dist/css/bootstrap.min.css" "node_modules/bootstrap/dist/css/bootstrap.min.css"
), ),
path.join(__dirname, "node_modules/bootstrap/dist/js/bootstrap.min.js"), path.join(
__dirname,
"node_modules/@fortawesome/fontawesome-free/css/all.min.css"
),
], ],
styleguideComponents: { styleguideComponents: {
LogoRenderer: path.join(__dirname, "docs/components/Logo"), LogoRenderer: path.join(__dirname, "docs/components/Logo"),

View File

@ -7,13 +7,13 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PROJECT VERSION\n" "Project-Id-Version: PROJECT VERSION\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2024-11-13 14:06+0100\n" "POT-Creation-Date: 2024-08-23 14:02+0200\n"
"PO-Revision-Date: 2024-09-25 10:15+0000\n" "PO-Revision-Date: 2023-11-23 16:03+0000\n"
"Last-Translator: Lukas Jelinek <lukas.jelinek@nic.cz>\n" "Last-Translator: Lukas Jelinek <lukas.jelinek@nic.cz>\n"
"Language: cs\n" "Language: cs\n"
"Language-Team: Czech <https://hosted.weblate.org/projects/turris/foris-" "Language-Team: Czech <https://hosted.weblate.org/projects/turris/foris-"
"js/cs/>\n" "js/cs/>\n"
"Plural-Forms: nplurals=3; plural=((n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2);\n" "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n" "Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
@ -35,89 +35,42 @@ msgstr "Neobdržena žádná odezva."
msgid "An unknown API error occurred." msgid "An unknown API error occurred."
msgstr "Došlo k neznámé chybě v aplikačním programovém rozhraní." msgstr "Došlo k neznámé chybě v aplikačním programovém rozhraní."
#: src/bootstrap/Alert.js:73 src/bootstrap/Modal.js:101 #: src/bootstrap/Alert.js:51 src/bootstrap/Modal.js:98
#: src/common/WiFiSettings/WiFiQRCode.js:89
msgid "Close" msgid "Close"
msgstr "Zavřít" msgstr ""
#: src/bootstrap/CopyInput.js:56 #: src/bootstrap/CopyInput.js:57
msgid "Copied!" msgid "Copied!"
msgstr "Zkopírováno!" msgstr "Zkopírováno!"
#: src/bootstrap/CopyInput.js:56 #: src/bootstrap/CopyInput.js:57
msgid "Copy" msgid "Copy"
msgstr "Kopírovat" msgstr "Kopírovat"
#: src/common/ActionButtonWithModal/ActionButtonWithModal.js:60 #: src/common/RebootButton.js:27
#, fuzzy msgid "Reboot request failed."
msgid "Action successful." msgstr "Vyžadován restart."
msgstr "Nastavení úspěšně uložena"
#: src/common/ActionButtonWithModal/ActionButtonWithModal.js:65 #: src/common/RebootButton.js:51
msgid "Action failed." msgid "Reboot"
msgstr "" msgstr "Restartovat"
#: src/common/ActionButtonWithModal/ActionButtonWithModal.js:125 #: src/common/RebootButton.js:66
msgid "Warning!"
msgstr "Varování!"
#: src/common/RebootButton.js:68
msgid "Are you sure you want to restart the router?"
msgstr "Opravdu chcete router restartovat?"
#: src/common/RebootButton.js:71
msgid "Cancel" msgid "Cancel"
msgstr "Zrušit" msgstr "Zrušit"
#: src/common/ActionButtonWithModal/ActionButtonWithModal.js:128 #: src/common/RebootButton.js:73
#, fuzzy msgid "Confirm reboot"
msgid "Confirm"
msgstr "Potvrdit restart" msgstr "Potvrdit restart"
#: src/common/RichTable/RichTableHeader.js:29
msgid "Sort ascending"
msgstr ""
#: src/common/RichTable/RichTableHeader.js:30
msgid "Sort descending"
msgstr ""
#: src/common/RichTable/RichTableHeader.js:31
msgid "Clear sort"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:65
msgid "Pagination navigation bar"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:71
msgid "First page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:77
msgid "Previous page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:83
msgid "Next page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:89
msgid "Last page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:95
msgid "Page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:98
msgid "of"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:106
msgid "Rows per page:"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:109
msgid "Select rows per page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:121
msgid "All"
msgstr ""
#: src/common/WiFiSettings/ResetWiFiSettings.js:39 #: src/common/WiFiSettings/ResetWiFiSettings.js:39
msgid "An error occurred during resetting Wi-Fi settings." msgid "An error occurred during resetting Wi-Fi settings."
msgstr "Při resetu nastavení Wi-Fi došlo k chybě." msgstr "Při resetu nastavení Wi-Fi došlo k chybě."
@ -146,7 +99,7 @@ msgid "Wi-Fi ${deviceID + 1}"
msgstr "Wi-Fi ${deviceID + 1}" msgstr "Wi-Fi ${deviceID + 1}"
#: src/common/WiFiSettings/WiFiForm.js:132 #: src/common/WiFiSettings/WiFiForm.js:132
#: src/common/WiFiSettings/WiFiGuestForm.js:78 #: src/common/WiFiSettings/WiFiGuestForm.js:81
msgid "Password" msgid "Password"
msgstr "Heslo" msgstr "Heslo"
@ -192,14 +145,15 @@ msgstr "Zapnout Wi-Fi pro hosty"
#: src/common/WiFiSettings/WiFiQRCode.js:43 #: src/common/WiFiSettings/WiFiQRCode.js:43
#: src/common/WiFiSettings/WiFiQRCode.js:44 #: src/common/WiFiSettings/WiFiQRCode.js:44
#, fuzzy
msgid "Show QR code" msgid "Show QR code"
msgstr "Ukázat QR kód" msgstr "Wi-Fi QR kód"
#: src/common/WiFiSettings/WiFiQRCode.js:70 #: src/common/WiFiSettings/WiFiQRCode.js:70
msgid "Wi-Fi QR Code" msgid "Wi-Fi QR Code"
msgstr "Wi-Fi QR kód" msgstr "Wi-Fi QR kód"
#: src/common/WiFiSettings/WiFiQRCode.js:102 #: src/common/WiFiSettings/WiFiQRCode.js:93
msgid "Download PDF" msgid "Download PDF"
msgstr "Stáhnout PDF" msgstr "Stáhnout PDF"
@ -435,15 +389,3 @@ msgstr "Neobsahuje seznam e-mailů oddělených čárkou."
#~ "se tím odstraní aktuální konfigurace a vrátí se výchozí hodnoty.\n" #~ "se tím odstraní aktuální konfigurace a vrátí se výchozí hodnoty.\n"
#~ " " #~ " "
#~ msgid "Reboot request failed."
#~ msgstr "Vyžadován restart."
#~ msgid "Reboot"
#~ msgstr "Restartovat"
#~ msgid "Warning!"
#~ msgstr "Varování!"
#~ msgid "Are you sure you want to restart the router?"
#~ msgstr "Opravdu chcete router restartovat?"

View File

@ -7,7 +7,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PROJECT VERSION\n" "Project-Id-Version: PROJECT VERSION\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2024-11-13 14:06+0100\n" "POT-Creation-Date: 2024-08-23 14:02+0200\n"
"PO-Revision-Date: 2019-02-19 13:34+0100\n" "PO-Revision-Date: 2019-02-19 13:34+0100\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language: da\n" "Language: da\n"
@ -34,85 +34,40 @@ msgstr ""
msgid "An unknown API error occurred." msgid "An unknown API error occurred."
msgstr "" msgstr ""
#: src/bootstrap/Alert.js:73 src/bootstrap/Modal.js:101 #: src/bootstrap/Alert.js:51 src/bootstrap/Modal.js:98
#: src/common/WiFiSettings/WiFiQRCode.js:89
msgid "Close" msgid "Close"
msgstr "" msgstr ""
#: src/bootstrap/CopyInput.js:56 #: src/bootstrap/CopyInput.js:57
msgid "Copied!" msgid "Copied!"
msgstr "" msgstr ""
#: src/bootstrap/CopyInput.js:56 #: src/bootstrap/CopyInput.js:57
msgid "Copy" msgid "Copy"
msgstr "" msgstr ""
#: src/common/ActionButtonWithModal/ActionButtonWithModal.js:60 #: src/common/RebootButton.js:27
msgid "Action successful." msgid "Reboot request failed."
msgstr "" msgstr ""
#: src/common/ActionButtonWithModal/ActionButtonWithModal.js:65 #: src/common/RebootButton.js:51
msgid "Action failed." msgid "Reboot"
msgstr "" msgstr ""
#: src/common/ActionButtonWithModal/ActionButtonWithModal.js:125 #: src/common/RebootButton.js:66
msgid "Warning!"
msgstr ""
#: src/common/RebootButton.js:68
msgid "Are you sure you want to restart the router?"
msgstr ""
#: src/common/RebootButton.js:71
msgid "Cancel" msgid "Cancel"
msgstr "" msgstr ""
#: src/common/ActionButtonWithModal/ActionButtonWithModal.js:128 #: src/common/RebootButton.js:73
msgid "Confirm" msgid "Confirm reboot"
msgstr ""
#: src/common/RichTable/RichTableHeader.js:29
msgid "Sort ascending"
msgstr ""
#: src/common/RichTable/RichTableHeader.js:30
msgid "Sort descending"
msgstr ""
#: src/common/RichTable/RichTableHeader.js:31
msgid "Clear sort"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:65
msgid "Pagination navigation bar"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:71
msgid "First page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:77
msgid "Previous page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:83
msgid "Next page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:89
msgid "Last page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:95
msgid "Page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:98
msgid "of"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:106
msgid "Rows per page:"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:109
msgid "Select rows per page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:121
msgid "All"
msgstr "" msgstr ""
#: src/common/WiFiSettings/ResetWiFiSettings.js:39 #: src/common/WiFiSettings/ResetWiFiSettings.js:39
@ -140,7 +95,7 @@ msgid "Wi-Fi ${deviceID + 1}"
msgstr "" msgstr ""
#: src/common/WiFiSettings/WiFiForm.js:132 #: src/common/WiFiSettings/WiFiForm.js:132
#: src/common/WiFiSettings/WiFiGuestForm.js:78 #: src/common/WiFiSettings/WiFiGuestForm.js:81
msgid "Password" msgid "Password"
msgstr "" msgstr ""
@ -191,7 +146,7 @@ msgstr ""
msgid "Wi-Fi QR Code" msgid "Wi-Fi QR Code"
msgstr "" msgstr ""
#: src/common/WiFiSettings/WiFiQRCode.js:102 #: src/common/WiFiSettings/WiFiQRCode.js:93
msgid "Download PDF" msgid "Download PDF"
msgstr "" msgstr ""
@ -469,18 +424,3 @@ msgstr ""
#~ "channel." #~ "channel."
#~ msgstr "" #~ msgstr ""
#~ msgid "Reboot request failed."
#~ msgstr ""
#~ msgid "Reboot"
#~ msgstr ""
#~ msgid "Warning!"
#~ msgstr ""
#~ msgid "Are you sure you want to restart the router?"
#~ msgstr ""
#~ msgid "Confirm reboot"
#~ msgstr ""

View File

@ -7,7 +7,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PROJECT VERSION\n" "Project-Id-Version: PROJECT VERSION\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2024-11-13 14:06+0100\n" "POT-Creation-Date: 2024-08-23 14:02+0200\n"
"PO-Revision-Date: 2024-01-04 21:08+0000\n" "PO-Revision-Date: 2024-01-04 21:08+0000\n"
"Last-Translator: Erik Pfannenstein <debianignatz@gmx.de>\n" "Last-Translator: Erik Pfannenstein <debianignatz@gmx.de>\n"
"Language: de\n" "Language: de\n"
@ -35,89 +35,42 @@ msgstr "Keine Antwort erhalten."
msgid "An unknown API error occurred." msgid "An unknown API error occurred."
msgstr "Ein unbekannter API-Fehler ist aufgetreten." msgstr "Ein unbekannter API-Fehler ist aufgetreten."
#: src/bootstrap/Alert.js:73 src/bootstrap/Modal.js:101 #: src/bootstrap/Alert.js:51 src/bootstrap/Modal.js:98
#: src/common/WiFiSettings/WiFiQRCode.js:89
msgid "Close" msgid "Close"
msgstr "" msgstr ""
#: src/bootstrap/CopyInput.js:56 #: src/bootstrap/CopyInput.js:57
msgid "Copied!" msgid "Copied!"
msgstr "Kopiert!" msgstr "Kopiert!"
#: src/bootstrap/CopyInput.js:56 #: src/bootstrap/CopyInput.js:57
msgid "Copy" msgid "Copy"
msgstr "Kopieren" msgstr "Kopieren"
#: src/common/ActionButtonWithModal/ActionButtonWithModal.js:60 #: src/common/RebootButton.js:27
#, fuzzy msgid "Reboot request failed."
msgid "Action successful." msgstr "Neustart-Einleitung fehlgeschlagen."
msgstr "Einstellungen erfolgreich gespeichert"
#: src/common/ActionButtonWithModal/ActionButtonWithModal.js:65 #: src/common/RebootButton.js:51
msgid "Action failed." msgid "Reboot"
msgstr "" msgstr "Systemneustart"
#: src/common/ActionButtonWithModal/ActionButtonWithModal.js:125 #: src/common/RebootButton.js:66
msgid "Warning!"
msgstr "Warnung!"
#: src/common/RebootButton.js:68
msgid "Are you sure you want to restart the router?"
msgstr "Sind Sie sicher, dass Sie den Router neu starten wollen?"
#: src/common/RebootButton.js:71
msgid "Cancel" msgid "Cancel"
msgstr "Abbrechen" msgstr "Abbrechen"
#: src/common/ActionButtonWithModal/ActionButtonWithModal.js:128 #: src/common/RebootButton.js:73
#, fuzzy msgid "Confirm reboot"
msgid "Confirm"
msgstr "Neustart bestätigen" msgstr "Neustart bestätigen"
#: src/common/RichTable/RichTableHeader.js:29
msgid "Sort ascending"
msgstr ""
#: src/common/RichTable/RichTableHeader.js:30
msgid "Sort descending"
msgstr ""
#: src/common/RichTable/RichTableHeader.js:31
msgid "Clear sort"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:65
msgid "Pagination navigation bar"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:71
msgid "First page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:77
msgid "Previous page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:83
msgid "Next page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:89
msgid "Last page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:95
msgid "Page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:98
msgid "of"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:106
msgid "Rows per page:"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:109
msgid "Select rows per page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:121
msgid "All"
msgstr ""
#: src/common/WiFiSettings/ResetWiFiSettings.js:39 #: src/common/WiFiSettings/ResetWiFiSettings.js:39
msgid "An error occurred during resetting Wi-Fi settings." msgid "An error occurred during resetting Wi-Fi settings."
msgstr "" msgstr ""
@ -148,7 +101,7 @@ msgid "Wi-Fi ${deviceID + 1}"
msgstr "WLAN ${deviceID + 1}" msgstr "WLAN ${deviceID + 1}"
#: src/common/WiFiSettings/WiFiForm.js:132 #: src/common/WiFiSettings/WiFiForm.js:132
#: src/common/WiFiSettings/WiFiGuestForm.js:78 #: src/common/WiFiSettings/WiFiGuestForm.js:81
msgid "Password" msgid "Password"
msgstr "Passwort" msgstr "Passwort"
@ -202,7 +155,7 @@ msgstr "WLAN QR-Code"
msgid "Wi-Fi QR Code" msgid "Wi-Fi QR Code"
msgstr "WLAN QR-Code" msgstr "WLAN QR-Code"
#: src/common/WiFiSettings/WiFiQRCode.js:102 #: src/common/WiFiSettings/WiFiQRCode.js:93
msgid "Download PDF" msgid "Download PDF"
msgstr "PDF herunterladen" msgstr "PDF herunterladen"
@ -434,15 +387,3 @@ msgstr "Enthält keine Liste von E-Mails, die durch Kommas getrennt sind."
#~ " " #~ " "
#~ msgstr "" #~ msgstr ""
#~ msgid "Reboot request failed."
#~ msgstr "Neustart-Einleitung fehlgeschlagen."
#~ msgid "Reboot"
#~ msgstr "Systemneustart"
#~ msgid "Warning!"
#~ msgstr "Warnung!"
#~ msgid "Are you sure you want to restart the router?"
#~ msgstr "Sind Sie sicher, dass Sie den Router neu starten wollen?"

View File

@ -7,7 +7,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PROJECT VERSION\n" "Project-Id-Version: PROJECT VERSION\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2024-11-13 14:06+0100\n" "POT-Creation-Date: 2024-08-23 14:02+0200\n"
"PO-Revision-Date: 2021-02-09 16:50+0000\n" "PO-Revision-Date: 2021-02-09 16:50+0000\n"
"Last-Translator: Michalis <michalisntovas@yahoo.gr>\n" "Last-Translator: Michalis <michalisntovas@yahoo.gr>\n"
"Language: el\n" "Language: el\n"
@ -35,88 +35,42 @@ msgstr ""
msgid "An unknown API error occurred." msgid "An unknown API error occurred."
msgstr "" msgstr ""
#: src/bootstrap/Alert.js:73 src/bootstrap/Modal.js:101 #: src/bootstrap/Alert.js:51 src/bootstrap/Modal.js:98
#: src/common/WiFiSettings/WiFiQRCode.js:89
msgid "Close" msgid "Close"
msgstr "" msgstr ""
#: src/bootstrap/CopyInput.js:56 #: src/bootstrap/CopyInput.js:57
msgid "Copied!" msgid "Copied!"
msgstr "" msgstr ""
#: src/bootstrap/CopyInput.js:56 #: src/bootstrap/CopyInput.js:57
msgid "Copy" msgid "Copy"
msgstr "" msgstr ""
#: src/common/ActionButtonWithModal/ActionButtonWithModal.js:60 #: src/common/RebootButton.js:27
msgid "Action successful." msgid "Reboot request failed."
msgstr "" msgstr ""
#: src/common/ActionButtonWithModal/ActionButtonWithModal.js:65 #: src/common/RebootButton.js:51
msgid "Action failed." msgid "Reboot"
msgstr "Επανεκκίνηση"
#: src/common/RebootButton.js:66
msgid "Warning!"
msgstr "" msgstr ""
#: src/common/ActionButtonWithModal/ActionButtonWithModal.js:125 #: src/common/RebootButton.js:68
msgid "Are you sure you want to restart the router?"
msgstr "Είστε βέβαιοι ότι θέλετε να κάνετε επανεκκίνηση του δρομολογητή;"
#: src/common/RebootButton.js:71
msgid "Cancel" msgid "Cancel"
msgstr "Άκυρο" msgstr "Άκυρο"
#: src/common/ActionButtonWithModal/ActionButtonWithModal.js:128 #: src/common/RebootButton.js:73
#, fuzzy msgid "Confirm reboot"
msgid "Confirm"
msgstr "Επιβεβαίωση επανεκκίνησης" msgstr "Επιβεβαίωση επανεκκίνησης"
#: src/common/RichTable/RichTableHeader.js:29
msgid "Sort ascending"
msgstr ""
#: src/common/RichTable/RichTableHeader.js:30
msgid "Sort descending"
msgstr ""
#: src/common/RichTable/RichTableHeader.js:31
msgid "Clear sort"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:65
msgid "Pagination navigation bar"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:71
msgid "First page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:77
msgid "Previous page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:83
msgid "Next page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:89
msgid "Last page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:95
msgid "Page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:98
msgid "of"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:106
msgid "Rows per page:"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:109
msgid "Select rows per page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:121
msgid "All"
msgstr ""
#: src/common/WiFiSettings/ResetWiFiSettings.js:39 #: src/common/WiFiSettings/ResetWiFiSettings.js:39
msgid "An error occurred during resetting Wi-Fi settings." msgid "An error occurred during resetting Wi-Fi settings."
msgstr "" msgstr ""
@ -142,7 +96,7 @@ msgid "Wi-Fi ${deviceID + 1}"
msgstr "" msgstr ""
#: src/common/WiFiSettings/WiFiForm.js:132 #: src/common/WiFiSettings/WiFiForm.js:132
#: src/common/WiFiSettings/WiFiGuestForm.js:78 #: src/common/WiFiSettings/WiFiGuestForm.js:81
msgid "Password" msgid "Password"
msgstr "" msgstr ""
@ -194,7 +148,7 @@ msgstr ""
msgid "Wi-Fi QR Code" msgid "Wi-Fi QR Code"
msgstr "" msgstr ""
#: src/common/WiFiSettings/WiFiQRCode.js:102 #: src/common/WiFiSettings/WiFiQRCode.js:93
msgid "Download PDF" msgid "Download PDF"
msgstr "" msgstr ""
@ -472,15 +426,3 @@ msgstr ""
#~ "channel." #~ "channel."
#~ msgstr "" #~ msgstr ""
#~ msgid "Reboot request failed."
#~ msgstr ""
#~ msgid "Reboot"
#~ msgstr "Επανεκκίνηση"
#~ msgid "Warning!"
#~ msgstr ""
#~ msgid "Are you sure you want to restart the router?"
#~ msgstr "Είστε βέβαιοι ότι θέλετε να κάνετε επανεκκίνηση του δρομολογητή;"

View File

@ -7,7 +7,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PROJECT VERSION\n" "Project-Id-Version: PROJECT VERSION\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2024-11-13 14:06+0100\n" "POT-Creation-Date: 2024-08-23 14:02+0200\n"
"PO-Revision-Date: 2019-10-17 09:28+0000\n" "PO-Revision-Date: 2019-10-17 09:28+0000\n"
"Last-Translator: Scott Anecito <scott.anecito@protonmail.com>\n" "Last-Translator: Scott Anecito <scott.anecito@protonmail.com>\n"
"Language: en\n" "Language: en\n"
@ -35,85 +35,40 @@ msgstr ""
msgid "An unknown API error occurred." msgid "An unknown API error occurred."
msgstr "" msgstr ""
#: src/bootstrap/Alert.js:73 src/bootstrap/Modal.js:101 #: src/bootstrap/Alert.js:51 src/bootstrap/Modal.js:98
#: src/common/WiFiSettings/WiFiQRCode.js:89
msgid "Close" msgid "Close"
msgstr "" msgstr ""
#: src/bootstrap/CopyInput.js:56 #: src/bootstrap/CopyInput.js:57
msgid "Copied!" msgid "Copied!"
msgstr "" msgstr ""
#: src/bootstrap/CopyInput.js:56 #: src/bootstrap/CopyInput.js:57
msgid "Copy" msgid "Copy"
msgstr "" msgstr ""
#: src/common/ActionButtonWithModal/ActionButtonWithModal.js:60 #: src/common/RebootButton.js:27
msgid "Action successful." msgid "Reboot request failed."
msgstr "" msgstr ""
#: src/common/ActionButtonWithModal/ActionButtonWithModal.js:65 #: src/common/RebootButton.js:51
msgid "Action failed." msgid "Reboot"
msgstr "" msgstr ""
#: src/common/ActionButtonWithModal/ActionButtonWithModal.js:125 #: src/common/RebootButton.js:66
msgid "Warning!"
msgstr ""
#: src/common/RebootButton.js:68
msgid "Are you sure you want to restart the router?"
msgstr ""
#: src/common/RebootButton.js:71
msgid "Cancel" msgid "Cancel"
msgstr "" msgstr ""
#: src/common/ActionButtonWithModal/ActionButtonWithModal.js:128 #: src/common/RebootButton.js:73
msgid "Confirm" msgid "Confirm reboot"
msgstr ""
#: src/common/RichTable/RichTableHeader.js:29
msgid "Sort ascending"
msgstr ""
#: src/common/RichTable/RichTableHeader.js:30
msgid "Sort descending"
msgstr ""
#: src/common/RichTable/RichTableHeader.js:31
msgid "Clear sort"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:65
msgid "Pagination navigation bar"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:71
msgid "First page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:77
msgid "Previous page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:83
msgid "Next page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:89
msgid "Last page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:95
msgid "Page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:98
msgid "of"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:106
msgid "Rows per page:"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:109
msgid "Select rows per page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:121
msgid "All"
msgstr "" msgstr ""
#: src/common/WiFiSettings/ResetWiFiSettings.js:39 #: src/common/WiFiSettings/ResetWiFiSettings.js:39
@ -141,7 +96,7 @@ msgid "Wi-Fi ${deviceID + 1}"
msgstr "" msgstr ""
#: src/common/WiFiSettings/WiFiForm.js:132 #: src/common/WiFiSettings/WiFiForm.js:132
#: src/common/WiFiSettings/WiFiGuestForm.js:78 #: src/common/WiFiSettings/WiFiGuestForm.js:81
msgid "Password" msgid "Password"
msgstr "" msgstr ""
@ -192,7 +147,7 @@ msgstr ""
msgid "Wi-Fi QR Code" msgid "Wi-Fi QR Code"
msgstr "" msgstr ""
#: src/common/WiFiSettings/WiFiQRCode.js:102 #: src/common/WiFiSettings/WiFiQRCode.js:93
msgid "Download PDF" msgid "Download PDF"
msgstr "" msgstr ""
@ -467,18 +422,3 @@ msgstr ""
#~ "channel." #~ "channel."
#~ msgstr "" #~ msgstr ""
#~ msgid "Reboot request failed."
#~ msgstr ""
#~ msgid "Reboot"
#~ msgstr ""
#~ msgid "Warning!"
#~ msgstr ""
#~ msgid "Are you sure you want to restart the router?"
#~ msgstr ""
#~ msgid "Confirm reboot"
#~ msgstr ""

View File

@ -7,16 +7,17 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PROJECT VERSION\n" "Project-Id-Version: PROJECT VERSION\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2024-11-13 14:06+0100\n" "POT-Creation-Date: 2024-08-23 14:02+0200\n"
"PO-Revision-Date: 2024-08-24 13:09+0000\n" "PO-Revision-Date: 2024-08-24 13:09+0000\n"
"Last-Translator: gallegonovato <fran-carro@hotmail.es>\n" "Last-Translator: gallegonovato <fran-carro@hotmail.es>\n"
"Language-Team: Spanish <https://hosted.weblate.org/projects/turris/foris-js/"
"es/>\n"
"Language: es\n" "Language: es\n"
"Language-Team: Spanish <https://hosted.weblate.org/projects/turris/foris-"
"js/es/>\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n" "Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 5.7.1-dev\n"
"Generated-By: Babel 2.16.0\n" "Generated-By: Babel 2.16.0\n"
#: src/api/utils.js:61 #: src/api/utils.js:61
@ -37,89 +38,42 @@ msgstr ""
"Un error desconocido ha ocurrido. Compruebe la consola para mas " "Un error desconocido ha ocurrido. Compruebe la consola para mas "
"informaciòn." "informaciòn."
#: src/bootstrap/Alert.js:73 src/bootstrap/Modal.js:101 #: src/bootstrap/Alert.js:51 src/bootstrap/Modal.js:98
#: src/common/WiFiSettings/WiFiQRCode.js:89
msgid "Close" msgid "Close"
msgstr "Cerrar" msgstr "Cerrar"
#: src/bootstrap/CopyInput.js:56 #: src/bootstrap/CopyInput.js:57
msgid "Copied!" msgid "Copied!"
msgstr "¡Copiado!" msgstr "¡Copiado!"
#: src/bootstrap/CopyInput.js:56 #: src/bootstrap/CopyInput.js:57
msgid "Copy" msgid "Copy"
msgstr "Copiar" msgstr "Copiar"
#: src/common/ActionButtonWithModal/ActionButtonWithModal.js:60 #: src/common/RebootButton.js:27
#, fuzzy msgid "Reboot request failed."
msgid "Action successful." msgstr "La petición de reinicio ha fallado."
msgstr "Los ajustes se han guardado correctamente"
#: src/common/ActionButtonWithModal/ActionButtonWithModal.js:65 #: src/common/RebootButton.js:51
msgid "Action failed." msgid "Reboot"
msgstr "" msgstr "Reiniciar"
#: src/common/ActionButtonWithModal/ActionButtonWithModal.js:125 #: src/common/RebootButton.js:66
msgid "Warning!"
msgstr "¡Atención!"
#: src/common/RebootButton.js:68
msgid "Are you sure you want to restart the router?"
msgstr "¿Estás seguro de que quieres reiniciar el router?"
#: src/common/RebootButton.js:71
msgid "Cancel" msgid "Cancel"
msgstr "Cancelar" msgstr "Cancelar"
#: src/common/ActionButtonWithModal/ActionButtonWithModal.js:128 #: src/common/RebootButton.js:73
#, fuzzy msgid "Confirm reboot"
msgid "Confirm"
msgstr "Confirmar reinicio" msgstr "Confirmar reinicio"
#: src/common/RichTable/RichTableHeader.js:29
msgid "Sort ascending"
msgstr ""
#: src/common/RichTable/RichTableHeader.js:30
msgid "Sort descending"
msgstr ""
#: src/common/RichTable/RichTableHeader.js:31
msgid "Clear sort"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:65
msgid "Pagination navigation bar"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:71
msgid "First page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:77
msgid "Previous page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:83
msgid "Next page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:89
msgid "Last page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:95
msgid "Page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:98
msgid "of"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:106
msgid "Rows per page:"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:109
msgid "Select rows per page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:121
msgid "All"
msgstr ""
#: src/common/WiFiSettings/ResetWiFiSettings.js:39 #: src/common/WiFiSettings/ResetWiFiSettings.js:39
msgid "An error occurred during resetting Wi-Fi settings." msgid "An error occurred during resetting Wi-Fi settings."
msgstr "Ocurrió un error durante el reseteo de los ajustes Wi-Fi." msgstr "Ocurrió un error durante el reseteo de los ajustes Wi-Fi."
@ -148,7 +102,7 @@ msgid "Wi-Fi ${deviceID + 1}"
msgstr "Wi-Fi ${deviceID + 1}" msgstr "Wi-Fi ${deviceID + 1}"
#: src/common/WiFiSettings/WiFiForm.js:132 #: src/common/WiFiSettings/WiFiForm.js:132
#: src/common/WiFiSettings/WiFiGuestForm.js:78 #: src/common/WiFiSettings/WiFiGuestForm.js:81
msgid "Password" msgid "Password"
msgstr "Contraseña" msgstr "Contraseña"
@ -201,7 +155,7 @@ msgstr "Mostrar el código QR"
msgid "Wi-Fi QR Code" msgid "Wi-Fi QR Code"
msgstr "Código QR Wi-Fi" msgstr "Código QR Wi-Fi"
#: src/common/WiFiSettings/WiFiQRCode.js:102 #: src/common/WiFiSettings/WiFiQRCode.js:93
msgid "Download PDF" msgid "Download PDF"
msgstr "Descargar PDF" msgstr "Descargar PDF"
@ -492,16 +446,3 @@ msgstr "No contiene una lista de correos electrónicos separados por comas."
#~ " default option with 20 MHz wide " #~ " default option with 20 MHz wide "
#~ "channel." #~ "channel."
#~ msgstr "" #~ msgstr ""
#~ msgid "Reboot request failed."
#~ msgstr "La petición de reinicio ha fallado."
#~ msgid "Reboot"
#~ msgstr "Reiniciar"
#~ msgid "Warning!"
#~ msgstr "¡Atención!"
#~ msgid "Are you sure you want to restart the router?"
#~ msgstr "¿Estás seguro de que quieres reiniciar el router?"

View File

@ -7,7 +7,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PROJECT VERSION\n" "Project-Id-Version: PROJECT VERSION\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2024-11-13 14:06+0100\n" "POT-Creation-Date: 2024-08-23 14:02+0200\n"
"PO-Revision-Date: 2019-02-19 13:34+0100\n" "PO-Revision-Date: 2019-02-19 13:34+0100\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language: fi\n" "Language: fi\n"
@ -34,85 +34,40 @@ msgstr ""
msgid "An unknown API error occurred." msgid "An unknown API error occurred."
msgstr "" msgstr ""
#: src/bootstrap/Alert.js:73 src/bootstrap/Modal.js:101 #: src/bootstrap/Alert.js:51 src/bootstrap/Modal.js:98
#: src/common/WiFiSettings/WiFiQRCode.js:89
msgid "Close" msgid "Close"
msgstr "" msgstr ""
#: src/bootstrap/CopyInput.js:56 #: src/bootstrap/CopyInput.js:57
msgid "Copied!" msgid "Copied!"
msgstr "" msgstr ""
#: src/bootstrap/CopyInput.js:56 #: src/bootstrap/CopyInput.js:57
msgid "Copy" msgid "Copy"
msgstr "" msgstr ""
#: src/common/ActionButtonWithModal/ActionButtonWithModal.js:60 #: src/common/RebootButton.js:27
msgid "Action successful." msgid "Reboot request failed."
msgstr "" msgstr ""
#: src/common/ActionButtonWithModal/ActionButtonWithModal.js:65 #: src/common/RebootButton.js:51
msgid "Action failed." msgid "Reboot"
msgstr "" msgstr ""
#: src/common/ActionButtonWithModal/ActionButtonWithModal.js:125 #: src/common/RebootButton.js:66
msgid "Warning!"
msgstr ""
#: src/common/RebootButton.js:68
msgid "Are you sure you want to restart the router?"
msgstr ""
#: src/common/RebootButton.js:71
msgid "Cancel" msgid "Cancel"
msgstr "" msgstr ""
#: src/common/ActionButtonWithModal/ActionButtonWithModal.js:128 #: src/common/RebootButton.js:73
msgid "Confirm" msgid "Confirm reboot"
msgstr ""
#: src/common/RichTable/RichTableHeader.js:29
msgid "Sort ascending"
msgstr ""
#: src/common/RichTable/RichTableHeader.js:30
msgid "Sort descending"
msgstr ""
#: src/common/RichTable/RichTableHeader.js:31
msgid "Clear sort"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:65
msgid "Pagination navigation bar"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:71
msgid "First page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:77
msgid "Previous page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:83
msgid "Next page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:89
msgid "Last page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:95
msgid "Page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:98
msgid "of"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:106
msgid "Rows per page:"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:109
msgid "Select rows per page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:121
msgid "All"
msgstr "" msgstr ""
#: src/common/WiFiSettings/ResetWiFiSettings.js:39 #: src/common/WiFiSettings/ResetWiFiSettings.js:39
@ -140,7 +95,7 @@ msgid "Wi-Fi ${deviceID + 1}"
msgstr "" msgstr ""
#: src/common/WiFiSettings/WiFiForm.js:132 #: src/common/WiFiSettings/WiFiForm.js:132
#: src/common/WiFiSettings/WiFiGuestForm.js:78 #: src/common/WiFiSettings/WiFiGuestForm.js:81
msgid "Password" msgid "Password"
msgstr "" msgstr ""
@ -191,7 +146,7 @@ msgstr ""
msgid "Wi-Fi QR Code" msgid "Wi-Fi QR Code"
msgstr "" msgstr ""
#: src/common/WiFiSettings/WiFiQRCode.js:102 #: src/common/WiFiSettings/WiFiQRCode.js:93
msgid "Download PDF" msgid "Download PDF"
msgstr "" msgstr ""
@ -469,18 +424,3 @@ msgstr ""
#~ "channel." #~ "channel."
#~ msgstr "" #~ msgstr ""
#~ msgid "Reboot request failed."
#~ msgstr ""
#~ msgid "Reboot"
#~ msgstr ""
#~ msgid "Warning!"
#~ msgstr ""
#~ msgid "Are you sure you want to restart the router?"
#~ msgstr ""
#~ msgid "Confirm reboot"
#~ msgstr ""

View File

@ -7,7 +7,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PROJECT VERSION\n" "Project-Id-Version: PROJECT VERSION\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2024-11-13 14:06+0100\n" "POT-Creation-Date: 2024-08-23 14:02+0200\n"
"PO-Revision-Date: 2019-02-19 13:34+0100\n" "PO-Revision-Date: 2019-02-19 13:34+0100\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language: fo\n" "Language: fo\n"
@ -34,85 +34,40 @@ msgstr ""
msgid "An unknown API error occurred." msgid "An unknown API error occurred."
msgstr "" msgstr ""
#: src/bootstrap/Alert.js:73 src/bootstrap/Modal.js:101 #: src/bootstrap/Alert.js:51 src/bootstrap/Modal.js:98
#: src/common/WiFiSettings/WiFiQRCode.js:89
msgid "Close" msgid "Close"
msgstr "" msgstr ""
#: src/bootstrap/CopyInput.js:56 #: src/bootstrap/CopyInput.js:57
msgid "Copied!" msgid "Copied!"
msgstr "" msgstr ""
#: src/bootstrap/CopyInput.js:56 #: src/bootstrap/CopyInput.js:57
msgid "Copy" msgid "Copy"
msgstr "" msgstr ""
#: src/common/ActionButtonWithModal/ActionButtonWithModal.js:60 #: src/common/RebootButton.js:27
msgid "Action successful." msgid "Reboot request failed."
msgstr "" msgstr ""
#: src/common/ActionButtonWithModal/ActionButtonWithModal.js:65 #: src/common/RebootButton.js:51
msgid "Action failed." msgid "Reboot"
msgstr "" msgstr ""
#: src/common/ActionButtonWithModal/ActionButtonWithModal.js:125 #: src/common/RebootButton.js:66
msgid "Warning!"
msgstr ""
#: src/common/RebootButton.js:68
msgid "Are you sure you want to restart the router?"
msgstr ""
#: src/common/RebootButton.js:71
msgid "Cancel" msgid "Cancel"
msgstr "" msgstr ""
#: src/common/ActionButtonWithModal/ActionButtonWithModal.js:128 #: src/common/RebootButton.js:73
msgid "Confirm" msgid "Confirm reboot"
msgstr ""
#: src/common/RichTable/RichTableHeader.js:29
msgid "Sort ascending"
msgstr ""
#: src/common/RichTable/RichTableHeader.js:30
msgid "Sort descending"
msgstr ""
#: src/common/RichTable/RichTableHeader.js:31
msgid "Clear sort"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:65
msgid "Pagination navigation bar"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:71
msgid "First page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:77
msgid "Previous page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:83
msgid "Next page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:89
msgid "Last page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:95
msgid "Page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:98
msgid "of"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:106
msgid "Rows per page:"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:109
msgid "Select rows per page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:121
msgid "All"
msgstr "" msgstr ""
#: src/common/WiFiSettings/ResetWiFiSettings.js:39 #: src/common/WiFiSettings/ResetWiFiSettings.js:39
@ -140,7 +95,7 @@ msgid "Wi-Fi ${deviceID + 1}"
msgstr "" msgstr ""
#: src/common/WiFiSettings/WiFiForm.js:132 #: src/common/WiFiSettings/WiFiForm.js:132
#: src/common/WiFiSettings/WiFiGuestForm.js:78 #: src/common/WiFiSettings/WiFiGuestForm.js:81
msgid "Password" msgid "Password"
msgstr "" msgstr ""
@ -191,7 +146,7 @@ msgstr ""
msgid "Wi-Fi QR Code" msgid "Wi-Fi QR Code"
msgstr "" msgstr ""
#: src/common/WiFiSettings/WiFiQRCode.js:102 #: src/common/WiFiSettings/WiFiQRCode.js:93
msgid "Download PDF" msgid "Download PDF"
msgstr "" msgstr ""
@ -469,18 +424,3 @@ msgstr ""
#~ "channel." #~ "channel."
#~ msgstr "" #~ msgstr ""
#~ msgid "Reboot request failed."
#~ msgstr ""
#~ msgid "Reboot"
#~ msgstr ""
#~ msgid "Warning!"
#~ msgstr ""
#~ msgid "Are you sure you want to restart the router?"
#~ msgstr ""
#~ msgid "Confirm reboot"
#~ msgstr ""

View File

@ -6,9 +6,9 @@
#, fuzzy #, fuzzy
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: Foris JS 6.5.0\n" "Project-Id-Version: Foris JS 6.1.0\n"
"Report-Msgid-Bugs-To: tech.support@turris.cz\n" "Report-Msgid-Bugs-To: tech.support@turris.cz\n"
"POT-Creation-Date: 2024-11-13 14:06+0100\n" "POT-Creation-Date: 2024-08-23 14:02+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"
@ -33,85 +33,40 @@ msgstr ""
msgid "An unknown API error occurred." msgid "An unknown API error occurred."
msgstr "" msgstr ""
#: src/bootstrap/Alert.js:73 src/bootstrap/Modal.js:101 #: src/bootstrap/Alert.js:51 src/bootstrap/Modal.js:98
#: src/common/WiFiSettings/WiFiQRCode.js:89
msgid "Close" msgid "Close"
msgstr "" msgstr ""
#: src/bootstrap/CopyInput.js:56 #: src/bootstrap/CopyInput.js:57
msgid "Copied!" msgid "Copied!"
msgstr "" msgstr ""
#: src/bootstrap/CopyInput.js:56 #: src/bootstrap/CopyInput.js:57
msgid "Copy" msgid "Copy"
msgstr "" msgstr ""
#: src/common/ActionButtonWithModal/ActionButtonWithModal.js:60 #: src/common/RebootButton.js:27
msgid "Action successful." msgid "Reboot request failed."
msgstr "" msgstr ""
#: src/common/ActionButtonWithModal/ActionButtonWithModal.js:65 #: src/common/RebootButton.js:51
msgid "Action failed." msgid "Reboot"
msgstr "" msgstr ""
#: src/common/ActionButtonWithModal/ActionButtonWithModal.js:125 #: src/common/RebootButton.js:66
msgid "Warning!"
msgstr ""
#: src/common/RebootButton.js:68
msgid "Are you sure you want to restart the router?"
msgstr ""
#: src/common/RebootButton.js:71
msgid "Cancel" msgid "Cancel"
msgstr "" msgstr ""
#: src/common/ActionButtonWithModal/ActionButtonWithModal.js:128 #: src/common/RebootButton.js:73
msgid "Confirm" msgid "Confirm reboot"
msgstr ""
#: src/common/RichTable/RichTableHeader.js:29
msgid "Sort ascending"
msgstr ""
#: src/common/RichTable/RichTableHeader.js:30
msgid "Sort descending"
msgstr ""
#: src/common/RichTable/RichTableHeader.js:31
msgid "Clear sort"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:65
msgid "Pagination navigation bar"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:71
msgid "First page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:77
msgid "Previous page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:83
msgid "Next page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:89
msgid "Last page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:95
msgid "Page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:98
msgid "of"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:106
msgid "Rows per page:"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:109
msgid "Select rows per page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:121
msgid "All"
msgstr "" msgstr ""
#: src/common/WiFiSettings/ResetWiFiSettings.js:39 #: src/common/WiFiSettings/ResetWiFiSettings.js:39
@ -139,7 +94,7 @@ msgid "Wi-Fi ${deviceID + 1}"
msgstr "" msgstr ""
#: src/common/WiFiSettings/WiFiForm.js:132 #: src/common/WiFiSettings/WiFiForm.js:132
#: src/common/WiFiSettings/WiFiGuestForm.js:78 #: src/common/WiFiSettings/WiFiGuestForm.js:81
msgid "Password" msgid "Password"
msgstr "" msgstr ""
@ -190,7 +145,7 @@ msgstr ""
msgid "Wi-Fi QR Code" msgid "Wi-Fi QR Code"
msgstr "" msgstr ""
#: src/common/WiFiSettings/WiFiQRCode.js:102 #: src/common/WiFiSettings/WiFiQRCode.js:93
msgid "Download PDF" msgid "Download PDF"
msgstr "" msgstr ""

View File

@ -7,7 +7,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PROJECT VERSION\n" "Project-Id-Version: PROJECT VERSION\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2024-11-13 14:06+0100\n" "POT-Creation-Date: 2024-08-23 14:02+0200\n"
"PO-Revision-Date: 2024-07-27 01:09+0000\n" "PO-Revision-Date: 2024-07-27 01:09+0000\n"
"Last-Translator: Moha684 <nahil82466@gmail.com>\n" "Last-Translator: Moha684 <nahil82466@gmail.com>\n"
"Language: fr\n" "Language: fr\n"
@ -35,89 +35,42 @@ msgstr "Aucun réponse reçue."
msgid "An unknown API error occurred." msgid "An unknown API error occurred."
msgstr "Une erreur dAPI inconnue sest produite." msgstr "Une erreur dAPI inconnue sest produite."
#: src/bootstrap/Alert.js:73 src/bootstrap/Modal.js:101 #: src/bootstrap/Alert.js:51 src/bootstrap/Modal.js:98
#: src/common/WiFiSettings/WiFiQRCode.js:89
msgid "Close" msgid "Close"
msgstr "" msgstr ""
#: src/bootstrap/CopyInput.js:56 #: src/bootstrap/CopyInput.js:57
msgid "Copied!" msgid "Copied!"
msgstr "Copié!" msgstr "Copié!"
#: src/bootstrap/CopyInput.js:56 #: src/bootstrap/CopyInput.js:57
msgid "Copy" msgid "Copy"
msgstr "Copier" msgstr "Copier"
#: src/common/ActionButtonWithModal/ActionButtonWithModal.js:60 #: src/common/RebootButton.js:27
#, fuzzy msgid "Reboot request failed."
msgid "Action successful." msgstr "La demande de redémarrage a échoué."
msgstr "Paramètres enregistrés avec succès"
#: src/common/ActionButtonWithModal/ActionButtonWithModal.js:65 #: src/common/RebootButton.js:51
msgid "Action failed." msgid "Reboot"
msgstr "" msgstr "Redémarrer"
#: src/common/ActionButtonWithModal/ActionButtonWithModal.js:125 #: src/common/RebootButton.js:66
msgid "Warning!"
msgstr "Attention!"
#: src/common/RebootButton.js:68
msgid "Are you sure you want to restart the router?"
msgstr "Voulez-vous vraiment redémarrer le routeur ?"
#: src/common/RebootButton.js:71
msgid "Cancel" msgid "Cancel"
msgstr "Annuler" msgstr "Annuler"
#: src/common/ActionButtonWithModal/ActionButtonWithModal.js:128 #: src/common/RebootButton.js:73
#, fuzzy msgid "Confirm reboot"
msgid "Confirm"
msgstr "Confirmer le redémarrage" msgstr "Confirmer le redémarrage"
#: src/common/RichTable/RichTableHeader.js:29
msgid "Sort ascending"
msgstr ""
#: src/common/RichTable/RichTableHeader.js:30
msgid "Sort descending"
msgstr ""
#: src/common/RichTable/RichTableHeader.js:31
msgid "Clear sort"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:65
msgid "Pagination navigation bar"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:71
msgid "First page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:77
msgid "Previous page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:83
msgid "Next page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:89
msgid "Last page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:95
msgid "Page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:98
msgid "of"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:106
msgid "Rows per page:"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:109
msgid "Select rows per page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:121
msgid "All"
msgstr ""
#: src/common/WiFiSettings/ResetWiFiSettings.js:39 #: src/common/WiFiSettings/ResetWiFiSettings.js:39
msgid "An error occurred during resetting Wi-Fi settings." msgid "An error occurred during resetting Wi-Fi settings."
msgstr "" msgstr ""
@ -145,7 +98,7 @@ msgid "Wi-Fi ${deviceID + 1}"
msgstr "Wi-Fi ${deviceID + 1}" msgstr "Wi-Fi ${deviceID + 1}"
#: src/common/WiFiSettings/WiFiForm.js:132 #: src/common/WiFiSettings/WiFiForm.js:132
#: src/common/WiFiSettings/WiFiGuestForm.js:78 #: src/common/WiFiSettings/WiFiGuestForm.js:81
msgid "Password" msgid "Password"
msgstr "Mot de passe" msgstr "Mot de passe"
@ -200,7 +153,7 @@ msgstr "Code QR Wi-Fi"
msgid "Wi-Fi QR Code" msgid "Wi-Fi QR Code"
msgstr "Code QR Wi-Fi" msgstr "Code QR Wi-Fi"
#: src/common/WiFiSettings/WiFiQRCode.js:102 #: src/common/WiFiSettings/WiFiQRCode.js:93
msgid "Download PDF" msgid "Download PDF"
msgstr "Télécharger le PDF" msgstr "Télécharger le PDF"
@ -462,15 +415,3 @@ msgstr ""
#~ " " #~ " "
#~ msgstr "" #~ msgstr ""
#~ msgid "Reboot request failed."
#~ msgstr "La demande de redémarrage a échoué."
#~ msgid "Reboot"
#~ msgstr "Redémarrer"
#~ msgid "Warning!"
#~ msgstr "Attention!"
#~ msgid "Are you sure you want to restart the router?"
#~ msgstr "Voulez-vous vraiment redémarrer le routeur ?"

View File

@ -7,7 +7,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PROJECT VERSION\n" "Project-Id-Version: PROJECT VERSION\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2024-11-13 14:06+0100\n" "POT-Creation-Date: 2024-08-23 14:02+0200\n"
"PO-Revision-Date: 2022-09-29 14:17+0000\n" "PO-Revision-Date: 2022-09-29 14:17+0000\n"
"Last-Translator: Milo Ivir <mail@milotype.de>\n" "Last-Translator: Milo Ivir <mail@milotype.de>\n"
"Language: hr\n" "Language: hr\n"
@ -36,85 +36,40 @@ msgstr ""
msgid "An unknown API error occurred." msgid "An unknown API error occurred."
msgstr "" msgstr ""
#: src/bootstrap/Alert.js:73 src/bootstrap/Modal.js:101 #: src/bootstrap/Alert.js:51 src/bootstrap/Modal.js:98
#: src/common/WiFiSettings/WiFiQRCode.js:89
msgid "Close" msgid "Close"
msgstr "" msgstr ""
#: src/bootstrap/CopyInput.js:56 #: src/bootstrap/CopyInput.js:57
msgid "Copied!" msgid "Copied!"
msgstr "" msgstr ""
#: src/bootstrap/CopyInput.js:56 #: src/bootstrap/CopyInput.js:57
msgid "Copy" msgid "Copy"
msgstr "" msgstr ""
#: src/common/ActionButtonWithModal/ActionButtonWithModal.js:60 #: src/common/RebootButton.js:27
msgid "Action successful." msgid "Reboot request failed."
msgstr "" msgstr ""
#: src/common/ActionButtonWithModal/ActionButtonWithModal.js:65 #: src/common/RebootButton.js:51
msgid "Action failed." msgid "Reboot"
msgstr "" msgstr ""
#: src/common/ActionButtonWithModal/ActionButtonWithModal.js:125 #: src/common/RebootButton.js:66
msgid "Warning!"
msgstr ""
#: src/common/RebootButton.js:68
msgid "Are you sure you want to restart the router?"
msgstr ""
#: src/common/RebootButton.js:71
msgid "Cancel" msgid "Cancel"
msgstr "" msgstr ""
#: src/common/ActionButtonWithModal/ActionButtonWithModal.js:128 #: src/common/RebootButton.js:73
msgid "Confirm" msgid "Confirm reboot"
msgstr ""
#: src/common/RichTable/RichTableHeader.js:29
msgid "Sort ascending"
msgstr ""
#: src/common/RichTable/RichTableHeader.js:30
msgid "Sort descending"
msgstr ""
#: src/common/RichTable/RichTableHeader.js:31
msgid "Clear sort"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:65
msgid "Pagination navigation bar"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:71
msgid "First page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:77
msgid "Previous page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:83
msgid "Next page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:89
msgid "Last page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:95
msgid "Page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:98
msgid "of"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:106
msgid "Rows per page:"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:109
msgid "Select rows per page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:121
msgid "All"
msgstr "" msgstr ""
#: src/common/WiFiSettings/ResetWiFiSettings.js:39 #: src/common/WiFiSettings/ResetWiFiSettings.js:39
@ -142,7 +97,7 @@ msgid "Wi-Fi ${deviceID + 1}"
msgstr "" msgstr ""
#: src/common/WiFiSettings/WiFiForm.js:132 #: src/common/WiFiSettings/WiFiForm.js:132
#: src/common/WiFiSettings/WiFiGuestForm.js:78 #: src/common/WiFiSettings/WiFiGuestForm.js:81
msgid "Password" msgid "Password"
msgstr "Lozinka" msgstr "Lozinka"
@ -193,7 +148,7 @@ msgstr ""
msgid "Wi-Fi QR Code" msgid "Wi-Fi QR Code"
msgstr "" msgstr ""
#: src/common/WiFiSettings/WiFiQRCode.js:102 #: src/common/WiFiSettings/WiFiQRCode.js:93
msgid "Download PDF" msgid "Download PDF"
msgstr "" msgstr ""
@ -471,18 +426,3 @@ msgstr ""
#~ "channel." #~ "channel."
#~ msgstr "" #~ msgstr ""
#~ msgid "Reboot request failed."
#~ msgstr ""
#~ msgid "Reboot"
#~ msgstr ""
#~ msgid "Warning!"
#~ msgstr ""
#~ msgid "Are you sure you want to restart the router?"
#~ msgstr ""
#~ msgid "Confirm reboot"
#~ msgstr ""

View File

@ -7,7 +7,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PROJECT VERSION\n" "Project-Id-Version: PROJECT VERSION\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2024-11-13 14:06+0100\n" "POT-Creation-Date: 2024-08-23 14:02+0200\n"
"PO-Revision-Date: 2021-01-07 01:26+0000\n" "PO-Revision-Date: 2021-01-07 01:26+0000\n"
"Last-Translator: Zoli <boritek@gmail.com>\n" "Last-Translator: Zoli <boritek@gmail.com>\n"
"Language: hu\n" "Language: hu\n"
@ -35,86 +35,40 @@ msgstr "Nem érkezett válasz."
msgid "An unknown API error occurred." msgid "An unknown API error occurred."
msgstr "Ismeretlen API-hiba történt." msgstr "Ismeretlen API-hiba történt."
#: src/bootstrap/Alert.js:73 src/bootstrap/Modal.js:101 #: src/bootstrap/Alert.js:51 src/bootstrap/Modal.js:98
#: src/common/WiFiSettings/WiFiQRCode.js:89
msgid "Close" msgid "Close"
msgstr "" msgstr ""
#: src/bootstrap/CopyInput.js:56 #: src/bootstrap/CopyInput.js:57
msgid "Copied!" msgid "Copied!"
msgstr "" msgstr ""
#: src/bootstrap/CopyInput.js:56 #: src/bootstrap/CopyInput.js:57
msgid "Copy" msgid "Copy"
msgstr "" msgstr ""
#: src/common/ActionButtonWithModal/ActionButtonWithModal.js:60 #: src/common/RebootButton.js:27
#, fuzzy msgid "Reboot request failed."
msgid "Action successful."
msgstr "Beállítások sikeresen elmentve"
#: src/common/ActionButtonWithModal/ActionButtonWithModal.js:65
msgid "Action failed."
msgstr "" msgstr ""
#: src/common/ActionButtonWithModal/ActionButtonWithModal.js:125 #: src/common/RebootButton.js:51
msgid "Reboot"
msgstr ""
#: src/common/RebootButton.js:66
msgid "Warning!"
msgstr ""
#: src/common/RebootButton.js:68
msgid "Are you sure you want to restart the router?"
msgstr ""
#: src/common/RebootButton.js:71
msgid "Cancel" msgid "Cancel"
msgstr "" msgstr ""
#: src/common/ActionButtonWithModal/ActionButtonWithModal.js:128 #: src/common/RebootButton.js:73
msgid "Confirm" msgid "Confirm reboot"
msgstr ""
#: src/common/RichTable/RichTableHeader.js:29
msgid "Sort ascending"
msgstr ""
#: src/common/RichTable/RichTableHeader.js:30
msgid "Sort descending"
msgstr ""
#: src/common/RichTable/RichTableHeader.js:31
msgid "Clear sort"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:65
msgid "Pagination navigation bar"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:71
msgid "First page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:77
msgid "Previous page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:83
msgid "Next page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:89
msgid "Last page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:95
msgid "Page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:98
msgid "of"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:106
msgid "Rows per page:"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:109
msgid "Select rows per page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:121
msgid "All"
msgstr "" msgstr ""
#: src/common/WiFiSettings/ResetWiFiSettings.js:39 #: src/common/WiFiSettings/ResetWiFiSettings.js:39
@ -142,7 +96,7 @@ msgid "Wi-Fi ${deviceID + 1}"
msgstr "" msgstr ""
#: src/common/WiFiSettings/WiFiForm.js:132 #: src/common/WiFiSettings/WiFiForm.js:132
#: src/common/WiFiSettings/WiFiGuestForm.js:78 #: src/common/WiFiSettings/WiFiGuestForm.js:81
msgid "Password" msgid "Password"
msgstr "" msgstr ""
@ -193,7 +147,7 @@ msgstr ""
msgid "Wi-Fi QR Code" msgid "Wi-Fi QR Code"
msgstr "" msgstr ""
#: src/common/WiFiSettings/WiFiQRCode.js:102 #: src/common/WiFiSettings/WiFiQRCode.js:93
msgid "Download PDF" msgid "Download PDF"
msgstr "" msgstr ""
@ -465,18 +419,3 @@ msgstr "Nem tartalmaz vesszővel elválasztott e-mail listát."
#~ "channel." #~ "channel."
#~ msgstr "" #~ msgstr ""
#~ msgid "Reboot request failed."
#~ msgstr ""
#~ msgid "Reboot"
#~ msgstr ""
#~ msgid "Warning!"
#~ msgstr ""
#~ msgid "Are you sure you want to restart the router?"
#~ msgstr ""
#~ msgid "Confirm reboot"
#~ msgstr ""

View File

@ -7,7 +7,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PROJECT VERSION\n" "Project-Id-Version: PROJECT VERSION\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2024-11-13 14:06+0100\n" "POT-Creation-Date: 2024-08-23 14:02+0200\n"
"PO-Revision-Date: 2022-12-31 23:48+0000\n" "PO-Revision-Date: 2022-12-31 23:48+0000\n"
"Last-Translator: Anselmo <anselmo@casinadicornia.com>\n" "Last-Translator: Anselmo <anselmo@casinadicornia.com>\n"
"Language: it\n" "Language: it\n"
@ -35,85 +35,40 @@ msgstr ""
msgid "An unknown API error occurred." msgid "An unknown API error occurred."
msgstr "" msgstr ""
#: src/bootstrap/Alert.js:73 src/bootstrap/Modal.js:101 #: src/bootstrap/Alert.js:51 src/bootstrap/Modal.js:98
#: src/common/WiFiSettings/WiFiQRCode.js:89
msgid "Close" msgid "Close"
msgstr "" msgstr ""
#: src/bootstrap/CopyInput.js:56 #: src/bootstrap/CopyInput.js:57
msgid "Copied!" msgid "Copied!"
msgstr "" msgstr ""
#: src/bootstrap/CopyInput.js:56 #: src/bootstrap/CopyInput.js:57
msgid "Copy" msgid "Copy"
msgstr "" msgstr ""
#: src/common/ActionButtonWithModal/ActionButtonWithModal.js:60 #: src/common/RebootButton.js:27
msgid "Action successful." msgid "Reboot request failed."
msgstr "" msgstr ""
#: src/common/ActionButtonWithModal/ActionButtonWithModal.js:65 #: src/common/RebootButton.js:51
msgid "Action failed." msgid "Reboot"
msgstr "" msgstr ""
#: src/common/ActionButtonWithModal/ActionButtonWithModal.js:125 #: src/common/RebootButton.js:66
msgid "Warning!"
msgstr ""
#: src/common/RebootButton.js:68
msgid "Are you sure you want to restart the router?"
msgstr ""
#: src/common/RebootButton.js:71
msgid "Cancel" msgid "Cancel"
msgstr "" msgstr ""
#: src/common/ActionButtonWithModal/ActionButtonWithModal.js:128 #: src/common/RebootButton.js:73
msgid "Confirm" msgid "Confirm reboot"
msgstr ""
#: src/common/RichTable/RichTableHeader.js:29
msgid "Sort ascending"
msgstr ""
#: src/common/RichTable/RichTableHeader.js:30
msgid "Sort descending"
msgstr ""
#: src/common/RichTable/RichTableHeader.js:31
msgid "Clear sort"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:65
msgid "Pagination navigation bar"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:71
msgid "First page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:77
msgid "Previous page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:83
msgid "Next page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:89
msgid "Last page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:95
msgid "Page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:98
msgid "of"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:106
msgid "Rows per page:"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:109
msgid "Select rows per page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:121
msgid "All"
msgstr "" msgstr ""
#: src/common/WiFiSettings/ResetWiFiSettings.js:39 #: src/common/WiFiSettings/ResetWiFiSettings.js:39
@ -141,7 +96,7 @@ msgid "Wi-Fi ${deviceID + 1}"
msgstr "" msgstr ""
#: src/common/WiFiSettings/WiFiForm.js:132 #: src/common/WiFiSettings/WiFiForm.js:132
#: src/common/WiFiSettings/WiFiGuestForm.js:78 #: src/common/WiFiSettings/WiFiGuestForm.js:81
msgid "Password" msgid "Password"
msgstr "Password" msgstr "Password"
@ -192,7 +147,7 @@ msgstr ""
msgid "Wi-Fi QR Code" msgid "Wi-Fi QR Code"
msgstr "" msgstr ""
#: src/common/WiFiSettings/WiFiQRCode.js:102 #: src/common/WiFiSettings/WiFiQRCode.js:93
msgid "Download PDF" msgid "Download PDF"
msgstr "" msgstr ""
@ -470,18 +425,3 @@ msgstr ""
#~ "channel." #~ "channel."
#~ msgstr "" #~ msgstr ""
#~ msgid "Reboot request failed."
#~ msgstr ""
#~ msgid "Reboot"
#~ msgstr ""
#~ msgid "Warning!"
#~ msgstr ""
#~ msgid "Are you sure you want to restart the router?"
#~ msgstr ""
#~ msgid "Confirm reboot"
#~ msgstr ""

View File

@ -7,7 +7,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PROJECT VERSION\n" "Project-Id-Version: PROJECT VERSION\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2024-11-13 14:06+0100\n" "POT-Creation-Date: 2024-08-23 14:02+0200\n"
"PO-Revision-Date: 2019-10-16 10:08+0000\n" "PO-Revision-Date: 2019-10-16 10:08+0000\n"
"Last-Translator: Scott Anecito <scott.anecito@protonmail.com>\n" "Last-Translator: Scott Anecito <scott.anecito@protonmail.com>\n"
"Language: ja\n" "Language: ja\n"
@ -35,85 +35,40 @@ msgstr ""
msgid "An unknown API error occurred." msgid "An unknown API error occurred."
msgstr "" msgstr ""
#: src/bootstrap/Alert.js:73 src/bootstrap/Modal.js:101 #: src/bootstrap/Alert.js:51 src/bootstrap/Modal.js:98
#: src/common/WiFiSettings/WiFiQRCode.js:89
msgid "Close" msgid "Close"
msgstr "" msgstr ""
#: src/bootstrap/CopyInput.js:56 #: src/bootstrap/CopyInput.js:57
msgid "Copied!" msgid "Copied!"
msgstr "" msgstr ""
#: src/bootstrap/CopyInput.js:56 #: src/bootstrap/CopyInput.js:57
msgid "Copy" msgid "Copy"
msgstr "" msgstr ""
#: src/common/ActionButtonWithModal/ActionButtonWithModal.js:60 #: src/common/RebootButton.js:27
msgid "Action successful." msgid "Reboot request failed."
msgstr "" msgstr ""
#: src/common/ActionButtonWithModal/ActionButtonWithModal.js:65 #: src/common/RebootButton.js:51
msgid "Action failed." msgid "Reboot"
msgstr "再起動"
#: src/common/RebootButton.js:66
msgid "Warning!"
msgstr "" msgstr ""
#: src/common/ActionButtonWithModal/ActionButtonWithModal.js:125 #: src/common/RebootButton.js:68
msgid "Are you sure you want to restart the router?"
msgstr ""
#: src/common/RebootButton.js:71
msgid "Cancel" msgid "Cancel"
msgstr "" msgstr ""
#: src/common/ActionButtonWithModal/ActionButtonWithModal.js:128 #: src/common/RebootButton.js:73
msgid "Confirm" msgid "Confirm reboot"
msgstr ""
#: src/common/RichTable/RichTableHeader.js:29
msgid "Sort ascending"
msgstr ""
#: src/common/RichTable/RichTableHeader.js:30
msgid "Sort descending"
msgstr ""
#: src/common/RichTable/RichTableHeader.js:31
msgid "Clear sort"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:65
msgid "Pagination navigation bar"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:71
msgid "First page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:77
msgid "Previous page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:83
msgid "Next page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:89
msgid "Last page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:95
msgid "Page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:98
msgid "of"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:106
msgid "Rows per page:"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:109
msgid "Select rows per page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:121
msgid "All"
msgstr "" msgstr ""
#: src/common/WiFiSettings/ResetWiFiSettings.js:39 #: src/common/WiFiSettings/ResetWiFiSettings.js:39
@ -141,7 +96,7 @@ msgid "Wi-Fi ${deviceID + 1}"
msgstr "" msgstr ""
#: src/common/WiFiSettings/WiFiForm.js:132 #: src/common/WiFiSettings/WiFiForm.js:132
#: src/common/WiFiSettings/WiFiGuestForm.js:78 #: src/common/WiFiSettings/WiFiGuestForm.js:81
msgid "Password" msgid "Password"
msgstr "" msgstr ""
@ -193,7 +148,7 @@ msgstr ""
msgid "Wi-Fi QR Code" msgid "Wi-Fi QR Code"
msgstr "" msgstr ""
#: src/common/WiFiSettings/WiFiQRCode.js:102 #: src/common/WiFiSettings/WiFiQRCode.js:93
msgid "Download PDF" msgid "Download PDF"
msgstr "" msgstr ""
@ -471,18 +426,3 @@ msgstr ""
#~ "channel." #~ "channel."
#~ msgstr "" #~ msgstr ""
#~ msgid "Reboot request failed."
#~ msgstr ""
#~ msgid "Reboot"
#~ msgstr "再起動"
#~ msgid "Warning!"
#~ msgstr ""
#~ msgid "Are you sure you want to restart the router?"
#~ msgstr ""
#~ msgid "Confirm reboot"
#~ msgstr ""

View File

@ -7,7 +7,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PROJECT VERSION\n" "Project-Id-Version: PROJECT VERSION\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2024-11-13 14:06+0100\n" "POT-Creation-Date: 2024-08-23 14:02+0200\n"
"PO-Revision-Date: 2019-02-19 13:34+0100\n" "PO-Revision-Date: 2019-02-19 13:34+0100\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language: ko\n" "Language: ko\n"
@ -34,85 +34,40 @@ msgstr ""
msgid "An unknown API error occurred." msgid "An unknown API error occurred."
msgstr "" msgstr ""
#: src/bootstrap/Alert.js:73 src/bootstrap/Modal.js:101 #: src/bootstrap/Alert.js:51 src/bootstrap/Modal.js:98
#: src/common/WiFiSettings/WiFiQRCode.js:89
msgid "Close" msgid "Close"
msgstr "" msgstr ""
#: src/bootstrap/CopyInput.js:56 #: src/bootstrap/CopyInput.js:57
msgid "Copied!" msgid "Copied!"
msgstr "" msgstr ""
#: src/bootstrap/CopyInput.js:56 #: src/bootstrap/CopyInput.js:57
msgid "Copy" msgid "Copy"
msgstr "" msgstr ""
#: src/common/ActionButtonWithModal/ActionButtonWithModal.js:60 #: src/common/RebootButton.js:27
msgid "Action successful." msgid "Reboot request failed."
msgstr "" msgstr ""
#: src/common/ActionButtonWithModal/ActionButtonWithModal.js:65 #: src/common/RebootButton.js:51
msgid "Action failed." msgid "Reboot"
msgstr "" msgstr ""
#: src/common/ActionButtonWithModal/ActionButtonWithModal.js:125 #: src/common/RebootButton.js:66
msgid "Warning!"
msgstr ""
#: src/common/RebootButton.js:68
msgid "Are you sure you want to restart the router?"
msgstr ""
#: src/common/RebootButton.js:71
msgid "Cancel" msgid "Cancel"
msgstr "" msgstr ""
#: src/common/ActionButtonWithModal/ActionButtonWithModal.js:128 #: src/common/RebootButton.js:73
msgid "Confirm" msgid "Confirm reboot"
msgstr ""
#: src/common/RichTable/RichTableHeader.js:29
msgid "Sort ascending"
msgstr ""
#: src/common/RichTable/RichTableHeader.js:30
msgid "Sort descending"
msgstr ""
#: src/common/RichTable/RichTableHeader.js:31
msgid "Clear sort"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:65
msgid "Pagination navigation bar"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:71
msgid "First page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:77
msgid "Previous page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:83
msgid "Next page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:89
msgid "Last page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:95
msgid "Page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:98
msgid "of"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:106
msgid "Rows per page:"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:109
msgid "Select rows per page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:121
msgid "All"
msgstr "" msgstr ""
#: src/common/WiFiSettings/ResetWiFiSettings.js:39 #: src/common/WiFiSettings/ResetWiFiSettings.js:39
@ -140,7 +95,7 @@ msgid "Wi-Fi ${deviceID + 1}"
msgstr "" msgstr ""
#: src/common/WiFiSettings/WiFiForm.js:132 #: src/common/WiFiSettings/WiFiForm.js:132
#: src/common/WiFiSettings/WiFiGuestForm.js:78 #: src/common/WiFiSettings/WiFiGuestForm.js:81
msgid "Password" msgid "Password"
msgstr "" msgstr ""
@ -191,7 +146,7 @@ msgstr ""
msgid "Wi-Fi QR Code" msgid "Wi-Fi QR Code"
msgstr "" msgstr ""
#: src/common/WiFiSettings/WiFiQRCode.js:102 #: src/common/WiFiSettings/WiFiQRCode.js:93
msgid "Download PDF" msgid "Download PDF"
msgstr "" msgstr ""
@ -469,18 +424,3 @@ msgstr ""
#~ "channel." #~ "channel."
#~ msgstr "" #~ msgstr ""
#~ msgid "Reboot request failed."
#~ msgstr ""
#~ msgid "Reboot"
#~ msgstr ""
#~ msgid "Warning!"
#~ msgstr ""
#~ msgid "Are you sure you want to restart the router?"
#~ msgstr ""
#~ msgid "Confirm reboot"
#~ msgstr ""

View File

@ -7,7 +7,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PROJECT VERSION\n" "Project-Id-Version: PROJECT VERSION\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2024-11-13 14:06+0100\n" "POT-Creation-Date: 2024-08-23 14:02+0200\n"
"PO-Revision-Date: 2019-02-19 13:34+0100\n" "PO-Revision-Date: 2019-02-19 13:34+0100\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language: lt\n" "Language: lt\n"
@ -35,85 +35,40 @@ msgstr ""
msgid "An unknown API error occurred." msgid "An unknown API error occurred."
msgstr "" msgstr ""
#: src/bootstrap/Alert.js:73 src/bootstrap/Modal.js:101 #: src/bootstrap/Alert.js:51 src/bootstrap/Modal.js:98
#: src/common/WiFiSettings/WiFiQRCode.js:89
msgid "Close" msgid "Close"
msgstr "" msgstr ""
#: src/bootstrap/CopyInput.js:56 #: src/bootstrap/CopyInput.js:57
msgid "Copied!" msgid "Copied!"
msgstr "" msgstr ""
#: src/bootstrap/CopyInput.js:56 #: src/bootstrap/CopyInput.js:57
msgid "Copy" msgid "Copy"
msgstr "" msgstr ""
#: src/common/ActionButtonWithModal/ActionButtonWithModal.js:60 #: src/common/RebootButton.js:27
msgid "Action successful." msgid "Reboot request failed."
msgstr "" msgstr ""
#: src/common/ActionButtonWithModal/ActionButtonWithModal.js:65 #: src/common/RebootButton.js:51
msgid "Action failed." msgid "Reboot"
msgstr "" msgstr ""
#: src/common/ActionButtonWithModal/ActionButtonWithModal.js:125 #: src/common/RebootButton.js:66
msgid "Warning!"
msgstr ""
#: src/common/RebootButton.js:68
msgid "Are you sure you want to restart the router?"
msgstr ""
#: src/common/RebootButton.js:71
msgid "Cancel" msgid "Cancel"
msgstr "" msgstr ""
#: src/common/ActionButtonWithModal/ActionButtonWithModal.js:128 #: src/common/RebootButton.js:73
msgid "Confirm" msgid "Confirm reboot"
msgstr ""
#: src/common/RichTable/RichTableHeader.js:29
msgid "Sort ascending"
msgstr ""
#: src/common/RichTable/RichTableHeader.js:30
msgid "Sort descending"
msgstr ""
#: src/common/RichTable/RichTableHeader.js:31
msgid "Clear sort"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:65
msgid "Pagination navigation bar"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:71
msgid "First page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:77
msgid "Previous page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:83
msgid "Next page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:89
msgid "Last page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:95
msgid "Page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:98
msgid "of"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:106
msgid "Rows per page:"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:109
msgid "Select rows per page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:121
msgid "All"
msgstr "" msgstr ""
#: src/common/WiFiSettings/ResetWiFiSettings.js:39 #: src/common/WiFiSettings/ResetWiFiSettings.js:39
@ -141,7 +96,7 @@ msgid "Wi-Fi ${deviceID + 1}"
msgstr "" msgstr ""
#: src/common/WiFiSettings/WiFiForm.js:132 #: src/common/WiFiSettings/WiFiForm.js:132
#: src/common/WiFiSettings/WiFiGuestForm.js:78 #: src/common/WiFiSettings/WiFiGuestForm.js:81
msgid "Password" msgid "Password"
msgstr "" msgstr ""
@ -192,7 +147,7 @@ msgstr ""
msgid "Wi-Fi QR Code" msgid "Wi-Fi QR Code"
msgstr "" msgstr ""
#: src/common/WiFiSettings/WiFiQRCode.js:102 #: src/common/WiFiSettings/WiFiQRCode.js:93
msgid "Download PDF" msgid "Download PDF"
msgstr "" msgstr ""
@ -470,18 +425,3 @@ msgstr ""
#~ "channel." #~ "channel."
#~ msgstr "" #~ msgstr ""
#~ msgid "Reboot request failed."
#~ msgstr ""
#~ msgid "Reboot"
#~ msgstr ""
#~ msgid "Warning!"
#~ msgstr ""
#~ msgid "Are you sure you want to restart the router?"
#~ msgstr ""
#~ msgid "Confirm reboot"
#~ msgstr ""

View File

@ -7,7 +7,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PROJECT VERSION\n" "Project-Id-Version: PROJECT VERSION\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2024-11-13 14:06+0100\n" "POT-Creation-Date: 2024-08-23 14:02+0200\n"
"PO-Revision-Date: 2023-03-02 11:40+0000\n" "PO-Revision-Date: 2023-03-02 11:40+0000\n"
"Last-Translator: Allan Nordhøy <epost@anotheragency.no>\n" "Last-Translator: Allan Nordhøy <epost@anotheragency.no>\n"
"Language: nb_NO\n" "Language: nb_NO\n"
@ -36,89 +36,43 @@ msgstr "Fikk ikke svar."
msgid "An unknown API error occurred." msgid "An unknown API error occurred."
msgstr "Ukjent API-feil." msgstr "Ukjent API-feil."
#: src/bootstrap/Alert.js:73 src/bootstrap/Modal.js:101 #: src/bootstrap/Alert.js:51 src/bootstrap/Modal.js:98
#: src/common/WiFiSettings/WiFiQRCode.js:89
msgid "Close" msgid "Close"
msgstr "" msgstr ""
#: src/bootstrap/CopyInput.js:56 #: src/bootstrap/CopyInput.js:57
msgid "Copied!" msgid "Copied!"
msgstr "Kopiert" msgstr "Kopiert"
#: src/bootstrap/CopyInput.js:56 #: src/bootstrap/CopyInput.js:57
msgid "Copy" msgid "Copy"
msgstr "Kopier" msgstr "Kopier"
#: src/common/ActionButtonWithModal/ActionButtonWithModal.js:60 #: src/common/RebootButton.js:27
#, fuzzy #, fuzzy
msgid "Action successful." msgid "Reboot request failed."
msgstr "Innstillinger lagret" msgstr "Omstart kreves"
#: src/common/ActionButtonWithModal/ActionButtonWithModal.js:65 #: src/common/RebootButton.js:51
msgid "Action failed." msgid "Reboot"
msgstr "" msgstr "Start på ny"
#: src/common/ActionButtonWithModal/ActionButtonWithModal.js:125 #: src/common/RebootButton.js:66
msgid "Warning!"
msgstr "Advarsel!"
#: src/common/RebootButton.js:68
msgid "Are you sure you want to restart the router?"
msgstr "Er du sikker på at du vil utføre omstart av ruteren?"
#: src/common/RebootButton.js:71
msgid "Cancel" msgid "Cancel"
msgstr "Avbryt" msgstr "Avbryt"
#: src/common/ActionButtonWithModal/ActionButtonWithModal.js:128 #: src/common/RebootButton.js:73
#, fuzzy msgid "Confirm reboot"
msgid "Confirm"
msgstr "Bekreft omstart" msgstr "Bekreft omstart"
#: src/common/RichTable/RichTableHeader.js:29
msgid "Sort ascending"
msgstr ""
#: src/common/RichTable/RichTableHeader.js:30
msgid "Sort descending"
msgstr ""
#: src/common/RichTable/RichTableHeader.js:31
msgid "Clear sort"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:65
msgid "Pagination navigation bar"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:71
msgid "First page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:77
msgid "Previous page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:83
msgid "Next page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:89
msgid "Last page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:95
msgid "Page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:98
msgid "of"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:106
msgid "Rows per page:"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:109
msgid "Select rows per page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:121
msgid "All"
msgstr ""
#: src/common/WiFiSettings/ResetWiFiSettings.js:39 #: src/common/WiFiSettings/ResetWiFiSettings.js:39
#, fuzzy #, fuzzy
msgid "An error occurred during resetting Wi-Fi settings." msgid "An error occurred during resetting Wi-Fi settings."
@ -149,7 +103,7 @@ msgid "Wi-Fi ${deviceID + 1}"
msgstr "Wi-Fi ${deviceID + 1}" msgstr "Wi-Fi ${deviceID + 1}"
#: src/common/WiFiSettings/WiFiForm.js:132 #: src/common/WiFiSettings/WiFiForm.js:132
#: src/common/WiFiSettings/WiFiGuestForm.js:78 #: src/common/WiFiSettings/WiFiGuestForm.js:81
msgid "Password" msgid "Password"
msgstr "Passord" msgstr "Passord"
@ -207,7 +161,7 @@ msgstr "QR-kode for Wi-Fi"
msgid "Wi-Fi QR Code" msgid "Wi-Fi QR Code"
msgstr "QR-kode for Wi-Fi" msgstr "QR-kode for Wi-Fi"
#: src/common/WiFiSettings/WiFiQRCode.js:102 #: src/common/WiFiSettings/WiFiQRCode.js:93
msgid "Download PDF" msgid "Download PDF"
msgstr "Last ned PDF" msgstr "Last ned PDF"
@ -449,15 +403,3 @@ msgstr "Inneholder ikke en kommainndelt liste med e-postadresser."
#~ "gjeldende Wi-Fi-oppsett og tilbakestiller forvalgte verdier.\n" #~ "gjeldende Wi-Fi-oppsett og tilbakestiller forvalgte verdier.\n"
#~ " " #~ " "
#~ msgid "Reboot request failed."
#~ msgstr "Omstart kreves"
#~ msgid "Reboot"
#~ msgstr "Start på ny"
#~ msgid "Warning!"
#~ msgstr "Advarsel!"
#~ msgid "Are you sure you want to restart the router?"
#~ msgstr "Er du sikker på at du vil utføre omstart av ruteren?"

View File

@ -7,7 +7,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PROJECT VERSION\n" "Project-Id-Version: PROJECT VERSION\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2024-11-13 14:06+0100\n" "POT-Creation-Date: 2024-08-23 14:02+0200\n"
"PO-Revision-Date: 2024-01-04 21:08+0000\n" "PO-Revision-Date: 2024-01-04 21:08+0000\n"
"Last-Translator: powerburner-nl <peter.mulder.1981@gmail.com>\n" "Last-Translator: powerburner-nl <peter.mulder.1981@gmail.com>\n"
"Language: nl\n" "Language: nl\n"
@ -35,88 +35,43 @@ msgstr ""
msgid "An unknown API error occurred." msgid "An unknown API error occurred."
msgstr "" msgstr ""
#: src/bootstrap/Alert.js:73 src/bootstrap/Modal.js:101 #: src/bootstrap/Alert.js:51 src/bootstrap/Modal.js:98
#: src/common/WiFiSettings/WiFiQRCode.js:89
msgid "Close" msgid "Close"
msgstr "" msgstr ""
#: src/bootstrap/CopyInput.js:56 #: src/bootstrap/CopyInput.js:57
msgid "Copied!" msgid "Copied!"
msgstr "" msgstr ""
#: src/bootstrap/CopyInput.js:56 #: src/bootstrap/CopyInput.js:57
msgid "Copy" msgid "Copy"
msgstr "" msgstr ""
#: src/common/ActionButtonWithModal/ActionButtonWithModal.js:60 #: src/common/RebootButton.js:27
msgid "Action successful." #, fuzzy
msgstr "" msgid "Reboot request failed."
msgstr "Opnieuw opstarten is vereist"
#: src/common/ActionButtonWithModal/ActionButtonWithModal.js:65 #: src/common/RebootButton.js:51
msgid "Action failed." msgid "Reboot"
msgstr "" msgstr "Opnieuw opstarten"
#: src/common/ActionButtonWithModal/ActionButtonWithModal.js:125 #: src/common/RebootButton.js:66
msgid "Warning!"
msgstr "Waarschuwing!"
#: src/common/RebootButton.js:68
msgid "Are you sure you want to restart the router?"
msgstr "Weet u zeker dat u de router opnieuw wilt opstarten?"
#: src/common/RebootButton.js:71
msgid "Cancel" msgid "Cancel"
msgstr "Annuleren" msgstr "Annuleren"
#: src/common/ActionButtonWithModal/ActionButtonWithModal.js:128 #: src/common/RebootButton.js:73
#, fuzzy msgid "Confirm reboot"
msgid "Confirm"
msgstr "Opnieuw opstarten bevestigen" msgstr "Opnieuw opstarten bevestigen"
#: src/common/RichTable/RichTableHeader.js:29
msgid "Sort ascending"
msgstr ""
#: src/common/RichTable/RichTableHeader.js:30
msgid "Sort descending"
msgstr ""
#: src/common/RichTable/RichTableHeader.js:31
msgid "Clear sort"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:65
msgid "Pagination navigation bar"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:71
msgid "First page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:77
msgid "Previous page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:83
msgid "Next page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:89
msgid "Last page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:95
msgid "Page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:98
msgid "of"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:106
msgid "Rows per page:"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:109
msgid "Select rows per page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:121
msgid "All"
msgstr ""
#: src/common/WiFiSettings/ResetWiFiSettings.js:39 #: src/common/WiFiSettings/ResetWiFiSettings.js:39
msgid "An error occurred during resetting Wi-Fi settings." msgid "An error occurred during resetting Wi-Fi settings."
msgstr "" msgstr ""
@ -142,7 +97,7 @@ msgid "Wi-Fi ${deviceID + 1}"
msgstr "" msgstr ""
#: src/common/WiFiSettings/WiFiForm.js:132 #: src/common/WiFiSettings/WiFiForm.js:132
#: src/common/WiFiSettings/WiFiGuestForm.js:78 #: src/common/WiFiSettings/WiFiGuestForm.js:81
msgid "Password" msgid "Password"
msgstr "Wachtwoord" msgstr "Wachtwoord"
@ -194,7 +149,7 @@ msgstr ""
msgid "Wi-Fi QR Code" msgid "Wi-Fi QR Code"
msgstr "" msgstr ""
#: src/common/WiFiSettings/WiFiQRCode.js:102 #: src/common/WiFiSettings/WiFiQRCode.js:93
msgid "Download PDF" msgid "Download PDF"
msgstr "" msgstr ""
@ -473,15 +428,3 @@ msgstr "Bevat geen lijst met e-mails gescheiden door komma's."
#~ "channel." #~ "channel."
#~ msgstr "" #~ msgstr ""
#~ msgid "Reboot request failed."
#~ msgstr "Opnieuw opstarten is vereist"
#~ msgid "Reboot"
#~ msgstr "Opnieuw opstarten"
#~ msgid "Warning!"
#~ msgstr "Waarschuwing!"
#~ msgid "Are you sure you want to restart the router?"
#~ msgstr "Weet u zeker dat u de router opnieuw wilt opstarten?"

View File

@ -7,7 +7,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PROJECT VERSION\n" "Project-Id-Version: PROJECT VERSION\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2024-11-13 14:06+0100\n" "POT-Creation-Date: 2024-08-23 14:02+0200\n"
"PO-Revision-Date: 2023-03-07 16:37+0000\n" "PO-Revision-Date: 2023-03-07 16:37+0000\n"
"Last-Translator: Arusekk <arek_koz@o2.pl>\n" "Last-Translator: Arusekk <arek_koz@o2.pl>\n"
"Language: pl\n" "Language: pl\n"
@ -36,89 +36,42 @@ msgstr "Brak odpowiedzi."
msgid "An unknown API error occurred." msgid "An unknown API error occurred."
msgstr "Wystąpił nieznany błąd API." msgstr "Wystąpił nieznany błąd API."
#: src/bootstrap/Alert.js:73 src/bootstrap/Modal.js:101 #: src/bootstrap/Alert.js:51 src/bootstrap/Modal.js:98
#: src/common/WiFiSettings/WiFiQRCode.js:89
msgid "Close" msgid "Close"
msgstr "" msgstr ""
#: src/bootstrap/CopyInput.js:56 #: src/bootstrap/CopyInput.js:57
msgid "Copied!" msgid "Copied!"
msgstr "" msgstr ""
#: src/bootstrap/CopyInput.js:56 #: src/bootstrap/CopyInput.js:57
msgid "Copy" msgid "Copy"
msgstr "" msgstr ""
#: src/common/ActionButtonWithModal/ActionButtonWithModal.js:60 #: src/common/RebootButton.js:27
#, fuzzy msgid "Reboot request failed."
msgid "Action successful."
msgstr "Ustawienia zostały zapisane"
#: src/common/ActionButtonWithModal/ActionButtonWithModal.js:65
msgid "Action failed."
msgstr "" msgstr ""
#: src/common/ActionButtonWithModal/ActionButtonWithModal.js:125 #: src/common/RebootButton.js:51
msgid "Reboot"
msgstr "Restart"
#: src/common/RebootButton.js:66
msgid "Warning!"
msgstr "Ostrzeżenie!"
#: src/common/RebootButton.js:68
msgid "Are you sure you want to restart the router?"
msgstr "Czy na pewno zrestartować router?"
#: src/common/RebootButton.js:71
msgid "Cancel" msgid "Cancel"
msgstr "Anuluj" msgstr "Anuluj"
#: src/common/ActionButtonWithModal/ActionButtonWithModal.js:128 #: src/common/RebootButton.js:73
#, fuzzy msgid "Confirm reboot"
msgid "Confirm"
msgstr "Potwierdź restart" msgstr "Potwierdź restart"
#: src/common/RichTable/RichTableHeader.js:29
msgid "Sort ascending"
msgstr ""
#: src/common/RichTable/RichTableHeader.js:30
msgid "Sort descending"
msgstr ""
#: src/common/RichTable/RichTableHeader.js:31
msgid "Clear sort"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:65
msgid "Pagination navigation bar"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:71
msgid "First page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:77
msgid "Previous page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:83
msgid "Next page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:89
msgid "Last page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:95
msgid "Page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:98
msgid "of"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:106
msgid "Rows per page:"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:109
msgid "Select rows per page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:121
msgid "All"
msgstr ""
#: src/common/WiFiSettings/ResetWiFiSettings.js:39 #: src/common/WiFiSettings/ResetWiFiSettings.js:39
msgid "An error occurred during resetting Wi-Fi settings." msgid "An error occurred during resetting Wi-Fi settings."
msgstr "" msgstr ""
@ -144,7 +97,7 @@ msgid "Wi-Fi ${deviceID + 1}"
msgstr "" msgstr ""
#: src/common/WiFiSettings/WiFiForm.js:132 #: src/common/WiFiSettings/WiFiForm.js:132
#: src/common/WiFiSettings/WiFiGuestForm.js:78 #: src/common/WiFiSettings/WiFiGuestForm.js:81
msgid "Password" msgid "Password"
msgstr "Hasło" msgstr "Hasło"
@ -195,7 +148,7 @@ msgstr ""
msgid "Wi-Fi QR Code" msgid "Wi-Fi QR Code"
msgstr "" msgstr ""
#: src/common/WiFiSettings/WiFiQRCode.js:102 #: src/common/WiFiSettings/WiFiQRCode.js:93
msgid "Download PDF" msgid "Download PDF"
msgstr "" msgstr ""
@ -473,15 +426,3 @@ msgstr "Nie zawiera listy e-maili oddzielonych przecinkami."
#~ "channel." #~ "channel."
#~ msgstr "" #~ msgstr ""
#~ msgid "Reboot request failed."
#~ msgstr ""
#~ msgid "Reboot"
#~ msgstr "Restart"
#~ msgid "Warning!"
#~ msgstr "Ostrzeżenie!"
#~ msgid "Are you sure you want to restart the router?"
#~ msgstr "Czy na pewno zrestartować router?"

View File

@ -7,7 +7,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PROJECT VERSION\n" "Project-Id-Version: PROJECT VERSION\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2024-11-13 14:06+0100\n" "POT-Creation-Date: 2024-08-23 14:02+0200\n"
"PO-Revision-Date: 2021-12-21 12:52+0000\n" "PO-Revision-Date: 2021-12-21 12:52+0000\n"
"Last-Translator: c10l <weblate.org@a.c10l.cc>\n" "Last-Translator: c10l <weblate.org@a.c10l.cc>\n"
"Language: pt_BR\n" "Language: pt_BR\n"
@ -35,88 +35,42 @@ msgstr ""
msgid "An unknown API error occurred." msgid "An unknown API error occurred."
msgstr "" msgstr ""
#: src/bootstrap/Alert.js:73 src/bootstrap/Modal.js:101 #: src/bootstrap/Alert.js:51 src/bootstrap/Modal.js:98
#: src/common/WiFiSettings/WiFiQRCode.js:89
msgid "Close" msgid "Close"
msgstr "" msgstr ""
#: src/bootstrap/CopyInput.js:56 #: src/bootstrap/CopyInput.js:57
msgid "Copied!" msgid "Copied!"
msgstr "" msgstr ""
#: src/bootstrap/CopyInput.js:56 #: src/bootstrap/CopyInput.js:57
msgid "Copy" msgid "Copy"
msgstr "" msgstr ""
#: src/common/ActionButtonWithModal/ActionButtonWithModal.js:60 #: src/common/RebootButton.js:27
msgid "Action successful." msgid "Reboot request failed."
msgstr "" msgstr ""
#: src/common/ActionButtonWithModal/ActionButtonWithModal.js:65 #: src/common/RebootButton.js:51
msgid "Action failed." msgid "Reboot"
msgstr "" msgstr "Reinício"
#: src/common/ActionButtonWithModal/ActionButtonWithModal.js:125 #: src/common/RebootButton.js:66
msgid "Warning!"
msgstr "Atenção!"
#: src/common/RebootButton.js:68
msgid "Are you sure you want to restart the router?"
msgstr "Você tem certeza de que quer reiniciar o roteador?"
#: src/common/RebootButton.js:71
msgid "Cancel" msgid "Cancel"
msgstr "Cancelar" msgstr "Cancelar"
#: src/common/ActionButtonWithModal/ActionButtonWithModal.js:128 #: src/common/RebootButton.js:73
#, fuzzy msgid "Confirm reboot"
msgid "Confirm"
msgstr "Confirma reinício" msgstr "Confirma reinício"
#: src/common/RichTable/RichTableHeader.js:29
msgid "Sort ascending"
msgstr ""
#: src/common/RichTable/RichTableHeader.js:30
msgid "Sort descending"
msgstr ""
#: src/common/RichTable/RichTableHeader.js:31
msgid "Clear sort"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:65
msgid "Pagination navigation bar"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:71
msgid "First page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:77
msgid "Previous page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:83
msgid "Next page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:89
msgid "Last page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:95
msgid "Page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:98
msgid "of"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:106
msgid "Rows per page:"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:109
msgid "Select rows per page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:121
msgid "All"
msgstr ""
#: src/common/WiFiSettings/ResetWiFiSettings.js:39 #: src/common/WiFiSettings/ResetWiFiSettings.js:39
msgid "An error occurred during resetting Wi-Fi settings." msgid "An error occurred during resetting Wi-Fi settings."
msgstr "" msgstr ""
@ -142,7 +96,7 @@ msgid "Wi-Fi ${deviceID + 1}"
msgstr "" msgstr ""
#: src/common/WiFiSettings/WiFiForm.js:132 #: src/common/WiFiSettings/WiFiForm.js:132
#: src/common/WiFiSettings/WiFiGuestForm.js:78 #: src/common/WiFiSettings/WiFiGuestForm.js:81
msgid "Password" msgid "Password"
msgstr "" msgstr ""
@ -193,7 +147,7 @@ msgstr ""
msgid "Wi-Fi QR Code" msgid "Wi-Fi QR Code"
msgstr "" msgstr ""
#: src/common/WiFiSettings/WiFiQRCode.js:102 #: src/common/WiFiSettings/WiFiQRCode.js:93
msgid "Download PDF" msgid "Download PDF"
msgstr "" msgstr ""
@ -449,15 +403,3 @@ msgstr ""
#~ "channel." #~ "channel."
#~ msgstr "" #~ msgstr ""
#~ msgid "Reboot request failed."
#~ msgstr ""
#~ msgid "Reboot"
#~ msgstr "Reinício"
#~ msgid "Warning!"
#~ msgstr "Atenção!"
#~ msgid "Are you sure you want to restart the router?"
#~ msgstr "Você tem certeza de que quer reiniciar o roteador?"

View File

@ -7,7 +7,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PROJECT VERSION\n" "Project-Id-Version: PROJECT VERSION\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2024-11-13 14:06+0100\n" "POT-Creation-Date: 2024-08-23 14:02+0200\n"
"PO-Revision-Date: 2019-02-19 13:35+0100\n" "PO-Revision-Date: 2019-02-19 13:35+0100\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language: ro\n" "Language: ro\n"
@ -35,85 +35,40 @@ msgstr ""
msgid "An unknown API error occurred." msgid "An unknown API error occurred."
msgstr "" msgstr ""
#: src/bootstrap/Alert.js:73 src/bootstrap/Modal.js:101 #: src/bootstrap/Alert.js:51 src/bootstrap/Modal.js:98
#: src/common/WiFiSettings/WiFiQRCode.js:89
msgid "Close" msgid "Close"
msgstr "" msgstr ""
#: src/bootstrap/CopyInput.js:56 #: src/bootstrap/CopyInput.js:57
msgid "Copied!" msgid "Copied!"
msgstr "" msgstr ""
#: src/bootstrap/CopyInput.js:56 #: src/bootstrap/CopyInput.js:57
msgid "Copy" msgid "Copy"
msgstr "" msgstr ""
#: src/common/ActionButtonWithModal/ActionButtonWithModal.js:60 #: src/common/RebootButton.js:27
msgid "Action successful." msgid "Reboot request failed."
msgstr "" msgstr ""
#: src/common/ActionButtonWithModal/ActionButtonWithModal.js:65 #: src/common/RebootButton.js:51
msgid "Action failed." msgid "Reboot"
msgstr "" msgstr ""
#: src/common/ActionButtonWithModal/ActionButtonWithModal.js:125 #: src/common/RebootButton.js:66
msgid "Warning!"
msgstr ""
#: src/common/RebootButton.js:68
msgid "Are you sure you want to restart the router?"
msgstr ""
#: src/common/RebootButton.js:71
msgid "Cancel" msgid "Cancel"
msgstr "" msgstr ""
#: src/common/ActionButtonWithModal/ActionButtonWithModal.js:128 #: src/common/RebootButton.js:73
msgid "Confirm" msgid "Confirm reboot"
msgstr ""
#: src/common/RichTable/RichTableHeader.js:29
msgid "Sort ascending"
msgstr ""
#: src/common/RichTable/RichTableHeader.js:30
msgid "Sort descending"
msgstr ""
#: src/common/RichTable/RichTableHeader.js:31
msgid "Clear sort"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:65
msgid "Pagination navigation bar"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:71
msgid "First page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:77
msgid "Previous page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:83
msgid "Next page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:89
msgid "Last page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:95
msgid "Page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:98
msgid "of"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:106
msgid "Rows per page:"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:109
msgid "Select rows per page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:121
msgid "All"
msgstr "" msgstr ""
#: src/common/WiFiSettings/ResetWiFiSettings.js:39 #: src/common/WiFiSettings/ResetWiFiSettings.js:39
@ -141,7 +96,7 @@ msgid "Wi-Fi ${deviceID + 1}"
msgstr "" msgstr ""
#: src/common/WiFiSettings/WiFiForm.js:132 #: src/common/WiFiSettings/WiFiForm.js:132
#: src/common/WiFiSettings/WiFiGuestForm.js:78 #: src/common/WiFiSettings/WiFiGuestForm.js:81
msgid "Password" msgid "Password"
msgstr "" msgstr ""
@ -192,7 +147,7 @@ msgstr ""
msgid "Wi-Fi QR Code" msgid "Wi-Fi QR Code"
msgstr "" msgstr ""
#: src/common/WiFiSettings/WiFiQRCode.js:102 #: src/common/WiFiSettings/WiFiQRCode.js:93
msgid "Download PDF" msgid "Download PDF"
msgstr "" msgstr ""
@ -470,18 +425,3 @@ msgstr ""
#~ "channel." #~ "channel."
#~ msgstr "" #~ msgstr ""
#~ msgid "Reboot request failed."
#~ msgstr ""
#~ msgid "Reboot"
#~ msgstr ""
#~ msgid "Warning!"
#~ msgstr ""
#~ msgid "Are you sure you want to restart the router?"
#~ msgstr ""
#~ msgid "Confirm reboot"
#~ msgstr ""

View File

@ -7,7 +7,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PROJECT VERSION\n" "Project-Id-Version: PROJECT VERSION\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2024-11-13 14:06+0100\n" "POT-Creation-Date: 2024-08-23 14:02+0200\n"
"PO-Revision-Date: 2022-12-07 12:47+0000\n" "PO-Revision-Date: 2022-12-07 12:47+0000\n"
"Last-Translator: Алексей Леньшин <alenshin@gmail.com>\n" "Last-Translator: Алексей Леньшин <alenshin@gmail.com>\n"
"Language: ru\n" "Language: ru\n"
@ -36,89 +36,42 @@ msgstr "Ответ не получен."
msgid "An unknown API error occurred." msgid "An unknown API error occurred."
msgstr "Неизвестная ошибка программного интерфейса приложения." msgstr "Неизвестная ошибка программного интерфейса приложения."
#: src/bootstrap/Alert.js:73 src/bootstrap/Modal.js:101 #: src/bootstrap/Alert.js:51 src/bootstrap/Modal.js:98
#: src/common/WiFiSettings/WiFiQRCode.js:89
msgid "Close" msgid "Close"
msgstr "" msgstr ""
#: src/bootstrap/CopyInput.js:56 #: src/bootstrap/CopyInput.js:57
msgid "Copied!" msgid "Copied!"
msgstr "Скопировано!" msgstr "Скопировано!"
#: src/bootstrap/CopyInput.js:56 #: src/bootstrap/CopyInput.js:57
msgid "Copy" msgid "Copy"
msgstr "Копировать" msgstr "Копировать"
#: src/common/ActionButtonWithModal/ActionButtonWithModal.js:60 #: src/common/RebootButton.js:27
#, fuzzy msgid "Reboot request failed."
msgid "Action successful." msgstr "Запрос на перезагрузку не выполнен."
msgstr "Настройки были успешно сохранены"
#: src/common/ActionButtonWithModal/ActionButtonWithModal.js:65 #: src/common/RebootButton.js:51
msgid "Action failed." msgid "Reboot"
msgstr "" msgstr "Перезагрузка"
#: src/common/ActionButtonWithModal/ActionButtonWithModal.js:125 #: src/common/RebootButton.js:66
msgid "Warning!"
msgstr "Предупреждение!"
#: src/common/RebootButton.js:68
msgid "Are you sure you want to restart the router?"
msgstr "Вы уверены, что хотите перезагрузить маршрутизатор?"
#: src/common/RebootButton.js:71
msgid "Cancel" msgid "Cancel"
msgstr "Отмена" msgstr "Отмена"
#: src/common/ActionButtonWithModal/ActionButtonWithModal.js:128 #: src/common/RebootButton.js:73
#, fuzzy msgid "Confirm reboot"
msgid "Confirm"
msgstr "Подтвердите перезагрузку" msgstr "Подтвердите перезагрузку"
#: src/common/RichTable/RichTableHeader.js:29
msgid "Sort ascending"
msgstr ""
#: src/common/RichTable/RichTableHeader.js:30
msgid "Sort descending"
msgstr ""
#: src/common/RichTable/RichTableHeader.js:31
msgid "Clear sort"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:65
msgid "Pagination navigation bar"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:71
msgid "First page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:77
msgid "Previous page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:83
msgid "Next page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:89
msgid "Last page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:95
msgid "Page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:98
msgid "of"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:106
msgid "Rows per page:"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:109
msgid "Select rows per page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:121
msgid "All"
msgstr ""
#: src/common/WiFiSettings/ResetWiFiSettings.js:39 #: src/common/WiFiSettings/ResetWiFiSettings.js:39
msgid "An error occurred during resetting Wi-Fi settings." msgid "An error occurred during resetting Wi-Fi settings."
msgstr "При сбросе настроек Wi-Fi произошла ошибка." msgstr "При сбросе настроек Wi-Fi произошла ошибка."
@ -147,7 +100,7 @@ msgid "Wi-Fi ${deviceID + 1}"
msgstr "Wi-Fi ${deviceID + 1}" msgstr "Wi-Fi ${deviceID + 1}"
#: src/common/WiFiSettings/WiFiForm.js:132 #: src/common/WiFiSettings/WiFiForm.js:132
#: src/common/WiFiSettings/WiFiGuestForm.js:78 #: src/common/WiFiSettings/WiFiGuestForm.js:81
msgid "Password" msgid "Password"
msgstr "Пароль" msgstr "Пароль"
@ -201,7 +154,7 @@ msgstr "QR-код Wi-Fi"
msgid "Wi-Fi QR Code" msgid "Wi-Fi QR Code"
msgstr "QR-код Wi-Fi" msgstr "QR-код Wi-Fi"
#: src/common/WiFiSettings/WiFiQRCode.js:102 #: src/common/WiFiSettings/WiFiQRCode.js:93
msgid "Download PDF" msgid "Download PDF"
msgstr "Скачать PDF" msgstr "Скачать PDF"
@ -441,15 +394,3 @@ msgstr "Не содержит списка электронных адресов
#~ "значений по умолчанию.\n" #~ "значений по умолчанию.\n"
#~ " " #~ " "
#~ msgid "Reboot request failed."
#~ msgstr "Запрос на перезагрузку не выполнен."
#~ msgid "Reboot"
#~ msgstr "Перезагрузка"
#~ msgid "Warning!"
#~ msgstr "Предупреждение!"
#~ msgid "Are you sure you want to restart the router?"
#~ msgstr "Вы уверены, что хотите перезагрузить маршрутизатор?"

View File

@ -7,13 +7,13 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PROJECT VERSION\n" "Project-Id-Version: PROJECT VERSION\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2024-11-13 14:06+0100\n" "POT-Creation-Date: 2024-08-23 14:02+0200\n"
"PO-Revision-Date: 2024-09-09 18:09+0000\n" "PO-Revision-Date: 2023-01-17 22:51+0000\n"
"Last-Translator: Atec <dr.atec@gmail.com>\n" "Last-Translator: Atec <dr.atec@gmail.com>\n"
"Language: sk\n" "Language: sk\n"
"Language-Team: Slovak <https://hosted.weblate.org/projects/turris/foris-" "Language-Team: Slovak <https://hosted.weblate.org/projects/turris/foris-"
"js/sk/>\n" "js/sk/>\n"
"Plural-Forms: nplurals=3; plural=((n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2);\n" "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n" "Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
@ -35,89 +35,42 @@ msgstr "Nenastala žiadna odozva."
msgid "An unknown API error occurred." msgid "An unknown API error occurred."
msgstr "Nastala neznáma chyba v API." msgstr "Nastala neznáma chyba v API."
#: src/bootstrap/Alert.js:73 src/bootstrap/Modal.js:101 #: src/bootstrap/Alert.js:51 src/bootstrap/Modal.js:98
#: src/common/WiFiSettings/WiFiQRCode.js:89
msgid "Close" msgid "Close"
msgstr "Zatvoriť" msgstr ""
#: src/bootstrap/CopyInput.js:56 #: src/bootstrap/CopyInput.js:57
msgid "Copied!" msgid "Copied!"
msgstr "Skopírované!" msgstr "Skopírované!"
#: src/bootstrap/CopyInput.js:56 #: src/bootstrap/CopyInput.js:57
msgid "Copy" msgid "Copy"
msgstr "Kopírovať" msgstr "Kopírovať"
#: src/common/ActionButtonWithModal/ActionButtonWithModal.js:60 #: src/common/RebootButton.js:27
#, fuzzy msgid "Reboot request failed."
msgid "Action successful." msgstr "Požiadavka na reštart neúspešná."
msgstr "Nastavenia boli úspešne uložené"
#: src/common/ActionButtonWithModal/ActionButtonWithModal.js:65 #: src/common/RebootButton.js:51
msgid "Action failed." msgid "Reboot"
msgstr "" msgstr "Reštartovať"
#: src/common/ActionButtonWithModal/ActionButtonWithModal.js:125 #: src/common/RebootButton.js:66
msgid "Warning!"
msgstr "Výstraha!"
#: src/common/RebootButton.js:68
msgid "Are you sure you want to restart the router?"
msgstr "Naozaj sa má router reštartovať?"
#: src/common/RebootButton.js:71
msgid "Cancel" msgid "Cancel"
msgstr "Zrušiť" msgstr "Zrušiť"
#: src/common/ActionButtonWithModal/ActionButtonWithModal.js:128 #: src/common/RebootButton.js:73
#, fuzzy msgid "Confirm reboot"
msgid "Confirm"
msgstr "Potvrdiť reštart" msgstr "Potvrdiť reštart"
#: src/common/RichTable/RichTableHeader.js:29
msgid "Sort ascending"
msgstr ""
#: src/common/RichTable/RichTableHeader.js:30
msgid "Sort descending"
msgstr ""
#: src/common/RichTable/RichTableHeader.js:31
msgid "Clear sort"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:65
msgid "Pagination navigation bar"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:71
msgid "First page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:77
msgid "Previous page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:83
msgid "Next page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:89
msgid "Last page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:95
msgid "Page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:98
msgid "of"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:106
msgid "Rows per page:"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:109
msgid "Select rows per page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:121
msgid "All"
msgstr ""
#: src/common/WiFiSettings/ResetWiFiSettings.js:39 #: src/common/WiFiSettings/ResetWiFiSettings.js:39
msgid "An error occurred during resetting Wi-Fi settings." msgid "An error occurred during resetting Wi-Fi settings."
msgstr "Pri resete nastavení Wi-Fi nastala chyba." msgstr "Pri resete nastavení Wi-Fi nastala chyba."
@ -146,7 +99,7 @@ msgid "Wi-Fi ${deviceID + 1}"
msgstr "Wi-Fi ${deviceID + 1}" msgstr "Wi-Fi ${deviceID + 1}"
#: src/common/WiFiSettings/WiFiForm.js:132 #: src/common/WiFiSettings/WiFiForm.js:132
#: src/common/WiFiSettings/WiFiGuestForm.js:78 #: src/common/WiFiSettings/WiFiGuestForm.js:81
msgid "Password" msgid "Password"
msgstr "Heslo" msgstr "Heslo"
@ -192,14 +145,15 @@ msgstr "Povoliť Wi-Fi pre hostí"
#: src/common/WiFiSettings/WiFiQRCode.js:43 #: src/common/WiFiSettings/WiFiQRCode.js:43
#: src/common/WiFiSettings/WiFiQRCode.js:44 #: src/common/WiFiSettings/WiFiQRCode.js:44
#, fuzzy
msgid "Show QR code" msgid "Show QR code"
msgstr "Zobraziť QR kód" msgstr "Wi-Fi QR kód"
#: src/common/WiFiSettings/WiFiQRCode.js:70 #: src/common/WiFiSettings/WiFiQRCode.js:70
msgid "Wi-Fi QR Code" msgid "Wi-Fi QR Code"
msgstr "Wi-Fi QR kód" msgstr "Wi-Fi QR kód"
#: src/common/WiFiSettings/WiFiQRCode.js:102 #: src/common/WiFiSettings/WiFiQRCode.js:93
msgid "Download PDF" msgid "Download PDF"
msgstr "Stiahnuť PDF" msgstr "Stiahnuť PDF"
@ -230,7 +184,7 @@ msgstr "Heslo nesmie obsahovať viac ako 63 znakov"
#: src/common/WiFiSettings/constants.js:9 #: src/common/WiFiSettings/constants.js:9
msgid "Disabled" msgid "Disabled"
msgstr "Vypnuté" msgstr "Zakázané"
#: src/common/WiFiSettings/constants.js:10 #: src/common/WiFiSettings/constants.js:10
msgid "802.11n - 20 MHz wide channel" msgid "802.11n - 20 MHz wide channel"
@ -436,15 +390,3 @@ msgstr "Neobsahuje zoznam e-mailov oddelených čiarkami."
#~ " a obnovia sa východiskové hodnoty.\n" #~ " a obnovia sa východiskové hodnoty.\n"
#~ " " #~ " "
#~ msgid "Reboot request failed."
#~ msgstr "Požiadavka na reštart neúspešná."
#~ msgid "Reboot"
#~ msgstr "Reštartovať"
#~ msgid "Warning!"
#~ msgstr "Výstraha!"
#~ msgid "Are you sure you want to restart the router?"
#~ msgstr "Naozaj sa má router reštartovať?"

View File

@ -7,7 +7,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PROJECT VERSION\n" "Project-Id-Version: PROJECT VERSION\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2024-11-13 14:06+0100\n" "POT-Creation-Date: 2024-08-23 14:02+0200\n"
"PO-Revision-Date: 2023-09-22 21:00+0000\n" "PO-Revision-Date: 2023-09-22 21:00+0000\n"
"Last-Translator: Kristoffer Grundström " "Last-Translator: Kristoffer Grundström "
"<swedishsailfishosuser@tutanota.com>\n" "<swedishsailfishosuser@tutanota.com>\n"
@ -36,88 +36,42 @@ msgstr "Inget svar togs emot."
msgid "An unknown API error occurred." msgid "An unknown API error occurred."
msgstr "Ett okänt API-fel inträffade." msgstr "Ett okänt API-fel inträffade."
#: src/bootstrap/Alert.js:73 src/bootstrap/Modal.js:101 #: src/bootstrap/Alert.js:51 src/bootstrap/Modal.js:98
#: src/common/WiFiSettings/WiFiQRCode.js:89
msgid "Close" msgid "Close"
msgstr "" msgstr ""
#: src/bootstrap/CopyInput.js:56 #: src/bootstrap/CopyInput.js:57
msgid "Copied!" msgid "Copied!"
msgstr "Kopierades!" msgstr "Kopierades!"
#: src/bootstrap/CopyInput.js:56 #: src/bootstrap/CopyInput.js:57
msgid "Copy" msgid "Copy"
msgstr "Kopiera" msgstr "Kopiera"
#: src/common/ActionButtonWithModal/ActionButtonWithModal.js:60 #: src/common/RebootButton.js:27
msgid "Action successful." msgid "Reboot request failed."
msgstr "" msgstr "Förfrågning för omstart misslyckades."
#: src/common/ActionButtonWithModal/ActionButtonWithModal.js:65 #: src/common/RebootButton.js:51
msgid "Action failed." msgid "Reboot"
msgstr "" msgstr "Starta om"
#: src/common/ActionButtonWithModal/ActionButtonWithModal.js:125 #: src/common/RebootButton.js:66
msgid "Warning!"
msgstr "Varning!"
#: src/common/RebootButton.js:68
msgid "Are you sure you want to restart the router?"
msgstr "Är du säker på att du vill starta om routern?"
#: src/common/RebootButton.js:71
msgid "Cancel" msgid "Cancel"
msgstr "Avbryt" msgstr "Avbryt"
#: src/common/ActionButtonWithModal/ActionButtonWithModal.js:128 #: src/common/RebootButton.js:73
#, fuzzy msgid "Confirm reboot"
msgid "Confirm"
msgstr "Bekräfta omstart" msgstr "Bekräfta omstart"
#: src/common/RichTable/RichTableHeader.js:29
msgid "Sort ascending"
msgstr ""
#: src/common/RichTable/RichTableHeader.js:30
msgid "Sort descending"
msgstr ""
#: src/common/RichTable/RichTableHeader.js:31
msgid "Clear sort"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:65
msgid "Pagination navigation bar"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:71
msgid "First page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:77
msgid "Previous page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:83
msgid "Next page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:89
msgid "Last page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:95
msgid "Page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:98
msgid "of"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:106
msgid "Rows per page:"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:109
msgid "Select rows per page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:121
msgid "All"
msgstr ""
#: src/common/WiFiSettings/ResetWiFiSettings.js:39 #: src/common/WiFiSettings/ResetWiFiSettings.js:39
msgid "An error occurred during resetting Wi-Fi settings." msgid "An error occurred during resetting Wi-Fi settings."
msgstr "Ett fel inträffade under återställningen av Wi-Fi-inställningarna." msgstr "Ett fel inträffade under återställningen av Wi-Fi-inställningarna."
@ -146,7 +100,7 @@ msgid "Wi-Fi ${deviceID + 1}"
msgstr "Wi-Fi ${deviceID + 1}" msgstr "Wi-Fi ${deviceID + 1}"
#: src/common/WiFiSettings/WiFiForm.js:132 #: src/common/WiFiSettings/WiFiForm.js:132
#: src/common/WiFiSettings/WiFiGuestForm.js:78 #: src/common/WiFiSettings/WiFiGuestForm.js:81
msgid "Password" msgid "Password"
msgstr "Lösenord" msgstr "Lösenord"
@ -200,7 +154,7 @@ msgstr "QR-kod för Wi-Fi"
msgid "Wi-Fi QR Code" msgid "Wi-Fi QR Code"
msgstr "QR-kod för Wi-Fi" msgstr "QR-kod för Wi-Fi"
#: src/common/WiFiSettings/WiFiQRCode.js:102 #: src/common/WiFiSettings/WiFiQRCode.js:93
msgid "Download PDF" msgid "Download PDF"
msgstr "Ladda ner PDF" msgstr "Ladda ner PDF"
@ -486,15 +440,3 @@ msgstr ""
#~ "channel." #~ "channel."
#~ msgstr "" #~ msgstr ""
#~ msgid "Reboot request failed."
#~ msgstr "Förfrågning för omstart misslyckades."
#~ msgid "Reboot"
#~ msgstr "Starta om"
#~ msgid "Warning!"
#~ msgstr "Varning!"
#~ msgid "Are you sure you want to restart the router?"
#~ msgstr "Är du säker på att du vill starta om routern?"