terriajs
Version:
Geospatial data visualization platform.
47 lines • 2.08 kB
JavaScript
import { Category } from "../../Core/AnalyticEvents/analyticEvents";
import getPath from "../../Core/getPath";
import ReferenceMixin from "../../ModelMixins/ReferenceMixin";
import TimeVarying from "../../ModelMixins/TimeVarying";
// Whether the item is being added or removed
export var Op;
(function (Op) {
Op[Op["Add"] = 0] = "Add";
Op[Op["Remove"] = 1] = "Remove";
})(Op || (Op = {}));
// Assume that member could be a reference to a reference
// All references should be loaded before calling this (by workbench.add)
function addOrRemoveFromTimelineStack(terria, member, op) {
if (ReferenceMixin.isMixedInto(member))
return (member.target && addOrRemoveFromTimelineStack(terria, member.target, op));
if (TimeVarying.is(member)) {
if (op === Op.Add)
terria.timelineStack.addToTop(member);
else
terria.timelineStack.remove(member);
}
}
/**
* Toggle an item on or off the map. A utility function intended to be used by DataCatalogX
* React components and friends (should be called from inside the explorer panel)
*
* @param viewState
* @param item Could be an item or a Reference to an item
* @param keepCatalogOpen
* @param analyticsEvents
*/
export default async function toggleItemOnMapFromCatalog(viewState, item, keepCatalogOpen, analyticsEvents) {
const op = viewState.terria.workbench.contains(item) ? Op.Remove : Op.Add;
if (op === Op.Add) {
(await viewState.terria.workbench.add(item)).raiseError(viewState.terria, undefined, true // We want to force show error to user here - because this function is called when a user clicks the "Add to workbench" buttons
);
}
else {
viewState.terria.workbench.remove(item);
}
addOrRemoveFromTimelineStack(viewState.terria, item, op);
viewState.terria.analytics?.logEvent(Category.dataSource, analyticsEvents[op], getPath(item));
if (viewState.terria.workbench.contains(item) && !keepCatalogOpen) {
viewState.closeCatalog();
}
}
//# sourceMappingURL=toggleItemOnMapFromCatalog.js.map