diff --git a/public/elements/tind-refs.jsx b/public/elements/tind-refs.jsx index fd1faa2..eb24646 100644 --- a/public/elements/tind-refs.jsx +++ b/public/elements/tind-refs.jsx @@ -6,13 +6,87 @@ import { } from "@/components/ui/accordion" export default function TindRefs () { + const parseTindReference = (msg) => { + const ref = { + title: null, + interviewers: [], + interviewees: [], + project: null, + link: null, + }; + const lines = msg.split('\n').filter(line => line.trim() !== ''); + + lines.forEach(line => { + const parts = line.split(':'); + const key = parts[0].trim(); + const value = parts.slice(1).join(':').trim(); + + switch (key) { + case 'Title': + ref.title = value; + break; + case 'Contributor': + // if value ends in interviewee or interviewer, assign accordingly + if (value.endsWith(' interviewer')) { + ref.interviewers.push(value.replace(' interviewer', '').trim()); + } else if (value.endsWith(' interviewee')) { + ref.interviewees.push(value.replace(' interviewee', '').trim()); + } + break; + case 'Project Name': + ref.project = value; + break; + case 'Catalogue Link': + ref.link = value; + break; + } + }); + return ref; + }; + + let count = 0; + + + const buildTindMessage = () => { + const originalMessage = props.tind_message || 'no references supplied'; + if (originalMessage === 'no references supplied') { + return originalMessage; + } + // Split message into parts by '___________' separator + const parts = originalMessage.split('___________'); + + const references = parts + .filter(part => part.trim() !== '') + .map(part => parseTindReference(part)); + + count = references.length; + return ( +
+ Interviewee(s): {ref.interviewees.join(' | ') || 'not listed'}
+ Interviewer(s): {ref.interviewers.join(' | ') || 'not listed'}
+ Project Name: {ref.project || 'not listed'}
+
- {props.tind_message || 'no references supplied'} + {tindMessage}