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) => (
))}
);
};