diff --git a/frontend/src/components/MapView/index.js b/frontend/src/components/MapView/index.js
index 24c61b2b..204c5e09 100644
--- a/frontend/src/components/MapView/index.js
+++ b/frontend/src/components/MapView/index.js
@@ -18,7 +18,15 @@ class MapView extends Component {
onMapStar: PropTypes.func,
onMapUnstar: PropTypes.func,
toggleFilterBox: PropTypes.func,
- filterBoxHtml: PropTypes.string,
+ 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,
toggleMapInfoBox: PropTypes.func,
infoBoxHtml: PropTypes.string,
currentUser: PropTypes.object,
@@ -61,7 +69,9 @@ class MapView extends Component {
render = () => {
const { mobile, map, currentUser, onOpen, onClose,
- toggleMapInfoBox, toggleFilterBox, infoBoxHtml, filterBoxHtml,
+ toggleMapInfoBox, infoBoxHtml, toggleFilterBox, allForFiltering, visibleForFiltering,
+ toggleMetacode, toggleMapper, toggleSynapse, filterAllMetacodes,
+ filterAllMappers, filterAllSynapses, filterData,
openImportLightbox, forkMap, openHelpLightbox,
mapIsStarred, onMapStar, onMapUnstar,
onZoomExtents, onZoomIn, onZoomOut, hasLearnedTopicCreation } = this.props
@@ -79,10 +89,18 @@ class MapView extends Component {
return
+ onFilterClick={toggleFilterBox}
+ filterData={filterData}
+ allForFiltering={allForFiltering}
+ visibleForFiltering={visibleForFiltering}
+ toggleMetacode={toggleMetacode}
+ toggleMapper={toggleMapper}
+ toggleSynapse={toggleSynapse}
+ filterAllMetacodes={filterAllMetacodes}
+ filterAllMappers={filterAllMappers}
+ filterAllSynapses={filterAllSynapses} />
{currentUser &&
}
diff --git a/frontend/src/components/common/FilterBox.js b/frontend/src/components/common/FilterBox.js
new file mode 100644
index 00000000..0899e008
--- /dev/null
+++ b/frontend/src/components/common/FilterBox.js
@@ -0,0 +1,105 @@
+import React, { Component, PropTypes } from 'react'
+
+class FilterBox extends Component {
+ static propTypes = {
+ 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
+ }
+
+ render () {
+ const { filterData, allForFiltering, visibleForFiltering, toggleMetacode, toggleMapper, toggleSynapse,
+ filterAllMetacodes, filterAllMappers, filterAllSynapses } = this.props
+
+ 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
+
+
FILTER BY
+
+
MAPPERS
+
filterAllMappers()}>NONE
+
filterAllMappers(true)}>ALL
+
+
+ {allForFiltering.mappers.map(m => {
+ const data = filterData.mappers[m]
+ const isVisible = visibleForFiltering.mappers.indexOf(m) > -1
+ return
+ })}
+
+
+
+
+
+
+
+
SYNAPSES
+
filterAllSynapses()}>NONE
+
filterAllSynapses(true)}>ALL
+
+
+ {allForFiltering.synapses.map(s => {
+ const data = filterData.synapses[s]
+ const isVisible = visibleForFiltering.synapses.indexOf(s) > -1
+ return
+ })}
+
+
+
+
+
+ }
+}
+
+function Mapper({ visible, name, id, image, toggle }) {
+ return
toggle(id)} key={id} className={visible ? '' : 'toggledOff'}>
+
+ {name}
+
+}
+
+function Metacode({ visible, name, id, icon, toggle }) {
+ return
toggle(id)} key={id} className={visible ? '' : 'toggledOff'}>
+
+ {name.toLowerCase()}
+
+}
+
+function Synapse({ visible, desc, icon, toggle }) {
+ return
toggle(desc)} key={desc} className={visible ? '' : 'toggledOff'}>
+
+ {desc}
+
+}
+
+export default FilterBox