File size: 1,139 Bytes
15d2f30
de03c4e
 
 
15d2f30
 
 
de03c4e
 
 
 
 
15d2f30
 
 
de03c4e
 
 
 
 
15d2f30
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
de03c4e
 
 
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
import { useState } from 'react';
import NetworkViewer from './NetworkViewer.tsx';
import Sidebar from './Sidebar.tsx';
import useAppLogic from './useAppLogic.ts';
import DataViewer from './DataViewer.tsx';
import LoadingScreen from './ui/LoadingScreen.tsx';
import Tabs from './ui/Tabs.tsx';

export default function App() {

  const app = useAppLogic();

  const tabs = ["Data", "Network"] as const;
  const [activeTab, setActiveTab] = useState<(typeof tabs)[number]>('Data');

  if (!app.backendReady) {
    return <LoadingScreen message="Loading" />
  }

  return (
    <div className="min-h-0 min-w-0 grid grid-cols-[2fr_1fr] h-dvh">

      <div>
        <Tabs tabs={tabs} activeTab={activeTab} onChange={setActiveTab} />
        {activeTab === 'Data' && (
          <DataViewer 
            onGetRandomSample={app.getRandomSample}
            imageUrl={app.sampleImageUrl}
            label={app.sampleLabel}
          />
        )}
        {activeTab === 'Network' && (
          <NetworkViewer 
          />
        )}
      </div>

      <Sidebar 
        onImageFolderUpload={app.onImageFolderUpload}
      />
    </div>
  );
};