UNPKG

terriajs

Version:

Geospatial data visualization platform.

86 lines (73 loc) 3.49 kB
import defined from 'terriajs-cesium/Source/Core/defined'; import FeatureInfoSection from './FeatureInfoSection.jsx'; import ObserveModelMixin from '../ObserveModelMixin'; import React from 'react'; import createReactClass from 'create-react-class'; import PropTypes from 'prop-types'; import Styles from './feature-info-catalog-item.scss'; // Any Catalog in a feature-info-panel const FeatureInfoCatalogItem = createReactClass({ displayName: 'FeatureInfoCatalogItem', mixins: [ObserveModelMixin], propTypes: { features: PropTypes.array, catalogItem: PropTypes.object, terria: PropTypes.object.isRequired, viewState: PropTypes.object.isRequired, onToggleOpen: PropTypes.func.isRequired, printView: PropTypes.bool }, render() { const features = this.props.features; const catalogItem = this.props.catalogItem; const terria = this.props.terria; let featureInfoSections = null; let featureInfoTemplate; let totalFeaturesCount = 0; let hiddenNumber; let maximumShownFeatureInfos = terria.configParameters.defaultMaximumShownFeatureInfos; if (defined(features)) { // Display no more than defined number of feature infos totalFeaturesCount = features.length; if (defined(catalogItem)) { maximumShownFeatureInfos = catalogItem.maximumShownFeatureInfos; featureInfoTemplate = catalogItem.featureInfoTemplate; } hiddenNumber = totalFeaturesCount - maximumShownFeatureInfos; // A positive hiddenNumber => some are hidden; negative means none are. featureInfoSections = features.slice(0, maximumShownFeatureInfos).map((feature, i) => { return ( <FeatureInfoSection key={i} viewState={this.props.viewState} catalogItem={catalogItem} feature={feature} position={terria.pickedFeatures && terria.pickedFeatures.pickPosition} template={featureInfoTemplate} isOpen={feature === terria.selectedFeature || this.props.printView} onClickHeader={this.props.onToggleOpen} printView={this.props.printView} /> ); }); } return ( <li className={Styles.group}> <ul className={Styles.sections}> <If condition={hiddenNumber === 1}> <li className={Styles.messageItem}> <strong>More than {maximumShownFeatureInfos} {catalogItem.name} features were found.</strong><br/> The first {maximumShownFeatureInfos} are shown below. </li> </If> <If condition={hiddenNumber > 1}> <li className={Styles.messageItem}> <strong>{totalFeaturesCount} {catalogItem.name} features were found.</strong><br/> The first {maximumShownFeatureInfos} are shown below. </li> </If> {featureInfoSections} </ul> </li> ); }, }); module.exports = FeatureInfoCatalogItem;