diff --git a/portal-ui/src/screens/Console/Policies/PolicyDetails.tsx b/portal-ui/src/screens/Console/Policies/PolicyDetails.tsx index 033464d89b..13fff00d13 100644 --- a/portal-ui/src/screens/Console/Policies/PolicyDetails.tsx +++ b/portal-ui/src/screens/Console/Policies/PolicyDetails.tsx @@ -27,13 +27,19 @@ import { Button, LinearProgress } from "@material-ui/core"; import Tabs from "@material-ui/core/Tabs"; import Tab from "@material-ui/core/Tab"; import TableWrapper from "../Common/TableWrapper/TableWrapper"; -import { User } from "../Users/types"; import api from "../../../common/api"; import PageHeader from "../Common/PageHeader/PageHeader"; import { Link } from "react-router-dom"; import { setErrorSnackMessage } from "../../../actions"; import CodeMirrorWrapper from "../Common/FormComponents/CodeMirrorWrapper/CodeMirrorWrapper"; import history from "../../../history"; +import InputAdornment from "@material-ui/core/InputAdornment"; +import SearchIcon from "@material-ui/icons/Search"; +import { + actionsTray, + searchField, +} from "../Common/FormComponents/common/styleLibrary"; +import TextField from "@material-ui/core/TextField"; interface IPolicyDetailsProps { classes: any; @@ -85,9 +91,6 @@ const styles = (theme: Theme) => margin: "5px 0px", }, }, - actionsTray: { - textAlign: "right", - }, updateButton: { backgroundColor: "transparent", border: 0, @@ -148,6 +151,8 @@ const styles = (theme: Theme) => textDecoration: "none", color: "black", }, + ...actionsTray, + ...searchField, ...modalBasic, ...containerForHeader(theme.spacing(4)), }); @@ -160,13 +165,15 @@ const PolicyDetails = ({ }: IPolicyDetailsProps) => { const [selectedTab, setSelectedTab] = useState(0); const [policy, setPolicy] = useState(null); - const [userList, setUserList] = useState([]); + const [userList, setUserList] = useState([]); const [addLoading, setAddLoading] = useState(false); const [policyName, setPolicyName] = useState( match.params["policyName"] ); const [policyDefinition, setPolicyDefinition] = useState(""); const [loadingPolicy, setLoadingPolicy] = useState(true); + const [filterUsers, setFilterUsers] = useState(""); + const [loadingUsers, setLoadingUsers] = useState(true); const saveRecord = (event: React.FormEvent) => { event.preventDefault(); @@ -191,14 +198,18 @@ const PolicyDetails = ({ useEffect(() => { const loadUsersForPolicy = () => { - api - .invoke("GET", `/api/v1/policies/${policyName}/users`) - .then((result: any) => { - setUserList(result); - }) - .catch((err) => { - console.log("Error in loading users"); - }); + if (loadingUsers) { + api + .invoke("GET", `/api/v1/policies/${policyName}/users`) + .then((result: any) => { + setUserList(result); + setLoadingUsers(false); + }) + .catch((err) => { + setErrorSnackMessage(err); + setLoadingUsers(false); + }); + } }; const loadPolicyDetails = () => { if (loadingPolicy) { @@ -214,7 +225,8 @@ const PolicyDetails = ({ setLoadingPolicy(false); }) .catch((err) => { - console.log("Error in loading policy"); + setErrorSnackMessage(err); + setLoadingPolicy(false); }); } }; @@ -223,7 +235,16 @@ const PolicyDetails = ({ loadPolicyDetails(); loadUsersForPolicy(); } - }, [policyName, loadingPolicy]); + }, [ + policyName, + loadingPolicy, + loadingUsers, + setErrorSnackMessage, + setUserList, + setPolicyDefinition, + setPolicy, + setLoadingUsers, + ]); const resetForm = () => { setPolicyName(""); @@ -237,6 +258,10 @@ const PolicyDetails = ({ }; const userTableActions = [{ type: "view", onClick: userViewAction }]; + const filteredUsers = userList.filter((elementItem) => + elementItem.includes(filterUsers) + ); + return ( } /> - - - - { - setSelectedTab(newValue); + + + { + setSelectedTab(newValue); + }} + aria-label="policy-tabs" + > + + + + + {selectedTab === 0 && ( + +
) => { + saveRecord(e); }} - aria-label="policy-tabs" > - - - - - - {selectedTab === 0 && ( - - ) => { - saveRecord(e); - }} - > - - - { - setPolicyDefinition(value); - }} - /> - - - {!policy && ( - - )} + + + { + setPolicyDefinition(value); + }} + /> + + + {!policy && ( + + )} - - - {addLoading && ( - - - - )} + + + {addLoading && ( + + - - - )} - {selectedTab === 1 && ( - + +
+ )} + {selectedTab === 1 && ( + + + { + setFilterUsers(val.target.value); + }} + InputProps={{ + disableUnderline: true, + startAdornment: ( + + + + ), + }} /> - )} + + +
+
+
-
+ )}
);