mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2025-12-28 11:03:19 +00:00
Bundle Copy
This commit is contained in:
83
tgui/packages/tgui_ch/interfaces/PortableGenerator.js
Normal file
83
tgui/packages/tgui_ch/interfaces/PortableGenerator.js
Normal file
@@ -0,0 +1,83 @@
|
||||
import { useBackend } from '../backend';
|
||||
import { Box, Button, LabeledList, NoticeBox, ProgressBar, Section } from '../components';
|
||||
import { Window } from '../layouts';
|
||||
import { round } from 'common/math';
|
||||
|
||||
export const PortableGenerator = (props, context) => {
|
||||
const { act, data } = useBackend(context);
|
||||
const stack_percent = data.fuel_stored / data.fuel_capacity;
|
||||
const stackPercentState = (stack_percent >= 0.5 && 'good') || (stack_percent > 0.15 && 'average') || 'bad';
|
||||
return (
|
||||
<Window width={450} height={340} resizable>
|
||||
<Window.Content scrollable>
|
||||
{!data.anchored && <NoticeBox>Generator not anchored.</NoticeBox>}
|
||||
<Section title="Status">
|
||||
<LabeledList>
|
||||
<LabeledList.Item label="Power switch">
|
||||
<Button
|
||||
icon={data.active ? 'power-off' : 'times'}
|
||||
onClick={() => act('toggle_power')}
|
||||
selected={data.active}
|
||||
disabled={!data.ready_to_boot}>
|
||||
{data.active ? 'On' : 'Off'}
|
||||
</Button>
|
||||
</LabeledList.Item>
|
||||
<LabeledList.Item
|
||||
label="Fuel Type"
|
||||
buttons={
|
||||
data.fuel_stored >= 1 && (
|
||||
<Button ml={1} icon="eject" disabled={data.active} onClick={() => act('eject')}>
|
||||
Eject
|
||||
</Button>
|
||||
)
|
||||
}>
|
||||
<Box color={stackPercentState}>
|
||||
{data.fuel_stored}cm³ {data.sheet_name}
|
||||
</Box>
|
||||
</LabeledList.Item>
|
||||
<LabeledList.Item label="Current fuel level">
|
||||
<ProgressBar
|
||||
value={data.fuel_stored / data.fuel_capacity}
|
||||
ranges={{
|
||||
good: [0.5, Infinity],
|
||||
average: [0.15, 0.5],
|
||||
bad: [-Infinity, 0.15],
|
||||
}}>
|
||||
{data.fuel_stored}cm³ / {data.fuel_capacity}cm³
|
||||
</ProgressBar>
|
||||
</LabeledList.Item>
|
||||
<LabeledList.Item label="Fuel Usage">{data.fuel_usage} cm³/s</LabeledList.Item>
|
||||
<LabeledList.Item label="Temperature">
|
||||
<ProgressBar
|
||||
value={data.temperature_current}
|
||||
maxValue={data.temperature_max + 30}
|
||||
color={data.temperature_overheat ? 'bad' : 'good'}>
|
||||
{round(data.temperature_current)}°C
|
||||
</ProgressBar>
|
||||
</LabeledList.Item>
|
||||
</LabeledList>
|
||||
</Section>
|
||||
<Section title="Output">
|
||||
<LabeledList>
|
||||
<LabeledList.Item label="Current output" color={data.unsafe_output ? 'bad' : null}>
|
||||
{data.power_output}
|
||||
</LabeledList.Item>
|
||||
<LabeledList.Item label="Adjust output">
|
||||
<Button icon="minus" onClick={() => act('lower_power')}>
|
||||
{data.power_generated}
|
||||
</Button>
|
||||
<Button icon="plus" onClick={() => act('higher_power')}>
|
||||
{data.power_generated}
|
||||
</Button>
|
||||
</LabeledList.Item>
|
||||
<LabeledList.Item label="Power available">
|
||||
<Box inline color={!data.connected && 'bad'}>
|
||||
{data.connected ? data.power_available : 'Unconnected'}
|
||||
</Box>
|
||||
</LabeledList.Item>
|
||||
</LabeledList>
|
||||
</Section>
|
||||
</Window.Content>
|
||||
</Window>
|
||||
);
|
||||
};
|
||||
Reference in New Issue
Block a user