import { sortBy } from 'common/collections'; import { flow } from 'common/fp'; import { useBackend, useLocalState } from '../backend'; import { Window } from '../layouts'; import { NanoMap, Box, Table, Button, Tabs, Icon } from '../components'; import { Fragment } from 'inferno'; const getStatText = (cm) => { if (cm.dead) { return 'Deceased'; } if (parseInt(cm.stat, 10) === 1) { // Unconscious return 'Unconscious'; } return 'Living'; }; const getStatColor = (cm) => { if (cm.dead) { return 'red'; } if (parseInt(cm.stat, 10) === 1) { // Unconscious return 'orange'; } return 'green'; }; export const CrewMonitor = () => { return ( ); }; export const CrewMonitorContent = (props, context) => { const { act, data, config } = useBackend(context); const [tabIndex, setTabIndex] = useLocalState(context, 'tabIndex', 0); const crew = flow([ sortBy((cm) => cm.name), sortBy((cm) => cm?.x), sortBy((cm) => cm?.y), sortBy((cm) => cm?.realZ), ])(data.crewmembers || []); const [zoom, setZoom] = useLocalState(context, 'zoom', 1); let body; // Data view if (tabIndex === 0) { body = ( Name Status Location {crew.map((cm) => ( {cm.name} ({cm.assignment}) {getStatText(cm)} {cm.sensor_type >= 2 ? ( {'('} {cm.brute} {'|'} {cm.fire} {'|'} {cm.tox} {'|'} {cm.oxy} {')'} ) : null} {cm.sensor_type === 3 ? ( data.isAI ? (
); } else if (tabIndex === 1) { // Please note, if you ever change the zoom values, // you MUST update styles/components/Tooltip.scss // and change the @for scss to match. body = ; } else { body = 'ERROR'; } return ( setTabIndex(0)}> Data View setTabIndex(1)}> Map View {body} ); }; const CrewMonitorMapView = (props, context) => { const { act, config, data } = useBackend(context); const [zoom, setZoom] = useLocalState(context, 'zoom', 1); return ( setZoom(v)}> {data.crewmembers .filter( (x) => x.sensor_type === 3 && ~~x.realZ === ~~config.mapZLevel ) .map((cm) => ( ))} ); };