terriajs
Version:
Geospatial data visualization platform.
52 lines (45 loc) • 2.21 kB
JSX
;
import SummaryConcept from './SummaryConcept/SummaryConcept';
import Concept from './Concept';
import ObserveModelMixin from '../../ObserveModelMixin';
import SummaryConceptModel from '../../../Map/SummaryConcept';
import React from 'react';
import createReactClass from 'create-react-class';
import PropTypes from 'prop-types';
import Styles from './concept-viewer.scss';
const ConceptViewer = createReactClass({
displayName: 'ConceptViewer',
mixins: [ObserveModelMixin],
propTypes: {
item: PropTypes.object.isRequired
},
render() {
// All non-additive-conditions go in a single section. (If there are none, don't show a <div class=section> so we don't get an extra padding.)
// Each additive-condition goes in its own section.
const nonSummaryConcept = this.props.item.concepts.filter(concept => concept.isVisible && !SummaryConceptModel.prototype.isPrototypeOf(concept));
return (
<div className={Styles.root}>
<If condition={nonSummaryConcept.length > 0}>
<div className={Styles.section}>
<For each="concept" index="i" of={nonSummaryConcept}>
<div className={Styles.inner} key={i}>
<ul className={Styles.childrenList}>
<Concept concept={concept} isLoading={this.props.item.isLoading}/>
</ul>
</div>
</For>
</div>
</If>
<For each="concept" index="i"
of={this.props.item.concepts.filter(concept => concept.isVisible && SummaryConceptModel.prototype.isPrototypeOf(concept))}>
<div className={Styles.section} key={i}>
<ul className={Styles.childrenList}>
<SummaryConcept concept={concept} isLoading={this.props.item.isLoading}/>
</ul>
</div>
</For>
</div>
);
},
});
module.exports = ConceptViewer;