summaryrefslogtreecommitdiffstats
path: root/client/js/app/src/app/pages/querybuilder/Components/Text/QueryInput.jsx
blob: 764e42508bbe02ae3fb56a9ff2632750eca2c639 (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
import React, { useContext } from 'react';
import SimpleButton from '../Buttons/SimpleButton';
import Info from './Info';
import SimpleForm from './SimpleForm';
import { OverlayTrigger, Tooltip } from 'react-bootstrap';
import { QueryInputContext } from '../Contexts/QueryInputContext';
import QueryDropdownFormn from './QueryDropDownForm';

export default function QueryInput({ id }) {
  const choices = ['yql', 'hits', 'offset', 'tracelevel'];

  const { inputs, setInputs } = useContext(QueryInputContext);

  function removeRow(id) {
    const newList = inputs.filter((item) => item.id !== id);
    setInputs(newList);
  }

  const updateInput = (e) => {
    e.preventDefault();
    const fid = parseInt(e.target.id.replace('v', ''));
    const index = inputs.findIndex((element) => element.id === fid);
    inputs[index].input = e.target.value;
    setInputs(inputs);
    console.log(inputs);
  };

  const inputList = inputs.map((value, index) => {
    return (
      <div key={value.id} id={value.id} className="queryinput">
        <QueryDropdownFormn
          choices={choices}
          id={value.id}
        ></QueryDropdownFormn>
        <Info id={value.id} height="15" width="15"></Info>
        <SimpleForm
          id={`v${value.id}`}
          size="30"
          onChange={updateInput}
        ></SimpleForm>
        <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}</>;
}