1
0
mirror of https://github.com/oceanprotocol/market.git synced 2024-12-02 05:57:29 +01:00
market/src/components/pages/History/ComputeDetails.tsx
Jamie Hewitt 7672d78aee
Refactoring Market for new Ocean.js build (#481)
* removing imports from utils folder

* lib bump

* update status args

Co-authored-by: mihaisc <mihai.scarlat@smartcontrol.ro>
2021-04-13 15:13:55 +02:00

110 lines
3.1 KiB
TypeScript

import { Logger } from '@oceanprotocol/lib'
import React, { ReactElement, useEffect, useState } from 'react'
import Loader from '../../atoms/Loader'
import Modal from '../../atoms/Modal'
import { ComputeJobMetaData } from '../../../@types/ComputeJobMetaData'
import Time from '../../atoms/Time'
import shortid from 'shortid'
import styles from './ComputeDetails.module.css'
import { Status } from './ComputeJobs'
import { ListItem } from '../../atoms/Lists'
import { useOcean } from '../../../providers/Ocean'
export default function ComputeDetailsModal({
computeJob,
isOpen,
onToggleModal
}: {
computeJob: ComputeJobMetaData
isOpen: boolean
onToggleModal: () => void
}): ReactElement {
const { ocean, account } = useOcean()
const [isLoading, setIsLoading] = useState(false)
const isFinished = computeJob.dateFinished !== null
useEffect(() => {
async function getDetails() {
if (!account || !ocean || !computeJob || !isOpen || !isFinished) return
try {
setIsLoading(true)
const job = await ocean.compute.status(
account,
computeJob.did,
undefined,
undefined,
computeJob.jobId
)
if (job?.length > 0) {
computeJob.algorithmLogUrl = job[0].algorithmLogUrl
// hack because ComputeJob returns resultsUrl instead of resultsUrls, issue created already
computeJob.resultsUrls =
(job[0] as any).resultsUrl !== '' ? (job[0] as any).resultsUrl : []
}
} catch (error) {
Logger.error(error.message)
} finally {
setIsLoading(false)
}
}
getDetails()
}, [ocean, account, isOpen, computeJob, isFinished])
return (
<Modal
title="Compute job details"
isOpen={isOpen}
onToggleModal={onToggleModal}
>
<h3 className={styles.title}>{computeJob.assetName}</h3>
<p>
Created <Time date={computeJob.dateCreated} isUnix relative />
{computeJob.dateFinished && (
<>
<br />
Finished <Time date={computeJob.dateFinished} isUnix relative />
</>
)}
</p>
<Status>{computeJob.statusText}</Status>
{isFinished &&
(isLoading ? (
<Loader />
) : (
<>
<ul>
<ListItem>
{computeJob.algorithmLogUrl ? (
<a
href={computeJob.algorithmLogUrl}
target="_blank"
rel="noreferrer"
>
View Log
</a>
) : (
'No logs found'
)}
</ListItem>
{computeJob.resultsUrls?.map((url, i) =>
url ? (
<ListItem key={shortid.generate()}>
<a href={url} target="_blank" rel="noreferrer">
View Result {i}
</a>
</ListItem>
) : (
'No results found.'
)
)}
</ul>
</>
))}
</Modal>
)
}