CF2-61 DrillingProgram кнопка загрузки доступна только при наличии excel файлов в DocumentsTemplate

This commit is contained in:
Фролов 2021-09-01 12:29:44 +05:00
parent 75657398c6
commit 449a7566b6
2 changed files with 33 additions and 6 deletions

View File

@ -17,7 +17,7 @@ const pageSize = 12
const { RangePicker } = DatePicker
const { Search } = Input
export default function DocumentsTemplate({ idCategory, idWell, accept }) {
export default function DocumentsTemplate({ idCategory, idWell, accept, onChange }) {
const [page, setPage] = useState(1)
const [filterDataRange, setFilterDataRange] = useState([])
const [filterCompanyName, setFilterCompanyName] = useState([])
@ -116,9 +116,7 @@ export default function DocumentsTemplate({ idCategory, idWell, accept }) {
return
const filesInfos = paginatedFiles.items??[]
setFiles(filesInfos)
const newPagination = makePaginationObject(paginatedFiles)
setPagination(newPagination)
},
@ -128,6 +126,10 @@ export default function DocumentsTemplate({ idCategory, idWell, accept }) {
}
useEffect(update, [idWell, idCategory, page, filterDataRange, filterCompanyName, filterFileName])
useEffect(()=>{
if(onChange)
onChange(files)
}, [files, onChange])
const companies = [...new Set(files.map(file=>file.company))]
.filter(company=>company)

View File

@ -1,4 +1,4 @@
import {Button} from 'antd'
import {Button, Tooltip} from 'antd'
import { useState } from "react"
import {invokeWebApiWrapperAsync, download} from '../../components/factory'
import DocumentsTemplate from './DocumentsTemplate'
@ -7,7 +7,9 @@ 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`
@ -17,11 +19,34 @@ export default function DrillingProgram({idWell}) {
setShowLoader,
"Не удалось загрузить программу бурения")
const filesUpdated = (files) =>{
if(!files || files.length === 0){
setTooltip('Нет файлов для формирования программы')
selDownloadButtonEnabled(false)
return
}
if(files.every(fileInfo => fileInfo?.name.endsWith('.xlsx'))){
setTooltip('Программа доступна для скачивания')
selDownloadButtonEnabled(true)
}
else{
setTooltip('Список файлов содержит недопустимые типы файлов')
}
}
return(<LoaderPortal show={showLoader}>
<Button onClick={downloadProgram}>Сформировать программу бурения</Button>
<Tooltip title={tooltip}>
<Button
onClick={downloadProgram}
disabled={!downloadButtonEnabled}>
Сформировать программу бурения
</Button>
</Tooltip>
<DocumentsTemplate
idWell={idWell}
idCategory={idFileCategoryDrillingProgramItems}
accept='.xlsx'/>
accept='.xlsx'
onChange={filesUpdated}/>
</LoaderPortal>)
}