1
0
mirror of https://github.com/oceanprotocol/commons.git synced 2023-03-15 18:03:00 +01:00
commons/client/src/routes/Details/AssetDetails.tsx

101 lines
3.4 KiB
TypeScript
Raw Normal View History

2019-02-14 13:33:21 +01:00
import React, { PureComponent } from 'react'
2019-02-15 14:22:35 +01:00
import { Link } from 'react-router-dom'
import Moment from 'react-moment'
2019-04-30 19:19:28 +02:00
import { DDO, MetaData, File } from '@oceanprotocol/squid'
2019-04-08 15:59:02 +02:00
import Markdown from '../../components/atoms/Markdown'
2019-02-14 13:33:21 +01:00
import styles from './AssetDetails.module.scss'
import AssetFilesDetails from './AssetFilesDetails'
2019-02-14 13:33:21 +01:00
interface AssetDetailsProps {
2019-04-30 19:19:28 +02:00
metadata: MetaData
ddo: DDO
2019-02-14 13:33:21 +01:00
}
2019-04-30 19:19:28 +02:00
export function datafilesLine(files: File[]) {
if (files.length === 1) {
return <span>{files.length} data file</span>
2019-04-03 16:51:54 +02:00
}
2019-04-30 19:19:28 +02:00
return <span>{files.length} data files</span>
}
2019-04-03 16:51:54 +02:00
2019-04-30 19:19:28 +02:00
export default class AssetDetails extends PureComponent<AssetDetailsProps> {
2019-02-14 13:33:21 +01:00
public render() {
const { metadata, ddo } = this.props
2019-02-15 13:10:57 +01:00
const { base } = metadata
2019-02-14 13:33:21 +01:00
return (
<>
<aside className={styles.metaPrimary}>
2019-02-15 14:22:35 +01:00
<h2
className={styles.copyrightHolder}
title="Copyright Holder"
>
2019-02-15 13:10:57 +01:00
{base.copyrightHolder}
2019-02-14 13:33:21 +01:00
</h2>
<div className={styles.metaPrimaryData}>
<span
title={`Date created, published on ${
base.datePublished
}`}
>
2019-02-15 14:22:35 +01:00
<Moment
date={base.dateCreated}
format="L"
interval={0}
/>
</span>
{base.categories && (
2019-02-15 14:22:35 +01:00
// TODO: Make this link to search for respective category
<Link to={`/search?text=${base.categories[0]}`}>
2019-03-26 16:07:16 +01:00
{base.categories[0]}
</Link>
2019-02-15 14:22:35 +01:00
)}
2019-04-30 19:19:28 +02:00
{base.files && datafilesLine(base.files)}
2019-02-14 13:33:21 +01:00
</div>
</aside>
2019-04-30 19:19:28 +02:00
{base.description && (
<Markdown
text={base.description}
className={styles.description}
/>
)}
2019-02-14 13:33:21 +01:00
<ul className={styles.meta}>
<li>
<span className={styles.metaLabel}>
<strong>Author</strong>
</span>
2019-02-15 13:10:57 +01:00
<span className={styles.metaValue}>{base.author}</span>
2019-02-14 13:33:21 +01:00
</li>
<li>
<span className={styles.metaLabel}>
<strong>License</strong>
</span>
2019-02-15 13:10:57 +01:00
<span className={styles.metaValue}>{base.license}</span>
2019-02-14 13:33:21 +01:00
</li>
<li>
<span className={styles.metaLabel}>
<strong>DID</strong>
</span>
<span className={styles.metaValue}>
<code>{ddo.id}</code>
</span>
</li>
</ul>
<AssetFilesDetails
files={base.files ? base.files : []}
ddo={ddo}
/>
2019-02-14 13:33:21 +01:00
{/* <pre>
2019-02-14 13:33:21 +01:00
<code>{JSON.stringify(metadata, null, 2)}</code>
</pre> */}
2019-02-14 13:33:21 +01:00
</>
)
}
}