forked from ddrilling/asb_cloud_front
60 lines
2.0 KiB
JavaScript
60 lines
2.0 KiB
JavaScript
import {Button, Tooltip} from 'antd'
|
||
import { useState } from "react"
|
||
import {invokeWebApiWrapperAsync, download} from '../../components/factory'
|
||
import DocumentsTemplate from './DocumentsTemplate'
|
||
import LoaderPortal from '../../components/LoaderPortal'
|
||
|
||
const idFileCategoryDrillingProgramItems = 13;
|
||
|
||
export default function DrillingProgram({idWell}) {
|
||
const [downloadButtonEnabled, selDownloadButtonEnabled] = useState(false)
|
||
const [showLoader, setShowLoader] = useState(false)
|
||
const [tooltip, setTooltip] = useState('нет файлов для формирования')
|
||
|
||
const urlDownloadProgram =`/api/well/${idWell}/drillingProgram`
|
||
|
||
const downloadProgram = () => invokeWebApiWrapperAsync(async()=>{
|
||
await download(urlDownloadProgram)
|
||
},
|
||
setShowLoader,
|
||
"Не удалось загрузить программу бурения")
|
||
|
||
const filesUpdated = (files) =>{
|
||
if(!files || files.length === 0){
|
||
setTooltip('Нет файлов для формирования программы')
|
||
selDownloadButtonEnabled(false)
|
||
return
|
||
}
|
||
|
||
if(files.every(fileInfo => fileInfo?.name.toLowerCase().endsWith('.xlsx'))){
|
||
setTooltip('Программа доступна для скачивания')
|
||
selDownloadButtonEnabled(true)
|
||
}
|
||
else{
|
||
setTooltip('Список файлов содержит недопустимые типы файлов')
|
||
}
|
||
}
|
||
|
||
const downloadButton = <div>
|
||
<span>Программа бурения</span>
|
||
<div>
|
||
<Tooltip title={tooltip}>
|
||
<Button
|
||
type="primary"
|
||
onClick={downloadProgram}
|
||
disabled={!downloadButtonEnabled}>
|
||
Сформировать и скачать
|
||
</Button>
|
||
</Tooltip>
|
||
</div>
|
||
</div>
|
||
|
||
return(<LoaderPortal show={showLoader}>
|
||
<DocumentsTemplate
|
||
idWell={idWell}
|
||
idCategory={idFileCategoryDrillingProgramItems}
|
||
accept='.xlsx'
|
||
headerChild={downloadButton}
|
||
onChange={filesUpdated} />
|
||
</LoaderPortal>)
|
||
} |