import { Fragment } from 'inferno';
import { useBackend } from '../backend';
import { Box, Button, LabeledList, NoticeBox, ProgressBar, Section } from '../components';
import { InterfaceLockNoticeBox } from './common/InterfaceLockNoticeBox';
export const Apc = props => {
const { act, data } = useBackend(props);
const locked = data.locked && !data.siliconUser;
const powerStatusMap = {
2: {
color: 'good',
externalPowerText: 'External Power',
chargingText: 'Fully Charged',
},
1: {
color: 'average',
externalPowerText: 'Low External Power',
chargingText: 'Charging',
},
0: {
color: 'bad',
externalPowerText: 'No External Power',
chargingText: 'Not Charging',
},
};
const malfMap = {
1: {
icon: 'terminal',
content: 'Override Programming',
action: 'hack',
},
2: {
icon: 'caret-square-down',
content: 'Shunt Core Process',
action: 'occupy',
},
3: {
icon: 'caret-square-left',
content: 'Return to Main Core',
action: 'deoccupy',
},
4: {
icon: 'caret-square-down',
content: 'Shunt Core Process',
action: 'occupy',
},
};
const externalPowerStatus = powerStatusMap[data.externalPower]
|| powerStatusMap[0];
const chargingStatus = powerStatusMap[data.chargingStatus]
|| powerStatusMap[0];
const channelArray = data.powerChannels || [];
const malfStatus = malfMap[data.malfStatus] || malfMap[0];
const adjustedCellChange = data.powerCellStatus / 100;
if (data.failTime > 0) {
return (
SYSTEM FAILURE
I/O regulators malfunction detected!
Waiting for system reboot...
Automatic reboot in {data.failTime} seconds...
);
}
return (
act('lock')} />
act('breaker')} />
)}>
[ {externalPowerStatus.externalPowerText} ]
act('charge')} />
)}>
[ {chargingStatus.chargingText} ]
{channelArray.map(channel => {
const { topicParams } = channel;
return (
= 2 ? 'good' : 'bad'}>
{channel.status >= 2 ? 'On' : 'Off'}
)}>
{channel.powerLoad}
);
})}
{data.totalLoad}
{!!data.malfStatus && (
act(malfStatus.action)} />
)}
act('overload')} />
)}>
act('cover')} />
)} />
act('emergency_lighting')} />
)} />
act('toggle_nightshift')} />
)} />
);
};