UNPKG

terriajs

Version:

Geospatial data visualization platform.

107 lines (94 loc) 3.78 kB
'use strict'; import classNames from 'classnames'; import Concept from '../Concept'; import Icon from '../../../Icon.jsx'; import ObserveModelMixin from '../../../ObserveModelMixin'; import React from 'react'; import createReactClass from 'create-react-class'; import PropTypes from 'prop-types'; import Styles from './summary-concept.scss'; const NEW_TEXT = 'New condition'; const OpenInactiveConcept = createReactClass({ displayName: 'OpenInactiveConcept', mixins: [ObserveModelMixin], propTypes: { rootConcept: PropTypes.object.isRequired, openInactiveConcept: PropTypes.object.isRequired }, cancel() { this.props.openInactiveConcept.isOpen = false; }, back() { this.props.openInactiveConcept.isOpen = false; this.props.openInactiveConcept.parent.isOpen = true; }, render() { const showControls = this.props.rootConcept.allowMultiple; return ( <div className={Styles.section}> <div className={Styles.controls}> <If condition={showControls}> <button className={Styles.btnClose} onClick={this.cancel}> Cancel </button> </If> </div> <div className={Styles.heading}> <If condition={this.props.rootConcept !== this.props.openInactiveConcept}> <If condition={showControls}> <button className={Styles.btnBack} onClick={this.back}> <Icon glyph={Icon.GLYPHS.left}/> </button> </If> <div className={classNames({[Styles.indented]: showControls})}> {this.props.openInactiveConcept.name} </div> </If> <If condition={this.props.rootConcept === this.props.openInactiveConcept}> {NEW_TEXT} </If> </div> <ul className={Styles.childrenList}> <For each="child" index="i" of={this.props.openInactiveConcept.items}> <If condition={child.items && child.items.length > 0}> <ConceptParent concept={child} key={i}/> </If> <If condition={!child.items || child.items.length === 0}> <li className={Styles.items}> <ul className={Styles.listReset}> <Concept concept={child} key={i}/> </ul> </li> </If> </For> </ul> </div> ); }, }); const ConceptParent = createReactClass({ displayName: 'ConceptParent', mixins: [ObserveModelMixin], propTypes: { concept: PropTypes.object.isRequired }, open() { this.props.concept.isOpen = true; this.props.concept.parent.isOpen = false; }, render() { return ( <li> <div className={Styles.btnAddOpen} onClick={this.open}> <div className={Styles.controls}> <Icon glyph={Icon.GLYPHS.closed}/> </div> <div className={Styles.condition}> {this.props.concept.name} </div> </div> </li> ); }, }); module.exports = OpenInactiveConcept;