import React from "react" import { Element } from "react-scroll" import PropTypes from "prop-types" import ReactMarkdown from "react-markdown" import { FontAwesomeIcon } from "@fortawesome/react-fontawesome" import { faExternalLinkAlt } from "@fortawesome/free-solid-svg-icons" import ScrollButton from "../../ScrollButton/index.js" import * as styles from "./styles.module.css" class DatasetInfo extends React.Component { constructor(props) { super(props) this.state = { opacity: 0 } } render() { const descriptions = this.props.datasetInfo.Description || [] const compositions = this.props.datasetInfo.Composition || [] const provenances = this.props.datasetInfo.Provenance || [] const collections = this.props.datasetInfo.Collection || [] const managements = this.props.datasetInfo.Management || [] return ( <> <ScrollButton /> <div className={styles.flexbox}> <h3 className={styles.datasetTitle}>Dataset Information</h3> <span className={styles.datasetUnderlineBold}></span> </div> <Element id={"Description-title"}> </Element> <p className={styles.datasetParagraph}> Information about the ongoing management of the dataset, such as how the data will be maintained, updated, and the best contact for further inquiries. </p> <p className={styles.datasetParagraph}> The categories and questions that comprise this section are drawn from the terrific work of many teams; we have drawn heavily on the work of{' '} <a href="https://arxiv.org/abs/1803.09010" target="_blank" rel="noreferrer"> Datasheets for Datasets <FontAwesomeIcon icon={faExternalLinkAlt} /> </a>, and supplemented that with work by{' '} <a href="https://ai-global.org/" target="_blank" rel="noreferrer"> AI Global <FontAwesomeIcon icon={faExternalLinkAlt} /> </a>,{' '} <a href="http://data.world/" target="_blank" rel="noreferrer"> data.world <FontAwesomeIcon icon={faExternalLinkAlt} /> </a>, and{' '} <a href="https://deon.drivendata.org/" target="_blank" rel="noreferrer"> DrivenData <FontAwesomeIcon icon={faExternalLinkAlt} /> </a>. We further refined this section based on feedback from colleagues at the Department of Education, AI Global, and Memorial Sloan Kettering. </p> <span className={styles.datasetUnderlineBold}></span> <h3 className={styles.datasetSubHeader}>Description</h3> <ol className={styles.datasetOl}> {descriptions.map(description => ( <li className={styles.datasetLi}> {description.question} {description.type === "markdown" ? ( <ReactMarkdown className={styles.datasetMrkdwn} children={description.answer || description.content} /> ) : ( "" )} </li> ))} </ol> <Element id={"Composition-title"}> </Element> <span className={styles.datasetUnderline}></span> <h3 className={styles.datasetSubHeader}>Composition</h3> <ol className={styles.datasetOl}> {compositions.map(composition => ( <li className={styles.datasetLi}> {composition.question} {composition.type === "markdown" ? ( <ReactMarkdown className={styles.datasetMrkdwn} children={composition.answer || composition.content} /> ) : ( "" )} </li> ))} </ol> <Element id={"Provenance-title"}> </Element> <span className={styles.datasetUnderline}></span> <h3 className={styles.datasetSubHeader}>Provenance</h3> <ol className={styles.datasetOl}> {provenances.map(provenance => ( <li className={styles.datasetLi}> {provenance.question} {provenance.type === "markdown" ? ( <ReactMarkdown className={styles.datasetMrkdwn} children={provenance.answer || provenance.content} /> ) : ( "" )} </li> ))} </ol> <Element id={"Collection-title"}></Element> <span className={styles.datasetUnderline}></span> <h3 className={styles.datasetSubHeader}>Collection</h3> <ol className={styles.datasetOl}> {collections.map(collection => ( <li className={styles.datasetLi}> {collection.question} {collection.type === "markdown" ? ( <ReactMarkdown className={styles.datasetMrkdwn} children={collection.answer || collection.content} /> ) : ( "" )} </li> ))} </ol> <Element id={"Management-title"}> </Element> <span className={styles.datasetUnderline}></span> <h3 className={styles.datasetSubHeader}>Management</h3> <ol className={styles.datasetOl}> {managements.map(management => ( <li className={styles.datasetLi}> {management.question} {management.type === "markdown" ? ( <ReactMarkdown className={styles.datasetMrkdwn} children={management.answer || management.content} /> ) : ( "" )} </li> ))} </ol> <span className={styles.datasetUnderline}></span> </> ) } } DatasetInfo.propTypes = { datasetInfo: PropTypes.shape({ description: PropTypes.object, composition: PropTypes.object, provenance: PropTypes.object, collection: PropTypes.object, management: PropTypes.object }).isRequired, shape: PropTypes.shape({ color: PropTypes.string, fontSize: PropTypes.number, }) } export default DatasetInfo