UNPKG

terriajs

Version:

Geospatial data visualization platform.

73 lines (67 loc) 2.32 kB
"use strict"; import createReactClass from "create-react-class"; import { observer } from "mobx-react"; import PropTypes from "prop-types"; import React from "react"; import GroupMixin from "../../ModelMixins/GroupMixin"; import ReferenceMixin from "../../ModelMixins/ReferenceMixin"; import DataCatalogGroup from "./DataCatalogGroup"; import DataCatalogItem from "./DataCatalogItem"; import DataCatalogReference from "./DataCatalogReference"; /** * Component that is either a {@link CatalogItem} or a {@link DataCatalogMember} and encapsulated this choosing logic. */ export default observer( createReactClass({ displayName: "DataCatalogMember", propTypes: { member: PropTypes.object.isRequired, viewState: PropTypes.object.isRequired, manageIsOpenLocally: PropTypes.bool, onActionButtonClicked: PropTypes.func, removable: PropTypes.bool, terria: PropTypes.object, isTopLevel: PropTypes.bool }, render() { const member = ReferenceMixin.isMixedInto(this.props.member) && this.props.member.nestedTarget !== undefined ? this.props.member.nestedTarget : this.props.member; if (ReferenceMixin.isMixedInto(member)) { return ( <DataCatalogReference reference={member} viewState={this.props.viewState} terria={this.props.terria} onActionButtonClicked={this.props.onActionButtonClicked} isTopLevel={this.props.isTopLevel} /> ); } else if (GroupMixin.isMixedInto(member)) { return ( <DataCatalogGroup group={member} viewState={this.props.viewState} manageIsOpenLocally={this.props.manageIsOpenLocally} onActionButtonClicked={this.props.onActionButtonClicked} removable={this.props.removable} terria={this.props.terria} isTopLevel={this.props.isTopLevel} /> ); } else { return ( <DataCatalogItem item={member} viewState={this.props.viewState} onActionButtonClicked={this.props.onActionButtonClicked} removable={this.props.removable} terria={this.props.terria} /> ); } } }) );