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 CitationList extends Component {
state = {
filter: USES_DATASET.YES,
}
render() {
const { citations, title, api } = this.props
const { paperInfo, unknownCitations, verifications, sortedCitations } = api
const { dataset } = paperInfo
const { filter } = this.state
if (!dataset || !citations || !verifications[dataset.key]) return
let verifiedLookup = verifications[dataset.key] || {}
let filteredCitations = sortedCitations.filter(citation => (
citation.verified === filter
))
return (
{title}
this.setState({ filter: USES_DATASET.YES })}>uses dataset
this.setState({ filter: USES_DATASET.NO })}>{"doesn't use dataset"}
this.setState({ filter: USES_DATASET.UNKNOWN })}>{'not enough information'}
this.setState({ filter: USES_DATASET.NO_DATA })}>{'unverified'}
{(filteredCitations || []).map((citation, i) => {
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.doi = {
_raw: true,
value: (cite.doi && cite.doi.length)
? (cite.doi || []).map((doi, i) => [doi])
: ""
}
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)(CitationList)