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

Compare commits

...

73 Commits

Author SHA1 Message Date
1009169315 Bump v5.0.3 2020-09-23 15:07:56 +02:00
661f92bbcf Fix infinity loop caused by WebSockets 2020-09-14 06:38:23 +02:00
12b862c568 Bump v5.0.1 2020-07-21 11:59:13 +02:00
54f9f984f1 NPM audit fix & update of packages 2020-07-21 11:59:12 +02:00
5dbc58d44b Merge branch 'new-channel-bandwidth' into 'dev'
New channel bandwidth & Natural Sort of options

Closes reforis#200

See merge request turris/reforis/foris-js!118
2020-07-17 16:27:27 +02:00
e7f9fbca96 Merge branch 'dev' into 'new-channel-bandwidth'
# Conflicts:
#   src/common/WiFiSettings/WiFiForm.js
2020-07-17 16:24:43 +02:00
8d40dbb841 Merge branch 'additional-wifi-module-fix' into 'dev'
Fix Wi-Fi Form bug with additional Wi-Fi modules

Closes reforis#204

See merge request turris/reforis/foris-js!117
2020-07-17 14:38:24 +02:00
cea8aa0c12 Fix a Wi-Fi Form bug with additional Wi-Fi modules 2020-07-17 14:33:35 +02:00
16a7a6c52d Update Snapshots 2020-07-17 14:19:56 +02:00
597b6fcf4c Add Natural sort order for list of options 2020-07-17 14:19:56 +02:00
5eb6b90ed4 Add 802.11ac 160 MHz wide channel to constants 2020-07-17 13:38:30 +02:00
48c323c1a1 Fix Wi-Fi Form bug with additional Wi-Fi modules 2020-07-17 12:26:46 +02:00
ae8baddbdd Merge branch 'one-wifi-module-fix' into 'dev'
Fix form submission button with one Wi-Fi module.

Closes reforis#192

See merge request turris/reforis/foris-js!115
2020-07-13 19:38:44 +02:00
67e4abe4d1 Add test suites for a Wi-Fi form submission 2020-07-07 11:35:58 +02:00
57f1ccced8 Fix form submission button for one or more Wi-Fi modules. 2020-06-29 13:24:42 +02:00
1e95bff7ff Merge branch 'dev' into 'master'
Dev

See merge request turris/reforis/foris-js!114
2020-06-04 22:56:37 +02:00
0f253ecc19 Merge branch 'docs-update' into 'dev'
Docs update

See merge request turris/reforis/foris-js!113
2020-06-04 22:52:24 +02:00
a5e096dc00 Fix and update docs. 2020-06-04 22:52:24 +02:00
182cbe698f Merge branch 'dev' into 'master'
Bump v5.0.0.

See merge request turris/reforis/foris-js!111
2020-05-07 17:17:47 +02:00
982eb371ad Bump v5.0.0.
I've realized that it should be major update due to broken API.
2020-05-07 16:55:55 +02:00
2786f856f7 Merge branch 'dev' into 'master'
Release v4.5.1.

See merge request turris/reforis/foris-js!110
2020-05-07 16:47:30 +02:00
48b080dc26 Merge branch 'release-4.5.1' into 'dev'
Release v4.5.1.

See merge request turris/reforis/foris-js!109
2020-05-07 16:40:27 +02:00
71beeb46f1 Bump v4.5.1.
* Add initial data to ForisForm children.
 * Update .pot file.
2020-05-07 16:34:33 +02:00
060a0489e1 Merge branch 'translations' into 'dev'
Update translations (.pot).

See merge request turris/reforis/foris-js!108
2020-05-07 16:31:44 +02:00
ae49b246cd Update translations (.pot). 2020-05-07 16:13:03 +02:00
27c37eb74b Merge branch 'add-inital-form-data-to-children-of-foris-form' into 'dev'
Add initial form data to children of the ForisForm.

See merge request turris/reforis/foris-js!107
2020-05-07 16:03:51 +02:00
cd708fa294 Add initial form data to children of the ForisForm. 2020-05-07 16:00:02 +02:00
8ec0392852 Merge branch 'dev' into 'master'
Dev

See merge request turris/reforis/foris-js!106
2020-03-26 16:29:27 +01:00
27a5e62d9a Merge branch 'fix-pdfmake' into 'dev'
Fix pdfmake.

See merge request turris/reforis/foris-js!105
2020-03-25 21:34:38 +01:00
aeaad4aa72 Bump v4.5.0. 2020-03-25 21:26:59 +01:00
256a000d61 NPM update. 2020-03-25 21:17:12 +01:00
c78ed9a5d0 NPM audit fix. 2020-03-25 21:17:12 +01:00
bded10211a Use pdfmake from globals. 2020-03-25 21:17:12 +01:00
25ac6cf1e9 Remove pdfmake. 2020-03-25 21:17:12 +01:00
9a2547a6c2 Merge branch 'dev' into 'master'
Release v4.4.0.

See merge request turris/reforis/foris-js!104
2020-03-13 22:16:42 +01:00
7968c7af4a Merge branch 'fix-hostname-validation-regex' into 'dev'
Fix hostname validation regex

See merge request turris/reforis/foris-js!103
2020-03-13 21:41:49 +01:00
4b94c470c3 Bump v4.4.0. 2020-03-13 21:37:21 +01:00
e1b5a25ddd Update domain vadlidation. 2020-03-13 21:37:21 +01:00
95af86c776 NPM audit fix. 2020-03-13 21:37:21 +01:00
02b5583712 Move vadliadtions and forisUrls to utils. 2020-03-13 21:37:21 +01:00
2f4d757a1a Merge branch 'dev' into 'master'
Release v4.3.1.

See merge request turris/reforis/foris-js!102
2020-03-06 14:10:21 +01:00
3c7a67783f Merge branch 'add-logout-url' into 'dev'
Add logout URL.

See merge request turris/reforis/foris-js!101
2020-03-06 14:06:34 +01:00
4500e85a40 Bump v4.3.1. 2020-03-06 14:01:40 +01:00
ce955095fd Add logout link. 2020-03-06 14:00:18 +01:00
00b861531e Merge branch 'dev' into 'master'
Dev

See merge request turris/reforis/foris-js!100
2020-02-26 17:02:47 +01:00
fad5b97a2e Merge branch 'release-4.3.0' into 'dev'
Release 4.3.0

See merge request turris/reforis/foris-js!99
2020-02-26 16:57:26 +01:00
aa639596d4 Bump v4.3.0. 2020-02-26 16:52:53 +01:00
1ee41f4f14 Merge branch 'radioset-element-children' into 'dev'
Allow RadioSet accept elements as children.

See merge request turris/reforis/foris-js!98
2020-02-26 15:24:28 +01:00
bf8c2d28bf Allow RadioSet accept elements as children. 2020-02-26 15:21:43 +01:00
dbb840d51c Merge branch 'scrollable-modal' into 'dev'
Add option to make modal scrollable.

See merge request turris/reforis/foris-js!97
2020-02-26 11:47:50 +01:00
ba772be869 Add option to make modal scrollable. 2020-02-26 11:44:52 +01:00
70da1c3c00 Merge branch 'dev' into 'master'
Release 4.2.0.

See merge request turris/reforis/foris-js!96
2020-02-26 11:37:23 +01:00
8e68bbc91f Merge branch 'release-v4.2.0' into 'dev'
Bump v4.2.0.

See merge request turris/reforis/foris-js!95
2020-02-21 16:33:31 +01:00
0af8c4aa28 Bump v4.2.0. 2020-02-21 16:06:21 +01:00
a9114caf9e Merge branch 'translations' into 'dev'
Translations

See merge request turris/reforis/foris-js!94
2020-02-21 11:07:13 +01:00
3c81264024 Create and update translation messages. 2020-02-20 17:29:11 +01:00
0330b39f2e Merge remote-tracking branch 'weblate/master' into translations 2020-02-20 17:26:34 +01:00
a7dcced08b Add weblate config file. 2020-02-20 17:19:07 +01:00
c453a35763 Merge branch 'dev' into 'master'
Release 4.1.0

See merge request turris/reforis/foris-js!93
2020-02-20 16:07:50 +01:00
d97248c6ec Merge branch 'datetime-utils' into 'dev'
Added date and time utilities.

See merge request turris/reforis/foris-js!92
2020-02-20 14:30:28 +01:00
9fbc4e8383 Added date and time utilities. 2020-02-20 14:30:28 +01:00
57bebc92c7 Merge branch 'dev' into 'master'
Release 4.0.0

See merge request turris/reforis/foris-js!91
2020-02-20 11:53:43 +01:00
5939e9dd0e Merge branch 'version-4.0.0' into 'dev'
Changed version to 4.0.0.

See merge request turris/reforis/foris-js!90

[skip ci]
2020-02-20 10:40:24 +01:00
0665869c30 Changed version to 4.0.0. 2020-02-19 10:34:47 +01:00
199b27d63a Merge branch '12-api-error' into 'dev'
Rethrow unhandled error from API hooks.

Closes #12

See merge request turris/reforis/foris-js!89
2020-02-18 17:37:34 +01:00
2b28434712 Rethrow unhandled error from API hooks. 2020-02-18 14:32:59 +01:00
55dbf8f8bb Translated using Weblate (German)
Currently translated at 66.7% (12 of 18 strings)

Translation: Turris/Foris JS
Translate-URL: https://hosted.weblate.org/projects/turris/foris-js/de/
2020-02-04 19:50:20 +01:00
3dee532ea2 Translated using Weblate (Norwegian Bokmål)
Currently translated at 77.8% (14 of 18 strings)

Translation: Turris/Foris JS
Translate-URL: https://hosted.weblate.org/projects/turris/foris-js/nb_NO/
2020-01-21 14:52:31 +01:00
e62accc4b3 Translated using Weblate (French)
Currently translated at 100.0% (18 of 18 strings)

Translation: Turris/Foris JS
Translate-URL: https://hosted.weblate.org/projects/turris/foris-js/fr/
2020-01-11 22:21:24 +01:00
a318f12352 Translated using Weblate (French)
Currently translated at 38.9% (7 of 18 strings)

Translation: Turris/Foris JS
Translate-URL: https://hosted.weblate.org/projects/turris/foris-js/fr/
2019-12-28 15:55:00 +01:00
cffa0a2b80 Translated using Weblate (French)
Currently translated at 38.9% (7 of 18 strings)

Translation: Turris/Foris JS
Translate-URL: https://hosted.weblate.org/projects/turris/foris-js/fr/
2019-11-25 17:04:59 +01:00
7579fc3b8c Translated using Weblate (Swedish)
Currently translated at 11.1% (2 of 18 strings)

Translation: Turris/Foris JS
Translate-URL: https://hosted.weblate.org/projects/turris/foris-js/sv/
2019-11-23 18:04:52 +01:00
6601cd55e0 Translated using Weblate (Russian)
Currently translated at 100.0% (18 of 18 strings)

