From 4fc94d3712788059bd1407c79d6abb82e3a52509 Mon Sep 17 00:00:00 2001 From: "13621160019@163.com" <13621160019@163.com> Date: Sat, 26 Feb 2022 15:07:12 +0800 Subject: [PATCH] updated DateRangePicker for MeterCost report in Web UI --- web/src/components/MyEMS/Meter/MeterCost.js | 180 +++++++++----------- web/src/i18n.js | 93 +++++----- 2 files changed, 127 insertions(+), 146 deletions(-) diff --git a/web/src/components/MyEMS/Meter/MeterCost.js b/web/src/components/MyEMS/Meter/MeterCost.js index bb6c991d..1189812c 100644 --- a/web/src/components/MyEMS/Meter/MeterCost.js +++ b/web/src/components/MyEMS/Meter/MeterCost.js @@ -65,13 +65,27 @@ const MeterCost = ({ setRedirect, setRedirectUrl, t }) => { const [selectedMeter, setSelectedMeter] = useState(undefined); const [comparisonType, setComparisonType] = useState('month-on-month'); const [periodType, setPeriodType] = useState('daily'); - const [basePeriodBeginsDatetime, setBasePeriodBeginsDatetime] = useState(current_moment.clone().subtract(1, 'months').startOf('month')); - const [basePeriodEndsDatetime, setBasePeriodEndsDatetime] = useState(current_moment.clone().subtract(1, 'months')); - const [basePeriodBeginsDatetimeDisabled, setBasePeriodBeginsDatetimeDisabled] = useState(true); - const [basePeriodEndsDatetimeDisabled, setBasePeriodEndsDatetimeDisabled] = useState(true); - const [reportingPeriodBeginsDatetime, setReportingPeriodBeginsDatetime] = useState(current_moment.clone().startOf('month')); - const [reportingPeriodEndsDatetime, setReportingPeriodEndsDatetime] = useState(current_moment); const [cascaderOptions, setCascaderOptions] = useState(undefined); + const [reportingPeriodDateRange, setReportingPeriodDateRange] = useState([current_moment.clone().startOf('month').toDate(), current_moment.toDate()]); + const [basePeriodDateRange, setBasePeriodDateRange] = useState([current_moment.clone().subtract(1, 'months').startOf('month').toDate(), current_moment.clone().subtract(1, 'months').toDate()]); + const [basePeriodDateRangePickerDisabled, setBasePeriodDateRangePickerDisabled] = useState(true); + 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(true); @@ -94,27 +108,6 @@ 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('saturday'), - 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; @@ -253,66 +246,50 @@ const MeterCost = ({ setRedirect, setRedirectUrl, t }) => { console.log(target.value); setComparisonType(target.value); if (target.value === 'year-over-year') { - 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()]); + setBasePeriodDateRangePickerDisabled(true); + setBasePeriodDateRange([moment(reportingPeriodDateRange[0]).subtract(1, 'years').toDate(), + moment(reportingPeriodDateRange[1]).subtract(1, 'years').toDate()]); } else if (target.value === 'month-on-month') { - 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()]); + setBasePeriodDateRangePickerDisabled(true); + setBasePeriodDateRange([moment(reportingPeriodDateRange[0]).subtract(1, 'months').toDate(), + moment(reportingPeriodDateRange[1]).subtract(1, 'months').toDate()]); } else if (target.value === 'free-comparison') { - setBasePeriodDatetimeDisabled(false); + setBasePeriodDateRangePickerDisabled(false); } else if (target.value === 'none-comparison') { - setBaseValues([]); - setBasePeriodBeginsDatetime(undefined); - setBasePeriodEndsDatetime(undefined); - setBasePeriodDatetimeDisabled(true); + setBasePeriodDateRange([null, null]); + setBasePeriodDateRangePickerDisabled(true); } }; 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 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(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(startDate.clone().subtract(1, 'months')); - setBasePeriodEndsDatetime(endDate.clone().subtract(1, 'months')); - setBaseValues([startDate.clone().subtract(1, 'months').toDate(), - endDate.clone().subtract(1, 'months').toDate()]); + console.log(DateRange); + + if(DateRange == null) { + setBasePeriodDateRange([null, null]); + } else { + setBasePeriodDateRange([DateRange[0], DateRange[1]]); } }; - let onClean = event => { - setValues([]); + let onReportingPeriodChange = (DateRange) => { + if(DateRange == null) { + setReportingPeriodDateRange([null, null]); + } else { + setReportingPeriodDateRange([DateRange[0], DateRange[1]]); + if (comparisonType === 'year-over-year') { + setBasePeriodDateRange([moment(DateRange[0]).clone().subtract(1, 'years').toDate(), moment(DateRange[1]).clone().subtract(1, 'years').toDate()]); + } else if (comparisonType === 'month-on-month') { + setBasePeriodDateRange([moment(DateRange[0]).clone().subtract(1, 'months').toDate(), moment(DateRange[1]).clone().subtract(1, 'months').toDate()]); + } + } }; - let onBaseClean = event => { - setValues([]); + let onBasePeriodClean = event => { + setBasePeriodDateRange([null, null]); + }; + + let onReportingPeriodClean = event => { + setReportingPeriodDateRange([null, null]); }; // Handler @@ -323,10 +300,10 @@ const MeterCost = ({ setRedirect, setRedirectUrl, t }) => { console.log(selectedMeter); console.log(comparisonType); console.log(periodType); - console.log(basePeriodBeginsDatetime != null ? basePeriodBeginsDatetime.format('YYYY-MM-DDTHH:mm:ss') : undefined); - console.log(basePeriodEndsDatetime != null ? basePeriodEndsDatetime.format('YYYY-MM-DDTHH:mm:ss') : undefined); - console.log(reportingPeriodBeginsDatetime.format('YYYY-MM-DDTHH:mm:ss')); - console.log(reportingPeriodEndsDatetime.format('YYYY-MM-DDTHH:mm:ss')); + console.log(basePeriodDateRange[0] != null ? moment(basePeriodDateRange[0]).format('YYYY-MM-DDTHH:mm:ss') : null) + console.log(basePeriodDateRange[1] != null ? moment(basePeriodDateRange[1]).format('YYYY-MM-DDTHH:mm:ss') : null) + 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); @@ -342,10 +319,10 @@ const MeterCost = ({ setRedirect, setRedirectUrl, t }) => { fetch(APIBaseURL + '/reports/metercost?' + 'meterid=' + selectedMeter + '&periodtype=' + periodType + - '&baseperiodstartdatetime=' + (basePeriodBeginsDatetime != null ? basePeriodBeginsDatetime.format('YYYY-MM-DDTHH:mm:ss') : '') + - '&baseperiodenddatetime=' + (basePeriodEndsDatetime != null ? basePeriodEndsDatetime.format('YYYY-MM-DDTHH:mm:ss') : '') + - '&reportingperiodstartdatetime=' + reportingPeriodBeginsDatetime.format('YYYY-MM-DDTHH:mm:ss') + - '&reportingperiodenddatetime=' + reportingPeriodEndsDatetime.format('YYYY-MM-DDTHH:mm:ss'), { + '&baseperiodstartdatetime=' + (basePeriodDateRange[0] != null ? moment(basePeriodDateRange[0]).format('YYYY-MM-DDTHH:mm:ss') : '') + + '&baseperiodenddatetime=' + (basePeriodDateRange[1] != null ? moment(basePeriodDateRange[1]).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", @@ -551,37 +528,38 @@ const MeterCost = ({ setRedirect, setRedirectUrl, t }) => {