terriajs
Version:
Geospatial data visualization platform.
55 lines • 2.64 kB
JavaScript
import { jsx as _jsx } from "react/jsx-runtime";
import { runInAction } from "mobx";
import { observer } from "mobx-react";
import defined from "terriajs-cesium/Source/Core/defined";
import addedByUser from "../../Core/addedByUser";
import { DataSourceAction } from "../../Core/AnalyticEvents/analyticEvents";
import getPath from "../../Core/getPath";
import CatalogGroup from "./CatalogGroup";
import CatalogItem, { ButtonState } from "./CatalogItem";
import toggleItemOnMapFromCatalog, { Op as ToggleOnMapOp } from "./toggleItemOnMapFromCatalog";
export default observer(function DataCatalogReference({ reference, viewState, onActionButtonClicked, isTopLevel }) {
const setPreviewedItem = () => viewState
.viewCatalogMember(reference)
.then((result) => result.raiseError(viewState.terria));
const add = async (event) => {
const keepCatalogOpen = event.shiftKey || event.ctrlKey;
if (onActionButtonClicked) {
onActionButtonClicked(reference);
return;
}
if (defined(viewState.storyShown)) {
runInAction(() => {
viewState.storyShown = false;
});
}
if (reference.isFunction || viewState.useSmallScreenInterface) {
await setPreviewedItem();
}
else {
await toggleItemOnMapFromCatalog(viewState, reference, keepCatalogOpen, {
[ToggleOnMapOp.Add]: DataSourceAction.addFromCatalogue,
[ToggleOnMapOp.Remove]: DataSourceAction.removeFromCatalogue
});
}
};
const isSelected = addedByUser(reference)
? viewState.userDataPreviewedItem === reference
: viewState.previewedItem === reference;
const path = getPath(reference, " -> ");
let btnState;
if (reference.isLoading) {
btnState = ButtonState.Loading;
}
else if (viewState.useSmallScreenInterface) {
btnState = ButtonState.Preview;
}
else if (reference.isFunction) {
btnState = ButtonState.Stats;
}
else {
btnState = ButtonState.Add;
}
return reference.isGroup ? (_jsx(CatalogGroup, { text: reference.name || "...", isPrivate: reference.isPrivate, title: path, onClick: setPreviewedItem, topLevel: isTopLevel, loading: reference.isLoadingReference, open: reference.isLoadingReference })) : (_jsx(CatalogItem, { onTextClick: setPreviewedItem, selected: isSelected, text: reference.name || "...", isPrivate: reference.isPrivate, title: path, btnState: btnState, onBtnClick: reference.isFunction ? setPreviewedItem : add }));
});
//# sourceMappingURL=DataCatalogReference.js.map