forked from ddrilling/asb_cloud_front
Added filters to WellOperations Plan/Fact tables
This commit is contained in:
parent
7a7a4663c5
commit
fb8d693a15
@ -92,6 +92,15 @@ export const makeStringSorter = (key: string) => (a: any, b: any) =>
|
|||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export const makeDateSorter = (key: string) => (a: any, b: any) => {
|
||||||
|
const date = new Date(a[key])
|
||||||
|
|
||||||
|
if(Number.isNaN(date.getTime()))
|
||||||
|
throw new Error('Date column contains not date formatted string(s)')
|
||||||
|
|
||||||
|
return date.getTime() - new Date(b[key]).getTime()
|
||||||
|
}
|
||||||
|
|
||||||
export const makeGroupColumn = (title: string, children: object[]) => ({
|
export const makeGroupColumn = (title: string, children: object[]) => ({
|
||||||
title: title,
|
title: title,
|
||||||
children: children,
|
children: children,
|
||||||
|
@ -1,7 +1,14 @@
|
|||||||
import { useState, useEffect } from 'react'
|
import { useState, useEffect } from 'react'
|
||||||
import { Input } from 'antd'
|
import { Input } from 'antd'
|
||||||
import moment from 'moment'
|
import moment from 'moment'
|
||||||
import { EditableTable, DatePickerWrapper, SelectFromDictionary, numericColumnOptions, makeColumn } from "../../components/Table"
|
import {
|
||||||
|
EditableTable,
|
||||||
|
DatePickerWrapper,
|
||||||
|
SelectFromDictionary,
|
||||||
|
makeColumn,
|
||||||
|
numericColumnOptions,
|
||||||
|
makeNumericSorter,
|
||||||
|
makeDateSorter } from "../../components/Table"
|
||||||
import LoaderPortal from '../../components/LoaderPortal'
|
import LoaderPortal from '../../components/LoaderPortal'
|
||||||
import { invokeWebApiWrapperAsync } from '../../components/factory'
|
import { invokeWebApiWrapperAsync } from '../../components/factory'
|
||||||
import { WellOperationService} from '../../services/api'
|
import { WellOperationService} from '../../services/api'
|
||||||
@ -12,6 +19,11 @@ const { TextArea } = Input;
|
|||||||
const basePageSize = 160;
|
const basePageSize = 160;
|
||||||
const format='YYYY.MM.DD HH:mm'
|
const format='YYYY.MM.DD HH:mm'
|
||||||
|
|
||||||
|
const numericSortColumnOptions = Object.assign({
|
||||||
|
sorter: makeNumericSorter('wellDepth')
|
||||||
|
}, numericColumnOptions)
|
||||||
|
|
||||||
|
|
||||||
export const WellOperationsEditor = ({idWell, idType}) => {
|
export const WellOperationsEditor = ({idWell, idType}) => {
|
||||||
const [pageNumAndPageSize, setPageNumAndPageSize] = useState({current:1, pageSize:basePageSize})
|
const [pageNumAndPageSize, setPageNumAndPageSize] = useState({current:1, pageSize:basePageSize})
|
||||||
const [paginationTotal, setPaginationTotal] = useState(0)
|
const [paginationTotal, setPaginationTotal] = useState(0)
|
||||||
@ -31,7 +43,9 @@ export const WellOperationsEditor = ({idWell, idType}) => {
|
|||||||
async () => {
|
async () => {
|
||||||
const skip = ((pageNumAndPageSize.current - 1) * pageNumAndPageSize.pageSize) || 0
|
const skip = ((pageNumAndPageSize.current - 1) * pageNumAndPageSize.pageSize) || 0
|
||||||
const take = pageNumAndPageSize.pageSize
|
const take = pageNumAndPageSize.pageSize
|
||||||
const paginatedOperations = await WellOperationService.getOperations(idWell, idType, undefined, undefined, undefined, undefined, undefined, undefined, skip, take )
|
const paginatedOperations = await WellOperationService.getOperations(idWell,
|
||||||
|
idType, undefined, undefined, undefined, undefined,
|
||||||
|
undefined, undefined, skip, take )
|
||||||
const operations = paginatedOperations?.items ?? []
|
const operations = paginatedOperations?.items ?? []
|
||||||
setOperations(operations)
|
setOperations(operations)
|
||||||
const total = paginatedOperations.count?? paginatedOperations.items?.length ?? 0
|
const total = paginatedOperations.count?? paginatedOperations.items?.length ?? 0
|
||||||
@ -57,11 +71,12 @@ export const WellOperationsEditor = ({idWell, idType}) => {
|
|||||||
render:(_, record)=>getByKeyOrReturnKey(dictionaryOperationCategory, record.idCategory)
|
render:(_, record)=>getByKeyOrReturnKey(dictionaryOperationCategory, record.idCategory)
|
||||||
}),
|
}),
|
||||||
makeColumn('Доп. инфо','categoryInfo', {editable:true, width:300, input:<TextArea/>}),
|
makeColumn('Доп. инфо','categoryInfo', {editable:true, width:300, input:<TextArea/>}),
|
||||||
makeColumn('Глубина забоя','wellDepth', numericColumnOptions),
|
makeColumn('Глубина забоя','wellDepth', numericSortColumnOptions),
|
||||||
makeColumn('Время начала','startDate', {
|
makeColumn('Время начала','startDate', {
|
||||||
editable:true,
|
editable:true,
|
||||||
width:200,
|
width:200,
|
||||||
input:<DatePickerWrapper/>,
|
input:<DatePickerWrapper/>,
|
||||||
|
sorter: makeDateSorter('startDate'),
|
||||||
render:(_, record) => moment.utc(record.startDate).local().format(format)
|
render:(_, record) => moment.utc(record.startDate).local().format(format)
|
||||||
}),
|
}),
|
||||||
makeColumn('Часы','durationHours', numericColumnOptions),
|
makeColumn('Часы','durationHours', numericColumnOptions),
|
||||||
|
Loading…
Reference in New Issue
Block a user