Merge branch 'develop'

pull/133/head
13621160019@163.com 2022-02-26 15:13:17 +08:00
commit 3ee08bf7a2
2 changed files with 127 additions and 146 deletions

View File

@ -65,13 +65,27 @@ const MeterCost = ({ setRedirect, setRedirectUrl, t }) => {
const [selectedMeter, setSelectedMeter] = useState(undefined); const [selectedMeter, setSelectedMeter] = useState(undefined);
const [comparisonType, setComparisonType] = useState('month-on-month'); const [comparisonType, setComparisonType] = useState('month-on-month');
const [periodType, setPeriodType] = useState('daily'); 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 [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 // buttons
const [submitButtonDisabled, setSubmitButtonDisabled] = useState(true); 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 [detailedDataTableColumns, setDetailedDataTableColumns] = useState([{dataField: 'startdatetime', text: t('Datetime'), sort: true}]);
const [detailedDataTableData, setDetailedDataTableData] = useState([]); const [detailedDataTableData, setDetailedDataTableData] = useState([]);
const [excelBytesBase64, setExcelBytesBase64] = useState(undefined); 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(() => { useEffect(() => {
let isResponseOK = false; let isResponseOK = false;
@ -253,66 +246,50 @@ const MeterCost = ({ setRedirect, setRedirectUrl, t }) => {
console.log(target.value); console.log(target.value);
setComparisonType(target.value); setComparisonType(target.value);
if (target.value === 'year-over-year') { if (target.value === 'year-over-year') {
setBasePeriodDatetimeDisabled(true); setBasePeriodDateRangePickerDisabled(true);
setBasePeriodBeginsDatetime(moment(reportingPeriodBeginsDatetime).subtract(1, 'years')); setBasePeriodDateRange([moment(reportingPeriodDateRange[0]).subtract(1, 'years').toDate(),
setBasePeriodEndsDatetime(moment(reportingPeriodEndsDatetime).subtract(1, 'years')); moment(reportingPeriodDateRange[1]).subtract(1, 'years').toDate()]);
setBaseValues([moment(reportingPeriodBeginsDatetime).subtract(1, 'years').toDate(),
moment(reportingPeriodEndsDatetime).subtract(1, 'years').toDate()]);
} else if (target.value === 'month-on-month') { } else if (target.value === 'month-on-month') {
setBasePeriodDatetimeDisabled(true); setBasePeriodDateRangePickerDisabled(true);
setBasePeriodBeginsDatetime(moment(reportingPeriodBeginsDatetime).subtract(1, 'months')); setBasePeriodDateRange([moment(reportingPeriodDateRange[0]).subtract(1, 'months').toDate(),
setBasePeriodEndsDatetime(moment(reportingPeriodEndsDatetime).subtract(1, 'months')); moment(reportingPeriodDateRange[1]).subtract(1, 'months').toDate()]);
setBaseValues([moment(reportingPeriodBeginsDatetime).subtract(1, 'months').toDate(),
moment(reportingPeriodEndsDatetime).subtract(1, 'months').toDate()]);
} else if (target.value === 'free-comparison') { } else if (target.value === 'free-comparison') {
setBasePeriodDatetimeDisabled(false); setBasePeriodDateRangePickerDisabled(false);
} else if (target.value === 'none-comparison') { } else if (target.value === 'none-comparison') {
setBaseValues([]); setBasePeriodDateRange([null, null]);
setBasePeriodBeginsDatetime(undefined); setBasePeriodDateRangePickerDisabled(true);
setBasePeriodEndsDatetime(undefined);
setBasePeriodDatetimeDisabled(true);
} }
}; };
let onBasePeriodChange = (DateRange) => { let onBasePeriodChange = (DateRange) => {
console.log(DateRange);
if(DateRange == null) { if(DateRange == null) {
setBaseValues([]); setBasePeriodDateRange([null, null]);
} else {
setBasePeriodDateRange([DateRange[0], DateRange[1]]);
} }
let startDate = moment(DateRange[0]);
let endDate = moment(DateRange[1]);
setBaseValues([DateRange[0], DateRange[1]]);
setBasePeriodBeginsDatetime(startDate);
setBasePeriodEndsDatetime(endDate);
}; };
let onChange = (DateRange) => { let onReportingPeriodChange = (DateRange) => {
if(DateRange == null) { if(DateRange == null) {
setValues([]); setReportingPeriodDateRange([null, null]);
} } else {
let startDate = moment(DateRange[0]); setReportingPeriodDateRange([DateRange[0], DateRange[1]]);
let endDate = moment(DateRange[1]);
setValues([DateRange[0], DateRange[1]]);
setReportingPeriodBeginsDatetime(startDate);
setReportingPeriodEndsDatetime(endDate);
if (comparisonType === 'year-over-year') { if (comparisonType === 'year-over-year') {
setBasePeriodBeginsDatetime(startDate.clone().subtract(1, 'years')); setBasePeriodDateRange([moment(DateRange[0]).clone().subtract(1, 'years').toDate(), moment(DateRange[1]).clone().subtract(1, 'years').toDate()]);
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') { } else if (comparisonType === 'month-on-month') {
setBasePeriodBeginsDatetime(startDate.clone().subtract(1, 'months')); setBasePeriodDateRange([moment(DateRange[0]).clone().subtract(1, 'months').toDate(), moment(DateRange[1]).clone().subtract(1, 'months').toDate()]);
setBasePeriodEndsDatetime(endDate.clone().subtract(1, 'months')); }
setBaseValues([startDate.clone().subtract(1, 'months').toDate(),
endDate.clone().subtract(1, 'months').toDate()]);
} }
}; };
let onClean = event => { let onBasePeriodClean = event => {
setValues([]); setBasePeriodDateRange([null, null]);
}; };
let onBaseClean = event => { let onReportingPeriodClean = event => {
setValues([]); setReportingPeriodDateRange([null, null]);
}; };
// Handler // Handler
@ -323,10 +300,10 @@ const MeterCost = ({ setRedirect, setRedirectUrl, t }) => {
console.log(selectedMeter); console.log(selectedMeter);
console.log(comparisonType); console.log(comparisonType);
console.log(periodType); console.log(periodType);
console.log(basePeriodBeginsDatetime != null ? basePeriodBeginsDatetime.format('YYYY-MM-DDTHH:mm:ss') : undefined); console.log(basePeriodDateRange[0] != null ? moment(basePeriodDateRange[0]).format('YYYY-MM-DDTHH:mm:ss') : null)
console.log(basePeriodEndsDatetime != null ? basePeriodEndsDatetime.format('YYYY-MM-DDTHH:mm:ss') : undefined); console.log(basePeriodDateRange[1] != null ? moment(basePeriodDateRange[1]).format('YYYY-MM-DDTHH:mm:ss') : null)
console.log(reportingPeriodBeginsDatetime.format('YYYY-MM-DDTHH:mm:ss')); console.log(moment(reportingPeriodDateRange[0]).format('YYYY-MM-DDTHH:mm:ss'))
console.log(reportingPeriodEndsDatetime.format('YYYY-MM-DDTHH:mm:ss')); console.log(moment(reportingPeriodDateRange[1]).format('YYYY-MM-DDTHH:mm:ss'));
// disable submit button // disable submit button
setSubmitButtonDisabled(true); setSubmitButtonDisabled(true);
@ -342,10 +319,10 @@ const MeterCost = ({ setRedirect, setRedirectUrl, t }) => {
fetch(APIBaseURL + '/reports/metercost?' + fetch(APIBaseURL + '/reports/metercost?' +
'meterid=' + selectedMeter + 'meterid=' + selectedMeter +
'&periodtype=' + periodType + '&periodtype=' + periodType +
'&baseperiodstartdatetime=' + (basePeriodBeginsDatetime != null ? basePeriodBeginsDatetime.format('YYYY-MM-DDTHH:mm:ss') : '') + '&baseperiodstartdatetime=' + (basePeriodDateRange[0] != null ? moment(basePeriodDateRange[0]).format('YYYY-MM-DDTHH:mm:ss') : '') +
'&baseperiodenddatetime=' + (basePeriodEndsDatetime != null ? basePeriodEndsDatetime.format('YYYY-MM-DDTHH:mm:ss') : '') + '&baseperiodenddatetime=' + (basePeriodDateRange[1] != null ? moment(basePeriodDateRange[1]).format('YYYY-MM-DDTHH:mm:ss') : '') +
'&reportingperiodstartdatetime=' + reportingPeriodBeginsDatetime.format('YYYY-MM-DDTHH:mm:ss') + '&reportingperiodstartdatetime=' + moment(reportingPeriodDateRange[0]).format('YYYY-MM-DDTHH:mm:ss') +
'&reportingperiodenddatetime=' + reportingPeriodEndsDatetime.format('YYYY-MM-DDTHH:mm:ss'), { '&reportingperiodenddatetime=' + moment(reportingPeriodDateRange[1]).format('YYYY-MM-DDTHH:mm:ss'), {
method: 'GET', method: 'GET',
headers: { headers: {
"Content-type": "application/json", "Content-type": "application/json",
@ -551,37 +528,38 @@ const MeterCost = ({ setRedirect, setRedirectUrl, t }) => {
</Col> </Col>
<Col xs={6} sm={3}> <Col xs={6} sm={3}>
<FormGroup className="form-group"> <FormGroup className="form-group">
<Label className={labelClasses} for="basePeriodBeginsDatetime"> <Label className={labelClasses} for="basePeriodDateRangePicker">{t('Base Period')}{t('(Optional)')}
{t('Base Period')}{t('(Optional)')}
</Label> </Label>
<DateRangePicker <DateRangePicker
readOnly={basePeriodDatetimeDisabled} id='basePeriodDateRangePicker'
format="MM/dd/yyyy hh:mm aa" readOnly={basePeriodDateRangePickerDisabled}
value={baseValues} format="yyyy-MM-dd hh:mm aa"
value={basePeriodDateRange}
onChange={onBasePeriodChange} onChange={onBasePeriodChange}
size="md" size="md"
style={styles} style={dateRangePickerStyle}
onClean={onBaseClean} onClean={onBasePeriodClean}
locale={local} locale={dateRangePickerLocale}
showMeridian showMeridian
placeholder={"~"} placeholder={t("Select Date Range")}
/> />
</FormGroup> </FormGroup>
</Col> </Col>
<Col xs={6} sm={3}> <Col xs={6} sm={3}>
<FormGroup className="form-group"> <FormGroup className="form-group">
<Label className={labelClasses}>{t('Reporting Period')}</Label> <Label className={labelClasses} for="reportingPeriodDateRangePicker">{t('Reporting Period')}</Label>
<br/> <br/>
<DateRangePicker <DateRangePicker
format="MM/dd/yyyy hh:mm aa" id='reportingPeriodDateRangePicker'
value={values} format="yyyy-MM-dd hh:mm aa"
value={reportingPeriodDateRange}
onChange={onReportingPeriodChange}
size="md" size="md"
style={styles} style={dateRangePickerStyle}
onChange={onChange} onClean={onReportingPeriodClean}
locale={dateRangePickerLocale}
showMeridian showMeridian
placeholder="Select Date Range" placeholder={t("Select Date Range")}
onClean={onClean}
locale={local}
/> />
</FormGroup> </FormGroup>
</Col> </Col>

View File

@ -134,6 +134,22 @@ const resources = {
'Output Energy Category': 'Output Energy Category', 'Output Energy Category': 'Output Energy Category',
'Fraction Parameter': 'Fraction Parameter', 'Fraction Parameter': 'Fraction Parameter',
'Search': 'Search', 'Search': 'Search',
//DateRangePicker
'sunday': 'Su',
'monday': 'Mo',
'tuesday': 'Tu',
'wednesday': 'We',
'thursday': 'Th',
'friday': 'Fr',
'saturday': 'Sa',
'ok': 'OK',
'today': 'Today',
'yesterday': 'Yesterday',
'hours': 'Hours',
'minutes': 'Minutes',
'seconds': 'Seconds',
'last7Days': 'Last 7 Days',
'Select Date Range': 'Select Date Range',
//Card Summaries and Line Charts //Card Summaries and Line Charts
'Base Period': 'Base Period', 'Base Period': 'Base Period',
'Reporting Period': 'Reporting Period', 'Reporting Period': 'Reporting Period',
@ -786,21 +802,6 @@ const resources = {
'API.VIRTUAL_POINT_SHOULD_BE_ANALOG_VALUE': 'Virtual point should be analog value', 'API.VIRTUAL_POINT_SHOULD_BE_ANALOG_VALUE': 'Virtual point should be analog value',
'API.WEB_MESSAGE_NOT_FOUND': 'Web message not found', 'API.WEB_MESSAGE_NOT_FOUND': 'Web message not found',
'API.WECHAT_MESSAGE_NOT_FOUND': 'Wechat message not found', 'API.WECHAT_MESSAGE_NOT_FOUND': 'Wechat message not found',
//DateRangePicker
'sunday': 'Su',
'monday': 'Mo',
'tuesday': 'Tu',
'wednesday': 'We',
'thursday': 'Th',
'friday': 'Fr',
'saturday': 'Sa',
'ok': 'OK',
'today': 'Today',
'yesterday': 'Yesterday',
'hours': 'Hours',
'minutes': 'Minutes',
'seconds': 'Seconds',
'last7Days': 'Last 7 Days'
} }
}, },
de: { de: {
@ -933,6 +934,22 @@ const resources = {
'Output Energy Category': 'Ausgangsenergiekategorie', 'Output Energy Category': 'Ausgangsenergiekategorie',
'Fraction Parameter': 'Fraktion Parameter', 'Fraction Parameter': 'Fraktion Parameter',
'Search': 'Suche', 'Search': 'Suche',
//DateRangePicker
'sunday': 'So',
'monday': 'Mo',
'tuesday': 'Di',
'wednesday': 'Mi',
'thursday': 'Do',
'friday': 'Fr',
'saturday': 'Sa',
'ok': 'OKAY',
'today': 'Heute',
'yesterday': 'Gestern',
'hours': 'Stunden',
'minutes': 'Protokoll',
'seconds': 'Nachschlag',
'last7Days': 'Letzte 7 Tage',
'Select Date Range': 'Datumsbereich auswählen',
//Card Summaries and Line Charts //Card Summaries and Line Charts
'Base Period': 'Basiszeitraum', 'Base Period': 'Basiszeitraum',
'Reporting Period': 'Berichtszeitraum', 'Reporting Period': 'Berichtszeitraum',
@ -1596,21 +1613,6 @@ const resources = {
'API.VIRTUAL_POINT_SHOULD_BE_ANALOG_VALUE': 'Virtual point should be analog value', 'API.VIRTUAL_POINT_SHOULD_BE_ANALOG_VALUE': 'Virtual point should be analog value',
'API.WEB_MESSAGE_NOT_FOUND': 'Web message not found', 'API.WEB_MESSAGE_NOT_FOUND': 'Web message not found',
'API.WECHAT_MESSAGE_NOT_FOUND': 'Wechat message not found', 'API.WECHAT_MESSAGE_NOT_FOUND': 'Wechat message not found',
//DateRangePicker
'sunday': 'So',
'monday': 'Mo',
'tuesday': 'Di',
'wednesday': 'Mi',
'thursday': 'Do',
'friday': 'Fr',
'saturday': 'Sa',
'ok': 'OKAY',
'today': 'Heute',
'yesterday': 'Gestern',
'hours': 'Stunden',
'minutes': 'Protokoll',
'seconds': 'Nachschlag',
'last7Days': 'Letzte 7 Tage'
} }
}, },
zh_CN: { zh_CN: {
@ -1741,6 +1743,22 @@ const resources = {
'Output Energy Category': '产出能源分类', 'Output Energy Category': '产出能源分类',
'Fraction Parameter': '分式参数', 'Fraction Parameter': '分式参数',
'Search': '搜索', 'Search': '搜索',
//DateRangePicker
'sunday': '',
'monday': '',
'tuesday': '',
'wednesday': '',
'thursday': '',
'friday': '',
'saturday': '',
'ok': '确定',
'today': '今天',
'yesterday': '昨天',
'hours': '',
'minutes': '',
'seconds': '',
'last7Days': '最近七天',
'Select Date Range': '选择日期范围',
//Card Summaries and Line Charts //Card Summaries and Line Charts
'Base Period': '基准期', 'Base Period': '基准期',
'Reporting Period': '报告期', 'Reporting Period': '报告期',
@ -2379,21 +2397,6 @@ const resources = {
'API.VIRTUAL_POINT_SHOULD_BE_ANALOG_VALUE': 'Virtual point should be analog value', 'API.VIRTUAL_POINT_SHOULD_BE_ANALOG_VALUE': 'Virtual point should be analog value',
'API.WEB_MESSAGE_NOT_FOUND': 'Web message not found', 'API.WEB_MESSAGE_NOT_FOUND': 'Web message not found',
'API.WECHAT_MESSAGE_NOT_FOUND': 'Wechat message not found', 'API.WECHAT_MESSAGE_NOT_FOUND': 'Wechat message not found',
//DateRangePicker
'sunday': '',
'monday': '',
'tuesday': '',
'wednesday': '',
'thursday': '',
'friday': '',
'saturday': '',
'ok': '确定',
'today': '今天',
'yesterday': '昨天',
'hours': '',
'minutes': '',
'seconds': '',
'last7Days': '最近七天',
} }
} }
}; };