Files
CHOMPStation2/tgui/packages/tgui/interfaces/RCON.js
ShadowLarkens 951f37d2e3 TGUI Engineering: Squashed Edition (Commits Below)
TGUI APCs

 TGUI vending machines

 Fix AI default_tgui_interaction

 TGUI Airlocks

 Station & Atmospheric Alert TGUI + Misc NTOS-TGUI Fixes

 TGUI Air Alarms & Central Atmospheric Control

 Airlock TGUI

 TG... got rid of UI for fire alarm. í´·

 TGUI Gas Heating/Cooling System

 TGUI Gas Pump & Passive Gate + Fixes

 TGUI Omni Atmospherics

 TGUI Pipe Dispensers & RPD

 TGUI IntelliCore & Vending Fix

 TGUI Handheld Tanks

 TGUI Portable Pump & Scrubber

 TGUI Tank Dispenser & Canisters

 TGUI Radios

 TGUI SMES & Air Alarm adjustment

 Tweak vending machine interfaces a tad

 TGUI Algae Farm

 TGUI general_air_control

 - Distro & Waste Console
 - Riot Control Console
 - Atmos Intake Console
 - Engine Cooling Console

 TGUI Heavy Scrubber Control (and body scanner fix)

 TGUI trinary devices & shutoff monitor

 TGUI Telecomms Log Browser

 TGUI Telecomms Machine Browser

 TGUI Spaceheater Internal Panel

 TGUI Gravity Generator

 TGUI Id Cards & Fix ID Card Images

 TGUI Id Card Redesign

 TGUI Turbolift

 TGUI Suit Cycler & Suit Storage Unit & Vending Fixes

 TGUI Power Monitor

 TGUI Signalers

 TGUI Employment Records

 TGUI Drone Console

 TGUI RIGSuits

 TGUI PA & PACMAN, and Margin Fix

 TGUI Solar Panels & Fix Power Monitor

 Adjust TGUI modules & their interaction with NTOS

 TGUI RCON

 TGUI Message Monitor

 Bump TGUI line limit to 120 (ParadiseSS13/Paradise#14002)

 TGUI Exonet & NTNet Relay

 TGUI Telecomms Multitool Menu

 TGUI Shield Capacitor & Shield Generator

 TGUI Supermatter-everything & Refactors
2020-08-09 04:46:31 -07:00

164 lines
4.6 KiB
JavaScript

import { round } from 'common/math';
import { Fragment } from 'inferno';
import { useBackend, useLocalState } from "../backend";
import { Box, Button, Flex, Icon, LabeledList, ProgressBar, Section, Tabs } from "../components";
import { Window } from "../layouts";
export const RCON = (props, context) => {
return (
<Window
width={630}
height={440}
resizable>
<Window.Content scrollable>
<RCONContent />
</Window.Content>
</Window>
);
};
export const RCONContent = (props, context) => {
const [tabIndex, setTabIndex] = useLocalState(context, 'tabIndex', 0);
let body;
if (tabIndex === 0) {
body = <RCONSmesList />;
} else if (tabIndex === 1) {
body = <RCONBreakerList />;
}
return (
<Fragment>
<Tabs>
<Tabs.Tab
key="SMESs"
selected={0 === tabIndex}
onClick={() => setTabIndex(0)}>
<Icon name="power-off" /> SMESs
</Tabs.Tab>
<Tabs.Tab
key="Breakers"
selected={1 === tabIndex}
onClick={() => setTabIndex(1)}>
<Icon name="bolt" /> Breakers
</Tabs.Tab>
</Tabs>
<Box m={2}>
{body}
</Box>
</Fragment>
);
};
const RCONSmesList = (props, context) => {
const { act, data } = useBackend(context);
const {
smes_info,
} = data;
return (
<Section title="SMESs">
<LabeledList>
{smes_info ? smes_info.map(smes => (
<LabeledList.Item key={smes.RCON_tag} label={smes.RCON_tag}>
<Box mb={1}>
<ProgressBar
value={smes.capacityPercent * 0.01}
ranges={{
good: [0.5, Infinity],
average: [0.15, 0.5],
bad: [-Infinity, 0.15],
}}>
{
round(smes.charge/(1000*60), 1)
} kWh / {
round(smes.capacity/(1000*60))
} kWh ({smes.capacityPercent}%)
</ProgressBar>
</Box>
<LabeledList>
<LabeledList.Item
label="Input"
buttons={(
<Fragment>
<Button
icon="power-off"
onClick={() => act("smes_in_toggle", {
smes: smes.RCON_tag,
})} />
<Button
icon="pen"
onClick={() => act("smes_in_set", {
smes: smes.RCON_tag,
})} />
</Fragment>
)}>
{smes.input_val} kW - {smes.input_set ? "ON" : "OFF"}
</LabeledList.Item>
<LabeledList.Item
label="Output"
buttons={(
<Fragment>
<Button
icon="power-off"
onClick={() => act("smes_out_toggle", {
smes: smes.RCON_tag,
})} />
<Button
icon="pen"
onClick={() => act("smes_out_set", {
smes: smes.RCON_tag,
})} />
</Fragment>
)}>
{smes.output_val} kW - {smes.output_set ? "ONLINE" : "OFFLINE"}
</LabeledList.Item>
<LabeledList.Item label="Output Load">
{smes.output_load} kW
</LabeledList.Item>
</LabeledList>
</LabeledList.Item>
)) : (
<LabeledList.Item color="bad">
No SMESs detected.
</LabeledList.Item>
)}
</LabeledList>
</Section>
);
};
const RCONBreakerList = (props, context) => {
const { act, data } = useBackend(context);
const {
breaker_info,
} = data;
return (
<Section title="Breakers">
<LabeledList>
{breaker_info ? breaker_info.map(breaker => (
<LabeledList.Item
key={breaker.RCON_tag}
label={breaker.RCON_tag}
buttons={(
<Button
icon="power-off"
content={breaker.enabled ? "Enabled" : "Disabled"}
selected={breaker.enabled}
color={breaker.enabled ? null : "bad"}
onClick={() => act("toggle_breaker", {
breaker: breaker.RCON_tag,
})} />
)} />
)) : (
<LabeledList.Item color="bad">
No breakers detected.
</LabeledList.Item>
)}
</LabeledList>
</Section>
);
};