diff --git a/web/src/components/MyEMS/Meter/MeterBatch.js b/web/src/components/MyEMS/Meter/MeterBatch.js index 9e75219e..7b31d9eb 100644 --- a/web/src/components/MyEMS/Meter/MeterBatch.js +++ b/web/src/components/MyEMS/Meter/MeterBatch.js @@ -14,7 +14,6 @@ import { Label, Spinner, } from 'reactstrap'; -import Datetime from 'react-datetime'; import moment from 'moment'; import loadable from '@loadable/component'; import Cascader from 'rc-cascader'; @@ -24,8 +23,7 @@ import { withTranslation } from 'react-i18next'; import { toast } from 'react-toastify'; import ButtonIcon from '../../common/ButtonIcon'; import { APIBaseURL } from '../../../config'; - - +import { DateRangePicker } from 'rsuite'; const DetailedDataTable = loadable(() => import('../common/DetailedDataTable')); @@ -50,14 +48,31 @@ const MeterBatch = ({ setRedirect, setRedirectUrl, t }) => { } }); // State - // Query Parameters const [selectedSpaceName, setSelectedSpaceName] = useState(undefined); const [selectedSpaceID, setSelectedSpaceID] = useState(undefined); const [meterList, setMeterList] = useState([]); - const [reportingPeriodBeginsDatetime, setReportingPeriodBeginsDatetime] = useState(current_moment.clone().startOf('month')); - const [reportingPeriodEndsDatetime, setReportingPeriodEndsDatetime] = useState(current_moment); const [cascaderOptions, setCascaderOptions] = useState(undefined); - + + //Query From + const [reportingPeriodDateRange, setReportingPeriodDateRange] = useState([current_moment.clone().startOf('month').toDate(), current_moment.toDate()]); + const dateRangePickerLocale = { + sunday: t('sunday'), + monday: t('monday'), + tuesday: t('tuesday'), + wednesday: t('wednesday'), + thursday: t('thursday'), + friday: t('friday'), + saturday: t('saturday'), + ok: t('ok'), + today: t('today'), + yesterday: t('yesterday'), + hours: t('hours'), + minutes: t('minutes'), + seconds: t('seconds'), + last7Days: t('last7Days') + }; + const dateRangePickerStyle = { display: 'block', zIndex: 10}; + // buttons const [submitButtonDisabled, setSubmitButtonDisabled] = useState(false); const [spinnerHidden, setSpinnerHidden] = useState(true); @@ -114,30 +129,27 @@ const MeterBatch = ({ setRedirect, setRedirectUrl, t }) => { setMeterList([]); setExportButtonHidden(true); setSubmitButtonDisabled(false); - } - let onReportingPeriodBeginsDatetimeChange = (newDateTime) => { - setReportingPeriodBeginsDatetime(newDateTime); - } + }; - let onReportingPeriodEndsDatetimeChange = (newDateTime) => { - setReportingPeriodEndsDatetime(newDateTime); - } + let onReportingPeriodChange = (DateRange) => { + if(DateRange == null) { + setReportingPeriodDateRange([null, null]); + } else { + setReportingPeriodDateRange([DateRange[0], DateRange[1]]); + } + }; - var getValidReportingPeriodBeginsDatetimes = function (currentDate) { - return currentDate.isBefore(moment(reportingPeriodEndsDatetime, 'MM/DD/YYYY, hh:mm:ss a')); - } - - var getValidReportingPeriodEndsDatetimes = function (currentDate) { - return currentDate.isAfter(moment(reportingPeriodBeginsDatetime, 'MM/DD/YYYY, hh:mm:ss a')); - } + let onReportingPeriodClean = event => { + setReportingPeriodDateRange([null, null]); + }; // Handler const handleSubmit = e => { e.preventDefault(); console.log('handleSubmit'); console.log(selectedSpaceID); - console.log(reportingPeriodBeginsDatetime.format('YYYY-MM-DDTHH:mm:ss')); - console.log(reportingPeriodEndsDatetime.format('YYYY-MM-DDTHH:mm:ss')); + console.log(moment(reportingPeriodDateRange[0]).format('YYYY-MM-DDTHH:mm:ss')) + console.log(moment(reportingPeriodDateRange[1]).format('YYYY-MM-DDTHH:mm:ss')); // disable submit button setSubmitButtonDisabled(true); @@ -152,8 +164,8 @@ const MeterBatch = ({ setRedirect, setRedirectUrl, t }) => { let isResponseOK = false; fetch(APIBaseURL + '/reports/meterbatch?' + 'spaceid=' + selectedSpaceID + - '&reportingperiodstartdatetime=' + reportingPeriodBeginsDatetime.format('YYYY-MM-DDTHH:mm:ss') + - '&reportingperiodenddatetime=' + reportingPeriodEndsDatetime.format('YYYY-MM-DDTHH:mm:ss'), { + '&reportingperiodstartdatetime=' + moment(reportingPeriodDateRange[0]).format('YYYY-MM-DDTHH:mm:ss') + + '&reportingperiodenddatetime=' + moment(reportingPeriodDateRange[1]).format('YYYY-MM-DDTHH:mm:ss'), { method: 'GET', headers: { "Content-type": "application/json", @@ -227,7 +239,6 @@ const MeterBatch = ({ setRedirect, setRedirectUrl, t }) => { setSpinnerHidden(true); // show export button setExportButtonHidden(false); - } else { toast.error(json.description) } @@ -280,29 +291,22 @@ const MeterBatch = ({ setRedirect, setRedirectUrl, t }) => { - - - - - - - - - + +
+
diff --git a/web/src/components/MyEMS/Meter/MeterTracking.js b/web/src/components/MyEMS/Meter/MeterTracking.js index 51cdb918..0dfb4abd 100644 --- a/web/src/components/MyEMS/Meter/MeterTracking.js +++ b/web/src/components/MyEMS/Meter/MeterTracking.js @@ -20,6 +20,7 @@ import { Spinner, } from 'reactstrap'; import Cascader from 'rc-cascader'; +import moment from "moment"; import loadable from '@loadable/component'; import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; import { Link } from 'react-router-dom'; @@ -30,7 +31,6 @@ import { withTranslation } from 'react-i18next'; import { toast } from 'react-toastify'; import ButtonIcon from '../../common/ButtonIcon'; import { APIBaseURL } from '../../../config'; -import moment from "moment"; import { DateRangePicker } from 'rsuite'; @@ -57,12 +57,9 @@ const MeterTracking = ({ setRedirect, setRedirectUrl, t }) => { let table = createRef(); // State const [selectedSpaceName, setSelectedSpaceName] = useState(undefined); + const [selectedSpaceID, setSelectedSpaceID] = useState(undefined); const [meterList, setMeterList] = useState([]); const [cascaderOptions, setCascaderOptions] = useState(undefined); - const [spinnerHidden, setSpinnerHidden] = useState(false); - const [exportButtonHidden, setExportButtonHidden] = useState(true); - const [excelBytesBase64, setExcelBytesBase64] = useState(undefined); - const [selectedSpaceID, setSelectedSpaceID] = useState(undefined) //Query From const [reportingPeriodDateRange, setReportingPeriodDateRange] = useState([current_moment.clone().startOf('month').toDate(), current_moment.toDate()]); @@ -86,9 +83,13 @@ const MeterTracking = ({ setRedirect, setRedirectUrl, t }) => { // buttons const [submitButtonDisabled, setSubmitButtonDisabled] = useState(true); + const [spinnerHidden, setSpinnerHidden] = useState(false); + const [exportButtonHidden, setExportButtonHidden] = useState(true); + + // Results + const [excelBytesBase64, setExcelBytesBase64] = useState(undefined); useEffect(() => { - // begin of getting space tree let isResponseOK = false; fetch(APIBaseURL + '/spaces/tree', { method: 'GET', @@ -123,7 +124,6 @@ const MeterTracking = ({ setRedirect, setRedirectUrl, t }) => { }).catch(err => { console.log(err); }); - // end of getting space tree }, []); const DetailedDataTable = loadable(() => import('../common/DetailedDataTable')); @@ -249,6 +249,7 @@ const MeterTracking = ({ setRedirect, setRedirectUrl, t }) => { // hide export button setExportButtonHidden(true) + // Reinitialize tables setMeterList([]); let isResponseOK = false; @@ -287,12 +288,12 @@ const MeterTracking = ({ setRedirect, setRedirectUrl, t }) => { setExcelBytesBase64(json['excel_bytes_base64']); + // enable submit button + setSubmitButtonDisabled(false); // hide spinner setSpinnerHidden(true); // show export button setExportButtonHidden(false); - - setSubmitButtonDisabled(false); } else { toast.error(json.description) }