import React, { Component } from 'react' import PropTypes from 'prop-types' import onClickOutsideAddon from 'react-onclickoutside' class FilterBox extends Component { static propTypes = { topic: PropTypes.object, map: PropTypes.object, filterData: PropTypes.object, allForFiltering: PropTypes.object, visibleForFiltering: PropTypes.object, toggleMetacode: PropTypes.func, toggleMapper: PropTypes.func, toggleSynapse: PropTypes.func, filterAllMetacodes: PropTypes.func, filterAllMappers: PropTypes.func, filterAllSynapses: PropTypes.func, closeBox: PropTypes.func } handleClickOutside = () => { this.props.closeBox() } render () { const { topic, map, filterData, allForFiltering, visibleForFiltering, toggleMetacode, toggleMapper, toggleSynapse, filterAllMetacodes, filterAllMappers, filterAllSynapses } = this.props const style = { maxHeight: document.body.clientHeight - 108 + 'px' } const mapperAllClass = "showAll showAllMappers" + (allForFiltering.mappers.length === visibleForFiltering.mappers.length ? ' active' : '') const mapperNoneClass = "hideAll hideAllMappers" + (visibleForFiltering.mappers.length === 0 ? ' active' : '') const metacodeAllClass = "showAll showAllMetacodes" + (allForFiltering.metacodes.length === visibleForFiltering.metacodes.length ? ' active' : '') const metacodeNoneClass = "hideAll hideAllMetacodes" + (visibleForFiltering.metacodes.length === 0 ? ' active' : '') const synapseAllClass = "showAll showAllSynapses" + (allForFiltering.synapses.length === visibleForFiltering.synapses.length ? ' active' : '') const synapseNoneClass = "hideAll hideAllSynapses" + (visibleForFiltering.synapses.length === 0 ? ' active' : '') return map || topic ?

FILTER BY

{map &&

MAPPERS

} {topic &&

CREATORS

} filterAllMappers()}>NONE filterAllMappers(true)}>ALL
    {allForFiltering.mappers.map(mapperId => { const data = filterData.mappers[mapperId] const isVisible = visibleForFiltering.mappers.indexOf(mapperId) > -1 return })}

METACODES

filterAllMetacodes()}>NONE filterAllMetacodes(true)}>ALL
    {allForFiltering.metacodes.map(metacodeId => { const data = filterData.metacodes[metacodeId] const isVisible = visibleForFiltering.metacodes.indexOf(metacodeId) > -1 return })}

SYNAPSES

filterAllSynapses()}>NONE filterAllSynapses(true)}>ALL
    {allForFiltering.synapses.map(synapseDesc => { const data = filterData.synapses[synapseDesc] const isVisible = visibleForFiltering.synapses.indexOf(synapseDesc) > -1 return })}
: null } } function Mapper({ visible, name, id, image, toggle }) { return
  • toggle(id)} key={id} className={visible ? '' : 'toggledOff'}> {name}

    {name}

  • } function Metacode({ visible, name, id, icon, toggle }) { return
  • toggle(id)} key={id} className={visible ? '' : 'toggledOff'}> {name}

    {name.toLowerCase()}

  • } function Synapse({ visible, desc, icon, toggle }) { return
  • toggle(desc)} key={desc.replace(/ /g, '')} className={visible ? '' : 'toggledOff'}> synapse icon

    {desc}

  • } export default onClickOutsideAddon(FilterBox)