Translation: Turris/Foris JS
Translate-URL: https://hosted.weblate.org/projects/turris/foris-js/ru/
2019-11-23 18:04:51 +01:00
60 changed files with 8970 additions and 3527 deletions

3
.weblate Normal file
View File

@ -0,0 +1,3 @@
[weblate]
url = https://hosted.weblate.org/api/
translation = turris/foris-js

View File

@ -33,3 +33,12 @@ externals: {
} }
``` ```
### Docs
Build or watch docs to get more info about library:
```bash
make docs
```
or
```bash
make docs-watch
```

22
docs/development.md Normal file
View File

@ -0,0 +1,22 @@
Sooner or later you will face with situation when you want/need to make some changes in the library.
Then the most important tool for you it's [`npm link`](https://docs.npmjs.com/cli/link).
Please, notice that it will not work if you link library just from root of the repo. It happens due to location of
sources `./src`. You need to pack library first `make pack` and then link it from `./dist` directory.
Yeah it's not such comfortable solution for development. But it can fixed by writing small script similar as `make pack`
but with linking every file and directory from `./src` to the some directory and linking then from it. Notice that you
need to link `package.json` and `package-lock.json` as well.
So step by step:
```bash
make pack;
cd dist;
npm link;
cd $project_dir/js # Navigate to JS directory of the project where you want to link the library
npm link foris
```
And that's it ;)

View File

@ -1 +1,4 @@
Foris JS library is set of componets and utils for Foris JS application and plugins. Foris JS library is set of components and utils for Foris JS application and plugins.
Please notice that all of these components or utils are used in reForis and plugins. If you like to study by example I would
recommend to full-text search these repos.

