aboutsummaryrefslogtreecommitdiff
path: root/modern/src/form
diff options
context:
space:
mode:
authorAnton Tananaev <anton@traccar.org>2022-05-08 13:16:57 -0700
committerAnton Tananaev <anton@traccar.org>2022-05-08 13:16:57 -0700
commit2cd374bb9fa941d7e2a6fd8aa5079893a158c98f (patch)
treef4ee48130592fed5de25dce7af4ac0cbeb017680 /modern/src/form
parent2352071211b61c10fa5bf5736baaff7809d18bf0 (diff)
downloadtrackermap-web-2cd374bb9fa941d7e2a6fd8aa5079893a158c98f.tar.gz
trackermap-web-2cd374bb9fa941d7e2a6fd8aa5079893a158c98f.tar.bz2
trackermap-web-2cd374bb9fa941d7e2a6fd8aa5079893a158c98f.zip
Reorganize remaining files
Diffstat (limited to 'modern/src/form')
-rw-r--r--modern/src/form/LinkField.js85
-rw-r--r--modern/src/form/SelectField.js53
2 files changed, 0 insertions, 138 deletions
diff --git a/modern/src/form/LinkField.js b/modern/src/form/LinkField.js
deleted file mode 100644
index 81467a1b..00000000
--- a/modern/src/form/LinkField.js
+++ /dev/null
@@ -1,85 +0,0 @@
-import {
- FormControl, InputLabel, MenuItem, Select,
-} from '@material-ui/core';
-import React, { useState } from 'react';
-import { useEffectAsync } from '../reactHelper';
-
-const LinkField = ({
- margin,
- variant,
- label,
- endpointAll,
- endpointLinked,
- baseId,
- keyBase,
- keyLink,
- keyGetter = (item) => item.id,
- titleGetter = (item) => item.name,
-}) => {
- const [items, setItems] = useState();
- const [linked, setLinked] = useState();
-
- useEffectAsync(async () => {
- const response = await fetch(endpointAll);
- if (response.ok) {
- setItems(await response.json());
- }
- }, []);
-
- useEffectAsync(async () => {
- const response = await fetch(endpointLinked);
- if (response.ok) {
- const data = await response.json();
- setLinked(data.map((it) => it.id));
- }
- }, []);
-
- const createBody = (linkId) => {
- const body = {};
- body[keyBase] = baseId;
- body[keyLink] = linkId;
- return body;
- };
-
- const onChange = async (event) => {
- const oldValue = linked;
- const newValue = event.target.value;
- const results = [];
- newValue.filter((it) => !oldValue.includes(it)).forEach((added) => {
- results.push(fetch('/api/permissions', {
- method: 'POST',
- headers: { 'Content-Type': 'application/json' },
- body: JSON.stringify(createBody(added)),
- }));
- });
- oldValue.filter((it) => !newValue.includes(it)).forEach((removed) => {
- results.push(fetch('/api/permissions', {
- method: 'DELETE',
- headers: { 'Content-Type': 'application/json' },
- body: JSON.stringify(createBody(removed)),
- }));
- });
- await Promise.all(results);
- setLinked(newValue);
- };
-
- if (items && linked) {
- return (
- <FormControl margin={margin} variant={variant}>
- <InputLabel>{label}</InputLabel>
- <Select
- multiple
- value={linked}
- onChange={onChange}
- >
- {items.map((item) => (
- <MenuItem key={keyGetter(item)} value={keyGetter(item)}>{titleGetter(item)}</MenuItem>
- ))}
- </Select>
- </FormControl>
- );
- }
- return null;
-};
-
-export default LinkField;
diff --git a/modern/src/form/SelectField.js b/modern/src/form/SelectField.js
deleted file mode 100644
index 420ad19e..00000000
--- a/modern/src/form/SelectField.js
+++ /dev/null
@@ -1,53 +0,0 @@
-import {
- FormControl, InputLabel, MenuItem, Select,
-} from '@material-ui/core';
-import React, { useState } from 'react';
-import { useEffectAsync } from '../reactHelper';
-
-const SelectField = ({
- margin,
- variant,
- label,
- multiple,
- value,
- emptyValue = 0,
- emptyTitle = '\u00a0',
- onChange,
- endpoint,
- data,
- keyGetter = (item) => item.id,
- titleGetter = (item) => item.name,
-}) => {
- const [items, setItems] = useState(data);
-
- useEffectAsync(async () => {
- if (endpoint) {
- const response = await fetch(endpoint);
- if (response.ok) {
- setItems(await response.json());
- }
- }
- }, []);
-
- if (items) {
- return (
- <FormControl margin={margin} variant={variant}>
- <InputLabel>{label}</InputLabel>
- <Select
- multiple={multiple}
- value={value}
- onChange={onChange}
- >
- {!multiple && emptyValue !== null
- && <MenuItem value={emptyValue}>{emptyTitle}</MenuItem>}
- {items.map((item) => (
- <MenuItem key={keyGetter(item)} value={keyGetter(item)}>{titleGetter(item)}</MenuItem>
- ))}
- </Select>
- </FormControl>
- );
- }
- return null;
-};
-
-export default SelectField;