* Исправлена ширина колонок контроллера ролей

* Продолжена мемоизация
This commit is contained in:
Александр Сироткин 2022-03-03 19:34:22 +05:00
parent 592cfc30e2
commit 2b227e9777
7 changed files with 34 additions and 33 deletions

View File

@ -1,4 +1,4 @@
import { memo, useEffect, useState } from 'react' import { memo, useCallback, useEffect, useState } from 'react'
import { import {
EditableTable, EditableTable,
@ -40,7 +40,7 @@ export const ClusterController = memo(() => {
makeTimezoneColumn('Зона', 'timezone', null, true, { width: 150 }), makeTimezoneColumn('Зона', 'timezone', null, true, { width: 150 }),
] ]
const updateTable = () => invokeWebApiWrapperAsync( const updateTable = useCallback(() => invokeWebApiWrapperAsync(
async () => { async () => {
const clusters = await AdminClusterService.getAll() const clusters = await AdminClusterService.getAll()
setClusters(arrayOrDefault(clusters)) setClusters(arrayOrDefault(clusters))
@ -48,7 +48,7 @@ export const ClusterController = memo(() => {
setShowLoader, setShowLoader,
`Не удалось загрузить список кустов`, `Не удалось загрузить список кустов`,
'Получение списка кустов' 'Получение списка кустов'
) ), [])
useEffect(() => invokeWebApiWrapperAsync( useEffect(() => invokeWebApiWrapperAsync(
async () => { async () => {
@ -61,7 +61,7 @@ export const ClusterController = memo(() => {
'Получение списка месторождений' 'Получение списка месторождений'
), []) ), [])
useEffect(updateTable, []) useEffect(updateTable, [updateTable])
const handlerProps = { const handlerProps = {
service: AdminClusterService, service: AdminClusterService,

View File

@ -1,4 +1,4 @@
import { memo, useEffect, useState } from 'react' import { memo, useCallback, useEffect, useState } from 'react'
import { import {
EditableTable, EditableTable,
@ -21,10 +21,10 @@ export const CompanyController = memo(() => {
const [companies, setCompanies] = useState([]) const [companies, setCompanies] = useState([])
const [showLoader, setShowLoader] = useState(false) const [showLoader, setShowLoader] = useState(false)
const updateTable = async () => { const updateTable = useCallback(async () => {
const companies = await AdminCompanyService.getAll() const companies = await AdminCompanyService.getAll()
setCompanies(arrayOrDefault(companies)) setCompanies(arrayOrDefault(companies))
} }, [])
useEffect(() => invokeWebApiWrapperAsync( useEffect(() => invokeWebApiWrapperAsync(
async() => { async() => {
@ -51,7 +51,7 @@ export const CompanyController = memo(() => {
setShowLoader, setShowLoader,
`Не удалось загрузить список типов компаний`, `Не удалось загрузить список типов компаний`,
'Получение списка типов команд' 'Получение списка типов команд'
), []) ), [updateTable])
const handlerProps = { const handlerProps = {
service: AdminCompanyService, service: AdminCompanyService,

View File

@ -1,4 +1,4 @@
import { memo, useEffect, useState } from 'react' import { memo, useCallback, useEffect, useState } from 'react'
import { import {
EditableTable, EditableTable,
@ -27,7 +27,7 @@ export const CompanyTypeController = memo(() => {
const [companyTypes, setCompanyTypes] = useState([]) const [companyTypes, setCompanyTypes] = useState([])
const [showLoader, setShowLoader] = useState(false) const [showLoader, setShowLoader] = useState(false)
const updateTable = () => invokeWebApiWrapperAsync( const updateTable = useCallback(() => invokeWebApiWrapperAsync(
async() => { async() => {
const companyTypes = await AdminCompanyTypeService.getAll() const companyTypes = await AdminCompanyTypeService.getAll()
setCompanyTypes(arrayOrDefault(companyTypes)) setCompanyTypes(arrayOrDefault(companyTypes))
@ -35,9 +35,9 @@ export const CompanyTypeController = memo(() => {
setShowLoader, setShowLoader,
`Не удалось загрузить список типов компаний`, `Не удалось загрузить список типов компаний`,
'Получение списка типов компаний' 'Получение списка типов компаний'
) ), [])
useEffect(updateTable, []) useEffect(updateTable, [updateTable])
const handlerProps = { const handlerProps = {
service: AdminCompanyTypeService, service: AdminCompanyTypeService,

View File

@ -1,4 +1,4 @@
import { memo, useEffect, useState } from 'react' import { memo, useCallback, useEffect, useState } from 'react'
import LoaderPortal from '@components/LoaderPortal' import LoaderPortal from '@components/LoaderPortal'
import { invokeWebApiWrapperAsync } from '@components/factory' import { invokeWebApiWrapperAsync } from '@components/factory'
@ -21,7 +21,7 @@ export const DepositController = memo(() => {
const [deposits, setDeposits] = useState([]) const [deposits, setDeposits] = useState([])
const [showLoader, setShowLoader] = useState(false) const [showLoader, setShowLoader] = useState(false)
const updateTable = () => invokeWebApiWrapperAsync( const updateTable = useCallback(() => invokeWebApiWrapperAsync(
async() => { async() => {
const deposits = await AdminDepositService.getAll() const deposits = await AdminDepositService.getAll()
setDeposits(arrayOrDefault(deposits)) setDeposits(arrayOrDefault(deposits))
@ -29,9 +29,9 @@ export const DepositController = memo(() => {
setShowLoader, setShowLoader,
`Не удалось загрузить список месторождении`, `Не удалось загрузить список месторождении`,
'Получение списка месторождений' 'Получение списка месторождений'
) ), [])
useEffect(updateTable, []) useEffect(updateTable, [updateTable])
const handlerProps = { const handlerProps = {
service: AdminDepositService, service: AdminDepositService,

View File

@ -1,4 +1,4 @@
import { memo, useEffect, useState } from 'react' import { memo, useCallback, useEffect, useState } from 'react'
import { import {
EditableTable, EditableTable,
@ -30,7 +30,7 @@ export const PermissionController = memo(() => {
const [showLoader, setShowLoader] = useState(false) const [showLoader, setShowLoader] = useState(false)
const [permissions, setPermissions] = useState([]) const [permissions, setPermissions] = useState([])
const updateTable = async () => invokeWebApiWrapperAsync( const updateTable = useCallback(async () => invokeWebApiWrapperAsync(
async () => { async () => {
const permission = await AdminPermissionService.getAll() const permission = await AdminPermissionService.getAll()
setPermissions(arrayOrDefault(permission)) setPermissions(arrayOrDefault(permission))
@ -38,9 +38,9 @@ export const PermissionController = memo(() => {
setShowLoader, setShowLoader,
`Не удалось загрузить список прав`, `Не удалось загрузить список прав`,
'Получение списка прав' 'Получение списка прав'
) ), [])
useEffect(() => updateTable(), []) useEffect(() => updateTable(), [updateTable])
const handlerProps = { const handlerProps = {
service: AdminPermissionService, service: AdminPermissionService,

View File

@ -1,4 +1,4 @@
import { memo, useEffect, useState } from 'react' import { memo, useCallback, useEffect, useState } from 'react'
import LoaderPortal from '@components/LoaderPortal' import LoaderPortal from '@components/LoaderPortal'
import { PermissionView, RoleView } from '@components/views' import { PermissionView, RoleView } from '@components/views'
@ -15,20 +15,21 @@ export const RoleController = memo(() => {
const [showLoader, setShowLoader] = useState(false) const [showLoader, setShowLoader] = useState(false)
const [columns, setColumns] = useState([]) const [columns, setColumns] = useState([])
const loadRoles = async () => { const loadRoles = useCallback(async () => {
const roles = await AdminUserRoleService.getAll() const roles = await AdminUserRoleService.getAll()
setRoles(arrayOrDefault(roles)) setRoles(arrayOrDefault(roles))
} }, [])
useEffect(() => { useEffect(() => {
setColumns([ setColumns([
makeColumn('Название', 'caption', { width: 200, editable: true, formItemRules: min1 }), makeColumn('Название', 'caption', { width: 100, editable: true, formItemRules: min1 }),
makeTagColumn('Включённые роли', 'roles', roles, 'id', 'caption', { makeTagColumn('Включённые роли', 'roles', roles, 'id', 'caption', {
width: 200, width: 400,
editable: true, editable: true,
render: (role) => <RoleView role={role} /> render: (role) => <RoleView role={role} />
}, { allowClear: true }), }, { allowClear: true }),
makeTagColumn('Разрешения', 'permissions', permissions, 'id', 'name', { makeTagColumn('Разрешения', 'permissions', permissions, 'id', 'name', {
width: 600,
editable: true, editable: true,
render: (permission) => <PermissionView info={permission} />, render: (permission) => <PermissionView info={permission} />,
}), }),
@ -44,7 +45,7 @@ export const RoleController = memo(() => {
setShowLoader, setShowLoader,
`Не удалось загрузить список ролей`, `Не удалось загрузить список ролей`,
'Получение списка ролей' 'Получение списка ролей'
), []) ), [loadRoles])
const handlerProps = { const handlerProps = {
service: AdminUserRoleService, service: AdminUserRoleService,

View File

@ -35,6 +35,11 @@ const wellTypes = [
{ value: 2, label: 'Горизонтальная' }, { value: 2, label: 'Горизонтальная' },
] ]
const recordParser = (record) => ({
...record,
idTelemetry: record.telemetry?.id,
})
export const WellController = memo(() => { export const WellController = memo(() => {
const [columns, setColumns] = useState([]) const [columns, setColumns] = useState([])
const [wells, setWells] = useState([]) const [wells, setWells] = useState([])
@ -54,14 +59,14 @@ export const WellController = memo(() => {
// TODO: Метод дубликации скважины // TODO: Метод дубликации скважины
} }
const addititonalButtons = (record, editingKey) => ( const addititonalButtons = memo((record, editingKey) => (
<Button <Button
icon={<CopyOutlined />} icon={<CopyOutlined />}
title={'Дублировать скважину'} title={'Дублировать скважину'}
disabled={(editingKey ?? '') !== ''} disabled={(editingKey ?? '') !== ''}
onClick={() => duplicateWell(record)} onClick={() => duplicateWell(record)}
/> />
) ))
useEffect(() => invokeWebApiWrapperAsync( useEffect(() => invokeWebApiWrapperAsync(
async () => { async () => {
@ -109,11 +114,6 @@ export const WellController = memo(() => {
'Получение списка кустов' 'Получение списка кустов'
), []) ), [])
const recordParser = (record) => ({
...record,
idTelemetry: record.telemetry?.id,
})
const handlerProps = { const handlerProps = {
service: AdminWellService, service: AdminWellService,
setLoader: setShowLoader, setLoader: setShowLoader,