From 474f05c072c669fac4be4d6028f6e242942190df Mon Sep 17 00:00:00 2001 From: Caozhenhui <823914102@qq.com> Date: Thu, 24 Feb 2022 13:26:37 +0800 Subject: [PATCH 1/2] added DateRangePicker to MeterCost --- web/src/components/MyEMS/Meter/MeterCost.js | 166 +++++++++--------- web/src/components/MyEMS/Meter/MeterEnergy.js | 6 +- 2 files changed, 91 insertions(+), 81 deletions(-) diff --git a/web/src/components/MyEMS/Meter/MeterCost.js b/web/src/components/MyEMS/Meter/MeterCost.js index d34070d3..ed62e392 100644 --- a/web/src/components/MyEMS/Meter/MeterCost.js +++ b/web/src/components/MyEMS/Meter/MeterCost.js @@ -30,6 +30,7 @@ import ButtonIcon from '../../common/ButtonIcon'; import { APIBaseURL } from '../../../config'; import { periodTypeOptions } from '../common/PeriodTypeOptions'; import { comparisonTypeOptions } from '../common/ComparisonTypeOptions'; +import { DateRangePicker } from 'rsuite'; const DetailedDataTable = loadable(() => import('../common/DetailedDataTable')); @@ -93,6 +94,27 @@ const MeterCost = ({ setRedirect, setRedirectUrl, t }) => { const [detailedDataTableColumns, setDetailedDataTableColumns] = useState([{dataField: 'startdatetime', text: t('Datetime'), sort: true}]); const [detailedDataTableData, setDetailedDataTableData] = useState([]); const [excelBytesBase64, setExcelBytesBase64] = useState(undefined); + const [values, setValues] = useState([reportingPeriodBeginsDatetime.toDate(), reportingPeriodEndsDatetime.toDate()]); + const [baseValues, setBaseValues] = useState([current_moment.clone().subtract(1, 'months').startOf('month').toDate(), + current_moment.clone().subtract(1, 'months').toDate()]); + const [basePeriodDatetimeDisabled, setBasePeriodDatetimeDisabled] = useState(true); + const local = { + sunday: t('sunday'), + monday: t('monday'), + tuesday: t('tuesday'), + wednesday: t('wednesday'), + thursday: t('thursday'), + friday: t('friday'), + saturday: t('friday'), + ok: t('ok'), + today: t('today'), + yesterday: t('yesterday'), + hours: t('hours'), + minutes: t('minutes'), + seconds: t('seconds'), + last7Days: t('last7Days') + }; + const styles = { display: 'block', zIndex: 10}; useEffect(() => { let isResponseOK = false; @@ -231,66 +253,66 @@ const MeterCost = ({ setRedirect, setRedirectUrl, t }) => { console.log(target.value); setComparisonType(target.value); if (target.value === 'year-over-year') { - setBasePeriodBeginsDatetimeDisabled(true); - setBasePeriodEndsDatetimeDisabled(true); + setBasePeriodDatetimeDisabled(true); setBasePeriodBeginsDatetime(moment(reportingPeriodBeginsDatetime).subtract(1, 'years')); setBasePeriodEndsDatetime(moment(reportingPeriodEndsDatetime).subtract(1, 'years')); + setBaseValues([moment(reportingPeriodBeginsDatetime).subtract(1, 'years').toDate(), + moment(reportingPeriodEndsDatetime).subtract(1, 'years').toDate()]); } else if (target.value === 'month-on-month') { - setBasePeriodBeginsDatetimeDisabled(true); - setBasePeriodEndsDatetimeDisabled(true); + setBasePeriodDatetimeDisabled(true); setBasePeriodBeginsDatetime(moment(reportingPeriodBeginsDatetime).subtract(1, 'months')); setBasePeriodEndsDatetime(moment(reportingPeriodEndsDatetime).subtract(1, 'months')); + setBaseValues([moment(reportingPeriodBeginsDatetime).subtract(1, 'months').toDate(), + moment(reportingPeriodEndsDatetime).subtract(1, 'months').toDate()]); } else if (target.value === 'free-comparison') { - setBasePeriodBeginsDatetimeDisabled(false); - setBasePeriodEndsDatetimeDisabled(false); + setBasePeriodDatetimeDisabled(false); } else if (target.value === 'none-comparison') { + setBaseValues([]); setBasePeriodBeginsDatetime(undefined); setBasePeriodEndsDatetime(undefined); - setBasePeriodBeginsDatetimeDisabled(true); - setBasePeriodEndsDatetimeDisabled(true); + setBasePeriodDatetimeDisabled(true); } }; - let onBasePeriodBeginsDatetimeChange = (newDateTime) => { - setBasePeriodBeginsDatetime(newDateTime); + let onBasePeriodChange = (DateRange) => { + if(DateRange == null){ + setBaseValues([]); + } + let startDate = moment(DateRange[0]); + let endDate = moment(DateRange[1]); + setBaseValues([DateRange[0], DateRange[1]]); + setBasePeriodBeginsDatetime(startDate); + setBasePeriodEndsDatetime(endDate); }; - let onBasePeriodEndsDatetimeChange = (newDateTime) => { - setBasePeriodEndsDatetime(newDateTime); - }; - - let onReportingPeriodBeginsDatetimeChange = (newDateTime) => { - setReportingPeriodBeginsDatetime(newDateTime); + let onChange = (DateRange) => { + if(DateRange == null){ + setValues([]); + } + let startDate = moment(DateRange[0]); + let endDate = moment(DateRange[1]); + setValues([DateRange[0], DateRange[1]]); + setReportingPeriodBeginsDatetime(startDate); + setReportingPeriodEndsDatetime(endDate); if (comparisonType === 'year-over-year') { - setBasePeriodBeginsDatetime(newDateTime.clone().subtract(1, 'years')); + setBasePeriodBeginsDatetime(startDate.clone().subtract(1, 'years')); + setBasePeriodEndsDatetime(endDate.clone().subtract(1, 'years')); + setBaseValues([startDate.clone().subtract(1, 'years').toDate(), + endDate.clone().subtract(1, 'years').toDate()]); } else if (comparisonType === 'month-on-month') { - setBasePeriodBeginsDatetime(newDateTime.clone().subtract(1, 'months')); + setBasePeriodBeginsDatetime(startDate.clone().subtract(1, 'months')); + setBasePeriodEndsDatetime(endDate.clone().subtract(1, 'months')); + setBaseValues([startDate.clone().subtract(1, 'months').toDate(), + endDate.clone().subtract(1, 'months').toDate()]); } }; - let onReportingPeriodEndsDatetimeChange = (newDateTime) => { - setReportingPeriodEndsDatetime(newDateTime); - if (comparisonType === 'year-over-year') { - setBasePeriodEndsDatetime(newDateTime.clone().subtract(1, 'years')); - } else if (comparisonType === 'month-on-month') { - setBasePeriodEndsDatetime(newDateTime.clone().subtract(1, 'months')); - } + let onClean = event => { + setValues([]); }; - var getValidBasePeriodBeginsDatetimes = function (currentDate) { - return currentDate.isBefore(moment(basePeriodEndsDatetime, 'MM/DD/YYYY, hh:mm:ss a')); - }; - - var getValidBasePeriodEndsDatetimes = function (currentDate) { - return currentDate.isAfter(moment(basePeriodBeginsDatetime, 'MM/DD/YYYY, hh:mm:ss a')); - }; - - 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 onBaseClean = event => { + setValues([]); }; // Handler @@ -530,51 +552,37 @@ const MeterCost = ({ setRedirect, setRedirectUrl, t }) => {