-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathApp.js
86 lines (66 loc) · 2.29 KB
/
App.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
import React, { useEffect, useState } from 'react';
import { Tab, Tabs } from '@mui/material';
import About from './About.js';
import Scan from './Scan.js';
import File from './File.js';
import Photo from './Photo.js';
import Search from './Search.js';
import Data from './Data.js';
import TCPFooter from './TCPFooter.js';
import { useOptionalFhir } from './OptionalFhir';
import config from './lib/config.js';
import styles from './App.module.css';
const TabValue = {
About: 'about',
Scan: 'scan',
File: 'file',
Photo: 'photo',
Search: 'search',
Data: 'data'
}
export default function App() {
const [tabValue, setTabValue] = useState(config("initialTab"));
const [scannedSHX, setScannedSHX] = useState(undefined);
const fhir = useOptionalFhir();
const handleTabChange = (evt, newValue) => {
setTabValue(newValue);
};
function setTab(newTab) {
setTabValue(newTab);
}
function viewData(shx) {
setScannedSHX(shx);
setTabValue(TabValue.Data);
}
useEffect(() => {
const shx = config("shx");
if (shx) viewData(shx);
}, []); // empty array as second param ensures we'll only run once
return (
<div className={styles.container}>
<div className={styles.nav}>
<Tabs
value={tabValue}
onChange={handleTabChange}
orientation='horizontal'
variant='scrollable'>
<Tab label='About' value={TabValue.About} />
{ config("showScan") && <Tab label='Scan Card' value={TabValue.Scan} /> }
{ config("showFile") && <Tab label='Open File' value={TabValue.File} /> }
{ config("showPhoto") && <Tab label='Take Photo' value={TabValue.Photo} /> }
{ fhir && config("showSearch") && <Tab label='Search Record' value={TabValue.Search} /> }
{ scannedSHX && <Tab label='Card Details' value={TabValue.Data} /> }
</Tabs>
</div>
<div className={styles.content}>
{ tabValue === TabValue.About && <About setTab={setTab} tabValues={TabValue} /> }
{ tabValue === TabValue.Scan && <Scan viewData={viewData} /> }
{ tabValue === TabValue.File && <File viewData={viewData} /> }
{ tabValue === TabValue.Photo && <Photo viewData={viewData} /> }
{ tabValue === TabValue.Search && <Search viewData={viewData} /> }
{ tabValue === TabValue.Data && <Data shx={scannedSHX} /> }
</div>
{ config("tcpFooter") && <TCPFooter /> }
</div>
);
}