blob: c5410ae7c4aecb906299e284898e38501897f80d (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
|
import React, { useContext } from 'react';
import SimpleButton from '../Buttons/SimpleButton';
import SimpleForm from './SimpleForm';
import { OverlayTrigger, Tooltip } from 'react-bootstrap';
import { QueryInputContext } from '../Contexts/QueryInputContext';
import QueryDropdownForm from './QueryDropDownForm';
import AddPropertyButton from '../Buttons/AddPropertyButton';
import QueryInputChild from './QueryInputChild';
export default function QueryInput() {
const { inputs, setInputs, levelZeroParameters, childMap } =
useContext(QueryInputContext);
function removeRow(id) {
const newList = inputs.filter((item) => item.id !== id);
setInputs(newList);
}
const updateInput = (e) => {
e.preventDefault();
const fid = e.target.id.replace('v', '');
const newInputs = inputs.slice();
const index = newInputs.findIndex((element) => element.id === fid);
newInputs[index].input = e.target.value;
setInputs(newInputs);
};
const setPlaceholder = (id) => {
try {
const index = inputs.findIndex((element) => element.id === id);
return inputs[index].typeof;
} catch (error) {
console.log(error);
}
};
const inputList = inputs.map((value) => {
return (
<div key={value.id} id={value.id} className="queryinput">
<QueryDropdownForm choices={levelZeroParameters} id={value.id} />
{value.hasChildren ? (
<>
<AddPropertyButton id={value.id} />
<QueryInputChild id={value.id} />
</>
) : (
<SimpleForm
id={`v${value.id}`}
size="30"
onChange={updateInput}
placeholder={setPlaceholder(value.id)}
/>
)}
<OverlayTrigger
placement="right"
delay={{ show: 250, hide: 400 }}
overlay={<Tooltip id="button-tooltip">Remove row</Tooltip>}
>
<span>
<SimpleButton
id={`b${value.id}`}
className="removeRow"
onClick={() => removeRow(value.id)}
children="-"
></SimpleButton>
</span>
</OverlayTrigger>
<br />
</div>
);
});
return <>{inputList}</>;
}
|