clientjs/packages/dashboard-components/src/ui/Sidebar.jsx
changeset 0 5f4fcbc80b37
equal deleted inserted replaced
-1:000000000000 0:5f4fcbc80b37
       
     1 import React from 'react';
       
     2 import { FormattedMessage } from 'react-intl';
       
     3 import PropTypes from 'prop-types';
       
     4 
       
     5 import Tag from './Tag';
       
     6 
       
     7 import './Sidebar.scss';
       
     8 
       
     9 const TopicsList = ({ topics, metacategories }) => (
       
    10   <div>
       
    11     <h3 className="title-topics">
       
    12       <FormattedMessage
       
    13         id="sidebar.categories_title"
       
    14         defaultMessage="Categories"
       
    15       />
       
    16     </h3>
       
    17 
       
    18     <p>
       
    19       <FormattedMessage
       
    20         id="sidebar.categories_desc"
       
    21         defaultMessage="This is the list of tags we are going to focus on in this studies."
       
    22       />
       
    23     </p>
       
    24 
       
    25     <dl>
       
    26       {
       
    27         (topics || []).map(topic => (
       
    28           <div key={topic}>
       
    29             <dt><Tag tag={topic} categories={topics} metacategories={metacategories} /></dt>
       
    30           </div>
       
    31         ))
       
    32       }
       
    33     </dl>
       
    34   </div>
       
    35 );
       
    36 
       
    37 TopicsList.propTypes = {
       
    38   metacategories: PropTypes.arrayOf(PropTypes.object),
       
    39   topics: PropTypes.arrayOf(PropTypes.string),
       
    40 };
       
    41 
       
    42 TopicsList.defaultProps = {
       
    43   metacategories: [],
       
    44   topics: [],
       
    45 };
       
    46 
       
    47 const MetacategoriesList = ({ topics, metacategories }) => (
       
    48   <div>
       
    49     <h3>
       
    50       <FormattedMessage
       
    51         id="sidebar.annotation_protocol"
       
    52         defaultMessage="Annotation Protocol"
       
    53       />
       
    54     </h3>
       
    55     {
       
    56       (metacategories || []).map((metacategory) => {
       
    57         const descId = `data.metacategories.${metacategory.id}.desc`;
       
    58         return (
       
    59           <div key={metacategory.tag} className="sidebar-metacategories-entry">
       
    60             <dt><Tag tag={`cat:${metacategory.tag}`} categories={topics} metacategories={metacategories} /></dt>
       
    61             <div className="small"><FormattedMessage id={descId} /></div>
       
    62           </div>
       
    63         );
       
    64       })
       
    65     }
       
    66   </div>
       
    67 );
       
    68 
       
    69 MetacategoriesList.propTypes = {
       
    70   metacategories: PropTypes.arrayOf(PropTypes.object),
       
    71   topics: PropTypes.arrayOf(PropTypes.string),
       
    72 };
       
    73 
       
    74 MetacategoriesList.defaultProps = {
       
    75   metacategories: [],
       
    76   topics: [],
       
    77 };
       
    78 
       
    79 const Sidebar = ({ metacategories, topics }) => (
       
    80   <div>
       
    81     <MetacategoriesList metacategories={metacategories} topics={topics} />
       
    82     <TopicsList metacategories={metacategories} topics={topics} />
       
    83   </div>
       
    84 );
       
    85 
       
    86 Sidebar.propTypes = {
       
    87   metacategories: PropTypes.arrayOf(PropTypes.object),
       
    88   topics: PropTypes.arrayOf(PropTypes.string),
       
    89 };
       
    90 
       
    91 Sidebar.defaultProps = {
       
    92   metacategories: [],
       
    93   topics: [],
       
    94 };
       
    95 
       
    96 export default Sidebar;