提交 8597c762 编写于 作者: nengyuangzhang's avatar nengyuangzhang

updated microgrid dashboard

上级 e7ee70aa
......@@ -172,6 +172,21 @@ class Reporting:
microgrid_list = list()
if rows_microgrids is not None and len(rows_microgrids) > 0:
for row in rows_microgrids:
# get gateway latest seen datetime to determine if it is online
query = (" SELECT tg.last_seen_datetime_utc "
" FROM tbl_microgrids_batteries mb, tbl_points p, tbl_data_sources tds, tbl_gateways tg "
" WHERE microgrid_id = %s "
" AND mb.soc_point_id = p.id "
" AND p.data_source_id = tds.id "
" AND tds.gateway_id = tg.id ")
cursor_system_db.execute(query, (row[0],))
row_datetime = cursor_system_db.fetchone()
is_online = False
if row_datetime is not None and len(row_datetime) > 0:
if isinstance(row_datetime[0], datetime):
if row_datetime[0] + timedelta(minutes=10) > datetime.utcnow():
is_online = True
meta_result = {"id": row[0],
"name": row[1],
"uuid": row[2],
......@@ -182,7 +197,8 @@ class Reporting:
"rated_capacity": row[7],
"rated_power": row[8],
"serial_number": row[9],
"description": row[10]}
"description": row[10],
"status": 'online' if is_online else 'offline'}
microgrid_list.append(meta_result)
charge_ranking = list()
if rows_microgrids is not None and len(rows_microgrids) > 0:
......
......@@ -1256,7 +1256,7 @@ const Dashboard = ({ setRedirect, setRedirectUrl, t }) => {
toggleTabLeft('1');
}}
>
<h6>Energy</h6>
<h6>{t('Microgrid Energy')}</h6>
</NavLink>
</NavItem>
<NavItem className="cursor-pointer">
......@@ -1266,7 +1266,7 @@ const Dashboard = ({ setRedirect, setRedirectUrl, t }) => {
toggleTabLeft('2');
}}
>
<h6>Revenue</h6>
<h6>{t('Microgrid Revenue')}</h6>
</NavLink>
</NavItem>
<NavItem className="cursor-pointer">
......@@ -1276,7 +1276,7 @@ const Dashboard = ({ setRedirect, setRedirectUrl, t }) => {
toggleTabLeft('3');
}}
>
<h6>Carbon</h6>
<h6>{t('Microgrid Carbon')}</h6>
</NavLink>
</NavItem>
</Nav>
......
......@@ -20,38 +20,6 @@ const nameFormatter = (nameuuid) => (
</Link>
);
const badgeFormatter = status => {
let color = '';
let icon = '';
let text = '';
switch (status) {
case 'charging':
color = 'success';
icon = 'check';
text = 'Charging';
break;
case 'discharging':
color = 'success';
icon = 'check';
text = 'Discharging';
break;
case 'offline':
color = 'secondary';
icon = 'ban';
text = 'Offline';
break;
default:
color = 'warning';
icon = 'stream';
text = 'Idling';
}
return (
<Badge color={`soft-${color}`} className="rounded-capsule">
{text}
<FontAwesomeIcon icon={icon} transform="shrink-2" className="ml-1" />
</Badge>
);
};
const energyFormatter = amount => <Fragment>{amount} kWh</Fragment>;
const capacityFormatter = amount => <Fragment>{amount} kWh</Fragment>;
......@@ -111,6 +79,43 @@ const MicrogridTable = ({ setIsSelected, microgridList, t }) => {
totalSize: microgridList.length
};
const statusFormatter = status => {
let color = '';
let icon = '';
let text = '';
switch (status) {
case 'online':
color = 'success';
icon = 'check';
text = t('Communication Online');
break;
case 'charging':
color = 'success';
icon = 'check';
text = 'Charging';
break;
case 'discharging':
color = 'success';
icon = 'check';
text = 'Discharging';
break;
case 'offline':
color = 'secondary';
icon = 'ban';
text = t('Communication Offline');
break;
default:
color = 'warning';
icon = 'stream';
text = 'Idling';
}
return (
<Badge color={`soft-${color}`} className="rounded-capsule">
{text}
<FontAwesomeIcon icon={icon} transform="shrink-2" className="ml-1" />
</Badge>
);
};
const columns = [
{
dataField: 'nameuuid',
......@@ -127,6 +132,13 @@ const MicrogridTable = ({ setIsSelected, microgridList, t }) => {
headerClasses: 'border-0',
sort: true
},
{
dataField: 'postal_code',
text: t('Postal Code'),
classes: 'border-0 align-middle',
headerClasses: 'border-0',
sort: true
},
{
dataField: 'total_charge',
text: t('Total Charge'),
......@@ -168,9 +180,9 @@ const MicrogridTable = ({ setIsSelected, microgridList, t }) => {
sort: true,
},
{
dataField: 'communication_status',
dataField: 'status',
text: t('Communication Status'),
formatter: badgeFormatter,
formatter: statusFormatter,
classes: 'border-0 align-middle fs-0',
headerClasses: 'border-0',
sort: true,
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册