Skip to content

Commit

Permalink
add PIs info in json
Browse files Browse the repository at this point in the history
  • Loading branch information
Pooya-Oladazimi committed Feb 6, 2025
1 parent d38ce83 commit 74f09e0
Show file tree
Hide file tree
Showing 10 changed files with 98 additions and 109 deletions.
2 changes: 1 addition & 1 deletion app/about/page.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import AboutPeople from "../ui/about/people";

export default function About() {
return (
<div className="md:col-span-10 sm:row-span-1 gap-4">
<div className="md:col-span-3 grid grid-rows-1">
<div className="grid grid-rows-1 mb-20">
<p className="header-1">Goals</p>
<p className="text-justify">
Expand Down
2 changes: 1 addition & 1 deletion app/contact/page.tsx
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
export default function Contact() {
return (
<div className="md:col-span-10 sm:row-span-1">
<div className="md:col-span-2">
<p className="header-1">Contact us</p>
<p>
Feel free to contact us at
Expand Down
2 changes: 1 addition & 1 deletion app/documentation/page.tsx
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
export default function Documentation() {
return (
<div className="md:col-span-10 sm:row-span-1">
<div className="md:col-span-2">
<p className="header-1">Service documentation</p>
<p className="text-justify">
Here you can read about service portal and API gateway user guid
Expand Down
2 changes: 1 addition & 1 deletion app/globals.css
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ body {
}

.site-content{
@apply container grid md:grid-cols-10 sm:grid-rows-1 gap-4 min-h-screen pt-20 mx-auto md:pl-10 md:pr-4;
@apply container grid md:grid-cols-3 sm:grid-rows-1 gap-4 min-h-screen pt-20 mx-auto md:pl-10 pr-10;
}

.header-1{
Expand Down
13 changes: 13 additions & 0 deletions app/libs/utils.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
import { promises as fs } from "fs";


export async function readJsonFile(filePath: string) {
try {
const file = await fs.readFile(process.cwd() + filePath, 'utf8');
const data = JSON.parse(file);
return data;
} catch (e) {
console.error("Error reading JSON file:", e);
return null;
}
}
4 changes: 2 additions & 2 deletions app/page.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -4,15 +4,15 @@ import Image from 'next/image';
export default function Home() {
return (
<>
<div className='md:col-span-4 sm:row-span-1 mx-auto'>
<div className='md:col-span-1 mx-auto'>
<Image
src={"/logo.png"}
width={400}
height={400}
alt="TS4NFDI Logo"
/>
</div>
<div className='md:col-span-6 sm:row-span-1'>
<div className='md:col-span-2'>
<p className='text-justify'>
Terminology Services 4 NFDI (TS4NFDI) is a cross-domain service for the provision, curation, development,
harmonization, and mapping of terminologies. It aims to facilitate consensus-building and interoperability
Expand Down
18 changes: 18 additions & 0 deletions app/ui/about/people.json
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,24 @@
"name": "Koepler, Oliver",
"affiliation": "TIB - Leibniz Information Centre for Science and Technology, Hannover",
"orcid": "https://orcid.org/0000-0003-3385-4232"
},
{
"imagePath": "/blank.jpg",
"name": "Voß, Jakob",
"affiliation": "Verbundzentrale des GBV (VZG), Göttingen",
"orcid": "https://orcid.org/0000-0002-7613-4123"
},
{
"imagePath": "/blank.jpg",
"name": "Mühlhaus, Timo",
"affiliation": "RPTU University of Kaiserslautern-Landau",
"orcid": "https://orcid.org/0000-0003-3925-6778"
},
{
"imagePath": "/blank.jpg",
"name": "Posthumus, Etienne",
"affiliation": "FIZ Karlsruhe",
"orcid": "https://orcid.org/0000-0002-0006-7542"
}
]
},
Expand Down
123 changes: 32 additions & 91 deletions app/ui/about/people.tsx
Original file line number Diff line number Diff line change
@@ -1,102 +1,43 @@
import Image from "next/image";
import { readJsonFile } from "@/app/libs/utils";
import {
peopleJsonData,
sectionData,
personData
} from "./types";


import { promises as fs } from "fs";


type personData = {
imagePath: string,
name: string,
affiliation: string,
orcid: string
}

type sectionData = {
title: string,
persons: personData[]
}

export default async function AboutPeople() {
const [imgW, imgH] = [150, 150];

async function readJsonFile(filePath: string) {
try {
const file = await fs.readFile(process.cwd() + '/app/ui/about/people.json', 'utf8');
const data = JSON.parse(file);
return data;
} catch (e) {
console.error("Error reading YAML file:", e);
return null;
}
}

const peopleJson = await readJsonFile('') as sectionData[];
console.log(peopleJson)

const peopleJson = await readJsonFile('/app/ui/about/people.json') as peopleJsonData;

return (
<>
<p className="header-2"><b>Principal Investigators</b></p>
<div className="grid grid-rows-1">
<div className="grid md:grid-cols-3 sm:grid-rows-1">
{
//@ts-ignore
peopleJson['sections'][0]['persons'].map((person: personData) => {
return (
<div className="card">
<Image src={person.imagePath} width={imgW} height={imgH} alt={person.name} className="mx-auto"></Image>
<div className="pt-2">
<p className="text-lg"><b>{person.name}</b></p>
<p className="mb-2">{person.affiliation}</p>
<a href={person.orcid} className="orcid-id-btn" target="_blank">ID</a>
</div>
</div>
);
})
}
</div>
</div>
<p className="header-2"><b>Project Team Members</b></p>
<div className="grid grid-rows-1">
<div className="grid grid-cols-3">
{
//@ts-ignore
peopleJson['sections'][1]['persons'].map((person: personData) => {
return (
<div className="card">
<Image src={person.imagePath} width={imgW} height={imgH} alt={person.name} className="mx-auto"></Image>
<div className="pt-2">
<p className="text-lg"><b>{person.name}</b></p>
<p className="mb-2">{person.affiliation}</p>
<a href={person.orcid} className="orcid-id-btn" target="_blank">ID</a>
</div>
</div>
);
})
}

</div>
</div>
<p className="header-2"><b>Former Project Team Members</b></p>
<div className="grid grid-rows-1">
<div className="grid grid-cols-3">
{
//@ts-ignore
peopleJson['sections'][2]['persons'].map((person: personData) => {
return (
<div className="card">
<Image src={person.imagePath} width={imgW} height={imgH} alt={person.name} className="mx-auto"></Image>
<div className="pt-2">
<p className="text-lg"><b>{person.name}</b></p>
<p className="mb-2">{person.affiliation}</p>
<a href={person.orcid} className="orcid-id-btn" target="_blank">ID</a>
</div>
</div>
);
})
}
</div>
</div>
{
peopleJson['sections'].map((section: sectionData) => {
return (
<>
<p className="header-2"><b>{section.title}</b></p>
<div className="grid md:grid-cols-3 sm:grid-rows-1 gap-4">
{
section.persons.map((person: personData) => {
return (
<div className="card">
<Image src={person.imagePath} width={imgW} height={imgH} alt={person.name} className="mx-auto"></Image>
<div className="pt-2">
<p className="text-lg"><b>{person.name}</b></p>
<p className="mb-2">{person.affiliation}</p>
<a href={person.orcid} className="orcid-id-btn" target="_blank">ID</a>
</div>
</div>
);
})
}
</div>
</>
)
})
}
</>
);
}
15 changes: 15 additions & 0 deletions app/ui/about/types.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
export type personData = {
imagePath: string,
name: string,
affiliation: string,
orcid: string
}

export type sectionData = {
title: string,
persons: personData[]
}

export type peopleJsonData = {
sections: sectionData[]
}
26 changes: 14 additions & 12 deletions app/widgets/page.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ import { QueryClient, QueryClientProvider } from "react-query";
export default function Widgets() {
const queryClient = new QueryClient();
return (
<div className="md:col-span-8 sm:row-span-1">
<div className="md:col-span-3">
<p className="header-1">TSS Widgets</p>
<p className="text-justify">
The Terminology Service Suite project, derived from the
Expand All @@ -47,17 +47,19 @@ export default function Widgets() {
<b>Parameters: </b>
ontology=mesh,efo&type=class&collection=nfdi4health&fieldList=description,label,iri,ontology_name,type,short_form
</p>
<AutocompleteWidget
api={"https://ts4nfdi-api-gateway.prod.km.k8s.zbmed.de/api-gateway/"}
hasShortSelectedLabel={true}
parameter={"ontology=mesh,efo&type=class&collection=nfdi4health&fieldList=description,label,iri,ontology_name,type,short_form"}
placeholder="Search for a Concept"
preselected={[]}
selectionChangedEvent={function noRefCheck() { }}
showApiSource={true}
singleSelection={true}
ts4nfdiGateway={true}
/>
<div className='md:w-1/2 sm:w-full'>
<AutocompleteWidget
api={"https://ts4nfdi-api-gateway.prod.km.k8s.zbmed.de/api-gateway/"}
hasShortSelectedLabel={true}
parameter={"ontology=mesh,efo&type=class&collection=nfdi4health&fieldList=description,label,iri,ontology_name,type,short_form"}
placeholder="Search for a Concept"
preselected={[]}
selectionChangedEvent={function noRefCheck() { }}
showApiSource={true}
singleSelection={true}
ts4nfdiGateway={true}
/>
</div>
</QueryClientProvider>
</div>
);
Expand Down

0 comments on commit 74f09e0

Please sign in to comment.