diff options
Diffstat (limited to 'scraper/client/paper/paper.citations.js')
| -rw-r--r-- | scraper/client/paper/paper.citations.js | 42 |
1 files changed, 23 insertions, 19 deletions
diff --git a/scraper/client/paper/paper.citations.js b/scraper/client/paper/paper.citations.js index 5c8e0e0c..c55599e0 100644 --- a/scraper/client/paper/paper.citations.js +++ b/scraper/client/paper/paper.citations.js @@ -5,26 +5,32 @@ import { Link } from 'react-router-dom' import * as actions from '../actions' -import { TableObject } from '../common' +import { TableObject, Loader } from '../common' import { USES_DATASET } from '../types' class PaperCitations extends Component { - componentDidMount() { - this.props.actions.getVerifications() + componentDidUpdate(prevProps) { + if (this.props.api.paperInfo.dataset !== prevProps.api.paperInfo.dataset) { + this.props.actions.getVerificationsDataset(this.props.api.paperInfo.dataset.key) + } } render() { - const { dataset, citations } = this.props.api.paperInfo - let { verifications } = this.props.api.verifications - verifications = verifications || {} - if (!dataset || !citations) return null - console.log('rendering citations...') - // console.log(citations) + const { paperInfo, unknownCitations, verifications } = this.props.api + const { dataset, citations } = paperInfo + if (!dataset || !citations || !verifications[dataset.key]) return <Loader /> + let verifiedLookup = verifications[dataset.key] || {} + // console.log(verifications) + return ( <div className='citations'> <h2>{dataset.name_full}: Citations</h2> <ul> - {citations.map((citation, i) => { + {citations.concat(unknownCitations.citations) + .map(citation => [citation.title, verifiedLookup[citation.id] ? verifiedLookup[citation.id].uses_dataset : USES_DATASET.UNKNOWN, citation]) + .sort((a,b) => (b[1] - a[1] || (a[0].localeCompare(b[0])))) + .map((pair, i) => { + const [ title, uses_dataset, citation ] = pair let cite = { ...citation } cite.id = { _raw: true, @@ -32,7 +38,9 @@ class PaperCitations extends Component { } cite.pdf = { _raw: true, - value: (cite.pdf && cite.pdf.length) ? <a href={cite.pdf[0]} rel='noopener noreferrer' target="_blank">[pdf]</a> : "no pdf" + value: (cite.pdf && cite.pdf.length) + ? cite.pdf.map((pdf, i) => <a key={'pdf_' + i} href={pdf} rel='noopener noreferrer' target="_blank">[pdf]</a>) + : "no pdf" } cite.s2 = { _raw: true, @@ -45,23 +53,19 @@ class PaperCitations extends Component { } cite.addresses = { _raw: true, - value: cite.addresses.map((address, j) => ( + value: (cite.addresses || []).map((address, j) => ( <div key={j}>{address.name}{', '}<span className='type'>{address.type}</span></div> )) } - if (citation.id in verifications && verifications[citation.id].dataset === dataset.key) { - const verification = verifications[citation.id] + if (citation.id in verifiedLookup) { + const verification = verifiedLookup[citation.id] cite.verified = { _raw: true, value: verification.uses_dataset === USES_DATASET.YES ? <span className='verified'>uses dataset</span> : verification.uses_dataset === USES_DATASET.NO ? <span className='unverified'>{"doesn't use dataset"}</span> - : verification.uses_dataset === 'TRUE' - ? <span className='verified'>uses dataset</span> - : verification.uses_dataset === 'FALSE' - ? <span className='unverified'>{"doesn't use dataset"}</span> - : <span className='unknown'>{"not enough information"}</span> + : <span className='unknown'>{"not enough information"}</span> } } else { |
