summaryrefslogtreecommitdiff
path: root/buildscripts/libdeps/graph_visualizer_web_stack/src/NodeList.js
blob: eed58ee8875e3858864b339008cf41d699dcf62d (plain)
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
import React from "react";

import { connect } from "react-redux";
import { getNodes } from "./redux/store";
import { setFindNode } from "./redux/findNode";
import { setListSearchTerm } from "./redux/listSearchTerm";
import { socket } from "./connect";

import DataGrid from "./DataGrid";
import LoadingBar from "./LoadingBar";
import TextField from "@material-ui/core/TextField";

const columns = [
  { dataKey: "check", label: "Selected", width: 70 },
  { dataKey: "name", label: "Name", width: 200 },
  { id: "ID", dataKey: "node", label: "Node", width: 200 },
];

const NodeList = ({ nodes, loading, setFindNode, setListSearchTerm}) => {
  function handleCheckBoxes(rowIndex, event) {
    socket.emit("row_selected", {
      data: { node: nodes[rowIndex].node, name: nodes[rowIndex].name },
      isSelected: event.target.checked,
    });
  }

  function handleRowClick(event) {
    setFindNode(event.target.textContent);
  }

  function handleSearchTermChange(event) {
    setListSearchTerm(event.target.value);
  }

  return (
    <LoadingBar loading={loading} height={"95%"}>
      <TextField
        fullWidth
        onChange={handleSearchTermChange}
        onClick={(event)=> event.target.select()}
        label="Search for Node"
      />
      <DataGrid
        rows={nodes}
        columns={columns}
        rowHeight={30}
        headerHeight={35}
        onNodeClicked={handleRowClick}
        onRowSelect={handleCheckBoxes}
      />
    </LoadingBar>
  );
};

export default connect(getNodes, { setFindNode, setListSearchTerm })(NodeList);