diff --git a/src/pages/Report.jsx b/src/pages/Report.jsx
index cccc2fd..dfd8efb 100644
--- a/src/pages/Report.jsx
+++ b/src/pages/Report.jsx
@@ -11,29 +11,41 @@ import {
import 'moment/locale/ru';
import locale from 'antd/lib/locale/ru_RU';
import moment from "moment";
-import { ReportService } from '../services/api'
+import {Subscribe} from '../services/signalr';
+import notify from '../components/notify';
+import LoaderPortal from '../components/LoaderPortal';
+import { ReportService } from '../services/api';
const { RangePicker } = DatePicker;
const { Option } = Select;
-const initialBegin = moment()
-const initialEnd = moment()
-const initialStep = 600
-const initialFormat = 1
let reportDatesRange = {
from: moment("0001-01-01T00:00:00"),
to: moment("9999-12-31T23:59:59.9999999")
}
+const timePeriodNames = {
+ 600: '1 минута',
+ 86400:'1 день',
+ 604800:'1 неделя'
+}
+
+const imgPaths = {
+ '.pdf': '/images/pdf.png',
+ '.las': '/images/las.png'
+}
+
// Экспорт рендера
export default function Report(props) {
- const [rangeDate, setRangeDate] = useState([moment(), moment()])
- const [step, setStep] = useState(initialStep)
- const [format, setFormat] = useState(initialFormat)
+ const [rangeDate, setRangeDate] = useState([moment().subtract(1,'days'), moment()])
+ const [step, setStep] = useState(600)
+ const [format, setFormat] = useState(0)
+ const [reportProgress, setReportProgress] = useState(0.0)
const [approxPages, setPagesCount] = useState(0)
const [suitableReports, setSuitableReports] = useState([])
+ const [loader, setLoader] = useState(false)
let wellId = useParams().id;
const columns = [
@@ -41,6 +53,7 @@ export default function Report(props) {
title: '',
dataIndex: 'reportFormat',
key: 'reportFormat',
+ render: format =>
},
{
title: 'Параметры отчета',
@@ -51,14 +64,40 @@ export default function Report(props) {
title: 'Название отчета',
dataIndex: 'reportName',
key: 'reportName',
- render: name => {name}
+ render: name => {name}
},
];
- let handleReportCreation = async (values) => {
+ const handleReportProgress = (data) => {
+ console.log('data: ' + data)
+ if(data) {
+ setReportProgress(data)
+ }
+
+ console.log('reportProgress: ' + reportProgress)
+ //console.log(data)
+ }
+
+ const handleReportCreation = async (values) => {
let begin = rangeDate[0].toISOString()
let end = rangeDate[1].toISOString()
- let taskId = await ReportService.createReport(wellId, values.step, values.format, begin, end)
+ let taskId = null;
+
+ ReportService.createReport(wellId, values.step, values.format, begin, end)
+ .then((data) => {
+ if(data) {
+ taskId = data
+ let unSubscribeReportHub = Subscribe('hubs/reports', 'GetReportProgress', `Report_${taskId}`, handleReportProgress)
+ //unSubscribeReportHub()
+ }
+ })
+ .catch(error => {
+ notify(`Не удалось создать отчет по скважине (${wellId}) c
+ ${rangeDate[0].format("DD.MM.YYYY hh:mm:ss")} по
+ ${rangeDate[1].format("DD.MM.YYYY hh:mm:ss")}`, 'error')
+ console.error(error)
+ })
+
};
function disabledDate(current) {
@@ -69,17 +108,32 @@ export default function Report(props) {
async function getRepostSizeAsync() {
let begin = rangeDate[0].toISOString()
let end = rangeDate[1].toISOString()
- let approxPagesResponse = await ReportService.getReportSize(wellId, step, format, begin, end)
- setPagesCount(approxPagesResponse)
- let suitableReportsResponse = await ReportService.getSuitableReportsNames(wellId, step, format, begin, end)
- let suitableReports = suitableReportsResponse.map(value => {
- return {
- reportFormat: value.format,
- reportParams: `Дата создания: ${value.date}, Данные от ${value.begin} до ${value.end}, Шаг: ${value.step}`,
- reportName: value.name
- }
- })
- setSuitableReports(suitableReports)
+ try {
+ let approxPagesResponse = await ReportService.getReportSize(wellId, step, format, begin, end)
+ setPagesCount(approxPagesResponse)
+
+ setLoader(true)
+ let suitableReportsResponse = await ReportService.getSuitableReportsNames(wellId, step, format, begin, end)
+ let suitableReports = suitableReportsResponse.map(value => {
+ return {
+ key: value.id,
+ reportFormat: value.format,
+ reportParams: `Дата создания: ${new Date(value.date).toLocaleDateString()},
+ Данные от ${new Date(value.begin).toLocaleString()}
+ до ${new Date(value.end).toLocaleString()},
+ Шаг: ${timePeriodNames[value.step]}`,
+ reportName: value.name
+ }
+ })
+ setSuitableReports(suitableReports)
+ } catch(error) {
+ notify(`Не удалось загрузить данные по скважине (${wellId}) c
+ ${rangeDate[0].format("DD.MM.YYYY hh:mm:ss")} по
+ ${rangeDate[1].format("DD.MM.YYYY hh:mm:ss")}`, 'error')
+ console.error(error)
+ } finally {
+ setLoader(false)
+ }
}
getRepostSizeAsync()
@@ -93,6 +147,7 @@ export default function Report(props) {
}
getDatesRange()
+ //return ()=>{uns && uns()}
},[])
return (<>
@@ -107,7 +162,7 @@ export default function Report(props) {