diff options
author | Anton Tananaev <anton@traccar.org> | 2022-05-08 13:16:57 -0700 |
---|---|---|
committer | Anton Tananaev <anton@traccar.org> | 2022-05-08 13:16:57 -0700 |
commit | 2cd374bb9fa941d7e2a6fd8aa5079893a158c98f (patch) | |
tree | f4ee48130592fed5de25dce7af4ac0cbeb017680 /modern/src/form | |
parent | 2352071211b61c10fa5bf5736baaff7809d18bf0 (diff) | |
download | trackermap-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.js | 85 | ||||
-rw-r--r-- | modern/src/form/SelectField.js | 53 |
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; |