Newer
Older
<ChemicalProbeReportCard :item-i-d="itemID" />
import MetadataTagsGenerator from '@chembl/metadata-tags-generator'
import ChemicalProbeReportCard from '~/components/report_cards/chemical_probe/ChemicalProbeReportCard.vue'
import MetadataLoader from '~/web-components-submodule/metadata/MetadataLoader.js'
import EntityNames from '~/web-components-submodule/standardisation/EntityNames.js'
import ObjectPropertyAccess from '~/web-components-submodule/utils/ObjectPropertyAccess.js'
import StringUtils from '~/web-components-submodule/utils/StringUtils.js'
export default {
components: {
ChemicalProbeReportCard,
},

David Mendez
committed
layout: 'reportCard',
async asyncData({ $axios, error, params }) {
try {
const docSource = [
'molecule_chembl_id',
'pref_name',
'molecule_synonyms',
'_metadata.compound_generated.image_file',
]
const result = await MetadataLoader.getMetadataForEntity(
EntityNames.EubopenCompound.entityID,
params.id,
docSource
)
const itemURL = `https://gateway.eubopen.org/compound/${params.id}`
const imgBaseURL = 'https://www.ebi.ac.uk/chembl/api/data/image'
const fallbackImgBaseURL = ''
const bioschemasMetadata = await MetadataTagsGenerator.EUbOPEN.CompoundMetadata.getBioschemasMetadata(
{
itemID: params.id,
itemURL,
imgBaseURL,
fallbackImgBaseURL,
}
)
return {
rawMetadata: result.data._source,
bioschemasJSONLD: bioschemasMetadata,
}
} catch (e) {
error({
statusCode: 404,
message: `No ${EntityNames.EubopenCompound.singularEntityName} found with id ${params.id}`,
})
}
},
head() {
const name = this.rawMetadata.pref_name || this.itemID
const synonymsList = this.rawMetadata.molecule_synonyms
.filter((synonym) => synonym.syn_type !== 'TRADE_NAME')
.map((synonym) => synonym.molecule_synonym)
const synonymsText =
synonymsList.length === 0 ? '' : `Synonyms: ${synonymsList.join(', ')}`
const descriptionText = StringUtils.truncateString(
`Explore ${name} ${this.rawMetadata.pref_name} in EUbOPEN. ${synonymsText}`,
170
)
const titleText = `${EntityNames.EubopenCompound.singularEntityName} ${name}`
const canonicalURL =
`https://${process.env.canonicalDomain}` + this.$route.path
const chemblID = this.rawMetadata.molecule_chembl_id
const generatedImageFilePath = ObjectPropertyAccess.getPropertyPalue(
this.rawMetadata,
'_metadata.compound_generated.image_file',
undefined,
true
)
if (generatedImageFilePath == null) {
imgURL = `${process.env.chemblWSBaseUrl}/image/${chemblID}.svg`
} else {
imgURL = `${process.env.fallbackIMGsBaseUrl}/compound_placeholders/${this.generatedImageFilePath}`
}
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
return {
title: titleText,
meta: [
{
hid: 'description',
name: 'description',
content: descriptionText,
},
{ hid: 'og:title', name: 'og:title', content: titleText },
{
hid: 'og:description',
name: 'og:description',
content: descriptionText,
},
{ hid: 'og:type', name: 'og:type', content: 'object' },
{ hid: 'og:url', name: 'og:url', content: canonicalURL },
{ hid: 'og:image', name: 'og:image', content: imgURL },
],
link: [
{
rel: 'canonical',
href: canonicalURL,
},
],
script: [
{
id: 'JSON_LD',
type: 'application/ld+json',
json: this.bioschemasJSONLD,
},
],
}
},
computed: {
itemID() {
return this.$route.params.id
},
},
}
</script>
<style></style>