terriajs
Version:
Geospatial data visualization platform.
61 lines • 4.57 kB
JavaScript
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