diff --git a/web/src/components/MyEMS/Meter/MeterCost.js b/web/src/components/MyEMS/Meter/MeterCost.js index 7ed86c62..4b4f007a 100644 --- a/web/src/components/MyEMS/Meter/MeterCost.js +++ b/web/src/components/MyEMS/Meter/MeterCost.js @@ -60,6 +60,7 @@ const MeterCost = ({ setRedirect, setRedirectUrl, t }) => { const [selectedSpaceName, setSelectedSpaceName] = useState(undefined); const [selectedSpaceID, setSelectedSpaceID] = useState(undefined); const [meterList, setMeterList] = useState([]); + const [filteredMeterList, setFilteredMeterList] = useState([]); const [selectedMeter, setSelectedMeter] = useState(undefined); const [comparisonType, setComparisonType] = useState('month-on-month'); const [periodType, setPeriodType] = useState('daily'); @@ -139,6 +140,7 @@ const MeterCost = ({ setRedirect, setRedirectUrl, t }) => { json = JSON.parse(JSON.stringify([json]).split('"id":').join('"value":').split('"name":').join('"label":')); console.log(json); setMeterList(json[0]); + setFilteredMeterList(json[0]); if (json[0].length > 0) { setSelectedMeter(json[0][0].value); // enable submit button @@ -190,6 +192,7 @@ const MeterCost = ({ setRedirect, setRedirectUrl, t }) => { json = JSON.parse(JSON.stringify([json]).split('"id":').join('"value":').split('"name":').join('"label":')); console.log(json) setMeterList(json[0]); + setFilteredMeterList(json[0]); if (json[0].length > 0) { setSelectedMeter(json[0][0].value); // enable submit button @@ -205,7 +208,15 @@ const MeterCost = ({ setRedirect, setRedirectUrl, t }) => { }).catch(err => { console.log(err); }); - } + }; + + const onSearchMeter = ({ target }) => { + const keyword = target.value.toLowerCase(); + const filteredResult = meterList.filter( + meter => meter.label.toLowerCase().includes(keyword) + ); + setFilteredMeterList(keyword.length ? filteredResult : meterList); + }; let onComparisonTypeChange = ({ target }) => { console.log(target.value); @@ -229,15 +240,15 @@ const MeterCost = ({ setRedirect, setRedirectUrl, t }) => { setBasePeriodBeginsDatetimeDisabled(true); setBasePeriodEndsDatetimeDisabled(true); } - } + }; let onBasePeriodBeginsDatetimeChange = (newDateTime) => { setBasePeriodBeginsDatetime(newDateTime); - } + }; let onBasePeriodEndsDatetimeChange = (newDateTime) => { setBasePeriodEndsDatetime(newDateTime); - } + }; let onReportingPeriodBeginsDatetimeChange = (newDateTime) => { setReportingPeriodBeginsDatetime(newDateTime); @@ -246,7 +257,7 @@ const MeterCost = ({ setRedirect, setRedirectUrl, t }) => { } else if (comparisonType === 'month-on-month') { setBasePeriodBeginsDatetime(newDateTime.clone().subtract(1, 'months')); } - } + }; let onReportingPeriodEndsDatetimeChange = (newDateTime) => { setReportingPeriodEndsDatetime(newDateTime); @@ -255,23 +266,24 @@ const MeterCost = ({ setRedirect, setRedirectUrl, t }) => { } else if (comparisonType === 'month-on-month') { setBasePeriodEndsDatetime(newDateTime.clone().subtract(1, 'months')); } - } + }; 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')); - } + }; + // Handler const handleSubmit = e => { e.preventDefault(); @@ -454,14 +466,17 @@ const MeterCost = ({ setRedirect, setRedirectUrl, t }) => { - setSelectedMeter(target.value)} - > - {meterList.map((meter, index) => ( - - ))} - +
+ + setSelectedMeter(target.value)} + > + {filteredMeterList.map((meter, index) => ( + + ))} + +
diff --git a/web/src/components/MyEMS/Meter/MeterEnergy.js b/web/src/components/MyEMS/Meter/MeterEnergy.js index 8a39d326..bcd4afde 100644 --- a/web/src/components/MyEMS/Meter/MeterEnergy.js +++ b/web/src/components/MyEMS/Meter/MeterEnergy.js @@ -61,6 +61,7 @@ const MeterEnergy = ({ setRedirect, setRedirectUrl, t }) => { const [selectedSpaceName, setSelectedSpaceName] = useState(undefined); const [selectedSpaceID, setSelectedSpaceID] = useState(undefined); const [meterList, setMeterList] = useState([]); + const [filteredMeterList, setFilteredMeterList] = useState([]); const [selectedMeter, setSelectedMeter] = useState(undefined); const [comparisonType, setComparisonType] = useState('month-on-month'); const [periodType, setPeriodType] = useState('daily'); @@ -141,6 +142,7 @@ const MeterEnergy = ({ setRedirect, setRedirectUrl, t }) => { json = JSON.parse(JSON.stringify([json]).split('"id":').join('"value":').split('"name":').join('"label":')); console.log(json); setMeterList(json[0]); + setFilteredMeterList(json[0]); if (json[0].length > 0) { setSelectedMeter(json[0][0].value); // enable submit button @@ -193,6 +195,7 @@ const MeterEnergy = ({ setRedirect, setRedirectUrl, t }) => { json = JSON.parse(JSON.stringify([json]).split('"id":').join('"value":').split('"name":').join('"label":')); console.log(json) setMeterList(json[0]); + setFilteredMeterList(json[0]); if (json[0].length > 0) { setSelectedMeter(json[0][0].value); // enable submit button @@ -232,15 +235,23 @@ const MeterEnergy = ({ setRedirect, setRedirectUrl, t }) => { setBasePeriodBeginsDatetimeDisabled(true); setBasePeriodEndsDatetimeDisabled(true); } - } + }; + + const onSearchMeter = ({ target }) => { + const keyword = target.value.toLowerCase(); + const filteredResult = meterList.filter( + meter => meter.label.toLowerCase().includes(keyword) + ); + setFilteredMeterList(keyword.length ? filteredResult : meterList); + }; let onBasePeriodBeginsDatetimeChange = (newDateTime) => { setBasePeriodBeginsDatetime(newDateTime); - } + }; let onBasePeriodEndsDatetimeChange = (newDateTime) => { setBasePeriodEndsDatetime(newDateTime); - } + }; let onReportingPeriodBeginsDatetimeChange = (newDateTime) => { setReportingPeriodBeginsDatetime(newDateTime); @@ -249,7 +260,7 @@ const MeterEnergy = ({ setRedirect, setRedirectUrl, t }) => { } else if (comparisonType === 'month-on-month') { setBasePeriodBeginsDatetime(newDateTime.clone().subtract(1, 'months')); } - } + }; let onReportingPeriodEndsDatetimeChange = (newDateTime) => { setReportingPeriodEndsDatetime(newDateTime); @@ -258,23 +269,24 @@ const MeterEnergy = ({ setRedirect, setRedirectUrl, t }) => { } else if (comparisonType === 'month-on-month') { setBasePeriodEndsDatetime(newDateTime.clone().subtract(1, 'months')); } - } + }; 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')); - } + }; + // Handler const handleSubmit = e => { e.preventDefault(); @@ -406,7 +418,7 @@ const MeterEnergy = ({ setRedirect, setRedirectUrl, t }) => { console.log(err); }); }; - + const handleExport = e => { e.preventDefault(); const mimeType='application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' @@ -455,14 +467,19 @@ const MeterEnergy = ({ setRedirect, setRedirectUrl, t }) => { - setSelectedMeter(target.value)} - > - {meterList.map((meter, index) => ( - - ))} - + +
+ + setSelectedMeter(target.value)} + > + {filteredMeterList.map((meter, index) => ( + + ))} + +
+ diff --git a/web/src/components/MyEMS/Meter/MeterSubmetersBalance.js b/web/src/components/MyEMS/Meter/MeterSubmetersBalance.js index 0cc0026d..e76f1d1f 100644 --- a/web/src/components/MyEMS/Meter/MeterSubmetersBalance.js +++ b/web/src/components/MyEMS/Meter/MeterSubmetersBalance.js @@ -60,6 +60,7 @@ const MeterSubmetersBalance = ({ setRedirect, setRedirectUrl, t }) => { const [selectedSpaceName, setSelectedSpaceName] = useState(undefined); const [selectedSpaceID, setSelectedSpaceID] = useState(undefined); const [meterList, setMeterList] = useState([]); + const [filteredMeterList, setFilteredMeterList] = useState([]); const [selectedMeter, setSelectedMeter] = useState(undefined); const [periodType, setPeriodType] = useState('daily'); const [reportingPeriodBeginsDatetime, setReportingPeriodBeginsDatetime] = useState(current_moment.clone().startOf('month')); @@ -134,6 +135,7 @@ const MeterSubmetersBalance = ({ setRedirect, setRedirectUrl, t }) => { json = JSON.parse(JSON.stringify([json]).split('"id":').join('"value":').split('"name":').join('"label":')); console.log(json); setMeterList(json[0]); + setFilteredMeterList(json[0]); if (json[0].length > 0) { setSelectedMeter(json[0][0].value); // enable submit button @@ -186,6 +188,7 @@ const MeterSubmetersBalance = ({ setRedirect, setRedirectUrl, t }) => { json = JSON.parse(JSON.stringify([json]).split('"id":').join('"value":').split('"name":').join('"label":')); console.log(json) setMeterList(json[0]); + setFilteredMeterList(json[0]); if (json[0].length > 0) { setSelectedMeter(json[0][0].value); // enable submit button @@ -201,15 +204,23 @@ const MeterSubmetersBalance = ({ setRedirect, setRedirectUrl, t }) => { }).catch(err => { console.log(err); }); - } + }; + + const onSearchMeter = ({ target }) => { + const keyword = target.value.toLowerCase(); + const filteredResult = meterList.filter( + meter => meter.label.toLowerCase().includes(keyword) + ); + setFilteredMeterList(keyword.length ? filteredResult : meterList); + }; let onReportingPeriodBeginsDatetimeChange = (newDateTime) => { setReportingPeriodBeginsDatetime(newDateTime); - } + }; let onReportingPeriodEndsDatetimeChange = (newDateTime) => { setReportingPeriodEndsDatetime(newDateTime); - } + }; var getValidReportingPeriodBeginsDatetimes = function (currentDate) { return currentDate.isBefore(moment(reportingPeriodEndsDatetime, 'MM/DD/YYYY, hh:mm:ss a')); @@ -393,14 +404,17 @@ const MeterSubmetersBalance = ({ setRedirect, setRedirectUrl, t }) => { - setSelectedMeter(target.value)} - > - {meterList.map((meter, index) => ( - - ))} - +
+ + setSelectedMeter(target.value)} + > + {filteredMeterList.map((meter, index) => ( + + ))} + +
diff --git a/web/src/components/MyEMS/Meter/MeterTrend.js b/web/src/components/MyEMS/Meter/MeterTrend.js index abc155b6..40837194 100644 --- a/web/src/components/MyEMS/Meter/MeterTrend.js +++ b/web/src/components/MyEMS/Meter/MeterTrend.js @@ -56,6 +56,7 @@ const MeterTrend = ({ setRedirect, setRedirectUrl, t }) => { const [selectedSpaceName, setSelectedSpaceName] = useState(undefined); const [selectedSpaceID, setSelectedSpaceID] = useState(undefined); const [meterList, setMeterList] = useState([]); + const [filteredMeterList, setFilteredMeterList] = useState([]); const [selectedMeter, setSelectedMeter] = useState(undefined); const [reportingPeriodBeginsDatetime, setReportingPeriodBeginsDatetime] = useState(current_moment.clone().startOf('day')); const [reportingPeriodEndsDatetime, setReportingPeriodEndsDatetime] = useState(current_moment); @@ -123,6 +124,7 @@ const MeterTrend = ({ setRedirect, setRedirectUrl, t }) => { json = JSON.parse(JSON.stringify([json]).split('"id":').join('"value":').split('"name":').join('"label":')); console.log(json); setMeterList(json[0]); + setFilteredMeterList(json[0]); if (json[0].length > 0) { setSelectedMeter(json[0][0].value); // enable submit button @@ -175,6 +177,7 @@ const MeterTrend = ({ setRedirect, setRedirectUrl, t }) => { json = JSON.parse(JSON.stringify([json]).split('"id":').join('"value":').split('"name":').join('"label":')); console.log(json) setMeterList(json[0]); + setFilteredMeterList(json[0]); if (json[0].length > 0) { setSelectedMeter(json[0][0].value); // enable submit button @@ -190,18 +193,23 @@ const MeterTrend = ({ setRedirect, setRedirectUrl, t }) => { }).catch(err => { console.log(err); }); - } - + }; + + const onSearchMeter = ({ target }) => { + const keyword = target.value.toLowerCase(); + const filteredResult = meterList.filter( + meter => meter.label.toLowerCase().includes(keyword) + ); + setFilteredMeterList(keyword.length ? filteredResult : meterList); + }; let onReportingPeriodBeginsDatetimeChange = (newDateTime) => { setReportingPeriodBeginsDatetime(newDateTime); - - } + }; let onReportingPeriodEndsDatetimeChange = (newDateTime) => { setReportingPeriodEndsDatetime(newDateTime); - - } + }; var getValidReportingPeriodBeginsDatetimes = function (currentDate) { return currentDate.isBefore(moment(reportingPeriodEndsDatetime, 'MM/DD/YYYY, hh:mm:ss a')); @@ -381,14 +389,17 @@ const MeterTrend = ({ setRedirect, setRedirectUrl, t }) => { - setSelectedMeter(target.value)} - > - {meterList.map((meter, index) => ( - - ))} - +
+ + setSelectedMeter(target.value)} + > + {filteredMeterList.map((meter, index) => ( + + ))} + +
diff --git a/web/src/i18n.js b/web/src/i18n.js index cf9fcbb2..d6369eb2 100644 --- a/web/src/i18n.js +++ b/web/src/i18n.js @@ -133,6 +133,7 @@ const resources = { "Input Energy Category": "Input Energy Category", "Output Energy Category": "Output Energy Category", "Fraction Parameter": "Fraction Parameter", + "Search": "Search", //Card Summaries and Line Charts "Base Period": "Base Period", "Reporting Period": "Reporting Period", @@ -473,6 +474,7 @@ const resources = { "Input Energy Category": "Eingangsenergiekategorie", "Output Energy Category": "Ausgangsenergiekategorie", "Fraction Parameter": "Fraktion Parameter", + "Search": "Suche", //Card Summaries and Line Charts "Base Period": "Basiszeitraum", "Reporting Period": "Berichtszeitraum", @@ -816,6 +818,7 @@ const resources = { "Input Energy Category": "消耗能源分类", "Output Energy Category": "产出能源分类", "Fraction Parameter": "分式参数", + "Search": "搜索", //Card Summaries and Line Charts "Base Period": "基准期", "Reporting Period": "报告期",