From d000f7508f6d7384afffafee4179151fca802ca8 Mon Sep 17 00:00:00 2001 From: Sabir Hassan Date: Tue, 17 May 2022 15:42:29 +0500 Subject: [PATCH] fix: move permission filter modal to separate file and icons for different actions --- web/src/containers/Settings/permission.tsx | 155 ++++-------------- .../Settings/permissionFilterModal.tsx | 124 ++++++++++++++ 2 files changed, 156 insertions(+), 123 deletions(-) create mode 100644 web/src/containers/Settings/permissionFilterModal.tsx diff --git a/web/src/containers/Settings/permission.tsx b/web/src/containers/Settings/permission.tsx index d697151..42e2854 100644 --- a/web/src/containers/Settings/permission.tsx +++ b/web/src/containers/Settings/permission.tsx @@ -1,8 +1,7 @@ -import React, { useState, useEffect, Dispatch, SetStateAction } from 'react' +import React, { useState, useEffect } from 'react' import axios from 'axios' import { Box, - Button, Table, TableBody, TableCell, @@ -13,18 +12,17 @@ import { Grid, CircularProgress, IconButton, - Dialog, - DialogContent, - DialogActions, - TextField + Tooltip } from '@mui/material' -import Autocomplete from '@mui/material/Autocomplete' import FilterListIcon from '@mui/icons-material/FilterList' +import AddIcon from '@mui/icons-material/Add' +import EditIcon from '@mui/icons-material/Edit' +import DeleteForeverIcon from '@mui/icons-material/DeleteForever' import { styled } from '@mui/material/styles' -import { BootstrapDialogTitle } from '../../components/dialogTitle' +import PermissionFilterModal from './permissionFilterModal' interface UserResponse { id: number @@ -38,7 +36,7 @@ interface GroupResponse { description: string } -interface PermissionResponse { +export interface PermissionResponse { permissionId: number uri: string setting: string @@ -50,15 +48,6 @@ const BootstrapTableCell = styled(TableCell)({ textAlign: 'left' }) -const BootstrapDialog = styled(Dialog)(({ theme }) => ({ - '& .MuiDialogContent-root': { - padding: theme.spacing(2) - }, - '& .MuiDialogActions-root': { - padding: theme.spacing(1) - } -})) - const Permission = () => { const [isLoading, setIsLoading] = useState(false) const [filterModalOpen, setFilterModalOpen] = useState(false) @@ -147,10 +136,17 @@ const Permission = () => { - - - setFilterModalOpen(true)} /> - + + + + setFilterModalOpen(true)} /> + + + + + + + @@ -159,7 +155,7 @@ const Permission = () => { /> - { Uri Principal Setting + Action @@ -201,6 +198,18 @@ const PermissionTable = ({ permissions }: PermissionTableProps) => { {displayPrincipal(permission)} {permission.setting} + + + + + + + + + + + + ))} @@ -216,103 +225,3 @@ const displayPrincipal = (permission: PermissionResponse) => { return permission.group?.name } } - -type FilterModalProps = { - open: boolean - handleClose: Dispatch> - permissions: PermissionResponse[] - uriFilter: string[] - setUriFilter: Dispatch> - principalFilter: string[] - setPrincipalFilter: Dispatch> - settingFilter: string[] - setSettingFilter: Dispatch> - applyFilter: () => void - resetFilter: () => void -} - -const FilterModal = ({ - open, - handleClose, - permissions, - uriFilter, - setUriFilter, - principalFilter, - setPrincipalFilter, - settingFilter, - setSettingFilter, - applyFilter, - resetFilter -}: FilterModalProps) => { - const URIs = permissions.map((permission) => permission.uri) - const principals = permissions - .map((permission) => { - if (permission.user) return permission.user.displayName - if (permission.group) return permission.group.name - return '' - }) - .filter((principal) => principal !== '') - - return ( - - - Permission Filter - - - - - { - setUriFilter(newValue) - }} - renderInput={(params) => } - /> - - - { - setPrincipalFilter(newValue) - }} - renderInput={(params) => ( - - )} - /> - - - { - setSettingFilter(newValue) - }} - renderInput={(params) => ( - - )} - /> - - - - - - - - - ) -} diff --git a/web/src/containers/Settings/permissionFilterModal.tsx b/web/src/containers/Settings/permissionFilterModal.tsx new file mode 100644 index 0000000..f7d67e1 --- /dev/null +++ b/web/src/containers/Settings/permissionFilterModal.tsx @@ -0,0 +1,124 @@ +import React, { Dispatch, SetStateAction } from 'react' +import { + Button, + Grid, + Dialog, + DialogContent, + DialogActions, + TextField +} from '@mui/material' +import { styled } from '@mui/material/styles' +import Autocomplete from '@mui/material/Autocomplete' + +import { PermissionResponse } from './permission' +import { BootstrapDialogTitle } from '../../components/dialogTitle' +const BootstrapDialog = styled(Dialog)(({ theme }) => ({ + '& .MuiDialogContent-root': { + padding: theme.spacing(2) + }, + '& .MuiDialogActions-root': { + padding: theme.spacing(1) + } +})) + +type FilterModalProps = { + open: boolean + handleClose: Dispatch> + permissions: PermissionResponse[] + uriFilter: string[] + setUriFilter: Dispatch> + principalFilter: string[] + setPrincipalFilter: Dispatch> + settingFilter: string[] + setSettingFilter: Dispatch> + applyFilter: () => void + resetFilter: () => void +} + +const PermissionFilterModal = ({ + open, + handleClose, + permissions, + uriFilter, + setUriFilter, + principalFilter, + setPrincipalFilter, + settingFilter, + setSettingFilter, + applyFilter, + resetFilter +}: FilterModalProps) => { + const URIs = permissions.map((permission) => permission.uri) + const principals = permissions + .map((permission) => { + if (permission.user) return permission.user.displayName + if (permission.group) return permission.group.name + return '' + }) + .filter((principal) => principal !== '') + + return ( + + + Permission Filter + + + + + { + setUriFilter(newValue) + }} + renderInput={(params) => } + /> + + + { + setPrincipalFilter(newValue) + }} + renderInput={(params) => ( + + )} + /> + + + { + setSettingFilter(newValue) + }} + renderInput={(params) => ( + + )} + /> + + + + + + + + + ) +} + +export default PermissionFilterModal