diff --git a/frontend/src/components/NetworkMembers/NetworkMembers.jsx b/frontend/src/components/NetworkMembers/NetworkMembers.jsx index b6f843c8..a73beef0 100644 --- a/frontend/src/components/NetworkMembers/NetworkMembers.jsx +++ b/frontend/src/components/NetworkMembers/NetworkMembers.jsx @@ -3,8 +3,10 @@ import { AccordionDetails, AccordionSummary, Checkbox, + Divider, Grid, IconButton, + TextField, Typography, } from "@material-ui/core"; import ExpandMoreIcon from "@material-ui/icons/ExpandMore"; @@ -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 { @@ -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 = [ { @@ -169,12 +174,45 @@ function NetworkMembers({ network }) { + + + Search (Addr/Name) + setFilter(e.target.value)} + /> + + + Display Filter + setFilterActive(e.target.checked)} + /> + Active + setFilterInactive(e.target.checked)} + /> + Inactive + + + {members.length ? ( { + return ( + (x.name.includes(filter) || x.id.includes(filter)) && + (filterActive ? x.online === 1 : true) && + (filterInactive ? x.online === 0 : true) + ) + }) + } /> ) : (