import React, { Component } from 'react'
import { bindActionCreators } from 'redux'
import { connect } from 'react-redux'
import { Link } from 'react-router-dom'
import * as actions from '../actions'
import { TableObject, Loader } from '../common'
import { USES_DATASET } from '../types'
class PaperCitations extends Component {
componentDidUpdate(prevProps) {
if (this.props.api.paperInfo.dataset !== prevProps.api.paperInfo.dataset) {
this.props.actions.getVerificationsDataset(this.props.api.paperInfo.dataset.key)
}
}
render() {
const { paperInfo, unknownCitations, verifications } = this.props.api
const { dataset, citations } = paperInfo
if (!dataset || !citations || !verifications[dataset.key]) return
let verifiedLookup = verifications[dataset.key] || {}
// console.log(verifications)
return (
{dataset.name_full}: Citations
{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,
value: {citation.id}
}
cite.pdf = {
_raw: true,
value: (cite.pdf && cite.pdf.length)
? cite.pdf.map((pdf, i) => [pdf])
: "no pdf"
}
cite.s2 = {
_raw: true,
value: {'[semantic scholar]'}
}
cite.addresses = {
_raw: true,
value: (cite.addresses || []).map((address, j) => (
{address.name}{', '}{address.type}
))
}
if (citation.id in verifiedLookup) {
const verification = verifiedLookup[citation.id]
cite.verified = {
_raw: true,
value: verification.uses_dataset === USES_DATASET.YES
? uses dataset
: verification.uses_dataset === USES_DATASET.NO
? {"doesn't use dataset"}
: {"not enough information"}
}
}
else {
cite.verified = {
_raw: true,
value: unknown
}
}
return (
-
)
})}
)
}
}
const mapStateToProps = state => ({
api: state.api
})
const mapDispatchToProps = dispatch => ({
actions: bindActionCreators({ ...actions }, dispatch),
})
export default connect(mapStateToProps, mapDispatchToProps)(PaperCitations)