terriajs
Version:
Geospatial data visualization platform.
69 lines (64 loc) • 2.17 kB
JSX
import { observer } from "mobx-react";
import PropTypes from "prop-types";
import { Component } 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.
*/
class DataCatalogMember extends Component {
static 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}
/>
);
}
}
}
export default DataCatalogMember;