clientjs/packages/dashboard-components/src/ui/DocumentAnnotations.jsx
author ymh <ymh.work@gmail.com>
Mon, 17 Sep 2018 18:32:48 +0200
changeset 8 24a3d661309f
parent 0 5f4fcbc80b37
permissions -rw-r--r--
prepare version

import React from 'react';
import PropTypes from 'prop-types';

import DocumentAnnotation from './DocumentAnnotation';

const AnnotationsList = ({ document, metacategories, categories }) => {
  const { annotations } = document;

  return annotations.map(
    annotation => (
      <DocumentAnnotation
        key={annotation.id}
        annotation={annotation}
        metacategories={metacategories}
        categories={categories}
      />
    ),
  );
};

AnnotationsList.propTypes = {
  document: PropTypes.object.isRequired,
  metacategories: PropTypes.arrayOf(PropTypes.object).isRequired,
  categories: PropTypes.arrayOf(PropTypes.string).isRequired,
};


const DocumentAnnotations = ({
  document,
  metacategories,
  categories,
  viaBaseUrl,
}) => (
  <div className="card">
    <div className="card-header">
      <a href={viaBaseUrl + document.uri} target="_blank" rel="noopener noreferrer">{ document.title }</a>
    </div>

    <ul className="list-group list-group-flush small">
      <AnnotationsList
        document={document}
        metacategories={metacategories}
        categories={categories}
      />
    </ul>
  </div>
);

DocumentAnnotations.propTypes = {
  document: PropTypes.object.isRequired,
  metacategories: PropTypes.arrayOf(PropTypes.object).isRequired,
  categories: PropTypes.arrayOf(PropTypes.string).isRequired,
  viaBaseUrl: PropTypes.string.isRequired,
};

export default DocumentAnnotations;