Merge branch 'dev' into feature/CF2-87-Archive-page-redesign

This commit is contained in:
goodmice 2021-11-15 11:54:33 +05:00
commit 4f0e30127c
4 changed files with 34 additions and 50 deletions

View File

@ -5,7 +5,7 @@ import {invokeWebApiWrapperAsync, download} from '../../components/factory'
import DocumentsTemplate from './DocumentsTemplate' import DocumentsTemplate from './DocumentsTemplate'
import LoaderPortal from '../../components/LoaderPortal' import LoaderPortal from '../../components/LoaderPortal'
import { Flex } from '../../components/Grid' import { Flex } from '../../components/Grid'
import { WellService } from '../../services/api' import {DrillingProgramService, WellService} from '../../services/api'
const idFileCategoryDrillingProgramItems = 13; const idFileCategoryDrillingProgramItems = 13;
@ -28,10 +28,17 @@ export default function DrillingProgram({idWell}) {
const downloadProgram = () => invokeWebApiWrapperAsync(async()=>{ const downloadProgram = () => invokeWebApiWrapperAsync(async()=>{
await download(urlDownloadProgram) await download(urlDownloadProgram)
}, },
setShowLoader, setShowLoader,
"Не удалось загрузить программу бурения") "Не удалось загрузить программу бурения")
const openProgramPreview = () => invokeWebApiWrapperAsync(async()=>{
const filWebUrl = await DrillingProgramService.getFileWebLink(idWell)
window.open(filWebUrl, '_blank')
},
setShowLoader,
"Не удалось создать быстрый просмотр программы")
const filesUpdated = (files) =>{ const filesUpdated = (files) =>{
if(!files || files.length === 0){ if(!files || files.length === 0){
setTooltip('Нет файлов для формирования программы') setTooltip('Нет файлов для формирования программы')
@ -68,6 +75,14 @@ export default function DrillingProgram({idWell}) {
Программа бурения {wellLabel}.xlsx Программа бурения {wellLabel}.xlsx
</Button> </Button>
</Tooltip> </Tooltip>
<Tooltip title="Перед просмотром программы бурения сначала сформируйте ее.">
<Button
type="primary"
onClick={openProgramPreview}
disabled={!downloadButtonEnabled}>
Сформировать и просмотреть
</Button>
</Tooltip>
</Flex> </Flex>
</div> </div>

View File

@ -14,38 +14,44 @@ const { Search } = Input
// Словарь категорий для строк таблицы // Словарь категорий для строк таблицы
const categoryDictionary = { const categoryDictionary = {
1: {title: 'Авария'}, 1: {title: 'Важное'},
2: {title: 'Предупреждение'}, 2: {title: 'Предупреждение'},
3: {title: 'Информация'}, 3: {title: 'Информация'},
} }
const columns = [ // Конфигурация таблицы
export const columns = [
{ {
width: '10%', width: '10rem',
title: 'Дата', title: 'Дата',
key: 'date', key: 'date',
dataIndex: 'date', dataIndex: 'date',
render: item => moment(item).format('DD MMM YYYY, HH:mm:ss'), render: item => moment(item).format('DD MMM YYYY, HH:mm:ss'),
sorter: (a, b) => new Date(b.date) - new Date(a.date),
sortDirections: ['descend', 'ascend'],
}, { }, {
width: '10%', width: '10rem',
title: 'Глубина', title: 'Глубина',
key: 'wellDepth', key: 'wellDepth',
dataIndex: 'wellDepth', dataIndex: 'wellDepth',
render: depth => <span>{depth.toFixed(2)} м.</span>, render: depth => <span>{depth.toFixed(2)} м.</span>,
}, { }, {
width: '10%', width: '10rem',
title: 'Категория', title: 'Категория',
key: 'categoryId', key: 'categoryId',
dataIndex: 'categoryId', dataIndex: 'categoryId',
render: (_, item) => categoryDictionary[item.categoryId].title, render: (_, item) => categoryDictionary[item.categoryId].title,
style: (_, item) => categoryDictionary[item.categoryId].style, style: (_, item) => categoryDictionary[item.categoryId]?.style,
sorter: (a, b) => a.categoryId - b.categoryId,
sortDirections: ['descend', 'ascend'],
ellipsis: true, ellipsis: true,
}, { }, {
title: 'Сообщение', title: 'Сообщение',
key: 'message', key: 'message',
dataIndex: 'message', dataIndex: 'message',
onFilter: (value, record) => record.name.indexOf(value) === 0,
}, { }, {
width: '10%', width: '10rem',
title: 'Пользователь', title: 'Пользователь',
key: 'user', key: 'user',
dataIndex: 'user', dataIndex: 'user',

View File

@ -1,51 +1,14 @@
import {useState, useEffect} from 'react' import {useState, useEffect} from 'react'
import {Table} from "antd"; import {Table} from 'antd'
import moment from 'moment'
import LoaderPortal from '../../components/LoaderPortal' import LoaderPortal from '../../components/LoaderPortal'
import {invokeWebApiWrapperAsync} from '../../components/factory' import {invokeWebApiWrapperAsync} from '../../components/factory'
import {columns} from '../Messages'
import {Subscribe} from '../../services/signalr' import {Subscribe} from '../../services/signalr'
import {MessageService} from '../../services/api' import {MessageService} from '../../services/api'
import '../../styles/message.css' import '../../styles/message.css'
// Словарь категорий для строк таблицы
const categoryDictionary = {
1: {title: 'Важное'},
2: {title: 'Предупреждение'},
3: {title: 'Информация'},
}
// Конфигурация таблицы
const columns = [
{
title: 'Дата',
dataIndex: 'date',
render: (item) => moment(item).format('DD MMM YYYY, HH:mm:ss'),
sorter: (a, b) => new Date(b.date) - new Date(a.date),
sortDirections: ['descend', 'ascend'],
}, {
title: 'Глубина',
key: 'wellDepth',
dataIndex: 'wellDepth',
render: depth => <span>Глубина {depth.toFixed(2)} м.</span>,
}, {
title: 'Категория',
dataIndex: 'categoryId',
render: (_, item) => categoryDictionary[item.categoryId]?.title,
style: (_, item) => categoryDictionary[item.categoryId]?.style,
sorter: (a, b) => a.categoryId - b.categoryId,
sortDirections: ['descend', 'ascend'],
}, {
title: 'Сообщение',
dataIndex: 'message',
onFilter: (value, record) => record.name.indexOf(value) === 0,
}, {
title: 'Пользователь',
dataIndex: 'user',
},
];
export default function ActiveMessagesOnline({idWell}) { export default function ActiveMessagesOnline({idWell}) {
const [messages, setMessages] = useState([]) const [messages, setMessages] = useState([])
const [loader, setLoader] = useState(false) const [loader, setLoader] = useState(false)
@ -56,7 +19,7 @@ export default function ActiveMessagesOnline({idWell}) {
} }
} }
useEffect(() => { useEffect(() => {
invokeWebApiWrapperAsync( invokeWebApiWrapperAsync(
async () => { async () => {
const messages = await MessageService.getMessages(idWell, 0, 4) const messages = await MessageService.getMessages(idWell, 0, 4)

View File

@ -22,7 +22,7 @@ export class DrillingProgramService {
} }
/** /**
* Создает программу бурения * Возвращает ссылку на файл программы бурения в облаке
* @param idWell id скважины * @param idWell id скважины
* @returns string Success * @returns string Success
* @throws ApiError * @throws ApiError