mirror of
https://github.com/oceanprotocol/market.git
synced 2024-12-02 05:57:29 +01:00
Merge pull request #66 from oceanprotocol/feature/sample
add sample file during publish
This commit is contained in:
commit
c8d3565d21
@ -20,12 +20,19 @@
|
||||
},
|
||||
{
|
||||
"name": "files",
|
||||
"label": "Files",
|
||||
"label": "File",
|
||||
"placeholder": "e.g. https://file.com/file.json",
|
||||
"help": "Please provide a URL to your data set file.",
|
||||
"help": "Please provide a URL to your data set file. This URL will be stored encrypted after publishing.",
|
||||
"type": "files",
|
||||
"required": true
|
||||
},
|
||||
{
|
||||
"name": "links",
|
||||
"label": "Sample file",
|
||||
"placeholder": "e.g. https://file.com/samplefile.json",
|
||||
"help": "Please provide a URL to a sample of your data set file. This file should reveal the data structure of your data set, e.g. by including the header and one line of a CSV file. This file URL will be publicly available after publishing.",
|
||||
"type": "files"
|
||||
},
|
||||
{
|
||||
"name": "access",
|
||||
"label": "Access Type",
|
||||
|
@ -17,6 +17,8 @@ interface ButtonProps {
|
||||
style?: 'primary' | 'ghost' | 'text'
|
||||
type?: 'submit'
|
||||
download?: boolean
|
||||
target?: string
|
||||
rel?: string
|
||||
}
|
||||
|
||||
export default function Button({
|
||||
|
@ -23,7 +23,7 @@ export default function FilesInput(props: InputProps): ReactElement {
|
||||
const newFileInfo = await getFileInfo(url)
|
||||
newFileInfo && helpers.setValue([newFileInfo])
|
||||
} catch (error) {
|
||||
toast.error('Could not fetch file info. Please check url and try again')
|
||||
toast.error('Could not fetch file info. Please check URL and try again')
|
||||
console.error(error.message)
|
||||
} finally {
|
||||
setIsLoading(false)
|
||||
|
@ -1,10 +1,9 @@
|
||||
import React, { ReactElement } from 'react'
|
||||
import shortid from 'shortid'
|
||||
import { ListItem } from '../../atoms/Lists'
|
||||
import MetaItem from './MetaItem'
|
||||
import styles from './MetaSecondary.module.css'
|
||||
import { MetadataMarket } from '../../../@types/Metadata'
|
||||
import Tags from '../../atoms/Tags'
|
||||
import Button from '../../atoms/Button'
|
||||
|
||||
export default function MetaSecondary({
|
||||
metadata
|
||||
@ -15,18 +14,21 @@ export default function MetaSecondary({
|
||||
|
||||
return (
|
||||
<aside className={styles.metaSecondary}>
|
||||
{links && (
|
||||
{links && links.length && (
|
||||
<div className={styles.samples}>
|
||||
<MetaItem
|
||||
title="Sample Data"
|
||||
content={
|
||||
<ul>
|
||||
{links?.map((link) => (
|
||||
<ListItem key={shortid.generate()}>
|
||||
<a href={link.url}>{link.name}</a>
|
||||
</ListItem>
|
||||
))}
|
||||
</ul>
|
||||
<Button
|
||||
href={links[0].url}
|
||||
target="_blank"
|
||||
rel="noreferrer"
|
||||
download
|
||||
style="text"
|
||||
size="small"
|
||||
>
|
||||
Download Sample
|
||||
</Button>
|
||||
}
|
||||
/>
|
||||
</div>
|
||||
|
@ -27,7 +27,7 @@ export default function AssetContent({
|
||||
<div className={styles.content}>
|
||||
<aside className={styles.meta}>
|
||||
<p>{datePublished && <Time date={datePublished} />}</p>
|
||||
{categories && (
|
||||
{categories && categories.length && (
|
||||
<p>
|
||||
<Link to={`/search?categories=["${categories[0]}"]`}>
|
||||
{categories[0]}
|
||||
|
@ -6,6 +6,7 @@ import MetaItem from '../../organisms/AssetContent/MetaItem'
|
||||
import styles from './Preview.module.css'
|
||||
import File from '../../atoms/File'
|
||||
import { MetadataPublishForm } from '../../../@types/MetaData'
|
||||
import Button from '../../atoms/Button'
|
||||
|
||||
export default function Preview({
|
||||
values
|
||||
@ -18,13 +19,29 @@ export default function Preview({
|
||||
<header>
|
||||
{values.name && <h3 className={styles.title}>{values.name}</h3>}
|
||||
{values.description && <Markdown text={values.description} />}
|
||||
{values.files && values.files.length && (
|
||||
{values.files &&
|
||||
typeof values.files !== 'string' &&
|
||||
values.files.length > 0 && (
|
||||
<File
|
||||
file={values.files[0] as FileMetadata}
|
||||
className={styles.file}
|
||||
small
|
||||
/>
|
||||
)}
|
||||
{values.links &&
|
||||
typeof values.links !== 'string' &&
|
||||
values.links.length && (
|
||||
<Button
|
||||
href={(values.links[0] as FileMetadata).url}
|
||||
target="_blank"
|
||||
rel="noreferrer"
|
||||
download
|
||||
style="text"
|
||||
size="small"
|
||||
>
|
||||
Download Sample
|
||||
</Button>
|
||||
)}
|
||||
{values.tags && <Tags items={values.tags.split(',')} />}
|
||||
</header>
|
||||
|
||||
@ -37,6 +54,7 @@ export default function Preview({
|
||||
key.includes('description') ||
|
||||
key.includes('tags') ||
|
||||
key.includes('files') ||
|
||||
key.includes('links') ||
|
||||
key.includes('termsAndConditions') ||
|
||||
key.includes('price') ||
|
||||
value === undefined ||
|
||||
|
@ -1,6 +1,6 @@
|
||||
import React, { ReactElement, useEffect, FormEvent } from 'react'
|
||||
import styles from './PublishForm.module.css'
|
||||
import { useOcean, usePublish } from '@oceanprotocol/react'
|
||||
import { useOcean } from '@oceanprotocol/react'
|
||||
import { useFormikContext, Form, Field } from 'formik'
|
||||
import Input from '../../atoms/Input'
|
||||
import Button from '../../atoms/Button'
|
||||
@ -25,7 +25,6 @@ export default function PublishForm({
|
||||
setErrors,
|
||||
setTouched,
|
||||
resetForm,
|
||||
setValues,
|
||||
initialValues
|
||||
} = useFormikContext()
|
||||
const formName = 'ocean-publish-form'
|
||||
|
@ -27,12 +27,6 @@ export default function PublishPage({
|
||||
values: MetadataPublishForm,
|
||||
resetForm: () => void
|
||||
): Promise<void> {
|
||||
// console.log(`
|
||||
// Collected form values:
|
||||
// ----------------------
|
||||
// ${JSON.stringify(values, null, 2)}
|
||||
// `)
|
||||
|
||||
const metadata = transformPublishFormToMetadata(values)
|
||||
const {
|
||||
tokensToMint,
|
||||
@ -42,13 +36,6 @@ export default function PublishPage({
|
||||
} = values.price
|
||||
const serviceType = values.access === 'Download' ? 'access' : 'compute'
|
||||
|
||||
// console.log(`
|
||||
// Transformed metadata values:
|
||||
// ----------------------
|
||||
// ${JSON.stringify(metadata, null, 2)}
|
||||
// Tokens to mint: ${tokensToMint}
|
||||
// `)
|
||||
|
||||
try {
|
||||
// mpAddress and mpFee are not yet implemented in ocean js so are not uset
|
||||
const ddo = await publish(
|
||||
|
@ -35,9 +35,7 @@ export function transformPublishFormToMetadata(
|
||||
description,
|
||||
copyrightHolder,
|
||||
tags: tags?.split(','),
|
||||
// links: {
|
||||
// url: links
|
||||
// },
|
||||
links: typeof links !== 'string' && links,
|
||||
termsAndConditions,
|
||||
priceType: price.type
|
||||
}
|
||||
|
@ -25,7 +25,7 @@ export const validationSchema = Yup.object().shape<MetadataPublishForm>({
|
||||
// ---- optional fields ----
|
||||
copyrightHolder: Yup.string(),
|
||||
tags: Yup.string(),
|
||||
links: Yup.object<FileMetadata[]>()
|
||||
links: Yup.object<FileMetadata[]>().nullable()
|
||||
})
|
||||
|
||||
export const initialValues: MetadataPublishForm = {
|
||||
|
@ -50,7 +50,7 @@ export async function getFileInfo(url: string): Promise<FileMetadata> {
|
||||
data: { url }
|
||||
})
|
||||
|
||||
if (response.status > 299 || !response.data.result) {
|
||||
if (response.status > 299 || !response.data) {
|
||||
toast.error('Could not connect to File API')
|
||||
return
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user