import { round } from 'common/math';
import { Fragment } from 'inferno';
import { useBackend } from '../backend';
import { Box, Button, Dimmer, Flex, Icon, LabeledList, NoticeBox, ProgressBar, Section, Tabs } from '../components';
import { ComplexModal, modalRegisterBodyOverride } from '../interfaces/common/ComplexModal';
import { Window } from '../layouts';
const MENU_MAIN = 1;
const MENU_BODY = 2;
const MENU_MIND = 3;
const viewMindRecordModalBodyOverride = (modal, context) => {
const { act, data } = useBackend(context);
const { activerecord, realname, obviously_dead, oocnotes, can_sleeve_active } = modal.args;
return (
act('modal_close')} />}>
{realname}
{obviously_dead}
);
};
const viewBodyRecordModalBodyOverride = (modal, context) => {
const { act, data } = useBackend(context);
const { activerecord, realname, species, sex, mind_compat, synthetic, oocnotes, can_grow_active } = modal.args;
return (
act('modal_close')} />}>
{realname}
{species}
{sex}
{mind_compat}
{synthetic ? 'Yes' : 'No'}
act('create', {
ref: activerecord,
})
}
/>
);
};
export const ResleevingConsole = (props, context) => {
const { act, data } = useBackend(context);
const { menu, coredumped, emergency } = data;
let body = (
);
if (coredumped) {
body = ;
}
if (emergency) {
body = ;
}
modalRegisterBodyOverride('view_b_rec', viewBodyRecordModalBodyOverride);
modalRegisterBodyOverride('view_m_rec', viewMindRecordModalBodyOverride);
return (
{body}
);
};
const ResleevingConsoleNavigation = (props, context) => {
const { act, data } = useBackend(context);
const { menu } = data;
return (
act('menu', {
num: MENU_MAIN,
})
}>
Main
act('menu', {
num: MENU_BODY,
})
}>
Body Records
act('menu', {
num: MENU_MIND,
})
}>
Mind Records
);
};
const ResleevingConsoleBody = (props, context) => {
const { data } = useBackend(context);
const { menu, bodyrecords, mindrecords } = data;
let body;
if (menu === MENU_MAIN) {
body = ;
} else if (menu === MENU_BODY) {
body = ;
} else if (menu === MENU_MIND) {
body = ;
}
return body;
};
const ResleevingConsoleCoreDump = (props, context) => {
return (
TransCore dump completed. Resleeving offline.
);
};
const ResleevingConsoleDiskPrep = (props, context) => {
const { act } = useBackend(context);
return (
TRANSCORE DUMP
!!WARNING!!
This will transfer all minds to the dump disk, and the TransCore will be made unusable until post-shift
maintenance! This should only be used in emergencies!
act('ejectdisk')} />
act('coredump')}
/>
);
};
const ResleevingConsoleMain = (props, context) => {
const { act, data } = useBackend(context);
const { loading, scantemp, occupant, locked, can_brainscan, scan_mode, pods, selected_pod } = data;
const isLocked = locked && !!occupant;
return (
);
};
const ResleevingConsolePodGrowers = (props, context) => {
const { act, data } = useBackend(context);
const { pods, spods, selected_pod } = data;
if (pods && pods.length) {
return pods.map((pod, i) => {
let podAction;
if (pod.status === 'cloning') {
podAction = (
{round(pod.progress, 0) + '%'}
);
} else if (pod.status === 'mess') {
podAction = (
ERROR
);
} else {
podAction = (
act('selectpod', {
ref: pod.pod,
})
}
/>
);
}
return (
{pod.name}
= 150 ? 'good' : 'bad'} inline>
= 150 ? 'circle' : 'circle-o'} />
{pod.biomass}
{podAction}
);
});
}
return null;
};
const ResleevingConsolePodSleevers = (props, context) => {
const { act, data } = useBackend(context);
const { sleevers, spods, selected_sleever } = data;
if (sleevers && sleevers.length) {
return sleevers.map((pod, i) => {
return (
{pod.name}
act('selectsleever', {
ref: pod.sleever,
})
}
/>
);
});
}
return null;
};
const ResleevingConsolePodSpods = (props, context) => {
const { act, data } = useBackend(context);
const { spods, selected_printer } = data;
if (spods && spods.length) {
return spods.map((pod, i) => {
let podAction;
if (pod.status === 'cloning') {
podAction = (
{round(pod.progress, 0) + '%'}
);
} else if (pod.status === 'mess') {
podAction = (
ERROR
);
} else {
podAction = (
act('selectprinter', {
ref: pod.spod,
})
}
/>
);
}
return (
{pod.name}
= 15000 ? 'good' : 'bad'} inline>
= 15000 ? 'circle' : 'circle-o'} />
{pod.steel}
= 15000 ? 'good' : 'bad'} inline>
= 15000 ? 'circle' : 'circle-o'} />
{pod.glass}
{podAction}
);
});
}
return null;
};
const ResleevingConsoleRecords = (props, context) => {
const { act } = useBackend(context);
const { records, actToDo } = props;
if (!records.length) {
return (
No records found.
);
}
return (
{records.map((record, i) => (
act(actToDo, {
ref: record.recref,
})
}
/>
))}
);
};
const ResleevingConsoleTemp = (props, context) => {
const { act, data } = useBackend(context);
const { temp } = data;
if (!temp || !temp.text || temp.text.length <= 0) {
return;
}
const tempProp = { [temp.style]: true };
return (
{temp.text}
act('cleartemp')} />
);
};
const ResleevingConsoleStatus = (props, context) => {
const { act, data } = useBackend(context);
const { pods, spods, sleevers, autoallowed, autoprocess, disk } = data;
return (
{pods && pods.length ? (
{pods.length} connected
) : (
None connected!
)}
{spods && spods.length ? (
{spods.length} connected
) : (
None connected!
)}
{sleevers && sleevers.length ? (
{sleevers.length} Connected
) : (
None connected!
)}
);
};