import { Fragment } from 'inferno'; import { useBackend, useLocalState } from '../backend'; import { Box, Button, Icon, Input, LabeledList, Section, Tabs } from '../components'; import { ComplexModal, modalOpen } from './common/ComplexModal'; import { Window } from '../layouts'; import { LoginInfo } from './common/LoginInfo'; import { LoginScreen } from './common/LoginScreen'; import { TemporaryNotice } from './common/TemporaryNotice'; import { createSearch } from 'common/string'; import { filter } from 'common/collections'; import { flow } from 'common/fp'; const doEdit = (context, field) => { modalOpen(context, 'edit', { field: field.edit, value: field.value, }); }; export const GeneralRecords = (_properties, context) => { const { data } = useBackend(context); const { authenticated, screen } = data; if (!authenticated) { return ( ); } let body; if (screen === 2) { // List Records body = ; } else if (screen === 3) { // Record Maintenance body = ; } else if (screen === 4) { // View Records body = ; } return (
{body}
); }; /** * Record selector. * * Filters records, applies search terms and sorts the alphabetically. */ const selectRecords = (records, searchText = '') => { const nameSearch = createSearch(searchText, (record) => record.name); const idSearch = createSearch(searchText, (record) => record.id); const dnaSearch = createSearch(searchText, (record) => record.b_dna); let fl = flow([ // Optional search term searchText && filter((record) => { return nameSearch(record) || idSearch(record) || dnaSearch(record); }), ])(records); return fl; }; const GeneralRecordsList = (_properties, context) => { const { act, data } = useBackend(context); const [searchText, setSearchText] = useLocalState(context, 'searchText', ''); const records = selectRecords(data.records, searchText); return (