- {{if data.siliconUser}}
-
- Interface Lock:
-
-
- {{:helper.link('Engaged', 'lock', {'toggleaccess' : 1}, data.siliconLock ? 'selected' : null)}}{{:helper.link('Disengaged', 'unlock', {'toggleaccess' : 1}, data.malfStatus >= 2 ? 'linkOff' : (data.siliconLock ? null : 'selected'))}}
-
-
- {{else}}
- {{if data.locked}}
- Swipe an ID card to unlock this interface
- {{else}}
- Swipe an ID card to lock this interface
- {{/if}}
- {{/if}}
-
-
-
-
-
Power Status
-
-
-
- Main Breaker:
-
-
- {{if data.locked && !data.siliconUser}}
- {{if data.isOperating}}
- On
- {{else}}
- Off
- {{/if}}
- {{else}}
- {{:helper.link('On', 'power-off', {'breaker' : 1}, data.isOperating ? 'selected' : null)}}{{:helper.link('Off', 'close', {'breaker' : 1}, data.isOperating ? null : 'selected')}}
- {{/if}}
-
-
-
-
-
- External Power:
-
-
- {{if data.externalPower == 2}}
- Good
- {{else data.externalPower == 1}}
- Low
- {{else}}
- None
- {{/if}}
-
-
-
-
-
- Power Cell:
-
- {{if data.powerCellStatus == null}}
-
- Power cell removed.
-
- {{else}}
-
- {{:helper.displayBar(data.powerCellStatus, 0, 100, (data.powerCellStatus >= 50) ? 'good' : (data.powerCellStatus >= 25) ? 'average' : 'bad')}}
-
- {{:helper.smoothRound(data.powerCellStatus, 1)}}%
-
- {{/if}}
-
-
- {{if data.powerCellStatus != null}}
-
-
- Charge Mode:
-
-
- {{if data.locked && !data.siliconUser}}
- {{if data.chargeMode}}
- Auto
- {{else}}
- Off
- {{/if}}
- {{else}}
- {{:helper.link('Auto', 'refresh', {'cmode' : 1}, data.chargeMode ? 'selected' : null)}}{{:helper.link('Off', 'close', {'cmode' : 1}, data.chargeMode ? null : 'selected')}}
- {{/if}}
-
- {{if data.chargingStatus > 1}}
- [Fully Charged]
- {{else data.chargingStatus == 1}}
- [Charging]
- {{else}}
- [Not Charging]
- {{/if}}
-
-
- {{/if}}
-
-
-
Power Channels
-
- {{for data.powerChannels}}
-
-
- {{:value.title}}:
-
-
- {{:helper.smoothRound(value.powerLoad)}} W
-
-
-
- {{if value.status <= 1}}
- Off
- {{else value.status >= 2}}
- On
- {{/if}}
- {{if data.locked}}
- {{if value.status == 1 || value.status == 3}}
- Auto
- {{else}}
- Manual
- {{/if}}
- {{/if}}
-
- {{if !data.locked || data.siliconUser}}
-
- {{:helper.link('Auto', 'refresh', value.topicParams.auto, (value.status == 1 || value.status == 3) ? 'selected' : null)}}
- {{:helper.link('On', 'power-off', value.topicParams.on, (value.status == 2) ? 'selected' : null)}}
- {{:helper.link('Off', 'close', value.topicParams.off, (value.status == 0) ? 'selected' : null)}}
-
- {{/if}}
-
- {{/for}}
-
-
-
- Total Load:
-
-
- {{:helper.smoothRound(data.totalLoad)}} W
-
-
-
-
-
-
-
- Cover Lock:
-
-
- {{if data.locked && !data.siliconUser}}
- {{if data.coverLocked}}
- Engaged
- {{else}}
- Disengaged
- {{/if}}
- {{else}}
- {{:helper.link('Engaged', 'lock', {'lock' : 1}, data.coverLocked ? 'selected' : null)}}{{:helper.link('Disengaged', 'unlock', {'lock' : 1}, data.coverLocked ? null : 'selected')}}
- {{/if}}
-
-
-
- {{if data.siliconUser}}
-
System Overrides
-
-
- {{:helper.link('Overload Lighting Circuit', 'lightbulb-o', {'overload' : 1})}}
- {{if data.malfStatus == 1}}
- {{:helper.link('Override Programming', 'file-text', {'malfhack' : 1})}}
- {{else data.malfStatus == 2}}
- {{:helper.link('Shunt Core Processes', 'arrow-down', {'occupyapc' : 1})}}
- {{else data.malfStatus == 3}}
- {{:helper.link('Return to Main Core', 'arrow-left', {'deoccupyapc' : 1})}}
- {{else data.malfStatus == 4}}
- {{:helper.link('Shunt Core Processes', 'arrow-down', {'occupyapc' : 1}, 'linkOff')}}
- {{/if}}
-
- {{/if}}
-
-
-
- Night Shift Lighting:
-
-
- {{if data.locked}}
- {{if data.nightshiftLights}}
- On
- {{else}}
- Off
- {{/if}}
- {{else}}
- {{:helper.link('Enabled', 'lightbulb-o', {'toggle_nightshift' : 1}, data.nightshiftLights ? 'selected' : null)}}{{:helper.link('Disabled', 'lightbulb-o', {'toggle_nightshift' : 1}, data.nightshiftLights ? null : 'selected')}}
- {{/if}}
-
-
-
-
diff --git a/tgui/packages/tgui/interfaces/APC.js b/tgui/packages/tgui/interfaces/APC.js
new file mode 100644
index 00000000000..652188a3073
--- /dev/null
+++ b/tgui/packages/tgui/interfaces/APC.js
@@ -0,0 +1,195 @@
+import { Fragment } from 'inferno';
+import { useBackend } from '../backend';
+import { Box, Button, LabeledList, NoticeBox, ProgressBar, Section } from '../components';
+import { Window } from '../layouts';
+import { InterfaceLockNoticeBox } from './common/InterfaceLockNoticeBox';
+
+export const APC = (props, context) => {
+ return (
+