Skip to content

Commit

Permalink
Implement MD static loading, menu & routes
Browse files Browse the repository at this point in the history
  • Loading branch information
khoidt committed Feb 15, 2024
1 parent 866941e commit 7e5407b
Show file tree
Hide file tree
Showing 6 changed files with 196 additions and 127 deletions.
8 changes: 7 additions & 1 deletion src/about/ui/about.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -28,9 +28,11 @@ export type TabId = typeof tabIds[number]
export default function About({
markupService,
activeTab,
activeSection,
}: {
markupService: MarkupService
activeTab: TabId
activeSection?: string
}): JSX.Element {
const history = useHistory()
const [selectedTab, setSelectedTab] = useState(activeTab)
Expand Down Expand Up @@ -72,7 +74,11 @@ export default function About({
{AboutBibliography(markupService)}
</Tab>
<Tab eventKey="news" title="News">
{AboutNews(markupService)}
{AboutNews({
activeNewsletterNumber: activeSection
? parseInt(activeSection)
: undefined,
})}
</Tab>
</Tabs>
</AppContent>
Expand Down
233 changes: 109 additions & 124 deletions src/about/ui/news.tsx
Original file line number Diff line number Diff line change
@@ -1,130 +1,115 @@
import React from 'react'
import Markup from 'markup/ui/markup'
import MarkupService from 'markup/application/MarkupService'
import React, { useEffect, useState } from 'react'
import ReactMarkdown from 'react-markdown'
import newsletter15 from 'about/ui/newsletter/015.md'
import newsletter14 from 'about/ui/newsletter/014.md'
import { Nav, Container, Row, Col } from 'react-bootstrap'
import { useHistory } from 'react-router-dom'

interface Newsletter {
readonly content: string
readonly date: Date
readonly number: number
}

const newsletters: readonly Newsletter[] = [
{ content: newsletter15, date: new Date('02/04/2024'), number: 15 },
{ content: newsletter14, date: new Date('11/14/2024'), number: 14 },
]

const message = `**Get the most out of eBL!**
We will be hosting regular Zoom sessions to showcase its features and tools.
These sessions will include a Q&A – please feel free to submit questions in advance. The first session is scheduled
for February 29th at 6:00 PM CET. If you would like to attend, please register at the link.
Important new developments and recently implemented features are regularly summarized in the eBL Newsletters (see below).
If you wish to receive future eBL Newsletters, send us an [e-mail](mailto:[email protected]).
`

function NewsletterMenu({
activeNewsletterNumber,
setActiveNewsletter,
}: {
activeNewsletterNumber: number
setActiveNewsletter: React.Dispatch<React.SetStateAction<Newsletter>>
}): JSX.Element {
const history = useHistory()
return (
<Nav defaultActiveKey={activeNewsletterNumber} className="flex-column">
{newsletters.map((newsletter) => {
const { number } = newsletter
return (
<Nav.Link
onClick={(event) => {
event.preventDefault()
history.push(`${newsletter.number}`)
setActiveNewsletter(newsletter)
}}
href={`${number}`}
key={number}
disabled={activeNewsletterNumber === number}
>
Nr. {number}
<br />
{newsletter.date.toLocaleDateString('en-US', {
year: 'numeric',
month: 'long',
day: 'numeric',
})}
</Nav.Link>
)
})}
</Nav>
)
}

function getActiveNewsletter(activeNewsletterNumber?: number): Newsletter {
let newsletter: Newsletter | undefined
if (activeNewsletterNumber) {
newsletter = newsletters.find(
(newsletter) => newsletter.number === activeNewsletterNumber
)
}
return newsletter ?? newsletters[0]
}

export default function AboutNews({
activeNewsletterNumber,
}: {
activeNewsletterNumber?: number
}): JSX.Element {
const [newsletterMarkdown, setNewsletterMarkdown] = useState('')
const [activeNewsletter, setActiveNewsletter] = useState(
getActiveNewsletter(activeNewsletterNumber)
)
const history = useHistory()
if (!activeNewsletterNumber) {
history.push(`${activeNewsletter.number}`)
}
useEffect(() => {
fetch(activeNewsletter.content)
.then((result) => result.text())
.then((text) => setNewsletterMarkdown(text))
}, [activeNewsletter])

export default function AboutNews(markupService: MarkupService): JSX.Element {
return (
<>
<h3>eBL Evening</h3>
<Markup
markupService={markupService}
text="Get the most out of eBL! We will be hosting regular Zoom sessions to
showcase its features and tools. These sessions will include a Q&A please
feel free to submit questions in advance. The first session is scheduled for
February 29th at 6:00 PM CET. If you would like to attend, please register
at the link."
/>
<h3>eBL Newsletter</h3>
<Markup
markupService={markupService}
text="Important new developments and recently implemented features are
regularly summarized in the eBL Newsletters (see below). If you wish to receive
future eBL Newsletters, send us an [e-mail]([email protected])."
/>
<h3>eBL Newsletter 15 (February 2024)</h3>
<h4>Fragmentarium</h4>
<ul>
<li>
114 Penn Museum tablets have been provided with new photographs, taken
by Anna Glenn. Photos of 227 Jena tablets, ca. 2,000 BM Babylon
Collection tablets, and ca. 10,000 Yale tablets have also been
uploaded.
</li>
<li>
The Alalakh tablets have been added:
[https://www.ebl.lmu.de/fragmentarium/search/?site=Alalakh](https://www.ebl.lmu.de/fragmentarium/search/?site=Alalakh)
</li>
<li>
It is possible to search for sites entering the parameter in the URL,
e.g.
[https://www.ebl.lmu.de/fragmentarium/search/?site=Uruk](https://www.ebl.lmu.de/fragmentarium/search/?site=Uruk)
</li>
<li>
It is now possible to use Wild cards (*) in the Museum number search.
</li>
<li>
The Museum number search now searches for Excavation numbers too.
</li>
<li>
Findspots have been added to the database. Work will be done on their
display.
</li>
<li>
Envelopes can now be given as part of the Joins Group (see e.g.
[HS.1016](https://www.ebl.lmu.de/fragmentarium/HS.1016))
</li>
<li>
The following new Genres have been added (for a full list see
[here](https://github.com/ElectronicBabylonianLiterature/ebl-api/blob/master/ebl/fragmentarium/domain/genres.py)):
<ul>
<li>ARCHIVAL → Administrative → Tabular Account</li>
<li>ARCHIVAL → Administrative → Field Plan</li>
<li>ARCHIVAL → Legal → Guardianship</li>
<li>ARCHIVAL → Legal → Herding</li>
<li>ARCHIVAL → Legal → Hire</li>
<li>ARCHIVAL → Legal → Lease</li>
<li>ARCHIVAL → Legal → Marriage</li>
<li>ARCHIVAL → Legal → Rental</li>
<li>ARCHIVAL → Legal → Suretyship</li>
<li>CANONICAL → Lexicography → Acrographic word list → Kagal</li>
<li>
CANONICAL → Lexicography → Thematic Word Lists → Personal names
</li>
<li>
CANONICAL → Lexicography → Thematic Word Lists → Personal names →
Ur-ab-ba
</li>
<li>CANONICAL → Literature → Hymns → Divine → Letter-Prayer</li>
<li>CANONICAL → Magic → Exorcistic → Ardat lilî</li>
<li>CANONICAL → Technical → Astronomy → Goal Year Texts</li>
<li>
CANONICAL → Technical → Astronomy → Goal Year Procedure Texts
</li>
<li>MONUMENTAL → Year Names</li>
<li>OTHER → Drawing</li>
</ul>
</li>
</ul>
<h4>Bibliography & Tools</h4>
<ul>
<li>
The AfO Register Textstellen (over 40,000 references) has been
imported.
</li>
<li>
It is possible to search for AfO Register references
([https://www.ebl.lmu.de/bibliography/afo-register](https://www.ebl.lmu.de/bibliography/afo-register));
the AfO Register references are now shown under the individual records
when matches are found (e.g.
[IM.74403](https://www.ebl.lmu.de/fragmentarium/IM.74403)).
<ul>
<li>
The matching depends on the field{' '}
<code>traditionalReferences</code>, invisible to the user. That
field attempts to account for all possible variations in
traditional references to cuneiform tablets, e.g. “
<code>SpTU 1, 2</code>” is also recorded as “
<code>ADFU 9, 2</code>”, “<code>SBTU 1, 2</code>”, etc. Still,
only a small number of AfO Register references (approximately
17,5%) can be linked. eBL users are kindly requested to alert us
if they find references that should be matched with Fragmentarium
records.
</li>
<li>
The date converter that underlies the eBL Dates has now been
deployed as an independent tool:
[https://www.ebl.lmu.de/tools/date-converter](https://www.ebl.lmu.de/tools/date-converter)
</li>
</ul>
</li>
</ul>
<h4>Corpus</h4>
<ul>
<li>
An Arabic translation of the *Theodicy* (II.1), prepared by Wasim
Khatabe and Wadieh Zerkly, has been uploaded.
</li>
</ul>
<div className="border border-dark m-3 p-2">
<ReactMarkdown>{message}</ReactMarkdown>
</div>
<Container>
<Row>
<Col sm={2}>
<NewsletterMenu
activeNewsletterNumber={activeNewsletter.number}
setActiveNewsletter={setActiveNewsletter}
/>
</Col>
<Col>
<div className="flex-column">
<ReactMarkdown>{newsletterMarkdown}</ReactMarkdown>
</div>
</Col>
</Row>
</Container>
</>
)
}
28 changes: 28 additions & 0 deletions src/about/ui/newsletter/014.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
# eBL Newsletter 14

## 14 November 2023

### Fragmentarium & Signs

- It is now possible to add dates to Fragmentarium editions: Both the date of a tablet (i.e., the date from the date formula, so only one per tablet) and the dates mentioned in the text (multiple per tablet) can be entered. The date is displayed in the Fragmentarium edition, in the sign display and also in the search.
- The majority of dates in J. Everling’s collection (13480 tablets) have been imported, so most published NB-LB tablets are now linked to a date. The rest from the Babylon Collection catalogue are being processed to be imported as proper dates. Please let us know if you want to import any list of dated tablets.
- A list is being created of cuneiform documents from the Hellenistic and Parthian periods (Daniel López). Also, the signs in documents from these periods are being systematically tagged (Ekaterine Gogokhia). If you find any tablet from these periods that is not easily found, please let us know.
- ATF: 1⁄4 and 1⁄6 have been added to the grammar.
- The CTMMA 1–4 (Metropolitan Museum) and TCL 6 (Louvre Museum) tablets have been imported.
- Resources are now shown explicitly in the left-hand column. The following resources have been added so far: BDTNS, Archibab, CDLI, Metropolitan Museum, Penn Museum, Achemenet, ORACC, Louvre Museum.
- Only tagged signs that are completely preserved are now being shown in the sign list.
- The number of sign annotations has grown exponentially in the last few months, thanks to the work of Ekaterine Gogokhia. We have now 48,616 annotated signs:
- Ur III: 375
- Old Babylonian: 658
- Old Assyrian: 329
- Middle Babylonian: 1,154
- Neo-Assyrian: 11,472
- Neo-Babylonian: 20,629
- Late Babylonian: 2,653
- Persian: 2,991
- Hellenistic: 3,426
- Parthian: 4,929

### Corpus

- A new text has been uploaded to the Corpus: The Syncretistic Hymn to Gula ([III.12](https://www.ebl.lmu.de/corpus/L/3/12)) in an edition by E. Bennett.
43 changes: 43 additions & 0 deletions src/about/ui/newsletter/015.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
# eBL Newsletter 15

## 4 February 2024

### Fragmentarium

- 114 Penn Museum tablets have been provided with new photographs, taken by Anna Glenn. Photos of 227 Jena tablets, ca. 2,000 BM Babylon Collection tablets, and ca. 10,000 Yale tablets have also been uploaded.
- The Alalakh tablets have been added: [https://www.ebl.lmu.de/fragmentarium/search/?site=Alalakh](https://www.ebl.lmu.de/fragmentarium/search/?site=Alalakh)
- It is possible to search for sites entering the parameter in the URL, e.g. [https://www.ebl.lmu.de/fragmentarium/search/?site=Uruk](https://www.ebl.lmu.de/fragmentarium/search/?site=Uruk)
- It is now possible to use Wild cards (\*) in the Museum number search.
- The Museum number search now searches for Excavation numbers too.
- Findspots have been added to the database. Work will be done on their display.
- Envelopes can now be given as part of the Joins Group (see e.g. [HS.1016](https://www.ebl.lmu.de/fragmentarium/HS.1016))
- The following new Genres have been added (for a full list see [here](https://github.com/ElectronicBabylonianLiterature/ebl-api/blob/master/ebl/fragmentarium/domain/genres.py)):
- ARCHIVAL → Administrative → Tabular Account
- ARCHIVAL → Administrative → Field Plan
- ARCHIVAL → Legal → Guardianship
- ARCHIVAL → Legal → Herding
- ARCHIVAL → Legal → Hire
- ARCHIVAL → Legal → Lease
- ARCHIVAL → Legal → Marriage
- ARCHIVAL → Legal → Rental
- ARCHIVAL → Legal → Suretyship
- CANONICAL → Lexicography → Acrographic word list → Kagal
- CANONICAL → Lexicography → Thematic Word Lists → Personal names
- CANONICAL → Lexicography → Thematic Word Lists → Personal names → Ur-ab-ba
- CANONICAL → Literature → Hymns → Divine → Letter-Prayer
- CANONICAL → Magic → Exorcistic → Ardat lilî
- CANONICAL → Technical → Astronomy → Goal Year Texts
- CANONICAL → Technical → Astronomy → Goal Year Procedure Texts
- MONUMENTAL → Year Names
- OTHER → Drawing

### Bibliography & Tools

- The AfO Register Textstellen (over 40,000 references) has been imported.
- It is possible to search for AfO Register references ([https://www.ebl.lmu.de/bibliography/afo-register](https://www.ebl.lmu.de/bibliography/afo-register)); the AfO Register references are now shown under the individual records when matches are found (e.g. [IM.74403](https://www.ebl.lmu.de/fragmentarium/IM.74403)).
- The matching depends on the field `traditionalReferences`, invisible to the user. That field attempts to account for all possible variations in traditional references to cuneiform tablets, e.g., “SpTU 1, 2” is also recorded as “ADFU 9, 2”, “SBTU 1, 2”, etc. Still, only a small number of AfO Register references (approximately 17.5%) can be linked. eBL users are kindly requested to alert us if they find references that should be matched with Fragmentarium records.
- The date converter that underlies the eBL Dates has now been deployed as an independent tool: [https://www.ebl.lmu.de/tools/date-converter](https://www.ebl.lmu.de/tools/date-converter)

### Corpus

- An Arabic translation of the _Theodicy_ (II.1), prepared by Wasim Khatabe and Wadieh Zerkly, has been uploaded.
4 changes: 4 additions & 0 deletions src/declarations.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
declare module '*.md' {
const content: string
export default content
}
7 changes: 5 additions & 2 deletions src/router/aboutRoutes.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -20,15 +20,18 @@ export default function AboutRoutes({
<Route
key="about-tabs"
exact
path={`/about/:id(${tabIds.join('|')})`}
render={(props: RouteComponentProps<{ id: string }>): ReactNode => (
path={`/about/:id(${tabIds.join('|')})/:id2?`}
render={(
props: RouteComponentProps<{ id: string; id2?: string }>
): ReactNode => (
<HeadTagsService
title="About: eBL"
description="This section provides detailed information about the electronic Babylonian Library (eBL) and the materials and tools available."
>
<About
markupService={cachedMarkupService}
activeTab={props.match.params.id as TabId}
activeSection={props.match.params?.id2 as string}
/>
</HeadTagsService>
)}
Expand Down

0 comments on commit 7e5407b

Please sign in to comment.