// material-ui import { Grid, Typography, Stack, Button, Dialog, DialogTitle, DialogContent, DialogActions, } from '@mui/material'; import * as UrlUtils from "utils/ApiPathConst"; import * as React from "react"; import * as HttpUtils from "utils/HttpUtils"; import titleBackgroundImg from 'assets/images/dashboard/gazette-bar.png' import Loadable from 'components/Loadable'; const LoadingComponent = Loadable(React.lazy(() => import('pages/extra-pages/LoadingComponent'))); import MainCard from 'components/MainCard'; const ExportForm = Loadable(React.lazy(() => import('./ExportForm'))); const SearchForm = Loadable(React.lazy(() => import('./SearchForm'))); const GazetteIssueTable = Loadable(React.lazy(() => import('./DataGrid'))) const BackgroundHead = { backgroundImage: `url(${titleBackgroundImg})`, width: '100%', height: '100%', backgroundSize: 'contain', backgroundRepeat: 'no-repeat', backgroundColor: '#0C489E', backgroundPosition: 'right' } import {PNSPS_LONG_BUTTON_THEME} from "themes/buttonConst"; import {ThemeProvider} from "@emotion/react"; import { dateStr_Year } from "utils/DateUtils"; import { notifySaveSuccess } from 'utils/CommonFunction'; import { isGrantedAny } from "auth/utils"; // ==============================|| DASHBOARD - DEFAULT ||============================== // const Index = () => { const [comboData, setComboData] = React.useState([]); const [holidayComboData, setHolidayComboData] = React.useState([]); const [onReady, setOnReady] = React.useState(false); const [onGridReady, setGridOnReady] = React.useState(false); const [onSearchReady, setOnSearchReady] = React.useState(false); const [onExportReady, setOnExportReady] = React.useState(false); const [searchCriteria, setSearchCriteria] = React.useState({ year: dateStr_Year(new Date()), // dateFrom: DateUtils.dateValue(new Date().setDate(new Date().getDate()-14)), }); const [exportCriteria, setExportCriteria] = React.useState({ // year: dateStr_Year(new Date()), // dateFrom: DateUtils.dateValue(new Date().setDate(new Date().getDate()-14)), }); const [attachments, setAttachments] = React.useState([]); const [waitImport, setWaitImport] = React.useState(false); const [waitDownload, setWaitDownload] = React.useState(false); const [isWarningPopUp, setIsWarningPopUp] = React.useState(false); const [warningText, setWarningText] = React.useState(""); React.useEffect(() => { // console.log(searchCriteria) setOnSearchReady(false) loadCombo(); }, [searchCriteria]); function loadCombo() { HttpUtils.get({ url: UrlUtils.GET_ISSUE_YEAR_COMBO, onSuccess: (responseData) => { let combo = responseData; setComboData(combo); setOnSearchReady(true) loadHolidayCombo(true) // setOnReady(true); } }); } function loadHolidayCombo() { HttpUtils.get({ url: UrlUtils.GET_HOLIDAY_COMBO, onSuccess: (responseData) => { let combo = responseData setHolidayComboData(combo) setOnExportReady(true) setOnReady(true) } }); } function applySearch(input) { setGridOnReady(true) setSearchCriteria(input); } function applyExport(input) { setExportCriteria(input); } function applyGridOnReady(input) { setGridOnReady(input); } React.useEffect(() => { if (Object.keys(exportCriteria).length > 0) { // console.log(exportCriteria) doExport(); } }, [exportCriteria]); React.useEffect(() => { if (attachments.length > 0) { importHoliday(); } }, [attachments]); const readFile = (event) => { let file = event.target.files[0]; if (file) { if (!file.name.toLowerCase().substr(file.name.length - 5).includes(".xlsx")) { setWarningText("Please upload a valid file (File format: .xlsx)."); setIsWarningPopUp(true); document.getElementById("uploadFileBtn").value = ""; return; } file['id'] = attachments.length; setAttachments([ ...attachments, file ]); document.getElementById("uploadFileBtn").value = ""; } } const doExport=()=>{ setWaitDownload(true) HttpUtils.fileDownload({ url: UrlUtils.GET_ISSUE_LIST, params: exportCriteria, onResponse: () => { setTimeout(()=> setWaitDownload(false), 500) } }); } const importHoliday = () => { setWaitImport(true); if (!attachments || attachments.length <= 0) { setWarningText("Please upload file."); setSaving(false); return; } HttpUtils.postWithFiles({ url: UrlUtils.POST_ISSUE_FILE, files: attachments, onSuccess: () => { notifySaveSuccess() setWaitImport(false); setAttachments([]); loadCombo(); loadForm(); } }); } return ( !onReady ? : (
Gazette Issue
{!onExportReady? : } {isGrantedAny(["MAINTAIN_GAZETTE_ISSUE"]) ? { readFile(event) }} /> :null } {/*row 1*/} {/*row 2*/} {!onSearchReady? : }
setIsWarningPopUp(false)} PaperProps={{ sx: { minWidth: '40vw', maxWidth: { xs: '90vw', s: '90vw', m: '70vw', lg: '70vw' }, maxHeight: { xs: '90vh', s: '70vh', m: '70vh', lg: '60vh' } } }} > Warning {warningText}
) ); }; export default Index;