2021-12-21 15:46:05 +05:00
|
|
|
|
import { useEffect, useState } from 'react'
|
|
|
|
|
import { invokeWebApiWrapperAsync } from '../../components/factory'
|
|
|
|
|
import LoaderPortal from '../../components/LoaderPortal'
|
|
|
|
|
import {
|
|
|
|
|
EditableTable,
|
|
|
|
|
makeActionHandler,
|
|
|
|
|
makeColumn,
|
|
|
|
|
makeStringSorter
|
|
|
|
|
} from '../../components/Table'
|
|
|
|
|
import { AdminPermissionService } from '../../services/api'
|
2021-12-22 12:45:30 +05:00
|
|
|
|
import { arrayOrDefault } from '../../utils'
|
2021-12-21 15:46:05 +05:00
|
|
|
|
|
|
|
|
|
const columns = [
|
|
|
|
|
makeColumn('Название', 'name', {
|
|
|
|
|
editable: true,
|
|
|
|
|
sorter: makeStringSorter('name'),
|
|
|
|
|
}),
|
|
|
|
|
makeColumn('Описание', 'description', {
|
|
|
|
|
editable: true,
|
|
|
|
|
sorter: makeStringSorter('description'),
|
|
|
|
|
}),
|
|
|
|
|
]
|
|
|
|
|
|
|
|
|
|
export const PermissionController = () => {
|
|
|
|
|
const [showLoader, setShowLoader] = useState(false)
|
|
|
|
|
const [permissions, setPermissions] = useState([])
|
|
|
|
|
|
2021-12-21 20:35:45 +05:00
|
|
|
|
const updateTable = async () => invokeWebApiWrapperAsync(
|
2021-12-21 15:46:05 +05:00
|
|
|
|
async () => {
|
|
|
|
|
const permission = await AdminPermissionService.getAll()
|
2021-12-22 12:45:30 +05:00
|
|
|
|
setPermissions(arrayOrDefault(permission))
|
2021-12-21 15:46:05 +05:00
|
|
|
|
},
|
|
|
|
|
setShowLoader,
|
|
|
|
|
`Не удалось загрузить список прав`
|
|
|
|
|
)
|
|
|
|
|
|
2021-12-21 20:35:45 +05:00
|
|
|
|
useEffect(() => updateTable(), [])
|
2021-12-21 15:46:05 +05:00
|
|
|
|
|
|
|
|
|
const handlerProps = {
|
|
|
|
|
service: AdminPermissionService,
|
|
|
|
|
setLoader: setShowLoader,
|
|
|
|
|
errorMsg: `Не удалось выполнить операцию`,
|
|
|
|
|
onComplete: updateTable
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return (
|
|
|
|
|
<LoaderPortal show={showLoader}>
|
|
|
|
|
<EditableTable
|
|
|
|
|
bordered
|
|
|
|
|
size={'small'}
|
|
|
|
|
columns={columns}
|
|
|
|
|
dataSource={permissions}
|
|
|
|
|
onRowAdd={makeActionHandler('insert', handlerProps)}
|
|
|
|
|
onRowEdit={makeActionHandler('update', handlerProps)}
|
|
|
|
|
onRowDelete={makeActionHandler('delete', handlerProps)}
|
|
|
|
|
/>
|
|
|
|
|
</LoaderPortal>
|
|
|
|
|
)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export default PermissionController
|