Skip to content

Commit

Permalink
feat: add search and filter network members
Browse files Browse the repository at this point in the history
  • Loading branch information
NoobTW committed Apr 16, 2023
1 parent 8785b94 commit cb6c647
Showing 1 changed file with 51 additions and 13 deletions.
64 changes: 51 additions & 13 deletions frontend/src/components/NetworkMembers/NetworkMembers.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,10 @@ import {
AccordionDetails,
AccordionSummary,
Checkbox,
Divider,
Grid,
IconButton,
TextField,
Typography,
} from "@material-ui/core";
import ExpandMoreIcon from "@material-ui/icons/ExpandMore";
Expand All @@ -24,6 +26,9 @@ import MemberSettings from "./components/MemberSettings";
function NetworkMembers({ network }) {
const { nwid } = useParams();
const [members, setMembers] = useState([]);
const [filter, setFilter] = useState("");
const [filterActive, setFilterActive] = useState(false);
const [filterInactive, setFilterInactive] = useState(false);

const fetchData = useCallback(async () => {
try {
Expand All @@ -48,21 +53,21 @@ function NetworkMembers({ network }) {

const handleChange =
(member, key1, key2 = null, mode = "text", id = null) =>
(event) => {
const value = parseValue(event, mode, member, key1, key2, id);
(event) => {
const value = parseValue(event, mode, member, key1, key2, id);

const updatedMember = replaceValue({ ...member }, key1, key2, value);
const updatedMember = replaceValue({ ...member }, key1, key2, value);

const index = members.findIndex((item) => {
return item["config"]["id"] === member["config"]["id"];
});
let mutableMembers = [...members];
mutableMembers[index] = updatedMember;
setMembers(mutableMembers);
const index = members.findIndex((item) => {
return item["config"]["id"] === member["config"]["id"];
});
let mutableMembers = [...members];
mutableMembers[index] = updatedMember;
setMembers(mutableMembers);

const data = setValue({}, key1, key2, value);
sendReq(member["config"]["id"], data);
};
const data = setValue({}, key1, key2, value);
sendReq(member["config"]["id"], data);
};

const columns = [
{
Expand Down Expand Up @@ -169,12 +174,45 @@ function NetworkMembers({ network }) {
<IconButton color="primary" onClick={fetchData}>
<RefreshIcon />
</IconButton>
<Grid container>
<Grid item sm={6}>
<Typography>Search (Addr/Name)</Typography>
<TextField
value={filter}
onChange={(e) => setFilter(e.target.value)}
/>
</Grid>
<Grid item sm="auto">
<Typography>Display Filter</Typography>
<Checkbox
checked={filterActive}
color="primary"
onChange={(e) => setFilterActive(e.target.checked)}
/>
<span>Active</span>
<Checkbox
checked={filterInactive}
color="primary"
onChange={(e) => setFilterInactive(e.target.checked)}
/>
<span>Inactive</span>
</Grid>
<Divider />
</Grid>
<Grid container>
{members.length ? (
<DataTable
noHeader={true}
columns={columns}
data={[...members]}
data={[...members]
.filter((x) => {
return (
(x.name.includes(filter) || x.id.includes(filter)) &&
(filterActive ? x.online === 1 : true) &&
(filterInactive ? x.online === 0 : true)
)
})
}
/>
) : (
<Grid
Expand Down

0 comments on commit cb6c647

Please sign in to comment.