Files
GS13NG/tgui-next/packages/tgui/interfaces/TelecommsMonitor.js
Letter N 1fc73700c5 Telecomms TGUI (#12145)
* aaaaaa

* branch hell

* time to sync

* build

* adds more """functionality""" for telemonitor

* messaging pda thing

* bakes tgui

* someone didn't finish the code for req. consoles

* go use [TELECOMM STUFF].on, it's better

* build stuff

* a

* interface for teleinteraction

* tgui

* ready for launch - not tested yet

* build

* built ui

* bitflag readability and bye oldcode!

* bepis

* build ui
2020-06-01 00:22:40 +02:00

222 lines
7.1 KiB
JavaScript

import { Fragment } from 'inferno';
import { useBackend } from '../backend';
import { RADIO_CHANNELS } from '../constants';
import { Box, Button, LabeledList, NoticeBox, Section, Tabs, Input } from '../components';
export const Telemonitor = props => {
const { act, data } = useBackend(props);
const {
notice,
network = "NULL",
servers,
selected = null,
selected_servers,
} = data;
const operational = (selected && selected.status);
return (
<Fragment>
{!!notice && (
<NoticeBox>
{notice}
</NoticeBox>
)}
<Section title="Network Control">
<LabeledList>
<LabeledList.Item label="Network">
<Input
value={network}
width="150px"
maxLength={15}
onChange={(e, value) => act('network', {
'value': value,
})} />
</LabeledList.Item>
<LabeledList.Item
label="Memory"
buttons={(
<Fragment>
<Button
content="Flush Buffer"
icon="minus-circle"
disabled={!servers.length || !!selected}
onClick={() => act('release')} />
<Button
content="Probe Network"
icon="sync"
disabled={selected}
onClick={() => act('probe')} />
</Fragment>
)}>
{!selected ? (
servers ? (
`${servers.length} currently probed and buffered`
) : (
'Buffer is empty!'
)
) : (
selected_servers ? (
`${selected_servers.length} currently probed and buffered`
) : (
'Connected devices is empty!'
)
)}
</LabeledList.Item>
<LabeledList.Item
label="Selected Entity"
buttons={(
<Button
content="Disconnect"
icon="minus-circle"
disabled={!selected}
onClick={() => act('mainmenu')}
/>
)}>
{selected ? (
`${selected.name} (${selected.id})`
) : (
"None (None)"
)}
</LabeledList.Item>
</LabeledList>
</Section>
<Tabs>
<Tabs.Tab label="Network Entities">
<Section title="Detected Network Entities">
{(servers && servers.length) ? (
<LabeledList>
{servers.map(server => {
return (
<LabeledList.Item
key={server.name}
label={server.ref}
buttons={(
<Button
content="Connect"
selected={selected
&& (server.ref === selected.ref)}
onClick={() => act('viewmachine', {
'value': server.id,
})} />
)}>
{`${server.name} (${server.id})`}
</LabeledList.Item>
);
})}
</LabeledList>
) : (
'404 Servers not found. Have you tried scanning the network?'
)}
</Section>
</Tabs.Tab>
<Tabs.Tab
label="Entity Status"
disabled={!selected}>
<Section title="Network Entity Status">
<LabeledList>
<LabeledList.Item
label="Status"
color={operational ? 'good' : 'bad'}>
{operational ? (
'Running'
) : (
'Server down!'
)}
</LabeledList.Item>
<LabeledList.Item
label="Network Traffic"
color={operational && (selected.netspeed < selected.traffic) ? (
'bad'
) : (
'good'
)}>
{operational ? ( // Not to be confused to totaltraffic
selected.traffic <= 1024 ? (
`${Math.max(selected.traffic, 0)} Gigabytes`
) : (
`${Math.round(selected.traffic/1024)} Terrabytes`
)
) : (
'0 Gigabytes'
)}
</LabeledList.Item>
<LabeledList.Item label="Network Speed">
{operational ? (
selected.netspeed <= 1024 ? (
`${selected.netspeed} Gigabytes/second`
) : (
`${Math.round(selected.netspeed/1024)} Terrabytes/second`
)
) : (
'0 Gigabytes/second'
)}
</LabeledList.Item>
<LabeledList.Item
label="Multi-Z Link"
color={(operational && selected.long_range_link) ? (
'good'
) : (
'bad'
)}>
{(operational && selected.long_range_link) ? (
'true'
) : (
'false'
)}
</LabeledList.Item>
<LabeledList.Item label="Frequency Listening">
<Box>
{operational && selected.freq_listening.map(thing => {
const valid = RADIO_CHANNELS
.find(channel => channel.freq === thing);
return (
(valid) ? (
<span style={`color: ${valid.color}`}>
{`[${thing}] (${valid.name}) `}
</span>
) : (
`[${thing}] `
)
);
})}
</Box>
</LabeledList.Item>
</LabeledList>
<Section
title="Servers Linked"
level={3}>
{(operational && selected_servers) ? (
<LabeledList>
{selected_servers.map(server => {
return (
<LabeledList.Item
key={server.name}
label={server.ref}
buttons={(
<Button
content="Connect"
onClick={() => act('viewmachine', {
'value': server.id,
})} />
)}>
{`${server.name} (${server.id})`}
</LabeledList.Item>
);
})}
</LabeledList>
) : (
!operational ? (
"Server currently down! Cannot fetch the buffer list!"
) : (
"Buffer is empty!"
)
)}
</Section>
</Section>
</Tabs.Tab>
</Tabs>
</Fragment>
);
};