UNPKG

terriajs

Version:

Geospatial data visualization platform.

61 lines 4.57 kB
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime"; import { observer } from "mobx-react"; import { isJsonObject } from "../../../Core/Json"; import TerriaError from "../../../Core/TerriaError"; import CatalogMemberMixin from "../../../ModelMixins/CatalogMemberMixin"; import DiscretelyTimeVaryingMixin from "../../../ModelMixins/DiscretelyTimeVaryingMixin"; import hasTraits from "../../../Models/Definition/hasTraits"; import { DEFAULT_PLACEMENT } from "../../../Models/SelectableDimensions/SelectableDimensions"; import WebMapServiceCatalogItemTraits from "../../../Traits/TraitsClasses/WebMapServiceCatalogItemTraits"; import ChartItemSelector from "./ChartItemSelector"; import ColorScaleRangeSection from "./ColorScaleRangeSection"; import DateTimeSelectorSection from "./DateTimeSelectorSection"; import FilterSection from "./FilterSection"; import GeneratedControlSection from "./GeneratedControlSection"; import LeftRightSection from "./LeftRightSection"; import Legend from "./Legend"; import OpacitySection from "./OpacitySection"; import SatelliteImageryTimeFilterSection from "./SatelliteImageryTimeFilterSection"; import { ScaleWorkbenchInfo } from "./ScaleWorkbenchInfo"; import DimensionSelectorSection from "./SelectableDimensionSection"; import ShortReport from "./ShortReport"; import TimerSection from "./TimerSection"; import ViewingControls from "./ViewingControls"; import { disableAllControls, enableAllControls } from "./WorkbenchControls"; const WorkbenchItemControls = observer(({ item, viewState, controls: propsControls = {}, disableViewingControlsMenu }) => { const itemControls = CatalogMemberMixin.isMixedInto(item) && isJsonObject(item.workbenchControlFlags) ? item.workbenchControlFlags : undefined; // disable/enable all controls, props controls overrides item controls const disableAll = !!(propsControls.disableAll ?? itemControls?.disableAll); const controls = disableAll ? { ...disableAllControls, ...itemControls, ...propsControls, disableAll } : { ...enableAllControls, ...itemControls, ...propsControls, disableAll }; const { generatedControls, error } = generateControls(viewState, item); if (error) { error.log(); } return (_jsxs(_Fragment, { children: [disableViewingControlsMenu ? null : (_jsx(ViewingControls, { item: item, viewState: viewState, controls: controls })), controls.opacity ? _jsx(OpacitySection, { item: item }) : null, controls.scaleWorkbench ? _jsx(ScaleWorkbenchInfo, { item: item }) : null, controls.timer ? _jsx(TimerSection, { item: item }) : null, controls.compare ? _jsx(LeftRightSection, { item: item }) : null, controls.chartItems ? _jsx(ChartItemSelector, { item: item }) : null, controls.filter ? _jsx(FilterSection, { item: item }) : null, controls.dateTime && DiscretelyTimeVaryingMixin.isMixedInto(item) ? (_jsx(DateTimeSelectorSection, { item: item })) : null, controls.timeFilter ? (_jsx(SatelliteImageryTimeFilterSection, { item: item })) : null, controls.selectableDimensions ? (_jsx(DimensionSelectorSection, { item: item, placement: DEFAULT_PLACEMENT })) : null, _jsx(GeneratedControlSection, { item: item, placement: DEFAULT_PLACEMENT, controls: generatedControls }), controls.colorScaleRange && hasTraits(item, WebMapServiceCatalogItemTraits, "colorScaleMinimum") && hasTraits(item, WebMapServiceCatalogItemTraits, "colorScaleMaximum") && (_jsx(ColorScaleRangeSection, { item: item, minValue: item.colorScaleMinimum, maxValue: item.colorScaleMaximum })), controls.shortReport ? _jsx(ShortReport, { item: item }) : null, controls.legend ? _jsx(Legend, { item: item }) : null, controls.selectableDimensions ? (_jsx(DimensionSelectorSection, { item: item, placement: "belowLegend" })) : null, _jsx(GeneratedControlSection, { item: item, placement: "belowLegend", controls: generatedControls })] })); }); function generateControls(viewState, item) { const generatedControls = []; const errors = []; viewState.workbenchItemInputGenerators.forEach((generator) => { try { const control = generator(item); if (control) { generatedControls.push(control); } } catch (error) { errors.push(TerriaError.from(error)); } }); const error = errors.length > 0 ? TerriaError.combine(errors, {}) : undefined; return { generatedControls, error }; } export default WorkbenchItemControls; //# sourceMappingURL=WorkbenchItemControls.js.map