1
0
mirror of https://github.com/oceanprotocol/market.git synced 2024-11-15 01:34:57 +01:00

refactor, unify published & consumed list

This commit is contained in:
Matthias Kretschmann 2020-09-03 10:35:26 +02:00
parent 050b194373
commit f2cfa49c0e
Signed by: m
GPG Key ID: 606EEEF3C479A91F
4 changed files with 46 additions and 85 deletions

View File

@ -1,81 +1,34 @@
import React, { useEffect, useState, ReactElement } from 'react' import React, { useEffect, useState, ReactElement } from 'react'
import Loader from '../atoms/Loader' import Loader from '../atoms/Loader'
import { import { useOcean } from '@oceanprotocol/react'
useOcean, import { QueryResult } from '@oceanprotocol/lib/dist/node/metadatastore/MetadataStore'
OceanConnectionStatus, import AssetList from './AssetList'
useSearch
} from '@oceanprotocol/react'
import Table from '../atoms/Table'
import Price from '../atoms/Price'
import { fromWei } from 'web3-utils'
import DateCell from '../atoms/Table/DateCell'
import DdoLinkCell from '../atoms/Table/DdoLinkCell'
import { MetadataMain } from '@oceanprotocol/lib'
const consumedColumns = [
{
name: 'Published',
selector: 'published',
sortable: true,
cell: function getCell(row: any) {
return <DateCell date={row.published} />
}
},
{
name: 'Name',
selector: 'name',
sortable: true,
cell: function getCell(row: any) {
return <DdoLinkCell id={row.id} name={row.name} />
}
},
{
name: 'Price',
selector: 'price',
sortable: true,
cell: function getCell(row: any) {
return <Price price={fromWei(row.price)} small />
}
}
]
export default function ConsumedList(): ReactElement { export default function ConsumedList(): ReactElement {
const { ocean, status, accountId, account } = useOcean() const { ocean, status, accountId } = useOcean()
const [consumedList, setConsumedList] = useState<any>([]) const [queryResult, setQueryResult] = useState<QueryResult>()
const { getConsumedList } = useSearch()
const [isLoading, setIsLoading] = useState(false) const [isLoading, setIsLoading] = useState(false)
useEffect(() => { useEffect(() => {
async function getConsumed() { async function getConsumed() {
if (!accountId || !ocean || status !== OceanConnectionStatus.CONNECTED) if (!accountId || !ocean) return
return
setIsLoading(true) setIsLoading(true)
const consumedItems = await getConsumedList() // const queryResult = await
if (!consumedItems) return setQueryResult(queryResult)
const data = consumedItems.map((ddo) => {
const { attributes } = ddo.findServiceByType('metadata')
const { name, price, datePublished } = attributes.main as MetadataMain
return {
published: datePublished,
name: name,
price: price
}
})
setConsumedList(data)
setIsLoading(false) setIsLoading(false)
} }
getConsumed() getConsumed()
}, [accountId, ocean, status]) }, [ocean, status, accountId])
return isLoading ? ( return isLoading ? (
<Loader /> <Loader />
) : account && ocean ? ( ) : accountId && ocean ? (
<Table data={consumedList} columns={consumedColumns} /> <AssetList queryResult={queryResult} />
) : ( ) : (
<div>Connect your wallet to see your consumed data sets.</div> <div>Connect your wallet to see your published data sets.</div>
) )
} }

View File

@ -5,13 +5,13 @@ import { QueryResult } from '@oceanprotocol/lib/dist/node/metadatastore/Metadata
import AssetList from './AssetList' import AssetList from './AssetList'
export default function PublishedList(): ReactElement { export default function PublishedList(): ReactElement {
const { ocean, status, account, accountId } = useOcean() const { ocean, status, accountId } = useOcean()
const [queryResult, setQueryResult] = useState<QueryResult>() const [queryResult, setQueryResult] = useState<QueryResult>()
const [isLoading, setIsLoading] = useState(false) const [isLoading, setIsLoading] = useState(false)
useEffect(() => { useEffect(() => {
async function getPublished() { async function getPublished() {
if (!account || !accountId || !ocean) return if (!accountId || !ocean) return
setIsLoading(true) setIsLoading(true)
@ -22,11 +22,11 @@ export default function PublishedList(): ReactElement {
setIsLoading(false) setIsLoading(false)
} }
getPublished() getPublished()
}, [accountId, ocean, status]) }, [ocean, status, accountId])
return isLoading ? ( return isLoading ? (
<Loader /> <Loader />
) : queryResult ? ( ) : accountId && ocean ? (
<AssetList queryResult={queryResult} /> <AssetList queryResult={queryResult} />
) : ( ) : (
<div>Connect your wallet to see your published data sets.</div> <div>Connect your wallet to see your published data sets.</div>

View File

@ -17,6 +17,19 @@
} }
.content { .content {
composes: box from '../atoms/Box.module.css';
margin-top: var(--spacer); margin-top: var(--spacer);
} }
.section {
composes: box from '../atoms/Box.module.css';
margin-bottom: var(--spacer);
}
.section:last-child {
margin-bottom: 0;
}
.sectionTitle {
font-size: var(--font-size-h3);
margin-bottom: calc(var(--spacer) / 2);
}

View File

@ -1,6 +1,5 @@
import React from 'react' import React, { ReactElement, ReactNode } from 'react'
import styles from './History.module.css' import styles from './History.module.css'
import Web3Feedback from '../molecules/Wallet/Feedback'
import ConsumedList from '../organisms/ConsumedList' import ConsumedList from '../organisms/ConsumedList'
import PublishedList from '../organisms/PublishedList' import PublishedList from '../organisms/PublishedList'
import JobsList from '../organisms/JobsList' import JobsList from '../organisms/JobsList'
@ -12,7 +11,7 @@ const sections = [
}, },
{ {
title: 'Downloaded', title: 'Downloaded',
component: 'Coming Soon...' component: <ConsumedList />
}, },
{ {
title: 'Compute Jobs', title: 'Compute Jobs',
@ -20,7 +19,13 @@ const sections = [
} }
] ]
const Section = ({ title, component }: { title: string; component: any }) => { const Section = ({
title,
component
}: {
title: string
component: ReactNode
}) => {
return ( return (
<div className={styles.section}> <div className={styles.section}>
<h2 className={styles.sectionTitle}>{title}</h2> <h2 className={styles.sectionTitle}>{title}</h2>
@ -29,23 +34,13 @@ const Section = ({ title, component }: { title: string; component: any }) => {
) )
} }
const HistoryPage: React.FC = () => { export default function HistoryPage(): ReactElement {
return ( return (
<article className={styles.grid}> <article className={styles.content}>
<div className={styles.content}> {sections.map((section) => {
{sections.map((section) => { const { title, component } = section
const { title, component } = section return <Section key={title} title={title} component={component} />
return <Section key={title} title={title} component={component} /> })}
})}
</div>
<aside>
<div className={styles.sticky}>
<Web3Feedback />
</div>
</aside>
</article> </article>
) )
} }
export default HistoryPage