11557
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -1,6 +1,6 @@
{ {
"name": "foris", "name": "foris",
"version": "3.4.0", "version": "5.0.3",
"description": "Set of components and utils for Foris and its plugins.", "description": "Set of components and utils for Foris and its plugins.",
"author": "CZ.NIC, z.s.p.o.", "author": "CZ.NIC, z.s.p.o.",
"repository": { "repository": {
@ -14,10 +14,9 @@
"license": "GPL-3.0", "license": "GPL-3.0",
"main": "./src/index.js", "main": "./src/index.js",
"dependencies": { "dependencies": {
"axios": "^0.19.1", "axios": "^0.19.2",
"immutability-helper": "3.0.1", "immutability-helper": "3.0.1",
"moment": "^2.24.0", "moment": "^2.24.0",
"pdfmake": "^0.1.63",
"qrcode.react": "^0.9.3", "qrcode.react": "^0.9.3",
"react-datetime": "^2.16.3", "react-datetime": "^2.16.3",
"react-uid": "^2.2.0" "react-uid": "^2.2.0"
@ -30,26 +29,31 @@
"react-router-dom": "^5.1.2" "react-router-dom": "^5.1.2"
}, },
"devDependencies": { "devDependencies": {
"@babel/cli": "^7.7.7", "@babel/cli": "^7.8.4",
"@babel/core": "^7.7.7", "@babel/core": "^7.9.0",
"@babel/plugin-transform-runtime": "^7.7.6", "@babel/plugin-transform-runtime": "^7.9.0",
"@babel/preset-env": "^7.7.7", "@babel/preset-env": "^7.9.0",
"@babel/preset-react": "^7.7.4", "@babel/preset-react": "^7.9.4",
"@fortawesome/fontawesome-free": "^5.12.0", "@fortawesome/fontawesome-free": "^5.13.0",
"@testing-library/react": "^8.0.9", "@testing-library/react": "^8.0.9",
"babel-loader": "^8.0.6", "babel-loader": "^8.1.0",
"babel-polyfill": "^6.26.0", "babel-polyfill": "^6.26.0",
"bootstrap": "^4.5.0",
"css-loader": "^3.5.3",
"eslint": "^6.8.0", "eslint": "^6.8.0",
"eslint-config-reforis": "^1.0.0", "eslint-config-reforis": "^1.0.0",
"jest": "^24.9.0", "file-loader": "^6.0.0",
"jest": "^25.2.0",
"jest-mock-axios": "^3.2.0", "jest-mock-axios": "^3.2.0",
"moment-timezone": "^0.5.27", "moment-timezone": "^0.5.28",
"prop-types": "15.7.2", "prop-types": "15.7.2",
"react": "16.9.0", "react": "16.9.0",
"react-dom": "16.9.0", "react-dom": "16.9.0",
"react-router-dom": "^5.1.2", "react-router-dom": "^5.1.2",
"react-styleguidist": "^10.4.2", "react-styleguidist": "^10.6.2",
"snapshot-diff": "^0.5.1" "snapshot-diff": "^0.7.0",
"style-loader": "^1.2.1",
"webpack": "^4.43.0"
}, },
"scripts": { "scripts": {
"lint": "eslint src", "lint": "eslint src",

View File

@ -0,0 +1,4 @@
It provides alert context to children. `AlertContext` allows using `useAlert` in components.
Notice that `<div id="alert-container"/>` should be presented in HTML doc to get it work (In reForis it's already done
with base Jinja2 templates).

View File

@ -9,7 +9,7 @@ import {
useCallback, useEffect, useReducer, useState, useCallback, useEffect, useReducer, useState,
} from "react"; } from "react";
import { ForisURLs } from "../forisUrls"; import { ForisURLs } from "../utils/forisUrls";
import { import {
API_ACTIONS, API_METHODS, API_STATE, getErrorPayload, HEADERS, TIMEOUT, API_ACTIONS, API_METHODS, API_STATE, getErrorPayload, HEADERS, TIMEOUT,
} from "./utils"; } from "./utils";
@ -53,10 +53,11 @@ function createAPIHook(method) {
payload: result.data, payload: result.data,
}); });
} catch (error) { } catch (error) {
const errorPayload = getErrorPayload(error);
dispatch({ dispatch({
type: API_ACTIONS.FAILURE, type: API_ACTIONS.FAILURE,
status: error.response && error.response.status, status: error.response && error.response.status,
payload: getErrorPayload(error), payload: errorPayload,
}); });
} }
}, [urlRoot, contentType]); }, [urlRoot, contentType]);
@ -80,6 +81,12 @@ function APIReducer(state, action) {
if (action.status === 403) { if (action.status === 403) {
window.location.assign(ForisURLs.login); window.location.assign(ForisURLs.login);
} }
// Not an API error - should be rethrown.
if (action.payload && action.payload.stack && action.payload.message) {
throw (action.payload);
}
return { return {
state: API_STATE.ERROR, state: API_STATE.ERROR,
data: action.payload, data: action.payload,

View File

@ -65,9 +65,8 @@ export function getErrorPayload(error) {
if (error.request) { if (error.request) {
return _("No response received."); return _("No response received.");
} }
/* eslint no-console: "off" */ // Return original error because it's not directly related to API request/response.
console.error(error); return error;
return _("An unknown error occurred. Check the console for more info.");
} }
export function getJSONErrorMessage(error) { export function getJSONErrorMessage(error) {

View File

@ -1,4 +1,5 @@
Bootstrap alert component. Bootstrap alert component.
```jsx ```jsx
import {useState} from 'react'; import {useState} from 'react';
@ -7,14 +8,14 @@ function AlertExample(){
if (alert) if (alert)
return <Alert return <Alert
type='warning' type='warning'
message='Some warning out there!'
onDismiss={()=>setAlert(false)} onDismiss={()=>setAlert(false)}
/>; >
Some warning out there!
</Alert>;
return <button return <button
className='btn btn-secondary' className='btn btn-secondary'
onClick={()=>setAlert(true)} onClick={()=>setAlert(true)}
>Show alert again</button>; >Show alert again</button>;
}; };
<AlertExample/> <AlertExample/>
``` ```

View File

@ -19,6 +19,8 @@ FileInput.propTypes = {
helpText: PropTypes.string, helpText: PropTypes.string,
/** Email value. */ /** Email value. */
value: PropTypes.string, value: PropTypes.string,
/** Allow selecting multiple files. */
multiple: PropTypes.bool,
}; };
export function FileInput({ ...props }) { export function FileInput({ ...props }) {

View File

@ -3,13 +3,39 @@ Bootstrap component for file input. Includes label and has predefined sizes and
All additional `props` are passed to the `<input type="file">` HTML component. All additional `props` are passed to the `<input type="file">` HTML component.
```js ```js
import {useState} from 'react'; import { useState } from 'react';
const [files, setFiles] = useState([]); const [files, setFiles] = useState([]);
<FileInput // Note that files is not an array but FileList.
files={files} const label = files.length === 1 ? files[0].name : "Choose file";
label="Some file"
helpText="Will be uploaded" <form className="col">
onChange={event =>setFiles(event.target.files)} <FileInput
/> files={files}
label={label}
helpText="Will be uploaded"
onChange={event=>setFiles(event.target.files)}
/>
</form>
```
### FileInput with multiple files
```js
import { useState } from 'react';
const [files, setFiles] = useState([]);
// Note that files is not an array but FileList.
const label = files.length > 0 ? Array.from(files).map(file=>file.name).join(", ") : "Choose files";
<form className="col">
<FileInput
files={files}
label={label}
helpText="Will be uploaded"
onChange={event=>setFiles(event.target.files)}
multiple
/>
</form>
``` ```

View File

@ -17,6 +17,7 @@ Modal.propTypes = {
shown: PropTypes.bool.isRequired, shown: PropTypes.bool.isRequired,
/** Callback to manage modal visibility */ /** Callback to manage modal visibility */
setShown: PropTypes.func.isRequired, setShown: PropTypes.func.isRequired,
scrollable: PropTypes.bool,
/** Modal content use following: `ModalHeader`, `ModalBody`, `ModalFooter` */ /** Modal content use following: `ModalHeader`, `ModalBody`, `ModalFooter` */
children: PropTypes.oneOfType([ children: PropTypes.oneOfType([
@ -25,7 +26,9 @@ Modal.propTypes = {
]).isRequired, ]).isRequired,
}; };
export function Modal({ shown, setShown, children }) { export function Modal({
shown, setShown, scrollable, children,
}) {
const dialogRef = useRef(); const dialogRef = useRef();
useClickOutside(dialogRef, () => setShown(false)); useClickOutside(dialogRef, () => setShown(false));
@ -33,7 +36,11 @@ export function Modal({ shown, setShown, children }) {
return ( return (
<Portal containerId="modal-container"> <Portal containerId="modal-container">
<div className={`modal fade ${shown ? "show" : ""}`} role="dialog"> <div className={`modal fade ${shown ? "show" : ""}`} role="dialog">
<div ref={dialogRef} className="modal-dialog modal-dialog-centered" role="document"> <div
ref={dialogRef}
className={`modal-dialog modal-dialog-centered${scrollable ? " modal-dialog-scrollable" : ""}`}
role="document"
>
<div className="modal-content"> <div className="modal-content">
{children} {children}
</div> </div>

View File

@ -6,8 +6,6 @@ it's required to have an element `<div id={"modal-container"}/>` somewhere on th
<div id="modal-container"/> <div id="modal-container"/>
``` ```
I have no idea why example doesn't work here but you can investigate HTML code and Foris project.
```js ```js
import {ModalHeader, ModalBody, ModalFooter} from './Modal'; import {ModalHeader, ModalBody, ModalFooter} from './Modal';

View File

@ -17,7 +17,12 @@ RadioSet.propTypes = {
/** Choices . */ /** Choices . */
choices: PropTypes.arrayOf(PropTypes.shape({ choices: PropTypes.arrayOf(PropTypes.shape({
/** Choice lable . */ /** Choice lable . */
label: PropTypes.string.isRequired, label: PropTypes.oneOfType([
PropTypes.string,
PropTypes.element,
PropTypes.node,
PropTypes.arrayOf(PropTypes.node),
]).isRequired,
/** Choice value . */ /** Choice value . */
value: PropTypes.oneOfType([PropTypes.string, PropTypes.number]).isRequired, value: PropTypes.oneOfType([PropTypes.string, PropTypes.number]).isRequired,
})).isRequired, })).isRequired,
@ -58,7 +63,12 @@ export function RadioSet({
} }
Radio.propTypes = { Radio.propTypes = {
label: PropTypes.string.isRequired, label: PropTypes.oneOfType([
PropTypes.string,
PropTypes.element,
PropTypes.node,
PropTypes.arrayOf(PropTypes.node),
]).isRequired,
id: PropTypes.string.isRequired, id: PropTypes.string.isRequired,
helpText: PropTypes.string, helpText: PropTypes.string,
}; };

View File

@ -28,10 +28,11 @@ export function Select({
}) { }) {
const uid = useUID(); const uid = useUID();
const options = Object.keys(choices).map( const options = Object.keys(choices).sort(
(a, b) => a - b || a.toString().localeCompare(b.toString()),
).map(
(key) => <option key={key} value={key}>{choices[key]}</option>, (key) => <option key={key} value={key}>{choices[key]}</option>,
); );
return ( return (
<div className="form-group"> <div className="form-group">
<label htmlFor={uid}>{label}</label> <label htmlFor={uid}>{label}</label>

View File

@ -10,7 +10,7 @@ import PropTypes from "prop-types";
import { useAPIPost } from "../api/hooks"; import { useAPIPost } from "../api/hooks";
import { API_STATE } from "../api/utils"; import { API_STATE } from "../api/utils";
import { ForisURLs } from "../forisUrls"; import { ForisURLs } from "../utils/forisUrls";
import { Button } from "../bootstrap/Button"; import { Button } from "../bootstrap/Button";
import { import {

View File

@ -31,22 +31,22 @@ WiFiForm.propTypes = {
WiFiForm.defaultProps = { WiFiForm.defaultProps = {
formData: { devices: [] }, formData: { devices: [] },
setFormValue: () => {}, setFormValue: () => { },
hasGuestNetwork: true, hasGuestNetwork: true,
}; };
export default function WiFiForm({ export default function WiFiForm({
formData, formErrors, setFormValue, hasGuestNetwork, ...props formData, formErrors, setFormValue, hasGuestNetwork, disabled,
}) { }) {
return formData.devices.map((device) => ( return formData.devices.map((device, index) => (
<DeviceForm <DeviceForm
key={device.id} key={device.id}
formData={device} formData={device}
formErrors={(formErrors || [])[device.id]} deviceIndex={index}
formErrors={(formErrors || [])[index]}
setFormValue={setFormValue} setFormValue={setFormValue}
hasGuestNetwork={hasGuestNetwork} hasGuestNetwork={hasGuestNetwork}
disabled={disabled}
{...props}
/> />
)); ));
} }
@ -66,6 +66,7 @@ DeviceForm.propTypes = {
formErrors: PropTypes.object.isRequired, formErrors: PropTypes.object.isRequired,
setFormValue: PropTypes.func.isRequired, setFormValue: PropTypes.func.isRequired,
hasGuestNetwork: PropTypes.bool, hasGuestNetwork: PropTypes.bool,
deviceIndex: PropTypes.number,
}; };
DeviceForm.defaultProps = { DeviceForm.defaultProps = {
@ -74,7 +75,7 @@ DeviceForm.defaultProps = {
}; };
function DeviceForm({ function DeviceForm({
formData, formErrors, setFormValue, hasGuestNetwork, ...props formData, formErrors, setFormValue, hasGuestNetwork, deviceIndex, ...props
}) { }) {
const deviceID = formData.id; const deviceID = formData.id;
return ( return (
@ -85,7 +86,7 @@ function DeviceForm({
checked={formData.enabled} checked={formData.enabled}
onChange={setFormValue( onChange={setFormValue(
(value) => ({ devices: { [deviceID]: { enabled: { $set: value } } } }), (value) => ({ devices: { [deviceIndex]: { enabled: { $set: value } } } }),
)} )}
{...props} {...props}
@ -99,7 +100,13 @@ function DeviceForm({
error={formErrors.SSID || null} error={formErrors.SSID || null}
required required
onChange={setFormValue( onChange={setFormValue(
(value) => ({ devices: { [deviceID]: { SSID: { $set: value } } } }), (value) => ({
devices: {
[deviceIndex]: {
SSID: { $set: value },
},
},
}),
)} )}
{...props} {...props}
@ -122,7 +129,7 @@ function DeviceForm({
onChange={setFormValue( onChange={setFormValue(
(value) => ( (value) => (
{ devices: { [deviceID]: { password: { $set: value } } } } { devices: { [deviceIndex]: { password: { $set: value } } } }
), ),
)} )}
@ -136,7 +143,7 @@ function DeviceForm({
onChange={setFormValue( onChange={setFormValue(
(value) => ( (value) => (
{ devices: { [deviceID]: { hidden: { $set: value } } } } { devices: { [deviceIndex]: { hidden: { $set: value } } } }
), ),
)} )}
@ -153,7 +160,7 @@ function DeviceForm({
onChange={setFormValue( onChange={setFormValue(
(value) => ({ (value) => ({
devices: { devices: {
[deviceID]: { [deviceIndex]: {
hwmode: { $set: value }, hwmode: { $set: value },
channel: { $set: "0" }, channel: { $set: "0" },
}, },
@ -172,7 +179,7 @@ function DeviceForm({
onChange={setFormValue( onChange={setFormValue(
(value) => ( (value) => (
{ devices: { [deviceID]: { htmode: { $set: value } } } } { devices: { [deviceIndex]: { htmode: { $set: value } } } }
), ),
)} )}
@ -186,7 +193,7 @@ function DeviceForm({
onChange={setFormValue( onChange={setFormValue(
(value) => ( (value) => (
{ devices: { [deviceID]: { channel: { $set: value } } } } { devices: { [deviceIndex]: { channel: { $set: value } } } }
), ),
)} )}
@ -195,7 +202,7 @@ function DeviceForm({
{hasGuestNetwork && ( {hasGuestNetwork && (
<WifiGuestForm <WifiGuestForm
formData={{ id: deviceID, ...formData.guest_wifi }} formData={{ id: deviceIndex, ...formData.guest_wifi }}
formErrors={formErrors.guest_wifi || {}} formErrors={formErrors.guest_wifi || {}}
setFormValue={setFormValue} setFormValue={setFormValue}

View File

@ -9,7 +9,7 @@ import React, { useState } from "react";
import QRCode from "qrcode.react"; import QRCode from "qrcode.react";
import PropTypes from "prop-types"; import PropTypes from "prop-types";
import { ForisURLs } from "../../forisUrls"; import { ForisURLs } from "../../utils/forisUrls";
import { Button } from "../../bootstrap/Button"; import { Button } from "../../bootstrap/Button";
import { import {
Modal, ModalBody, ModalFooter, ModalHeader, Modal, ModalBody, ModalFooter, ModalHeader,

View File

@ -64,7 +64,7 @@ function prepDataToSubmit(formData) {
return formData; return formData;
} }
function validator(formData) { export function validator(formData) {
const formErrors = formData.devices.map( const formErrors = formData.devices.map(
(device) => { (device) => {
if (!device.enabled) return {}; if (!device.enabled) return {};
@ -89,5 +89,5 @@ function validator(formData) {
return errors; return errors;
}, },
); );
return JSON.stringify(formErrors) === "[{},{}]" ? null : formErrors; return JSON.stringify(formErrors).match(/\[[{},?]+\]/) ? null : formErrors;
} }

View File

@ -13,8 +13,8 @@ import { fireEvent, render, wait } from "customTestRender";
import { WebSockets } from "webSockets/WebSockets"; import { WebSockets } from "webSockets/WebSockets";
import { mockJSONError } from "testUtils/network"; import { mockJSONError } from "testUtils/network";
import { wifiSettingsFixture } from "./__fixtures__/wifiSettings"; import { wifiSettingsFixture, oneDevice, twoDevices, threeDevices } from "./__fixtures__/wifiSettings";
import { WiFiSettings } from "../WiFiSettings"; import { WiFiSettings, validator } from "../WiFiSettings";
describe("<WiFiSettings/>", () => { describe("<WiFiSettings/>", () => {
let firstRender; let firstRender;
@ -159,4 +159,18 @@ describe("<WiFiSettings/>", () => {
}; };
expect(mockAxios.post).toHaveBeenCalledWith(endpoint, data, expect.anything()); expect(mockAxios.post).toHaveBeenCalledWith(endpoint, data, expect.anything());
}); });
it("Validator function using regex for one device", () => {
expect(validator(oneDevice)).toEqual(null);
});
it("Validator function using regex for two devices", () => {
const twoDevicesFormErrors = [{SSID: "SSID can't be empty"}, {}];
expect(validator(twoDevices)).toEqual(twoDevicesFormErrors);
});
it("Validator function using regex for three devices", () => {
const threeDevicesFormErrors = [{}, {}, {password: "Password must contain at least 8 symbols"}];
expect(validator(threeDevices)).toEqual(threeDevicesFormErrors);
});
}); });

View File

@ -316,3 +316,85 @@ export function wifiSettingsFixture() {
], ],
}; };
} }
const oneDevice = {
devices: [
{
SSID: "Turris1",
channel: 60,
enabled: true,
guest_wifi: { enabled: false },
hidden: false,
htmode: "HT40",
hwmode: "11a",
id: 0,
password: "TestPass"
}
]
};
const twoDevices = {
devices: [
{
SSID: "",
channel: 60,
enabled: true,
guest_wifi: { enabled: false },
hidden: false,
htmode: "HT40",
hwmode: "11a",
id: 0,
password: "TestPass"
},
{
SSID: "Turris2",
channel: 60,
enabled: true,
guest_wifi: { enabled: false },
hidden: false,
htmode: "HT40",
hwmode: "11a",
id: 0,
password: "TestPass"
}
]
};
const threeDevices = {
devices: [
{
SSID: "Turris1",
channel: 60,
enabled: true,
guest_wifi: { enabled: false },
hidden: false,
htmode: "HT40",
hwmode: "11a",
id: 0,
password: "TestPass"
},
{
SSID: "Turris2",
channel: 60,
enabled: false,
guest_wifi: { enabled: false },
hidden: false,
htmode: "HT40",
hwmode: "11a",
id: 0,
password: "TestPass"
},
{
SSID: "Turris3",
channel: 60,
enabled: true,
guest_wifi: { enabled: false },
hidden: false,
htmode: "HT40",
hwmode: "11a",
id: 0,
password: ""
}
]
};
export {oneDevice, twoDevices, threeDevices};

View File

@ -617,11 +617,6 @@ exports[`<WiFiSettings/> Snapshot one module enabled. 1`] = `
+ id=\\"8\\" + id=\\"8\\"
+ > + >
+ <option + <option
+ value=\\"NOHT\\"
+ >
+ Disabled
+ </option>
+ <option
+ value=\\"HT20\\" + value=\\"HT20\\"
+ > + >
+ 802.11n - 20 MHz wide channel + 802.11n - 20 MHz wide channel
@ -632,6 +627,11 @@ exports[`<WiFiSettings/> Snapshot one module enabled. 1`] = `
+ 802.11n - 40 MHz wide channel + 802.11n - 40 MHz wide channel
+ </option> + </option>
+ <option + <option
+ value=\\"NOHT\\"
+ >
+ Disabled
+ </option>
+ <option
+ value=\\"VHT20\\" + value=\\"VHT20\\"
+ > + >
+ 802.11ac - 20 MHz wide channel + 802.11ac - 20 MHz wide channel

View File

@ -12,6 +12,7 @@ export const HTMODES = {
VHT20: _("802.11ac - 20 MHz wide channel"), VHT20: _("802.11ac - 20 MHz wide channel"),
VHT40: _("802.11ac - 40 MHz wide channel"), VHT40: _("802.11ac - 40 MHz wide channel"),
VHT80: _("802.11ac - 80 MHz wide channel"), VHT80: _("802.11ac - 80 MHz wide channel"),
VHT160: _("802.11ac - 160 MHz wide channel"),
}; };
export const HWMODES = { export const HWMODES = {
"11g": "2.4", "11g": "2.4",

View File

@ -5,22 +5,36 @@
* See /LICENSE for more information. * See /LICENSE for more information.
*/ */
import pdfMake from "pdfmake";
export function createAndDownloadPdf(SSID, password) { export function createAndDownloadPdf(SSID, password) {
const docDefinition = { const docDefinition = {
content: [ content: [
{ {
text: "Wi-Fi", style: "header", fontSize: 55, alignment: "center", text: "Wi-Fi",
style: "header",
fontSize: 55,
alignment: "center",
}, },
{ {
qr: toQRCodeContent(SSID, password), fit: "350", margin: [0, 80], alignment: "center", qr: toQRCodeContent(SSID, password),
fit: "350",
margin: [0, 80],
alignment: "center",
},
{
text: `SSID: ${SSID}`,
fontSize: 25,
alignment: "center",
},
{
text: `Password: ${password}`,
fontSize: 25,
alignment: "center",
}, },
{ text: `SSID: ${SSID}`, fontSize: 25, alignment: "center" },
{ text: `Password: ${password}`, fontSize: 25, alignment: "center" },
], ],
}; };
pdfMake.createPdf(docDefinition).download("wifi.pdf");
// pdfmake is exposed by reForis main application. Thus we can use it from globals.
window.pdfMake.createPdf(docDefinition).download("wifi.pdf");
} }
export function toQRCodeContent(SSID, password) { export function toQRCodeContent(SSID, password) {

View File

@ -12,7 +12,7 @@ import {
validateIPv6Address, validateIPv6Address,
validateIPv6Prefix, validateIPv6Prefix,
validateMAC, validateMAC,
} from "validations"; } from "utils/validations";
describe("Validation functions", () => { describe("Validation functions", () => {
it("validateIPv4Address valid", () => { it("validateIPv4Address valid", () => {

View File

@ -149,6 +149,7 @@ export function ForisForm({
const childrenWithFormProps = React.Children.map( const childrenWithFormProps = React.Children.map(
children, children,
(child) => React.cloneElement(child, { (child) => React.cloneElement(child, {
initialData: formState.initialData,
formData: formState.data, formData: formState.data,
formErrors: formState.errors, formErrors: formState.errors,
setFormValue: onFormChangeHandler, setFormValue: onFormChangeHandler,

View File

@ -64,9 +64,10 @@ export {
} from "./utils/conditionalHOCs"; } from "./utils/conditionalHOCs";
export { ErrorMessage } from "./utils/ErrorMessage"; export { ErrorMessage } from "./utils/ErrorMessage";
export { useClickOutside } from "./utils/hooks"; export { useClickOutside } from "./utils/hooks";
export { toLocaleDateString } from "./utils/datetime";
// Foris URL // Foris URL
export { ForisURLs, REFORIS_URL_PREFIX } from "./forisUrls"; export { ForisURLs, REFORIS_URL_PREFIX } from "./utils/forisUrls";
// Validation // Validation
export { export {
@ -77,7 +78,7 @@ export {
validateDUID, validateDUID,
validateMAC, validateMAC,
validateMultipleEmails, validateMultipleEmails,
} from "./validations"; } from "./utils/validations";
// Alert context // Alert context
export { AlertContextProvider, useAlert } from "./alertContext/AlertContext"; export { AlertContextProvider, useAlert } from "./alertContext/AlertContext";

View File

@ -0,0 +1,12 @@
/*
* Copyright (C) 2020 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.
*/
// Mock babel (gettext)
global._ = (str) => str;
global.ngettext = (str) => str;
global.babel = { format: (str) => str };
global.ForisTranslations = { locale: "en" };

View File

@ -7,18 +7,13 @@
import mockAxios from "jest-mock-axios"; import mockAxios from "jest-mock-axios";
import moment from "moment-timezone"; import moment from "moment-timezone";
import "./mockGlobals";
// Setup axios cleanup // Setup axios cleanup
global.afterEach(() => { global.afterEach(() => {
mockAxios.reset(); mockAxios.reset();
}); });
// Mock babel (gettext)
global._ = (str) => str;
global.ngettext = (str) => str;
global.babel = { format: (str) => str };
global.ForisTranslations = {};
// Mock web sockets // Mock web sockets
window.WebSocket = jest.fn(); window.WebSocket = jest.fn();

View File

@ -0,0 +1,51 @@
/*
* 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 { toLocaleDateString } from "../datetime";
describe("toLocaleDateString", () => {
it("should work with different locale", () => {
global.ForisTranslations = { locale: "fr" };
expect(
toLocaleDateString("2020-02-20T12:51:36+00:00")
).toBe("20 février 2020 12:51");
global.ForisTranslations = { locale: "en" };
})
it("should convert with default format", () => {
expect(
toLocaleDateString("2020-02-20T12:51:36+00:00")
).toBe("February 20, 2020 12:51 PM");
});
it("should convert with custom input format", () => {
expect(
toLocaleDateString(
"2020-02-20 12:51:36 +0000",
{ inputFormat: "YYYY-MM-DD HH:mm:ss Z" },
)
).toBe("February 20, 2020 12:51 PM");
});
it("should convert with custom output format", () => {
expect(
toLocaleDateString(
"2020-02-20T12:51:36+00:00",
{ outputFormat: "LL" },
)
).toBe("February 20, 2020");
});
it("should convert with custom input and output format", () => {
expect(
toLocaleDateString(
"2020-02-20 12:51:36 +0000",
{ inputFormat: "YYYY-MM-DD HH:mm:ss Z", outputFormat: "LL" },
)
).toBe("February 20, 2020");
});
});

8
src/utils/datetime.js Normal file
View File

@ -0,0 +1,8 @@
import moment from "moment";
export function toLocaleDateString(date, { inputFormat, outputFormat = "LLL" } = {}) {
const parsedDate = inputFormat ? moment(date, inputFormat) : moment(date);
return parsedDate
.locale(ForisTranslations.locale)
.format(outputFormat);
}

View File

@ -10,6 +10,8 @@ export const REFORIS_API_URL_PREFIX = `${REFORIS_URL_PREFIX}/api`;
export const ForisURLs = { export const ForisURLs = {
login: `${REFORIS_URL_PREFIX}/login`, login: `${REFORIS_URL_PREFIX}/login`,
logout: `${REFORIS_URL_PREFIX}/logout`,
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`,

View File

@ -23,7 +23,7 @@ const REs = {
IPv4: /^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/, IPv4: /^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/,
IPv6: /^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$/, IPv6: /^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$/,
IPv6Prefix: /^s*((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:)))(%.+)?s*(\/([0-9]|[1-9][0-9]|1[0-1][0-9]|12[0-8]))$/, IPv6Prefix: /^s*((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:)))(%.+)?s*(\/([0-9]|[1-9][0-9]|1[0-1][0-9]|12[0-8]))$/,
domain: /^([a-zA-Z0-9-]{1,63}\.?)*$/, domain: /^[A-Za-z0-9][A-Za-z0-9.-]{1,255}$/,
DUID: /^([0-9a-fA-F]{2}){4}([0-9a-fA-F]{2})*$/, DUID: /^([0-9a-fA-F]{2}){4}([0-9a-fA-F]{2})*$/,
MAC: /^([a-fA-F0-9]{2}:){5}[a-fA-F0-9]{2}$/, MAC: /^([a-fA-F0-9]{2}:){5}[a-fA-F0-9]{2}$/,
MultipleEmails: /^([a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+ *)( *, *[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+ *)*$/, MultipleEmails: /^([a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+ *)( *, *[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+ *)*$/,

View File

@ -1,5 +1,5 @@
/* /*
* Copyright (C) 2019 CZ.NIC z.s.p.o. (http://www.nic.cz/) * Copyright (C) 2020 CZ.NIC z.s.p.o. (http://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,12 +7,12 @@
/* eslint no-console: "off" */ /* eslint no-console: "off" */
import { ForisURLs } from "../forisUrls"; import { ForisURLs } from "../utils/forisUrls";
const PROTOCOL = window.location.protocol === "http:" ? "ws" : "wss"; const PROTOCOL = window.location.protocol === "http:" ? "ws" : "wss";
const URL = process.env.LIGHTTPD const URL = process.env.LIGHTTPD
? `${PROTOCOL}://${window.location.hostname}/foris-ws` ? `${PROTOCOL}://${window.location.host}/foris-ws`
: `${PROTOCOL}://${window.location.hostname}:${9081}`; : `${PROTOCOL}://${window.location.hostname}:${9081}`;
const WAITING_FOR_CONNECTION_TIMEOUT = 500; const WAITING_FOR_CONNECTION_TIMEOUT = 500;

View File

@ -14,6 +14,10 @@ module.exports = {
name: "Foris JS", name: "Foris JS",
content: "docs/intro.md", content: "docs/intro.md",
}, },
{
name: "Development (Linking)",
content: "docs/development.md",
},
{ {
name: "Foris forms", name: "Foris forms",
components: [ components: [
@ -24,6 +28,14 @@ module.exports = {
exampleMode: "expand", exampleMode: "expand",
usageMode: "expand", usageMode: "expand",
}, },
{
name: "Alert Context",
components: [
"src/alertContext/AlertContext.js",
],
exampleMode: "expand",
usageMode: "expand",
},
{ {
name: "Bootstrap components", name: "Bootstrap components",
description: "Set of bootstrap components.", description: "Set of bootstrap components.",
@ -37,6 +49,7 @@ module.exports = {
], ],
require: [ require: [
"babel-polyfill", "babel-polyfill",
path.join(__dirname, "src/testUtils/mockGlobals"),
path.join(__dirname, "node_modules/bootstrap/dist/css/bootstrap.min.css"), path.join(__dirname, "node_modules/bootstrap/dist/css/bootstrap.min.css"),
path.join(__dirname, "node_modules/@fortawesome/fontawesome-free/css/all.min.css"), path.join(__dirname, "node_modules/@fortawesome/fontawesome-free/css/all.min.css"),
], ],

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: 2020-01-20 16:26+0100\n" "POT-Creation-Date: 2020-02-20 17:28+0100\n"
"PO-Revision-Date: 2019-09-29 15:56+0000\n" "PO-Revision-Date: 2019-09-29 15:56+0000\n"
"Last-Translator: Pavel Borecki <pavel.borecki@gmail.com>\n" "Last-Translator: Pavel Borecki <pavel.borecki@gmail.com>\n"
"Language: cs\n" "Language: cs\n"
@ -59,11 +59,7 @@ msgstr "Došlo k chybě kvůli překročení časového limitu."
msgid "No response received." msgid "No response received."
msgstr "Neobdržena žádná odezva." msgstr "Neobdržena žádná odezva."
#: src/api/utils.js:70 #: src/api/utils.js:76
msgid "An unknown error occurred. Check the console for more info."
msgstr "Došlo k neznámé chybě. Další informace naleznete v konzoli."
#: src/api/utils.js:77
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í."
@ -251,11 +247,11 @@ msgstr ""
"hosty“.\n" "hosty“.\n"
" " " "
#: src/form/components/ForisForm.js:107 #: src/form/components/ForisForm.js:112
msgid "Settings saved successfully" msgid "Settings saved successfully"
msgstr "Nastavení úspěšně uložena" msgstr "Nastavení úspěšně uložena"
#: src/form/components/ForisForm.js:160 #: src/form/components/ForisForm.js:165
msgid "Changes you made may not be saved. Are you sure you want to leave?" msgid "Changes you made may not be saved. Are you sure you want to leave?"
msgstr "" msgstr ""
"Změny, které byly provedeny, nebyly uloženy. Jste si jistý, že chcete " "Změny, které byly provedeny, nebyly uloženy. Jste si jistý, že chcete "
@ -277,3 +273,6 @@ msgstr "Uložit"
msgid "An error occurred while fetching data." msgid "An error occurred while fetching data."
msgstr "Došlo k chybě při získávání dat." msgstr "Došlo k chybě při získávání dat."
#~ msgid "An unknown error occurred. Check the console for more info."
#~ msgstr "Došlo k neznámé chybě. Další informace naleznete v konzoli."

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: 2020-01-20 16:26+0100\n" "POT-Creation-Date: 2020-02-20 17:28+0100\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"
@ -58,11 +58,7 @@ msgstr ""
msgid "No response received." msgid "No response received."
msgstr "" msgstr ""
#: src/api/utils.js:70 #: src/api/utils.js:76
msgid "An unknown error occurred. Check the console for more info."
msgstr ""
#: src/api/utils.js:77
msgid "An unknown API error occurred." msgid "An unknown API error occurred."
msgstr "" msgstr ""
@ -223,11 +219,11 @@ msgid ""
" " " "
msgstr "" msgstr ""
#: src/form/components/ForisForm.js:107 #: src/form/components/ForisForm.js:112
msgid "Settings saved successfully" msgid "Settings saved successfully"
msgstr "" msgstr ""
#: src/form/components/ForisForm.js:160 #: src/form/components/ForisForm.js:165
msgid "Changes you made may not be saved. Are you sure you want to leave?" msgid "Changes you made may not be saved. Are you sure you want to leave?"
msgstr "" msgstr ""
@ -247,3 +243,6 @@ msgstr ""
msgid "An error occurred while fetching data." msgid "An error occurred while fetching data."
msgstr "" msgstr ""
#~ msgid "An unknown error occurred. Check the console for more info."
#~ 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: 2020-01-20 16:26+0100\n" "POT-Creation-Date: 2020-02-20 17:28+0100\n"
"PO-Revision-Date: 2019-09-02 07:21+0000\n" "PO-Revision-Date: 2019-09-02 07:21+0000\n"
"Last-Translator: Ulrich Günther <mail@ulrich-guenther.at>\n" "Last-Translator: Ulrich Günther <mail@ulrich-guenther.at>\n"
"Language: de\n" "Language: de\n"
@ -57,15 +57,11 @@ msgstr ""
#: src/api/utils.js:66 #: src/api/utils.js:66
msgid "No response received." msgid "No response received."
msgstr "" msgstr "Keine Antwort erhalten."
#: src/api/utils.js:70 #: src/api/utils.js:76
msgid "An unknown error occurred. Check the console for more info."
msgstr ""
#: src/api/utils.js:77
msgid "An unknown API error occurred." msgid "An unknown API error occurred."
msgstr "" msgstr "Ein unbekannter API-Fehler ist aufgetreten."
#: src/common/RebootButton.js:33 #: src/common/RebootButton.js:33
#, fuzzy #, fuzzy
@ -253,11 +249,11 @@ msgstr ""
"Gastnetzwerk eingestellt werden.\n" "Gastnetzwerk eingestellt werden.\n"
" " " "
#: src/form/components/ForisForm.js:107 #: src/form/components/ForisForm.js:112
msgid "Settings saved successfully" msgid "Settings saved successfully"
msgstr "" msgstr "Einstellungen erfolgreich gespeichert"
#: src/form/components/ForisForm.js:160 #: src/form/components/ForisForm.js:165
msgid "Changes you made may not be saved. Are you sure you want to leave?" msgid "Changes you made may not be saved. Are you sure you want to leave?"
msgstr "" msgstr ""
@ -277,3 +273,6 @@ msgstr "Speichern"
msgid "An error occurred while fetching data." msgid "An error occurred while fetching data."
msgstr "" msgstr ""
#~ msgid "An unknown error occurred. Check the console for more info."
#~ 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: 2020-01-20 16:26+0100\n" "POT-Creation-Date: 2020-02-20 17:28+0100\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: el\n" "Language: el\n"
@ -58,11 +58,7 @@ msgstr ""
msgid "No response received." msgid "No response received."
msgstr "" msgstr ""
#: src/api/utils.js:70 #: src/api/utils.js:76
msgid "An unknown error occurred. Check the console for more info."
msgstr ""
#: src/api/utils.js:77
msgid "An unknown API error occurred." msgid "An unknown API error occurred."
msgstr "" msgstr ""
@ -223,11 +219,11 @@ msgid ""
" " " "
msgstr "" msgstr ""
#: src/form/components/ForisForm.js:107 #: src/form/components/ForisForm.js:112
msgid "Settings saved successfully" msgid "Settings saved successfully"
msgstr "" msgstr ""
#: src/form/components/ForisForm.js:160 #: src/form/components/ForisForm.js:165
msgid "Changes you made may not be saved. Are you sure you want to leave?" msgid "Changes you made may not be saved. Are you sure you want to leave?"
msgstr "" msgstr ""
@ -247,3 +243,6 @@ msgstr ""
msgid "An error occurred while fetching data." msgid "An error occurred while fetching data."
msgstr "" msgstr ""
#~ msgid "An unknown error occurred. Check the console for more info."
#~ 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: 2020-01-20 16:26+0100\n" "POT-Creation-Date: 2020-02-20 17:28+0100\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"
@ -59,11 +59,7 @@ msgstr ""
msgid "No response received." msgid "No response received."
msgstr "" msgstr ""
#: src/api/utils.js:70 #: src/api/utils.js:76
msgid "An unknown error occurred. Check the console for more info."
msgstr ""
#: src/api/utils.js:77
msgid "An unknown API error occurred." msgid "An unknown API error occurred."
msgstr "" msgstr ""
@ -248,11 +244,11 @@ msgstr ""
"tab.\n" "tab.\n"
" " " "
#: src/form/components/ForisForm.js:107 #: src/form/components/ForisForm.js:112
msgid "Settings saved successfully" msgid "Settings saved successfully"
msgstr "" msgstr ""
#: src/form/components/ForisForm.js:160 #: src/form/components/ForisForm.js:165
msgid "Changes you made may not be saved. Are you sure you want to leave?" msgid "Changes you made may not be saved. Are you sure you want to leave?"
msgstr "" msgstr ""
@ -272,3 +268,6 @@ msgstr "Save"
msgid "An error occurred while fetching data." msgid "An error occurred while fetching data."
msgstr "" msgstr ""
#~ msgid "An unknown error occurred. Check the console for more info."
#~ 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: 2020-01-20 16:26+0100\n" "POT-Creation-Date: 2020-02-20 17:28+0100\n"
"PO-Revision-Date: 2019-10-29 06:53+0000\n" "PO-Revision-Date: 2019-10-29 06:53+0000\n"
"Last-Translator: Adolfo Jayme Barrientos <fitojb@ubuntu.com>\n" "Last-Translator: Adolfo Jayme Barrientos <fitojb@ubuntu.com>\n"
"Language: es\n" "Language: es\n"
@ -59,11 +59,7 @@ msgstr ""
msgid "No response received." msgid "No response received."
msgstr "" msgstr ""
#: src/api/utils.js:70 #: src/api/utils.js:76
msgid "An unknown error occurred. Check the console for more info."
msgstr ""
#: src/api/utils.js:77
msgid "An unknown API error occurred." msgid "An unknown API error occurred."
msgstr "" msgstr ""
@ -225,11 +221,11 @@ msgid ""
" " " "
msgstr "" msgstr ""
#: src/form/components/ForisForm.js:107 #: src/form/components/ForisForm.js:112
msgid "Settings saved successfully" msgid "Settings saved successfully"
msgstr "" msgstr ""
#: src/form/components/ForisForm.js:160 #: src/form/components/ForisForm.js:165
msgid "Changes you made may not be saved. Are you sure you want to leave?" msgid "Changes you made may not be saved. Are you sure you want to leave?"
msgstr "" msgstr ""
@ -251,3 +247,6 @@ msgstr ""
msgid "An error occurred while fetching data." msgid "An error occurred while fetching data."
msgstr "" msgstr ""
#~ msgid "An unknown error occurred. Check the console for more info."
#~ 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: 2020-01-20 16:26+0100\n" "POT-Creation-Date: 2020-02-20 17:28+0100\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"
@ -58,11 +58,7 @@ msgstr ""
msgid "No response received." msgid "No response received."
msgstr "" msgstr ""
#: src/api/utils.js:70 #: src/api/utils.js:76
msgid "An unknown error occurred. Check the console for more info."
msgstr ""
#: src/api/utils.js:77
msgid "An unknown API error occurred." msgid "An unknown API error occurred."
msgstr "" msgstr ""
@ -223,11 +219,11 @@ msgid ""
" " " "
msgstr "" msgstr ""
#: src/form/components/ForisForm.js:107 #: src/form/components/ForisForm.js:112
msgid "Settings saved successfully" msgid "Settings saved successfully"
msgstr "" msgstr ""
#: src/form/components/ForisForm.js:160 #: src/form/components/ForisForm.js:165
msgid "Changes you made may not be saved. Are you sure you want to leave?" msgid "Changes you made may not be saved. Are you sure you want to leave?"
msgstr "" msgstr ""
@ -247,3 +243,6 @@ msgstr ""
msgid "An error occurred while fetching data." msgid "An error occurred while fetching data."
msgstr "" msgstr ""
#~ msgid "An unknown error occurred. Check the console for more info."
#~ 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: 2020-01-20 16:26+0100\n" "POT-Creation-Date: 2020-02-20 17:28+0100\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"
@ -58,11 +58,7 @@ msgstr ""
msgid "No response received." msgid "No response received."
msgstr "" msgstr ""
#: src/api/utils.js:70 #: src/api/utils.js:76
msgid "An unknown error occurred. Check the console for more info."
msgstr ""
#: src/api/utils.js:77
msgid "An unknown API error occurred." msgid "An unknown API error occurred."
msgstr "" msgstr ""
@ -223,11 +219,11 @@ msgid ""
" " " "
msgstr "" msgstr ""
#: src/form/components/ForisForm.js:107 #: src/form/components/ForisForm.js:112
msgid "Settings saved successfully" msgid "Settings saved successfully"
msgstr "" msgstr ""
#: src/form/components/ForisForm.js:160 #: src/form/components/ForisForm.js:165
msgid "Changes you made may not be saved. Are you sure you want to leave?" msgid "Changes you made may not be saved. Are you sure you want to leave?"
msgstr "" msgstr ""
@ -247,3 +243,6 @@ msgstr ""
msgid "An error occurred while fetching data." msgid "An error occurred while fetching data."
msgstr "" msgstr ""
#~ msgid "An unknown error occurred. Check the console for more info."
#~ msgstr ""

View File

@ -8,7 +8,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: 2020-01-20 16:26+0100\n" "POT-Creation-Date: 2020-05-07 16:12+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"
@ -17,34 +17,6 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 2.8.0\n" "Generated-By: Babel 2.8.0\n"
#: src/validations.js:13
msgid "This is not a valid IPv4 address."
msgstr ""
#: src/validations.js:14
msgid "This is not a valid IPv6 address."
msgstr ""
#: src/validations.js:15
msgid "This is not a valid IPv6 prefix."
msgstr ""
#: src/validations.js:16
msgid "This is not a valid domain name."
msgstr ""
#: src/validations.js:17
msgid "This is not a valid DUID."
msgstr ""
#: src/validations.js:18
msgid "This is not a valid MAC address."
msgstr ""
#: src/validations.js:19
msgid "Doesn't contain a list of emails separated by commas."
msgstr ""
#: src/api/utils.js:58 #: src/api/utils.js:58
msgid "The session is expired. Please log in again." msgid "The session is expired. Please log in again."
msgstr "" msgstr ""
@ -57,11 +29,7 @@ msgstr ""
msgid "No response received." msgid "No response received."
msgstr "" msgstr ""
#: src/api/utils.js:70 #: src/api/utils.js:76
msgid "An unknown error occurred. Check the console for more info."
msgstr ""
#: src/api/utils.js:77
msgid "An unknown API error occurred." msgid "An unknown API error occurred."
msgstr "" msgstr ""
@ -111,15 +79,15 @@ msgid ""
" " " "
msgstr "" msgstr ""
#: src/common/WiFiSettings/WiFiForm.js:82 #: src/common/WiFiSettings/WiFiForm.js:81
msgid "Wi-Fi ${deviceID + 1}" msgid "Wi-Fi ${deviceID + 1}"
msgstr "" msgstr ""
#: src/common/WiFiSettings/WiFiForm.js:84 #: src/common/WiFiSettings/WiFiForm.js:83
msgid "Enable" msgid "Enable"
msgstr "" msgstr ""
#: src/common/WiFiSettings/WiFiForm.js:215 #: src/common/WiFiSettings/WiFiForm.js:214
msgid "auto" msgid "auto"
msgstr "" msgstr ""
@ -222,11 +190,11 @@ msgid ""
" " " "
msgstr "" msgstr ""
#: src/form/components/ForisForm.js:107 #: src/form/components/ForisForm.js:112
msgid "Settings saved successfully" msgid "Settings saved successfully"
msgstr "" msgstr ""
#: src/form/components/ForisForm.js:160 #: src/form/components/ForisForm.js:166
msgid "Changes you made may not be saved. Are you sure you want to leave?" msgid "Changes you made may not be saved. Are you sure you want to leave?"
msgstr "" msgstr ""
@ -246,3 +214,31 @@ msgstr ""
msgid "An error occurred while fetching data." msgid "An error occurred while fetching data."
msgstr "" msgstr ""
#: src/utils/validations.js:13
msgid "This is not a valid IPv4 address."
msgstr ""
#: src/utils/validations.js:14
msgid "This is not a valid IPv6 address."
msgstr ""
#: src/utils/validations.js:15
msgid "This is not a valid IPv6 prefix."
msgstr ""
#: src/utils/validations.js:16
msgid "This is not a valid domain name."
msgstr ""
#: src/utils/validations.js:17
msgid "This is not a valid DUID."
msgstr ""
#: src/utils/validations.js:18
msgid "This is not a valid MAC address."
msgstr ""
#: src/utils/validations.js:19
msgid "Doesn't contain a list of emails separated by commas."
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: 2020-01-20 16:26+0100\n" "POT-Creation-Date: 2020-02-20 17:28+0100\n"
"PO-Revision-Date: 2019-10-14 11:04+0000\n" "PO-Revision-Date: 2019-10-14 11:04+0000\n"
"Last-Translator: ButterflyOfFire <ButterflyOfFire@protonmail.com>\n" "Last-Translator: ButterflyOfFire <ButterflyOfFire@protonmail.com>\n"
"Language: fr\n" "Language: fr\n"
@ -51,23 +51,19 @@ msgstr ""
#: src/api/utils.js:58 #: src/api/utils.js:58
msgid "The session is expired. Please log in again." msgid "The session is expired. Please log in again."
msgstr "" msgstr "Cette session a expiré. Veuillez vous reconnecter."
#: src/api/utils.js:63 #: src/api/utils.js:63
msgid "Timeout error occurred." msgid "Timeout error occurred."
msgstr "" msgstr "Le délai a expiré."
#: src/api/utils.js:66 #: src/api/utils.js:66
msgid "No response received." msgid "No response received."
msgstr "" msgstr "Aucun réponse reçue."
#: src/api/utils.js:70 #: src/api/utils.js:76
msgid "An unknown error occurred. Check the console for more info."
msgstr ""
#: src/api/utils.js:77
msgid "An unknown API error occurred." msgid "An unknown API error occurred."
msgstr "" msgstr "Une erreur dAPI inconnue sest produite."
#: src/common/RebootButton.js:33 #: src/common/RebootButton.js:33
#, fuzzy #, fuzzy
@ -227,13 +223,15 @@ msgid ""
" " " "
msgstr "" msgstr ""
#: src/form/components/ForisForm.js:107 #: src/form/components/ForisForm.js:112
msgid "Settings saved successfully" msgid "Settings saved successfully"
msgstr "" msgstr "Paramètres enregistrés avec succès"
#: src/form/components/ForisForm.js:160 #: src/form/components/ForisForm.js:165
msgid "Changes you made may not be saved. Are you sure you want to leave?" msgid "Changes you made may not be saved. Are you sure you want to leave?"
msgstr "" msgstr ""
"Il se peut que vos modifications ne soient pas enregistrées. Êtes-vous "
"sûr de vouloir quitter?"
#: src/form/components/SubmitButton.js:32 #: src/form/components/SubmitButton.js:32
msgid "Updating" msgid "Updating"
@ -249,5 +247,11 @@ msgstr "Enregistrer"
#: src/utils/ErrorMessage.js:16 #: src/utils/ErrorMessage.js:16
msgid "An error occurred while fetching data." msgid "An error occurred while fetching data."
msgstr "" msgstr "Une erreur sest produite lors du chargement des données."
#~ msgid "An unknown error occurred. Check the console for more info."
#~ msgstr ""
#~ "Une erreur inconnue sest produite. "
#~ "Vérifiez la console pour plus "
#~ "dinformations."

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: 2020-01-20 16:26+0100\n" "POT-Creation-Date: 2020-02-20 17:28+0100\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: hr\n" "Language: hr\n"
@ -59,11 +59,7 @@ msgstr ""
msgid "No response received." msgid "No response received."
msgstr "" msgstr ""
#: src/api/utils.js:70 #: src/api/utils.js:76
msgid "An unknown error occurred. Check the console for more info."
msgstr ""
#: src/api/utils.js:77
msgid "An unknown API error occurred." msgid "An unknown API error occurred."
msgstr "" msgstr ""
@ -224,11 +220,11 @@ msgid ""
" " " "
msgstr "" msgstr ""
#: src/form/components/ForisForm.js:107 #: src/form/components/ForisForm.js:112
msgid "Settings saved successfully" msgid "Settings saved successfully"
msgstr "" msgstr ""
#: src/form/components/ForisForm.js:160 #: src/form/components/ForisForm.js:165
msgid "Changes you made may not be saved. Are you sure you want to leave?" msgid "Changes you made may not be saved. Are you sure you want to leave?"
msgstr "" msgstr ""
@ -248,3 +244,6 @@ msgstr ""
msgid "An error occurred while fetching data." msgid "An error occurred while fetching data."
msgstr "" msgstr ""
#~ msgid "An unknown error occurred. Check the console for more info."
#~ 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: 2020-01-20 16:26+0100\n" "POT-Creation-Date: 2020-02-20 17:28+0100\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: hu\n" "Language: hu\n"
@ -58,11 +58,7 @@ msgstr ""
msgid "No response received." msgid "No response received."
msgstr "" msgstr ""
#: src/api/utils.js:70 #: src/api/utils.js:76
msgid "An unknown error occurred. Check the console for more info."
msgstr ""
#: src/api/utils.js:77
msgid "An unknown API error occurred." msgid "An unknown API error occurred."
msgstr "" msgstr ""
@ -223,11 +219,11 @@ msgid ""
" " " "
msgstr "" msgstr ""
#: src/form/components/ForisForm.js:107 #: src/form/components/ForisForm.js:112
msgid "Settings saved successfully" msgid "Settings saved successfully"
msgstr "" msgstr ""
#: src/form/components/ForisForm.js:160 #: src/form/components/ForisForm.js:165
msgid "Changes you made may not be saved. Are you sure you want to leave?" msgid "Changes you made may not be saved. Are you sure you want to leave?"
msgstr "" msgstr ""
@ -247,3 +243,6 @@ msgstr ""
msgid "An error occurred while fetching data." msgid "An error occurred while fetching data."
msgstr "" msgstr ""
#~ msgid "An unknown error occurred. Check the console for more info."
#~ 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: 2020-01-20 16:26+0100\n" "POT-Creation-Date: 2020-02-20 17:28+0100\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: it\n" "Language: it\n"
@ -58,11 +58,7 @@ msgstr ""
msgid "No response received." msgid "No response received."
msgstr "" msgstr ""
#: src/api/utils.js:70 #: src/api/utils.js:76
msgid "An unknown error occurred. Check the console for more info."
msgstr ""
#: src/api/utils.js:77
msgid "An unknown API error occurred." msgid "An unknown API error occurred."
msgstr "" msgstr ""
@ -223,11 +219,11 @@ msgid ""
" " " "
msgstr "" msgstr ""
#: src/form/components/ForisForm.js:107 #: src/form/components/ForisForm.js:112
msgid "Settings saved successfully" msgid "Settings saved successfully"
msgstr "" msgstr ""
#: src/form/components/ForisForm.js:160 #: src/form/components/ForisForm.js:165
msgid "Changes you made may not be saved. Are you sure you want to leave?" msgid "Changes you made may not be saved. Are you sure you want to leave?"
msgstr "" msgstr ""
@ -247,3 +243,6 @@ msgstr ""
msgid "An error occurred while fetching data." msgid "An error occurred while fetching data."
msgstr "" msgstr ""
#~ msgid "An unknown error occurred. Check the console for more info."
#~ 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: 2020-01-20 16:26+0100\n" "POT-Creation-Date: 2020-02-20 17:28+0100\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"
@ -59,11 +59,7 @@ msgstr ""
msgid "No response received." msgid "No response received."
msgstr "" msgstr ""
#: src/api/utils.js:70 #: src/api/utils.js:76
msgid "An unknown error occurred. Check the console for more info."
msgstr ""
#: src/api/utils.js:77
msgid "An unknown API error occurred." msgid "An unknown API error occurred."
msgstr "" msgstr ""
@ -224,11 +220,11 @@ msgid ""
" " " "
msgstr "" msgstr ""
#: src/form/components/ForisForm.js:107 #: src/form/components/ForisForm.js:112
msgid "Settings saved successfully" msgid "Settings saved successfully"
msgstr "" msgstr ""
#: src/form/components/ForisForm.js:160 #: src/form/components/ForisForm.js:165
msgid "Changes you made may not be saved. Are you sure you want to leave?" msgid "Changes you made may not be saved. Are you sure you want to leave?"
msgstr "" msgstr ""
@ -248,3 +244,6 @@ msgstr ""
msgid "An error occurred while fetching data." msgid "An error occurred while fetching data."
msgstr "" msgstr ""
#~ msgid "An unknown error occurred. Check the console for more info."
#~ 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: 2020-01-20 16:26+0100\n" "POT-Creation-Date: 2020-02-20 17:28+0100\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"
@ -58,11 +58,7 @@ msgstr ""
msgid "No response received." msgid "No response received."
msgstr "" msgstr ""
#: src/api/utils.js:70 #: src/api/utils.js:76
msgid "An unknown error occurred. Check the console for more info."
msgstr ""
#: src/api/utils.js:77
msgid "An unknown API error occurred." msgid "An unknown API error occurred."
msgstr "" msgstr ""
@ -223,11 +219,11 @@ msgid ""
" " " "
msgstr "" msgstr ""
#: src/form/components/ForisForm.js:107 #: src/form/components/ForisForm.js:112
msgid "Settings saved successfully" msgid "Settings saved successfully"
msgstr "" msgstr ""
#: src/form/components/ForisForm.js:160 #: src/form/components/ForisForm.js:165
msgid "Changes you made may not be saved. Are you sure you want to leave?" msgid "Changes you made may not be saved. Are you sure you want to leave?"
msgstr "" msgstr ""
@ -247,3 +243,6 @@ msgstr ""
msgid "An error occurred while fetching data." msgid "An error occurred while fetching data."
msgstr "" msgstr ""
#~ msgid "An unknown error occurred. Check the console for more info."
#~ 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: 2020-01-20 16:26+0100\n" "POT-Creation-Date: 2020-02-20 17:28+0100\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"
@ -59,11 +59,7 @@ msgstr ""
msgid "No response received." msgid "No response received."
msgstr "" msgstr ""
#: src/api/utils.js:70 #: src/api/utils.js:76
msgid "An unknown error occurred. Check the console for more info."
msgstr ""
#: src/api/utils.js:77
msgid "An unknown API error occurred." msgid "An unknown API error occurred."
msgstr "" msgstr ""
@ -224,11 +220,11 @@ msgid ""
" " " "
msgstr "" msgstr ""
#: src/form/components/ForisForm.js:107 #: src/form/components/ForisForm.js:112
msgid "Settings saved successfully" msgid "Settings saved successfully"
msgstr "" msgstr ""
#: src/form/components/ForisForm.js:160 #: src/form/components/ForisForm.js:165
msgid "Changes you made may not be saved. Are you sure you want to leave?" msgid "Changes you made may not be saved. Are you sure you want to leave?"
msgstr "" msgstr ""
@ -248,3 +244,6 @@ msgstr ""
msgid "An error occurred while fetching data." msgid "An error occurred while fetching data."
msgstr "" msgstr ""
#~ msgid "An unknown error occurred. Check the console for more info."
#~ 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: 2020-01-20 16:26+0100\n" "POT-Creation-Date: 2020-02-20 17:28+0100\n"
"PO-Revision-Date: 2019-11-10 16:04+0000\n" "PO-Revision-Date: 2019-11-10 16:04+0000\n"
"Last-Translator: Allan Nordhøy <epost@anotheragency.no>\n" "Last-Translator: Allan Nordhøy <epost@anotheragency.no>\n"
"Language: nb\n" "Language: nb\n"
@ -28,6 +28,7 @@ msgid "This is not a valid IPv6 address."
msgstr "Dette er ikke en gyldig IPv6-adresse." msgstr "Dette er ikke en gyldig IPv6-adresse."
#: src/validations.js:15 #: src/validations.js:15
#, fuzzy
msgid "This is not a valid IPv6 prefix." msgid "This is not a valid IPv6 prefix."
msgstr "Dette er ikke et gyldig IPv6-prefiks." msgstr "Dette er ikke et gyldig IPv6-prefiks."
@ -49,23 +50,20 @@ msgstr "Inneholder ikke en kommainndelt liste med e-postadresser."
#: src/api/utils.js:58 #: src/api/utils.js:58
msgid "The session is expired. Please log in again." msgid "The session is expired. Please log in again."
msgstr "" msgstr "Økten har utløpt. Logg inn igjen."
#: src/api/utils.js:63 #: src/api/utils.js:63
msgid "Timeout error occurred." msgid "Timeout error occurred."
msgstr "" msgstr "Tidsavbrudd inntraff."
#: src/api/utils.js:66 #: src/api/utils.js:66
msgid "No response received." msgid "No response received."
msgstr "" msgstr "Fikk ikke svar."
#: src/api/utils.js:70 #: src/api/utils.js:76
msgid "An unknown error occurred. Check the console for more info." #, fuzzy
msgstr ""
#: src/api/utils.js:77
msgid "An unknown API error occurred." msgid "An unknown API error occurred."
msgstr "" msgstr "Ukjent API-feil."
#: src/common/RebootButton.js:33 #: src/common/RebootButton.js:33
#, fuzzy #, fuzzy
@ -250,15 +248,16 @@ msgstr ""
"\n" "\n"
" " " "
#: src/form/components/ForisForm.js:107 #: src/form/components/ForisForm.js:112
msgid "Settings saved successfully" msgid "Settings saved successfully"
msgstr "" msgstr "Innstillinger lagret"
#: src/form/components/ForisForm.js:160 #: src/form/components/ForisForm.js:165
msgid "Changes you made may not be saved. Are you sure you want to leave?" msgid "Changes you made may not be saved. Are you sure you want to leave?"
msgstr "" msgstr "Endringer du har gjort vil ikke bli lagret. Er du sikker?"
#: src/form/components/SubmitButton.js:32 #: src/form/components/SubmitButton.js:32
#, fuzzy
msgid "Updating" msgid "Updating"
msgstr "Oppdaterer" msgstr "Oppdaterer"
@ -272,5 +271,8 @@ msgstr "Lagre"
#: src/utils/ErrorMessage.js:16 #: src/utils/ErrorMessage.js:16
msgid "An error occurred while fetching data." msgid "An error occurred while fetching data."
msgstr "" msgstr "Kunne ikke hente data."
#~ msgid "An unknown error occurred. Check the console for more info."
#~ msgstr "Ukjent feil. Sjekk konsollen for mer info."

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: 2020-01-20 16:26+0100\n" "POT-Creation-Date: 2020-02-20 17:28+0100\n"
"PO-Revision-Date: 2019-08-28 17:55+0200\n" "PO-Revision-Date: 2019-08-28 17:55+0200\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language: nb_NO\n" "Language: nb_NO\n"
@ -58,11 +58,7 @@ msgstr ""
msgid "No response received." msgid "No response received."
msgstr "" msgstr ""
#: src/api/utils.js:70 #: src/api/utils.js:76
msgid "An unknown error occurred. Check the console for more info."
msgstr ""
#: src/api/utils.js:77
msgid "An unknown API error occurred." msgid "An unknown API error occurred."
msgstr "" msgstr ""
@ -223,11 +219,11 @@ msgid ""
" " " "
msgstr "" msgstr ""
#: src/form/components/ForisForm.js:107 #: src/form/components/ForisForm.js:112
msgid "Settings saved successfully" msgid "Settings saved successfully"
msgstr "" msgstr ""
#: src/form/components/ForisForm.js:160 #: src/form/components/ForisForm.js:165
msgid "Changes you made may not be saved. Are you sure you want to leave?" msgid "Changes you made may not be saved. Are you sure you want to leave?"
msgstr "" msgstr ""
@ -247,3 +243,6 @@ msgstr ""
msgid "An error occurred while fetching data." msgid "An error occurred while fetching data."
msgstr "" msgstr ""
#~ msgid "An unknown error occurred. Check the console for more info."
#~ 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: 2020-01-20 16:26+0100\n" "POT-Creation-Date: 2020-02-20 17:28+0100\n"
"PO-Revision-Date: 2019-10-15 13:02+0000\n" "PO-Revision-Date: 2019-10-15 13:02+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"
@ -59,11 +59,7 @@ msgstr ""
msgid "No response received." msgid "No response received."
msgstr "" msgstr ""
#: src/api/utils.js:70 #: src/api/utils.js:76
msgid "An unknown error occurred. Check the console for more info."
msgstr ""
#: src/api/utils.js:77
msgid "An unknown API error occurred." msgid "An unknown API error occurred."
msgstr "" msgstr ""
@ -225,11 +221,11 @@ msgid ""
" " " "
msgstr "" msgstr ""
#: src/form/components/ForisForm.js:107 #: src/form/components/ForisForm.js:112
msgid "Settings saved successfully" msgid "Settings saved successfully"
msgstr "" msgstr ""
#: src/form/components/ForisForm.js:160 #: src/form/components/ForisForm.js:165
msgid "Changes you made may not be saved. Are you sure you want to leave?" msgid "Changes you made may not be saved. Are you sure you want to leave?"
msgstr "" msgstr ""
@ -249,3 +245,6 @@ msgstr "Opslaan"
msgid "An error occurred while fetching data." msgid "An error occurred while fetching data."
msgstr "" msgstr ""
#~ msgid "An unknown error occurred. Check the console for more info."
#~ 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: 2020-01-20 16:26+0100\n" "POT-Creation-Date: 2020-02-20 17:28+0100\n"
"PO-Revision-Date: 2019-08-28 17:56+0200\n" "PO-Revision-Date: 2019-08-28 17:56+0200\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language: pl\n" "Language: pl\n"
@ -60,11 +60,7 @@ msgstr ""
msgid "No response received." msgid "No response received."
msgstr "" msgstr ""
#: src/api/utils.js:70 #: src/api/utils.js:76
msgid "An unknown error occurred. Check the console for more info."
msgstr ""
#: src/api/utils.js:77
msgid "An unknown API error occurred." msgid "An unknown API error occurred."
msgstr "" msgstr ""
@ -225,11 +221,11 @@ msgid ""
" " " "
msgstr "" msgstr ""
#: src/form/components/ForisForm.js:107 #: src/form/components/ForisForm.js:112
msgid "Settings saved successfully" msgid "Settings saved successfully"
msgstr "" msgstr ""
#: src/form/components/ForisForm.js:160 #: src/form/components/ForisForm.js:165
msgid "Changes you made may not be saved. Are you sure you want to leave?" msgid "Changes you made may not be saved. Are you sure you want to leave?"
msgstr "" msgstr ""
@ -249,3 +245,6 @@ msgstr "Zapisz"
msgid "An error occurred while fetching data." msgid "An error occurred while fetching data."
msgstr "" msgstr ""
#~ msgid "An unknown error occurred. Check the console for more info."
#~ 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: 2020-01-20 16:26+0100\n" "POT-Creation-Date: 2020-02-20 17:28+0100\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"
@ -59,11 +59,7 @@ msgstr ""
msgid "No response received." msgid "No response received."
msgstr "" msgstr ""
#: src/api/utils.js:70 #: src/api/utils.js:76
msgid "An unknown error occurred. Check the console for more info."
msgstr ""
#: src/api/utils.js:77
msgid "An unknown API error occurred." msgid "An unknown API error occurred."
msgstr "" msgstr ""
@ -224,11 +220,11 @@ msgid ""
" " " "
msgstr "" msgstr ""
#: src/form/components/ForisForm.js:107 #: src/form/components/ForisForm.js:112
msgid "Settings saved successfully" msgid "Settings saved successfully"
msgstr "" msgstr ""
#: src/form/components/ForisForm.js:160 #: src/form/components/ForisForm.js:165
msgid "Changes you made may not be saved. Are you sure you want to leave?" msgid "Changes you made may not be saved. Are you sure you want to leave?"
msgstr "" msgstr ""
@ -248,3 +244,6 @@ msgstr ""
msgid "An error occurred while fetching data." msgid "An error occurred while fetching data."
msgstr "" msgstr ""
#~ msgid "An unknown error occurred. Check the console for more info."
#~ 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: 2020-01-20 16:26+0100\n" "POT-Creation-Date: 2020-02-20 17:28+0100\n"
"PO-Revision-Date: 2019-09-30 13:00+0000\n" "PO-Revision-Date: 2019-09-30 13:00+0000\n"
"Last-Translator: Алексей Леньшин <alenshin@gmail.com>\n" "Last-Translator: Алексей Леньшин <alenshin@gmail.com>\n"
"Language: ru\n" "Language: ru\n"
@ -50,23 +50,19 @@ msgstr "Не содержит списка электронных адресов
#: src/api/utils.js:58 #: src/api/utils.js:58
msgid "The session is expired. Please log in again." msgid "The session is expired. Please log in again."
msgstr "" msgstr "Ваша сессия закончилась. Пожалуйста, залогинитесь заново."
#: src/api/utils.js:63 #: src/api/utils.js:63
msgid "Timeout error occurred." msgid "Timeout error occurred."
msgstr "" msgstr "Произошла ошибка ожидания ответа сервера."
#: src/api/utils.js:66 #: src/api/utils.js:66
msgid "No response received." msgid "No response received."
msgstr "" msgstr "Ответ не получен."
#: src/api/utils.js:70 #: src/api/utils.js:76
msgid "An unknown error occurred. Check the console for more info."
msgstr ""
#: src/api/utils.js:77
msgid "An unknown API error occurred." msgid "An unknown API error occurred."
msgstr "" msgstr "Неизвестная ошибка программного интерфейса приложения."
#: src/common/RebootButton.js:33 #: src/common/RebootButton.js:33
#, fuzzy #, fuzzy
@ -250,13 +246,15 @@ msgstr ""
"Гостевая сеть.\n" "Гостевая сеть.\n"
" " " "
#: src/form/components/ForisForm.js:107 #: src/form/components/ForisForm.js:112
msgid "Settings saved successfully" msgid "Settings saved successfully"
msgstr "" msgstr "Настройки были успешно сохранены"
#: src/form/components/ForisForm.js:160 #: src/form/components/ForisForm.js:165
msgid "Changes you made may not be saved. Are you sure you want to leave?" msgid "Changes you made may not be saved. Are you sure you want to leave?"
msgstr "" msgstr ""
"В случае выхода ваши изменения будут утеряны. Вы действительно хотите "
"покинуть эту страницу?"
#: src/form/components/SubmitButton.js:32 #: src/form/components/SubmitButton.js:32
msgid "Updating" msgid "Updating"
@ -272,5 +270,10 @@ msgstr "Сохранить"
#: src/utils/ErrorMessage.js:16 #: src/utils/ErrorMessage.js:16
msgid "An error occurred while fetching data." msgid "An error occurred while fetching data."
msgstr "" msgstr "Во время получения данных произошла ошибка."
#~ msgid "An unknown error occurred. Check the console for more info."
#~ 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: 2020-01-20 16:26+0100\n" "POT-Creation-Date: 2020-02-20 17:28+0100\n"
"PO-Revision-Date: 2019-08-28 17:56+0200\n" "PO-Revision-Date: 2019-08-28 17:56+0200\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language: sk\n" "Language: sk\n"
@ -58,11 +58,7 @@ msgstr ""
msgid "No response received." msgid "No response received."
msgstr "" msgstr ""
#: src/api/utils.js:70 #: src/api/utils.js:76
msgid "An unknown error occurred. Check the console for more info."
msgstr ""
#: src/api/utils.js:77
msgid "An unknown API error occurred." msgid "An unknown API error occurred."
msgstr "" msgstr ""
@ -223,11 +219,11 @@ msgid ""
" " " "
msgstr "" msgstr ""
#: src/form/components/ForisForm.js:107 #: src/form/components/ForisForm.js:112
msgid "Settings saved successfully" msgid "Settings saved successfully"
msgstr "" msgstr ""
#: src/form/components/ForisForm.js:160 #: src/form/components/ForisForm.js:165
msgid "Changes you made may not be saved. Are you sure you want to leave?" msgid "Changes you made may not be saved. Are you sure you want to leave?"
msgstr "" msgstr ""
@ -247,3 +243,6 @@ msgstr ""
msgid "An error occurred while fetching data." msgid "An error occurred while fetching data."
msgstr "" msgstr ""
#~ msgid "An unknown error occurred. Check the console for more info."
#~ 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: 2020-01-20 16:26+0100\n" "POT-Creation-Date: 2020-02-20 17:28+0100\n"
"PO-Revision-Date: 2019-08-28 17:56+0200\n" "PO-Revision-Date: 2019-08-28 17:56+0200\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language: sv\n" "Language: sv\n"
@ -58,11 +58,7 @@ msgstr ""
msgid "No response received." msgid "No response received."
msgstr "" msgstr ""
#: src/api/utils.js:70 #: src/api/utils.js:76
msgid "An unknown error occurred. Check the console for more info."
msgstr ""
#: src/api/utils.js:77
msgid "An unknown API error occurred." msgid "An unknown API error occurred."
msgstr "" msgstr ""
@ -223,11 +219,11 @@ msgid ""
" " " "
msgstr "" msgstr ""
#: src/form/components/ForisForm.js:107 #: src/form/components/ForisForm.js:112
msgid "Settings saved successfully" msgid "Settings saved successfully"
msgstr "" msgstr ""
#: src/form/components/ForisForm.js:160 #: src/form/components/ForisForm.js:165
msgid "Changes you made may not be saved. Are you sure you want to leave?" msgid "Changes you made may not be saved. Are you sure you want to leave?"
msgstr "" msgstr ""
@ -247,3 +243,6 @@ msgstr "Spara"
msgid "An error occurred while fetching data." msgid "An error occurred while fetching data."
msgstr "" msgstr ""
#~ msgid "An unknown error occurred. Check the console for more info."
#~ msgstr ""