import React, { useState, useEffect } from 'react'; import axios from 'axios'; import { CCard, CCardBody, CCardHeader, CCol, CRow, CDropdown, CDropdownDivider, CDropdownItem, CDropdownMenu, CDropdownToggle, ///// CButton, CCardFooter, CForm, CFormGroup, CFormText, CTextarea, CInput, CInputFile, CInputCheckbox, CInputRadio, CLabel, CSelect, CSwitch, } from '@coreui/react' import CIcon from '@coreui/icons-react' import DatePicker from "react-datepicker"; import "react-datepicker/dist/react-datepicker.css"; function Index() { const baseUrl = "https://natnats.mobilous.com/"; const [data, setData] = useState([]); const [report, setReport] = useState(''); const [selectedcons, setSelectedCons] = useState(''); const [graph, setGraph] = useState(false); const [startDate, setStartDate] = useState(null); const [validDates, setValidDates] = useState([]); useEffect(() => { async function fetchData() { // You can await here const result = await axios('https://natnats.mobilous.com/getConstructionList'); setData(result.data); } fetchData(); }, []); useEffect(() => { async function fetchData() { // You can await here if(selectedcons !== "" && report !== "" && isDate() == true) { const result = await axios('https://fbssso.ts.bizside.biz/getDateToHaveData?construction_id=' + selectedcons + '&sheetname=' + report); setValidDates(result.data.record); } } fetchData(); }, [report, selectedcons]); function getDateWithFormat(date) { var thisDate = date; var dd = String(date.getDate()).padStart(2, '0'); var mm = String(date.getMonth() + 1).padStart(2, '0'); //January is 0! var yyyy = date.getFullYear(); thisDate = yyyy + '-' + mm + '-' + dd return thisDate; } function setingReport(e){ setReport(e.target.value); setStartDate(null); } function setingSelectedCons(e) { setSelectedCons(e.target.value); setStartDate(null); } function setingGraph(e){ setGraph(e.target.checked); } function doGetReport(){ if(report == "" || selectedcons == ""){ alert("建設とレポートの両方を選択してください"); return; } var url = ""; if(startDate !== null){ if(graph){ url = baseUrl + "/generate" + report + "?construction_id=" +selectedcons+ "&construction_date="+getDateWithFormat(startDate)+"&graph=true"; } else{ url = baseUrl + "/generate" + report + "?construction_id=" +selectedcons+ "&construction_date="+getDateWithFormat(startDate); } downloadReport(url); } else { if(graph){ url = baseUrl + "/generate" + report + "?construction_id=" +selectedcons+"&graph=true"; } else{ url = baseUrl + "/generate" + report + "?construction_id=" +selectedcons; } downloadReport(url); } } function downloadReport(url) { fetch(url) .then(async response => { //console.log(response.headers); const filename = response.headers .get("content-disposition") console.log(filename) // .split('"')[1]; const text = await response.text(); //console.log(filename) //console.log(text) //return { filename, text }; }) .then(responseText => this.download(responseText)) .catch(error => { //messageNotification("error", error.message); throw new Error(error.message); }); } // function downloadReport(url) { // axios({ // url: url, //your url // method: 'GET', // responseType: 'blob', // important // }).then((response) => { // // const url = window.URL.createObjectURL(new Blob([response.data])); // // const link = document.createElement('a'); // // link.href = url; // // //link.setAttribute('download', 'file.xls'); //or any other extension // // //document.body.appendChild(link); // // link.click(); // const filename = response.headers // .get("content-disposition") // .split('"')[1]; // const text = response.text(); // console.log(filename) // console.log(text) // //return { filename, text }; // }); // } const checkAvilable = (date) => { if(validDates === undefined){ return false; } var thisDate = getDateWithFormat(date); if(validDates.includes(thisDate)){ return true; } else{ return false; } }; function isDownload() { if(isDate() === false && report !== '' && selectedcons !== '') { return true; } else{ if(startDate !== null) { return true; } } return false; } function isDate() { if(report === 'BoxDisplacement' || report === 'MachineControl' || report === 'MachineSheet'){ return true; } else { return false; } } return ( レポート " "+ { data.map((cc, index) => { return( ) }) } レポート種類 {isDate() === true ? 報告日 setStartDate(date)} filterDate={checkAvilable} placeholderText='日付を選択' /> :
} {report == 'MachineControl' ? グラフの有無 : ("")}
{isDownload() === true ? ダウンロード : ダウンロード }
); } export default Index