forked from ddrilling/asb_cloud_front
* Добавлены сортировки по месторождению и названию на странице admin/cluster
* Добавлены сортировки по названию и типу компании на странице admin/company * Добавлены сортировки по кусту, названию и типу скважины на странице admin/well * Временно добавлено исключение для пользователя dev при проверке прав * Станадртное кол-во отображаемых записей увеличено ан странице admin/user * Добавлены сортировки по логину, фамилии, имени, отчеству, e-mail, номеру телефона и должности на странице admin/user
This commit is contained in:
parent
0e24780a91
commit
7ffab81c33
@ -1,7 +1,13 @@
|
||||
import { useEffect, useState } from 'react'
|
||||
import { invokeWebApiWrapperAsync } from '../../components/factory'
|
||||
import LoaderPortal from '../../components/LoaderPortal'
|
||||
import { EditableTable, makeColumn, makeSelectColumn, makeActionHandler } from '../../components/Table'
|
||||
import {
|
||||
EditableTable,
|
||||
makeColumn,
|
||||
makeSelectColumn,
|
||||
makeActionHandler,
|
||||
makeStringSorter
|
||||
} from '../../components/Table'
|
||||
import { AdminClusterService, AdminDepositService } from '../../services/api'
|
||||
|
||||
export default function ClusterController() {
|
||||
@ -10,8 +16,16 @@ export default function ClusterController() {
|
||||
const [showLoader, setShowLoader] = useState(false)
|
||||
|
||||
const clusterColumns = [
|
||||
makeSelectColumn('Месторождение', 'idDeposit', deposits, '--', { width: 200, editable: true }),
|
||||
makeColumn('Название', 'caption', { width: 200, editable: true }),
|
||||
makeSelectColumn('Месторождение', 'idDeposit', deposits, '--', {
|
||||
width: 200,
|
||||
editable: true,
|
||||
sorter: makeStringSorter('idDeposit')
|
||||
}),
|
||||
makeColumn('Название', 'caption', {
|
||||
width: 200,
|
||||
editable: true,
|
||||
sorter: makeStringSorter('caption')
|
||||
}),
|
||||
makeColumn('Широта', 'latitude', { width: 150, editable: true }),
|
||||
makeColumn('Долгота', 'longitude', { width: 150, editable: true })
|
||||
]
|
||||
|
@ -1,12 +1,20 @@
|
||||
import { useEffect, useState } from 'react'
|
||||
import { invokeWebApiWrapperAsync } from '../../components/factory'
|
||||
import LoaderPortal from '../../components/LoaderPortal'
|
||||
import { EditableTable, makeColumn, makeActionHandler } from '../../components/Table'
|
||||
import { EditableTable, makeColumn, makeActionHandler, makeStringSorter } from '../../components/Table'
|
||||
import { AdminCompanyService } from '../../services/api'
|
||||
|
||||
const companyColumns = [
|
||||
makeColumn('Название', 'caption', { width: 200, editable: true }),
|
||||
makeColumn('Тип компании', 'companyTypeCaption', { width: 200, editable: true })
|
||||
makeColumn('Название', 'caption', {
|
||||
width: 200,
|
||||
editable: true,
|
||||
sorter: makeStringSorter('caption')
|
||||
}),
|
||||
makeColumn('Тип компании', 'companyTypeCaption', {
|
||||
width: 200,
|
||||
editable: true,
|
||||
sorter: makeStringSorter('companyTypeCaption')
|
||||
}),
|
||||
]
|
||||
|
||||
export default function CompanyController() {
|
||||
|
@ -1,7 +1,7 @@
|
||||
import { useEffect, useState } from 'react'
|
||||
import { invokeWebApiWrapperAsync } from '../../components/factory'
|
||||
import LoaderPortal from '../../components/LoaderPortal'
|
||||
import { EditableTable, makeColumn, makeSelectColumn, makeActionHandler } from '../../components/Table'
|
||||
import { EditableTable, makeColumn, makeSelectColumn, makeActionHandler, makeStringSorter, makeNumericSorter } from '../../components/Table'
|
||||
import { AdminCompanyService, AdminUserService } from '../../services/api'
|
||||
import { createLoginRules, nameRules, phoneRules, emailRules } from '../../utils/validationRules'
|
||||
|
||||
@ -13,21 +13,42 @@ export default function UserController() {
|
||||
const userColumns = [
|
||||
makeColumn('Логин', 'login', {
|
||||
editable: true,
|
||||
formItemRules: [{ required: true }, ...createLoginRules]
|
||||
formItemRules: [{ required: true }, ...createLoginRules],
|
||||
sorter: makeStringSorter('login'),
|
||||
}),
|
||||
makeColumn('Фамилия', 'surname', {
|
||||
editable: true,
|
||||
formItemRules: [{ required: true }, ...nameRules]
|
||||
formItemRules: [{ required: true }, ...nameRules],
|
||||
sorter: makeStringSorter('surname'),
|
||||
}),
|
||||
makeColumn('Имя', 'name', {
|
||||
editable: true,
|
||||
formItemRules: nameRules,
|
||||
sorter: makeStringSorter('name'),
|
||||
}),
|
||||
makeColumn('Отчество', 'patronymic', {
|
||||
editable: true,
|
||||
formItemRules: nameRules,
|
||||
sorter: makeStringSorter('patronymic'),
|
||||
}),
|
||||
makeColumn('Имя', 'name', { editable: true, formItemRules: nameRules }),
|
||||
makeColumn('Отчество', 'patronymic', { editable: true, formItemRules: nameRules }),
|
||||
makeColumn('E-mail', 'email', {
|
||||
editable: true,
|
||||
formItemRules: [{ required: true }, ...emailRules]
|
||||
formItemRules: [{ required: true }, ...emailRules],
|
||||
sorter: makeStringSorter('email'),
|
||||
}),
|
||||
makeColumn('Номер телефона', 'phone', {
|
||||
editable: true,
|
||||
formItemRules: phoneRules,
|
||||
sorter: makeStringSorter('phone'),
|
||||
}),
|
||||
makeColumn('Должность', 'position', {
|
||||
editable: true,
|
||||
sorter: makeStringSorter('position'),
|
||||
}),
|
||||
makeSelectColumn('Компания', 'idCompany', companies, '--', {
|
||||
editable: true,
|
||||
sorter: makeNumericSorter('idCompany'),
|
||||
}),
|
||||
makeColumn('Номер телефона', 'phone', { editable: true, formItemRules: phoneRules }),
|
||||
makeColumn('Должность', 'position', { editable: true }),
|
||||
makeSelectColumn('Компания', 'idCompany', companies, '--', { editable: true })
|
||||
]
|
||||
|
||||
const updateTable = () => invokeWebApiWrapperAsync(
|
||||
@ -55,7 +76,7 @@ export default function UserController() {
|
||||
service: AdminUserService,
|
||||
setLoader: setShowLoader,
|
||||
errorMsg: `Не удалось выполнить операцию`,
|
||||
onComplete: updateTable
|
||||
onComplete: updateTable,
|
||||
}
|
||||
|
||||
return (
|
||||
@ -68,6 +89,7 @@ export default function UserController() {
|
||||
onRowAdd={makeActionHandler('insert', handlerProps)}
|
||||
onRowEdit={makeActionHandler('update', handlerProps)}
|
||||
onRowDelete={makeActionHandler('delete', handlerProps)}
|
||||
pagination={{ defaultPageSize: 14 }}
|
||||
/>
|
||||
</LoaderPortal>
|
||||
)
|
||||
|
@ -3,8 +3,20 @@ import { memo, useEffect, useState } from 'react'
|
||||
import { TelemetryView } from '../../components/Views'
|
||||
import LoaderPortal from '../../components/LoaderPortal'
|
||||
import { invokeWebApiWrapperAsync } from '../../components/factory'
|
||||
import { EditableTable, makeColumn, makeSelectColumn, makeActionHandler } from '../../components/Table'
|
||||
import { AdminClusterService, AdminTelemetryService, AdminWellService } from '../../services/api'
|
||||
import { getTelemetryLabel } from '../../components/Views/TelemetryView'
|
||||
import {
|
||||
EditableTable,
|
||||
makeColumn,
|
||||
makeSelectColumn,
|
||||
makeActionHandler,
|
||||
makeStringSorter,
|
||||
makeNumericSorter
|
||||
} from '../../components/Table'
|
||||
import {
|
||||
AdminClusterService,
|
||||
AdminTelemetryService,
|
||||
AdminWellService
|
||||
} from '../../services/api'
|
||||
|
||||
const wellTypes = [
|
||||
{ value: 1, label: 'Наклонно-направленная' },
|
||||
@ -17,7 +29,7 @@ const TelemetrySelect = memo(({ telemetry, value, onChange }) => {
|
||||
useEffect(() => {
|
||||
const options = telemetry.map((row) => ({
|
||||
value: row.id,
|
||||
label: `${row.info.deposit}/${row.info.cluster}/${row.info.well}`
|
||||
label: getTelemetryLabel(row.info)
|
||||
}))
|
||||
setOptions(options)
|
||||
}, [telemetry])
|
||||
@ -37,9 +49,21 @@ export default function WellController() {
|
||||
const [telemetry, setTelemetry] = useState([])
|
||||
|
||||
const wellColumns = [
|
||||
makeSelectColumn('Куст', 'idCluster', clusters, '--', { width: 200 , editable: true }),
|
||||
makeColumn('Название', 'caption', { width: 200, editable: true }),
|
||||
makeSelectColumn('Тип', 'idWellType', wellTypes, '--', { width: 150, editable: true }),
|
||||
makeSelectColumn('Куст', 'idCluster', clusters, '--', {
|
||||
width: 200,
|
||||
editable: true,
|
||||
sorter: makeNumericSorter('idCluster'),
|
||||
}),
|
||||
makeColumn('Название', 'caption', {
|
||||
width: 200,
|
||||
editable: true,
|
||||
sorter: makeStringSorter('caption'),
|
||||
}),
|
||||
makeSelectColumn('Тип', 'idWellType', wellTypes, '--', {
|
||||
width: 150,
|
||||
editable: true,
|
||||
sorter: makeNumericSorter('idWellType'),
|
||||
}),
|
||||
makeColumn('Широта', 'latitude', { width: 150, editable: true }),
|
||||
makeColumn('Долгота', 'longitude', { width: 150, editable: true }),
|
||||
makeColumn('Телеметрия', 'telemetry', {
|
||||
|
@ -9,6 +9,9 @@ export const getUserPermissions = (): Permission[] =>
|
||||
|
||||
export const hasPermission = (permission?: Permission): boolean => {
|
||||
if (typeof permission !== 'string') return true
|
||||
|
||||
if (localStorage.getItem('login') === 'dev') return true // TODO: Удалить строку
|
||||
|
||||
return permission in getUserPermissions()
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user