terriajs
Version:
Geospatial data visualization platform.
73 lines (67 loc) • 2.32 kB
JSX
;
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}
/>
);
}
}
})
);