Skip to content

Commit 10e1af4

Browse files
committed
use old react project working with clowder v1
1 parent 642a4f0 commit 10e1af4

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

91 files changed

+1642
-3699
lines changed

src/app.config.js

+10
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
let config = {};
2+
let hostname = process.env.CLOWDER_REMOTE_HOSTNAME || "";
3+
4+
// TODO when add auth piece remove this env
5+
let apikey = process.env.APIKEY;
6+
7+
config["hostname"] = hostname;
8+
config["apikey"] = apikey;
9+
10+
export default config;

src/components/App.jsx

+226
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,226 @@
1+
import React, {useEffect, useState} from "react";
2+
import TopBar from "./childComponents/TopBar";
3+
import Breadcrumbs from "./childComponents/BreadCrumb";
4+
import {makeStyles} from "@material-ui/core/styles";
5+
import {fetchFileMetadata} from "../utils/file";
6+
import {downloadThumbnail} from "../utils/thumbnail";
7+
import Dashboard from "./Dashbard";
8+
import Dataset from "./Dataset";
9+
import File from "./File";
10+
import datasetSchema from "../schema/datasetSchema.json";
11+
import fileSchema from "../schema/fileSchema.json";
12+
13+
const useStyles = makeStyles((theme) => ({}));
14+
15+
export default function App(props) {
16+
const classes = useStyles();
17+
18+
const [selectedFileId, setSelectedFileId] = useState("");
19+
const [selectedFilename, setSelectedFilename] = useState("");
20+
const [selectedDatasetId, setSelectedDatasetId] = useState("");
21+
const [selectedDatasetName, setSelectedDatasetName] = useState("");
22+
const [fileMetadataList, setFileMetadataList] = useState([]);
23+
const [fileThumbnailList, setFileThumbnailList] = useState([]);
24+
const [datasetThumbnailList, setDatasetThumbnailList] = useState([]);
25+
const [lastDataset, setLastDataset] = useState([]);
26+
const [firstDataset, setFirstDataset] = useState([]);
27+
const [limit, setLimit] = useState(5);
28+
29+
const [paths, setPaths] = useState([]);
30+
31+
const {
32+
// files
33+
listFileExtractedMetadata, fileExtractedMetadata,
34+
listFileMetadataJsonld, fileMetadataJsonld,
35+
listFilePreviews, filePreviews,
36+
37+
//dataset
38+
listFilesInDataset, filesInDataset,
39+
listDatasetAbout, datasetAbout,
40+
deleteFile,
41+
42+
//dashboard
43+
deleteDataset, listDatasets, datasets,
44+
45+
...other
46+
} = props;
47+
48+
// component did mount
49+
useEffect(() => {
50+
listDatasets(null, null, limit);
51+
}, []);
52+
53+
useEffect(() => {
54+
(async () => {
55+
if (datasets !== undefined && datasets.length > 0) {
56+
57+
let datasetThumbnailListTemp = [];
58+
await Promise.all(datasets.map(async (dataset) => {
59+
// add thumbnails
60+
if (dataset["thumbnail"] !== null && dataset["thumbnail"] !== undefined) {
61+
let thumbnailURL = await downloadThumbnail(dataset["thumbnail"]);
62+
datasetThumbnailListTemp.push({"id": dataset["id"], "thumbnail": thumbnailURL})
63+
}
64+
}));
65+
setDatasetThumbnailList(datasetThumbnailListTemp);
66+
67+
// find last and first dataset for pagination
68+
setFirstDataset(datasets[0])
69+
setLastDataset(datasets[datasets.length - 1]);
70+
71+
}
72+
})();
73+
}, [datasets])
74+
75+
// get metadata of each files; because we need the thumbnail of each file!!!
76+
useEffect(() => {
77+
78+
(async () => {
79+
if (filesInDataset !== undefined && filesInDataset.length > 0) {
80+
81+
let fileMetadataListTemp = [];
82+
let fileThumbnailListTemp = [];
83+
await Promise.all(filesInDataset.map(async (fileInDataset) => {
84+
85+
let fileMetadata = await fetchFileMetadata(fileInDataset["id"]);
86+
fileMetadataListTemp.push({"id": fileInDataset["id"], "metadata": fileMetadata});
87+
88+
// add thumbnails
89+
if (fileMetadata["thumbnail"] !== null && fileMetadata["thumbnail"] !== undefined) {
90+
let thumbnailURL = await downloadThumbnail(fileMetadata["thumbnail"]);
91+
fileThumbnailListTemp.push({"id": fileInDataset["id"], "thumbnail": thumbnailURL})
92+
}
93+
}));
94+
95+
setFileMetadataList(fileMetadataListTemp);
96+
setFileThumbnailList(fileThumbnailListTemp);
97+
}
98+
})();
99+
}, [filesInDataset])
100+
101+
// for breadcrumbs
102+
useEffect(() => {
103+
if (datasetAbout !== undefined && datasetAbout["name"] !== undefined){
104+
setSelectedDatasetName(datasetAbout["name"]);
105+
setPaths([
106+
{
107+
"name":datasetAbout["name"],
108+
"id": selectedDatasetId,
109+
"type":"dataset"
110+
}
111+
]);
112+
}
113+
}, [datasetAbout])
114+
115+
useEffect(() => {
116+
fileMetadataList.map((fileMetadata) => {
117+
if (selectedFileId === fileMetadata["id"]) {
118+
if (fileMetadata !== undefined && fileMetadata["metadata"]["filename"] !== undefined) {
119+
setSelectedFilename(fileMetadata["metadata"]["filename"]);
120+
setPaths([
121+
{
122+
"name":selectedDatasetName,
123+
"id": selectedDatasetId,
124+
"type":"dataset"
125+
},
126+
{
127+
"name":fileMetadata["metadata"]["filename"],
128+
"id": selectedFileId,
129+
"type":"file"
130+
}
131+
]);
132+
}
133+
}
134+
});
135+
}, [selectedFileId])
136+
137+
const previous = () => {
138+
let date = firstDataset["created"] !== undefined? new Date(firstDataset["created"]) : null;
139+
if (date) listDatasets("b", date.toISOString(), limit);
140+
}
141+
142+
const next = () => {
143+
let date = lastDataset["created"] !== undefined? new Date(lastDataset["created"]) : null;
144+
if (date) listDatasets("a", date.toISOString(), limit);
145+
}
146+
147+
const selectDataset = (selectedDatasetId) => {
148+
// pass that id to dataset component
149+
setSelectedDatasetId(selectedDatasetId);
150+
151+
// load dataset information
152+
listFilesInDataset(selectedDatasetId);
153+
listDatasetAbout(selectedDatasetId);
154+
}
155+
156+
const selectFile = (selectedFileId) => {
157+
// pass that id to file component
158+
setSelectedFileId(selectedFileId);
159+
160+
// load file information
161+
listFileExtractedMetadata(selectedFileId);
162+
listFileMetadataJsonld(selectedFileId);
163+
listFilePreviews(selectedFileId);
164+
}
165+
166+
const goToPath = (pathType, id) => {
167+
if (pathType === "dataset"){
168+
selectDataset(id);
169+
setSelectedFileId("");
170+
}
171+
else{
172+
setSelectedDatasetId("");
173+
setSelectedFileId("");
174+
setPaths([]);
175+
}
176+
}
177+
178+
return (
179+
<div>
180+
<TopBar/>
181+
<div className="outer-container">
182+
<Breadcrumbs paths={paths} goToPath={goToPath}/>
183+
{
184+
(() => {
185+
if (selectedDatasetId === "") {
186+
return <Dashboard datasets={datasets}
187+
selectDataset={selectDataset}
188+
thumbnails={datasetThumbnailList}
189+
previous={previous}
190+
next={next}
191+
datasetSchema={datasetSchema}
192+
deleteDataset={deleteDataset}
193+
/>
194+
} else if (selectedFileId === "") {
195+
return <Dataset files={filesInDataset}
196+
selectFile={selectFile}
197+
thumbnails={fileThumbnailList}
198+
about={datasetAbout}
199+
fileSchema={fileSchema}
200+
selectedDatasetId = {selectedDatasetId}
201+
selectDataset={selectDataset}
202+
deleteDataset={deleteDataset}
203+
deleteFile={deleteFile}
204+
/>
205+
} else {
206+
return fileMetadataList.map((fileMetadata) => {
207+
if (selectedFileId === fileMetadata["id"]) {
208+
return (
209+
<File fileMetadata={fileMetadata["metadata"]}
210+
fileExtractedMetadata={fileExtractedMetadata}
211+
fileMetadataJsonld={fileMetadataJsonld}
212+
filePreviews={filePreviews}
213+
fileId={selectedFileId}/>
214+
)
215+
}
216+
else{
217+
return <></>;
218+
}
219+
});
220+
}
221+
})()
222+
}
223+
</div>
224+
</div>
225+
);
226+
}

0 commit comments

Comments
 (0)