Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix interviewer name in recordings table #217

Merged
merged 1 commit into from
Jan 24, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
30 changes: 18 additions & 12 deletions composables/use-tei-headers.ts
Original file line number Diff line number Diff line change
Expand Up @@ -106,33 +106,39 @@ const extractMetadata = function (
template.place.region = place.region.$;
}
}

if (
template.dataType === "CorpusText" &&
item.teiHeader.fileDesc.titleStmt.respStmts?.at(0)?.persName &&
item.teiHeader.fileDesc.sourceDesc.recordingStmt?.recording.respStmt?.persName &&
corpusMetadata
) {
const persName = item.teiHeader.fileDesc.titleStmt.respStmts[0]?.persName as TeiTypedTarget;
const monogram = (persName["@ref"] ?? "missing persName").replace("corpus:", "");
const persName = item.teiHeader.fileDesc.sourceDesc.recordingStmt.recording.respStmt
.persName as TeiTypedTarget;

const respPerson = corpusMetadata.fileDesc.titleStmt.respStmts?.find((resp: RespStmt) => {
if (resp.persName && isPersName(resp.persName)) {
const persName = resp.persName;
return persName["@id"] === monogram;
return resp.persName["@ref"] === persName["@ref"];
} else {
return false;
}
});

console.log(respPerson);
let name;
if (respPerson?.persName) {
const persName2 = respPerson.persName as PersName;
name =
persName2["@forename"] && persName2["@surname"]
? `${persName2["@forename"]} ${persName2["@surname"]}`
persName2.forename && persName2.surname
? `${persName2.forename.$} ${persName2.surname.$}`
: persName2.$;
} else {
name = monogram;
name = (persName["@ref"] ?? "missing persName").replace("corpus:", "");
}
if (name) template.resp = name;
} else if (
template.dataType === "CorpusText" &&
!item.teiHeader.fileDesc.sourceDesc.recordingStmt?.recording.respStmt
) {
template.resp = "Unknown";
}

template.person = extractPersons(item, corpusMetadata);
Expand All @@ -145,10 +151,10 @@ const extractMetadata = function (
categories: [],
};
corpusMetadata.encodingDesc.classDecl?.taxonomies.forEach((t) => {
mergedTaxonomies.categories = mergedTaxonomies.categories?.concat(t.categories!);
mergedTaxonomies.categories = mergedTaxonomies.categories.concat(t.categories);
return mergedTaxonomies;
});
const category = mergedTaxonomies.categories?.find(
const category = mergedTaxonomies.categories.find(
(cat) => cat["@id"] === categoryId?.replace("corpus:", ""),
);

Expand Down Expand Up @@ -185,7 +191,7 @@ function isTEIs(item: TeiCorpus | object): item is TeiCorpus {
}

function isPersName(item: PersName | object): item is PersName {
return Object.hasOwn(item, "@id");
return Object.hasOwn(item, "@ref");
}

export function useTEIHeaders() {
Expand Down
6 changes: 2 additions & 4 deletions types/teiCorpus.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -95,8 +95,6 @@ export type PersName = {
"@id": string;
"@full"?: string;
$?: string;
"@forename"?: string;
"@surname"?: string;
forename?: XmlTextNode;
surname?: XmlTextNode;
};
Expand Down Expand Up @@ -165,7 +163,7 @@ export type Recording = {
"@dur-iso": string;
"@type": string;
date?: TeiDate;
respStmt: RespStmt;
respStmt?: RespStmt;
media?: Media;
p?: P;
};
Expand Down Expand Up @@ -235,7 +233,7 @@ export type ProfileDesc = {
};

export type Taxonomy = {
categories?: Array<Category>;
categories: Array<Category>;
};

export type Category = {
Expand Down
Loading