mirror of
https://github.com/PeWu/topola-viewer.git
synced 2026-05-26 15:16:14 +00:00
Show TITL together with FILE objects for internet links (#255)
This commit is contained in:
@@ -3,6 +3,7 @@ import {List} from 'semantic-ui-react';
|
|||||||
export interface FileEntry {
|
export interface FileEntry {
|
||||||
url: string;
|
url: string;
|
||||||
filename?: string;
|
filename?: string;
|
||||||
|
titl?: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
interface Props {
|
interface Props {
|
||||||
@@ -18,9 +19,14 @@ export function AdditionalFiles({files}: Props) {
|
|||||||
<List.Item key={index}>
|
<List.Item key={index}>
|
||||||
<List.Icon verticalAlign="middle" name="circle" size="tiny" />
|
<List.Icon verticalAlign="middle" name="circle" size="tiny" />
|
||||||
<List.Content>
|
<List.Content>
|
||||||
<a target="_blank" href={file.url} rel="noopener noreferrer">
|
<List.Header>
|
||||||
{file.filename || file.url.split('/').pop() || file.url}
|
<a target="_blank" href={file.url} rel="noopener noreferrer">
|
||||||
</a>
|
{file.filename || file.url.split('/').pop() || file.url}
|
||||||
|
</a>
|
||||||
|
</List.Header>
|
||||||
|
<List.Description>
|
||||||
|
{file.titl && <div>{file.titl}</div>}
|
||||||
|
</List.Description>
|
||||||
</List.Content>
|
</List.Content>
|
||||||
</List.Item>
|
</List.Item>
|
||||||
))}
|
))}
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ import {
|
|||||||
getNonImageFileEntry,
|
getNonImageFileEntry,
|
||||||
mapToSource,
|
mapToSource,
|
||||||
} from '../../util/gedcom_util';
|
} from '../../util/gedcom_util';
|
||||||
import {AdditionalFiles} from './additional-files';
|
import {FileEntry, AdditionalFiles} from './additional-files';
|
||||||
import {ALL_SUPPORTED_EVENT_TYPES, Events} from './events';
|
import {ALL_SUPPORTED_EVENT_TYPES, Events} from './events';
|
||||||
import {MultilineText} from './multiline-text';
|
import {MultilineText} from './multiline-text';
|
||||||
import {Sources} from './sources';
|
import {Sources} from './sources';
|
||||||
@@ -139,16 +139,19 @@ function sourceDetails(
|
|||||||
}
|
}
|
||||||
|
|
||||||
function fileDetails(objectEntries: GedcomEntry[], gedcom: GedcomData) {
|
function fileDetails(objectEntries: GedcomEntry[], gedcom: GedcomData) {
|
||||||
const files = objectEntries
|
const files: FileEntry[] = [];
|
||||||
.map((objectEntry) =>
|
objectEntries
|
||||||
dereference(objectEntry, gedcom, (gedcom) => gedcom.other),
|
.map((objectEntry) => dereference(objectEntry, gedcom, (gedcom) => gedcom.other))
|
||||||
)
|
.forEach((objectEntry) => {
|
||||||
.map((objectEntry) => getNonImageFileEntry(objectEntry))
|
const fileEntry = getNonImageFileEntry(objectEntry);
|
||||||
.filter((objectEntry): objectEntry is GedcomEntry => !!objectEntry)
|
if (!!fileEntry) {
|
||||||
.map((fileEntry) => ({
|
files.push({
|
||||||
url: fileEntry.data,
|
url: fileEntry.data,
|
||||||
filename: getFileName(fileEntry),
|
filename: getFileName(fileEntry),
|
||||||
}));
|
titl: objectEntry.tree.find((entry) => entry.tag === 'TITL')?.data,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
if (!files.length) {
|
if (!files.length) {
|
||||||
return null;
|
return null;
|
||||||
|
|||||||
Reference in New Issue
Block a user