CFE-4 Merge branch 'feature/CFE-4_role_management_page' into 'develop'

This commit is contained in:
AmirHossein Mahmoodi
2023-10-10 13:41:44 +00:00
6 changed files with 80 additions and 58 deletions

View File

@@ -76,7 +76,10 @@ export const handler = [
],
updated_at: "2023-10-10T07:38:12.000000Z"
}
]
],
meta : {
totalRowCount : 2
}
}
),
);

View File

@@ -34,7 +34,7 @@
"dashboard": "داشبورد",
"change-password": "تغییر رمز عبور",
"edit-profile": "ویرایش پروفایل",
"role-management": "مدیریت دسترسی",
"role-management": "مدیریت نقش ها",
"admin": "مدیریت"
},
"secondary": {
@@ -74,7 +74,7 @@
"dashboard_page": "داشبورد",
"change_password": "تغییر رمز عبور",
"edit_profile": "ویرایش پروفایل",
"role_management_page": "مدیریت دسترسی"
"role_management_page": "مدیریت نقش ها"
},
"MuiDatePicker": {
"date_picker_birthday": "تاریخ"
@@ -157,6 +157,7 @@
"type_id": "نوع کاربر",
"navgan_id": "کد ناوگان",
"button-cancel": "انصراف",
"loading_permissions_list": "درحال دریافت لیست دسترسی ها",
"button-add": "ثبت"
},
"UpdateDialog": {
@@ -179,6 +180,7 @@
"permission_min_error": "حداقل باید یک دسترسی انتخاب شود",
"type_id": "نوع کاربر",
"navgan_id": "کد ناوگان",
"loading_permissions_list": "درحال دریافت لیست دسترسی ها",
"button-update": "ثبت"
},
"DeleteDialog": {

View File

@@ -1,6 +1,6 @@
import {
Button,
Checkbox,
Checkbox, CircularProgress,
DialogActions,
DialogContent, DialogTitle,
FormControl,
@@ -9,7 +9,7 @@ import {
FormLabel,
Grid,
Stack,
TextField
TextField, Typography
} from "@mui/material";
import {useTranslations} from "next-intl";
import useRequest from "@/lib/app/hooks/useRequest";
@@ -21,7 +21,7 @@ import usePermissions from "@/lib/app/hooks/usePermissions";
const CreateContent = ({mutate, fetchUrl, setOpenConfirmDialog}) => {
const t = useTranslations();
const requestServer = useRequest({auth: true})
const {permissions_list} = usePermissions()
const {permissions_list, isLoading} = usePermissions()
const validationSchema = Yup.object().shape({
name_en: Yup.string().required(t("AddDialog.name_en_error")),
name_fa: Yup.string().required(t("AddDialog.name_fa_error")),
@@ -95,30 +95,38 @@ const CreateContent = ({mutate, fetchUrl, setOpenConfirmDialog}) => {
fullWidth
>
<FormHelperText>{formik.touched.permissions && formik.errors.permissions}</FormHelperText>
<Grid container spacing={2}>
{permissions_list ? (
permissions_list.map((permission) => (
<Grid key={permission.id} item xs={6}>
<FormControlLabel
control={
<Checkbox
data-testid="PermissionList-checkbox"
checked={formik.values.permissions.includes(permission.id)}
onChange={(e) => {
if (e.target.checked) {
formik.setFieldValue("permissions", [...formik.values.permissions, permission.id])
} else {
formik.setFieldValue("permissions", formik.values.permissions.filter((id) => id !== permission.id))
{isLoading ?
<Stack direction={'row'} alignItems={'center'} spacing={2} justifyContent={'center'}>
<CircularProgress size={20}/>
<Typography variant={'caption'}>{t("AddDialog.loading_permissions_list")}</Typography>
</Stack>
:(
<Grid container spacing={2}>
<>
{permissions_list.map((permission) => (
<Grid key={permission.id} item xs={6}>
<FormControlLabel
control={
<Checkbox
data-testid="PermissionList-checkbox"
checked={formik.values.permissions.includes(permission.id)}
onChange={(e) => {
if (e.target.checked) {
formik.setFieldValue("permissions", [...formik.values.permissions, permission.id])
} else {
formik.setFieldValue("permissions", formik.values.permissions.filter((id) => id !== permission.id))
}
}}
/>
}
}}
/>
}
label={permission.name_fa}
/>
label={permission.name_fa}
/>
</Grid>
))}
</>
</Grid>
))
) : null}
</Grid>
)
}
</FormControl>
</FormLabel>
</Stack>

View File

@@ -24,7 +24,7 @@ const CreateForm = ({mutate, fetchUrl}) => {
{t("AddDialog.add")}
</Button>
</Tooltip>
<Dialog maxWidth={"md"} open={openConfirmDialog}
<Dialog maxWidth={"lg"} open={openConfirmDialog}
PaperProps={{sx: {boxShadow: 'rgba(60, 64, 67, 0.3) 0px 1px 16px 0px, rgba(60, 64, 67, 0.15) 0px 1px 10px 0px'}}}>
<CreateContent mutate={mutate} fetchUrl={fetchUrl} setOpenConfirmDialog={setOpenConfirmDialog}/>
</Dialog>

View File

@@ -1,6 +1,7 @@
import {
Box,
Button,
Checkbox, DialogActions,
Checkbox, CircularProgress, DialogActions,
DialogContent, DialogTitle,
FormControl,
FormControlLabel,
@@ -8,7 +9,7 @@ import {
FormLabel,
Grid,
Stack,
TextField
TextField, Typography
} from "@mui/material";
import {useFormik} from "formik";
import {UPDATE_ROLE_MANAGEMENT} from "@/core/data/apiRoutes";
@@ -22,7 +23,7 @@ const UpdateContent = ({mutate, row, fetchUrl, setOpenConfirmDialog}) => {
const t = useTranslations();
const requestServer = useRequest({auth: true})
const {update_notification} = useNotification()
const {permissions_list} = usePermissions()
const {permissions_list, isLoading} = usePermissions()
const validationSchema = Yup.object().shape({
name_en: Yup.string().required(t("UpdateDialog.name_en_error")),
@@ -94,30 +95,37 @@ const UpdateContent = ({mutate, row, fetchUrl, setOpenConfirmDialog}) => {
fullWidth
>
<FormHelperText>{formik.touched.permissions && formik.errors.permissions}</FormHelperText>
<Grid container spacing={2}>
{permissions_list ? (
permissions_list.map((permission) => (
<Grid key={permission.id} item xs={6}>
<FormControlLabel
control={
<Checkbox
data-testid="PermissionList-checkbox"
checked={formik.values.permissions.includes(permission.id)}
onChange={(e) => {
if (e.target.checked) {
formik.setFieldValue("permissions", [...formik.values.permissions, permission.id])
} else {
formik.setFieldValue("permissions", formik.values.permissions.filter((id) => id !== permission.id))
}
}}
{isLoading ?
<Stack direction={'row'} alignItems={'center'} spacing={2} justifyContent={'center'}>
<CircularProgress size={20}/>
<Typography variant={'caption'}>{t("UpdateDialog.loading_permissions_list")}</Typography>
</Stack>
:(
<Grid container spacing={2}>
<>
{permissions_list.map((permission) => (
<Grid key={permission.id} item xs={6}>
<FormControlLabel
control={
<Checkbox
data-testid="PermissionList-checkbox"
checked={formik.values.permissions.includes(permission.id)}
onChange={(e) => {
if (e.target.checked) {
formik.setFieldValue("permissions", [...formik.values.permissions, permission.id])
} else {
formik.setFieldValue("permissions", formik.values.permissions.filter((id) => id !== permission.id))
}
}}
/>
}
label={permission.name_fa}
/>
}
label={permission.name_fa}
/>
</Grid>
))
) : null}
</Grid>
</Grid>
))}
</>
</Grid>
)}
</FormControl>
</FormLabel>
</Stack>

View File

@@ -11,15 +11,16 @@ const usePermissions = () => {
})
};
const {data} = useSWR(GET_PERMISSIONS_LIST, fetcher, {
const {data, isLoading} = useSWR(GET_PERMISSIONS_LIST, fetcher, {
revalidateIfStale: false,
revalidateOnFocus: false,
revalidateOnReconnect: false
revalidateOnReconnect: false,
keepPreviousData : true
})
const permissions_list = data
//swr config
// render data
return {permissions_list}
return {permissions_list, isLoading}
}
export default usePermissions;