kepler.gl
Version:
kepler.gl is a webgl based application to visualize large scale location data in the browser
797 lines (721 loc) • 141 kB
JavaScript
"use strict";
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports["default"] = LayerConfiguratorFactory;
exports.AggregationTypeSelector = exports.AggrScaleSelector = exports.ChannelByValueSelector = exports.LayerColorRangeSelector = exports.ArcLayerColorSelector = exports.LayerColorSelector = exports.HowToButton = exports.getLayerChannelConfigProps = exports.getVisConfiguratorProps = exports.getLayerConfiguratorProps = exports.getLayerFields = void 0;
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
var _react = _interopRequireWildcard(require("react"));
var _propTypes = _interopRequireDefault(require("prop-types"));
var _styledComponents = _interopRequireDefault(require("styled-components"));
var _reactIntl = require("react-intl");
var _styledComponents2 = require("../../common/styled-components");
var _itemSelector = _interopRequireDefault(require("../../common/item-selector/item-selector"));
var _visConfigByFieldSelector = _interopRequireDefault(require("./vis-config-by-field-selector"));
var _layerColumnConfig = _interopRequireDefault(require("./layer-column-config"));
var _layerTypeSelector = _interopRequireDefault(require("./layer-type-selector"));
var _dimensionScaleSelector = _interopRequireDefault(require("./dimension-scale-selector"));
var _colorSelector = _interopRequireDefault(require("./color-selector"));
var _sourceDataSelector = _interopRequireDefault(require("../common/source-data-selector"));
var _visConfigSwitch = _interopRequireDefault(require("./vis-config-switch"));
var _visConfigSlider = _interopRequireDefault(require("./vis-config-slider"));
var _layerConfigGroup = _interopRequireWildcard(require("./layer-config-group"));
var _textLabelPanel = _interopRequireDefault(require("./text-label-panel"));
var _utils = require("../../../utils/utils");
var _defaultSettings = require("../../../constants/default-settings");
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
function _templateObject3() {
var data = (0, _taggedTemplateLiteral2["default"])(["\n position: absolute;\n right: 12px;\n top: -4px;\n"]);
_templateObject3 = function _templateObject3() {
return data;
};
return data;
}
function _templateObject2() {
var data = (0, _taggedTemplateLiteral2["default"])(["\n margin-top: 12px;\n"]);
_templateObject2 = function _templateObject2() {
return data;
};
return data;
}
function _templateObject() {
var data = (0, _taggedTemplateLiteral2["default"])(["\n position: relative;\n margin-top: 12px;\n"]);
_templateObject = function _templateObject() {
return data;
};
return data;
}
var StyledLayerConfigurator = _styledComponents["default"].div.attrs({
className: 'layer-panel__config'
})(_templateObject());
var StyledLayerVisualConfigurator = _styledComponents["default"].div.attrs({
className: 'layer-panel__config__visualC-config'
})(_templateObject2());
var getLayerFields = function getLayerFields(datasets, layer) {
return datasets[layer.config.dataId] ? datasets[layer.config.dataId].fields : [];
};
exports.getLayerFields = getLayerFields;
var getLayerConfiguratorProps = function getLayerConfiguratorProps(props) {
return {
layer: props.layer,
fields: getLayerFields(props.datasets, props.layer),
onChange: props.updateLayerConfig,
setColorUI: props.updateLayerColorUI
};
};
exports.getLayerConfiguratorProps = getLayerConfiguratorProps;
var getVisConfiguratorProps = function getVisConfiguratorProps(props) {
return {
layer: props.layer,
fields: getLayerFields(props.datasets, props.layer),
onChange: props.updateLayerVisConfig,
setColorUI: props.updateLayerColorUI
};
};
exports.getVisConfiguratorProps = getVisConfiguratorProps;
var getLayerChannelConfigProps = function getLayerChannelConfigProps(props) {
return {
layer: props.layer,
fields: getLayerFields(props.datasets, props.layer),
onChange: props.updateLayerVisualChannelConfig
};
};
exports.getLayerChannelConfigProps = getLayerChannelConfigProps;
LayerConfiguratorFactory.deps = [_sourceDataSelector["default"]];
function LayerConfiguratorFactory(SourceDataSelector) {
var LayerConfigurator =
/*#__PURE__*/
function (_Component) {
(0, _inherits2["default"])(LayerConfigurator, _Component);
function LayerConfigurator() {
(0, _classCallCheck2["default"])(this, LayerConfigurator);
return (0, _possibleConstructorReturn2["default"])(this, (0, _getPrototypeOf2["default"])(LayerConfigurator).apply(this, arguments));
}
(0, _createClass2["default"])(LayerConfigurator, [{
key: "_renderPointLayerConfig",
value: function _renderPointLayerConfig(props) {
return this._renderScatterplotLayerConfig(props);
}
}, {
key: "_renderIconLayerConfig",
value: function _renderIconLayerConfig(props) {
return this._renderScatterplotLayerConfig(props);
}
}, {
key: "_renderScatterplotLayerConfig",
value: function _renderScatterplotLayerConfig(_ref) {
var layer = _ref.layer,
visConfiguratorProps = _ref.visConfiguratorProps,
layerChannelConfigProps = _ref.layerChannelConfigProps,
layerConfiguratorProps = _ref.layerConfiguratorProps;
return _react["default"].createElement(StyledLayerVisualConfigurator, null, _react["default"].createElement(_layerConfigGroup["default"], (0, _extends2["default"])({}, layer.visConfigSettings.filled, visConfiguratorProps, {
collapsible: true
}), layer.config.colorField ? _react["default"].createElement(LayerColorRangeSelector, visConfiguratorProps) : _react["default"].createElement(LayerColorSelector, layerConfiguratorProps), _react["default"].createElement(_layerConfigGroup.ConfigGroupCollapsibleContent, null, _react["default"].createElement(ChannelByValueSelector, (0, _extends2["default"])({
channel: layer.visualChannels.color
}, layerChannelConfigProps)), _react["default"].createElement(_visConfigSlider["default"], (0, _extends2["default"])({}, layer.visConfigSettings.opacity, visConfiguratorProps)))), layer.type === _defaultSettings.LAYER_TYPES.point ? _react["default"].createElement(_layerConfigGroup["default"], (0, _extends2["default"])({}, layer.visConfigSettings.outline, visConfiguratorProps, {
collapsible: true
}), layer.config.strokeColorField ? _react["default"].createElement(LayerColorRangeSelector, (0, _extends2["default"])({}, visConfiguratorProps, {
property: "strokeColorRange"
})) : _react["default"].createElement(LayerColorSelector, (0, _extends2["default"])({}, visConfiguratorProps, {
selectedColor: layer.config.visConfig.strokeColor,
property: "strokeColor"
})), _react["default"].createElement(_layerConfigGroup.ConfigGroupCollapsibleContent, null, _react["default"].createElement(ChannelByValueSelector, (0, _extends2["default"])({
channel: layer.visualChannels.strokeColor
}, layerChannelConfigProps)), _react["default"].createElement(_visConfigSlider["default"], (0, _extends2["default"])({}, layer.visConfigSettings.thickness, visConfiguratorProps, {
label: "Stroke Width (Pixels)",
disabled: !layer.config.visConfig.outline
})))) : null, _react["default"].createElement(_layerConfigGroup["default"], {
label: 'layer.radius',
collapsible: true
}, !layer.config.sizeField ? _react["default"].createElement(_visConfigSlider["default"], (0, _extends2["default"])({}, layer.visConfigSettings.radius, visConfiguratorProps, {
label: false,
disabled: Boolean(layer.config.sizeField)
})) : _react["default"].createElement(_visConfigSlider["default"], (0, _extends2["default"])({}, layer.visConfigSettings.radiusRange, visConfiguratorProps, {
label: false,
disabled: !layer.config.sizeField || layer.config.visConfig.fixedRadius
})), _react["default"].createElement(_layerConfigGroup.ConfigGroupCollapsibleContent, null, _react["default"].createElement(ChannelByValueSelector, (0, _extends2["default"])({
channel: layer.visualChannels.size
}, layerChannelConfigProps)), layer.config.sizeField ? _react["default"].createElement(_visConfigSwitch["default"], (0, _extends2["default"])({}, layer.visConfigSettings.fixedRadius, visConfiguratorProps)) : null)), _react["default"].createElement(_textLabelPanel["default"], {
fields: visConfiguratorProps.fields,
updateLayerTextLabel: this.props.updateLayerTextLabel,
textLabel: layer.config.textLabel,
colorPalette: visConfiguratorProps.colorPalette,
setColorPaletteUI: visConfiguratorProps.setColorPaletteUI
}));
}
}, {
key: "_renderClusterLayerConfig",
value: function _renderClusterLayerConfig(_ref2) {
var layer = _ref2.layer,
visConfiguratorProps = _ref2.visConfiguratorProps,
layerConfiguratorProps = _ref2.layerConfiguratorProps,
layerChannelConfigProps = _ref2.layerChannelConfigProps;
return _react["default"].createElement(StyledLayerVisualConfigurator, null, _react["default"].createElement(_layerConfigGroup["default"], {
label: 'layer.color',
collapsible: true
}, _react["default"].createElement(LayerColorRangeSelector, visConfiguratorProps), _react["default"].createElement(_layerConfigGroup.ConfigGroupCollapsibleContent, null, _react["default"].createElement(AggrScaleSelector, (0, _extends2["default"])({}, layerConfiguratorProps, {
channel: layer.visualChannels.color
})), _react["default"].createElement(ChannelByValueSelector, (0, _extends2["default"])({
channel: layer.visualChannels.color
}, layerChannelConfigProps)), layer.visConfigSettings.colorAggregation.condition(layer.config) ? _react["default"].createElement(AggregationTypeSelector, (0, _extends2["default"])({}, layer.visConfigSettings.colorAggregation, layerChannelConfigProps, {
channel: layer.visualChannels.color
})) : null, _react["default"].createElement(_visConfigSlider["default"], (0, _extends2["default"])({}, layer.visConfigSettings.opacity, visConfiguratorProps)))), _react["default"].createElement(_layerConfigGroup["default"], {
label: 'layer.radius',
collapsible: true
}, _react["default"].createElement(_visConfigSlider["default"], (0, _extends2["default"])({}, layer.visConfigSettings.clusterRadius, visConfiguratorProps)), _react["default"].createElement(_layerConfigGroup.ConfigGroupCollapsibleContent, null, _react["default"].createElement(_visConfigSlider["default"], (0, _extends2["default"])({}, layer.visConfigSettings.radiusRange, visConfiguratorProps)))));
}
}, {
key: "_renderHeatmapLayerConfig",
value: function _renderHeatmapLayerConfig(_ref3) {
var layer = _ref3.layer,
visConfiguratorProps = _ref3.visConfiguratorProps,
layerConfiguratorProps = _ref3.layerConfiguratorProps,
layerChannelConfigProps = _ref3.layerChannelConfigProps;
return _react["default"].createElement(StyledLayerVisualConfigurator, null, _react["default"].createElement(_layerConfigGroup["default"], {
label: 'layer.color',
collapsible: true
}, _react["default"].createElement(LayerColorRangeSelector, visConfiguratorProps), _react["default"].createElement(_layerConfigGroup.ConfigGroupCollapsibleContent, null, _react["default"].createElement(_visConfigSlider["default"], (0, _extends2["default"])({}, layer.visConfigSettings.opacity, visConfiguratorProps)))), _react["default"].createElement(_layerConfigGroup["default"], {
label: 'layer.radius'
}, _react["default"].createElement(_visConfigSlider["default"], (0, _extends2["default"])({}, layer.visConfigSettings.radius, visConfiguratorProps, {
label: false
}))), _react["default"].createElement(_layerConfigGroup["default"], {
label: 'layer.weight'
}, _react["default"].createElement(ChannelByValueSelector, (0, _extends2["default"])({
channel: layer.visualChannels.weight
}, layerChannelConfigProps))));
}
}, {
key: "_renderGridLayerConfig",
value: function _renderGridLayerConfig(props) {
return this._renderAggregationLayerConfig(props);
}
}, {
key: "_renderHexagonLayerConfig",
value: function _renderHexagonLayerConfig(props) {
return this._renderAggregationLayerConfig(props);
}
}, {
key: "_renderAggregationLayerConfig",
value: function _renderAggregationLayerConfig(_ref4) {
var layer = _ref4.layer,
visConfiguratorProps = _ref4.visConfiguratorProps,
layerConfiguratorProps = _ref4.layerConfiguratorProps,
layerChannelConfigProps = _ref4.layerChannelConfigProps;
var config = layer.config;
var enable3d = config.visConfig.enable3d;
var elevationByDescription = 'layer.elevationByDescription';
var colorByDescription = 'layer.colorByDescription';
return _react["default"].createElement(StyledLayerVisualConfigurator, null, _react["default"].createElement(_layerConfigGroup["default"], {
label: 'layer.color',
collapsible: true
}, _react["default"].createElement(LayerColorRangeSelector, visConfiguratorProps), _react["default"].createElement(_layerConfigGroup.ConfigGroupCollapsibleContent, null, _react["default"].createElement(AggrScaleSelector, (0, _extends2["default"])({}, layerConfiguratorProps, {
channel: layer.visualChannels.color
})), _react["default"].createElement(ChannelByValueSelector, (0, _extends2["default"])({
channel: layer.visualChannels.color
}, layerChannelConfigProps)), layer.visConfigSettings.colorAggregation.condition(layer.config) ? _react["default"].createElement(AggregationTypeSelector, (0, _extends2["default"])({}, layer.visConfigSettings.colorAggregation, layerChannelConfigProps, {
description: colorByDescription,
channel: layer.visualChannels.color
})) : null, layer.visConfigSettings.percentile && layer.visConfigSettings.percentile.condition(layer.config) ? _react["default"].createElement(_visConfigSlider["default"], (0, _extends2["default"])({}, layer.visConfigSettings.percentile, visConfiguratorProps)) : null, _react["default"].createElement(_visConfigSlider["default"], (0, _extends2["default"])({}, layer.visConfigSettings.opacity, visConfiguratorProps)))), _react["default"].createElement(_layerConfigGroup["default"], {
label: 'layer.radius',
collapsible: true
}, _react["default"].createElement(_visConfigSlider["default"], (0, _extends2["default"])({}, layer.visConfigSettings.worldUnitSize, visConfiguratorProps)), _react["default"].createElement(_layerConfigGroup.ConfigGroupCollapsibleContent, null, _react["default"].createElement(_visConfigSlider["default"], (0, _extends2["default"])({}, layer.visConfigSettings.coverage, visConfiguratorProps)))), layer.visConfigSettings.enable3d ? _react["default"].createElement(_layerConfigGroup["default"], (0, _extends2["default"])({}, layer.visConfigSettings.enable3d, visConfiguratorProps, {
collapsible: true
}), _react["default"].createElement(_visConfigSlider["default"], (0, _extends2["default"])({}, layer.visConfigSettings.elevationScale, visConfiguratorProps)), _react["default"].createElement(_layerConfigGroup.ConfigGroupCollapsibleContent, null, _react["default"].createElement(AggrScaleSelector, (0, _extends2["default"])({}, layerConfiguratorProps, {
channel: layer.visualChannels.size
})), _react["default"].createElement(_visConfigSlider["default"], (0, _extends2["default"])({}, layer.visConfigSettings.sizeRange, visConfiguratorProps)), _react["default"].createElement(ChannelByValueSelector, (0, _extends2["default"])({}, layerChannelConfigProps, {
channel: layer.visualChannels.size,
description: elevationByDescription,
disabled: !enable3d
})), layer.visConfigSettings.sizeAggregation.condition(layer.config) ? _react["default"].createElement(AggregationTypeSelector, (0, _extends2["default"])({}, layer.visConfigSettings.sizeAggregation, layerChannelConfigProps, {
channel: layer.visualChannels.size
})) : null, layer.visConfigSettings.elevationPercentile.condition(layer.config) ? _react["default"].createElement(_visConfigSlider["default"], (0, _extends2["default"])({}, layer.visConfigSettings.elevationPercentile, visConfiguratorProps)) : null)) : null);
} // TODO: Shan move these into layer class
}, {
key: "_renderHexagonIdLayerConfig",
value: function _renderHexagonIdLayerConfig(_ref5) {
var layer = _ref5.layer,
visConfiguratorProps = _ref5.visConfiguratorProps,
layerConfiguratorProps = _ref5.layerConfiguratorProps,
layerChannelConfigProps = _ref5.layerChannelConfigProps;
return _react["default"].createElement(StyledLayerVisualConfigurator, null, _react["default"].createElement(_layerConfigGroup["default"], {
label: 'layer.color',
collapsible: true
}, layer.config.colorField ? _react["default"].createElement(LayerColorRangeSelector, visConfiguratorProps) : _react["default"].createElement(LayerColorSelector, layerConfiguratorProps), _react["default"].createElement(_layerConfigGroup.ConfigGroupCollapsibleContent, null, _react["default"].createElement(ChannelByValueSelector, (0, _extends2["default"])({
channel: layer.visualChannels.color
}, layerChannelConfigProps)), _react["default"].createElement(_visConfigSlider["default"], (0, _extends2["default"])({}, layer.visConfigSettings.opacity, visConfiguratorProps)))), _react["default"].createElement(_layerConfigGroup["default"], {
label: 'layer.coverage',
collapsible: true
}, !layer.config.coverageField ? _react["default"].createElement(_visConfigSlider["default"], (0, _extends2["default"])({}, layer.visConfigSettings.coverage, visConfiguratorProps, {
label: false
})) : _react["default"].createElement(_visConfigSlider["default"], (0, _extends2["default"])({}, layer.visConfigSettings.coverageRange, visConfiguratorProps, {
label: false
})), _react["default"].createElement(_layerConfigGroup.ConfigGroupCollapsibleContent, null, _react["default"].createElement(ChannelByValueSelector, (0, _extends2["default"])({
channel: layer.visualChannels.coverage
}, layerChannelConfigProps)))), _react["default"].createElement(_layerConfigGroup["default"], (0, _extends2["default"])({}, layer.visConfigSettings.enable3d, visConfiguratorProps, {
collapsible: true
}), _react["default"].createElement(ChannelByValueSelector, (0, _extends2["default"])({
channel: layer.visualChannels.size
}, layerChannelConfigProps)), _react["default"].createElement(_layerConfigGroup.ConfigGroupCollapsibleContent, null, _react["default"].createElement(_visConfigSlider["default"], (0, _extends2["default"])({}, layer.visConfigSettings.elevationScale, visConfiguratorProps)), _react["default"].createElement(_visConfigSlider["default"], (0, _extends2["default"])({}, layer.visConfigSettings.sizeRange, visConfiguratorProps, {
label: "layerVisConfigs.heightRange"
})))));
}
}, {
key: "_renderArcLayerConfig",
value: function _renderArcLayerConfig(args) {
return this._renderLineLayerConfig(args);
}
}, {
key: "_renderLineLayerConfig",
value: function _renderLineLayerConfig(_ref6) {
var layer = _ref6.layer,
visConfiguratorProps = _ref6.visConfiguratorProps,
layerConfiguratorProps = _ref6.layerConfiguratorProps,
layerChannelConfigProps = _ref6.layerChannelConfigProps;
return _react["default"].createElement(StyledLayerVisualConfigurator, null, _react["default"].createElement(_layerConfigGroup["default"], {
label: 'layer.color',
collapsible: true
}, layer.config.colorField ? _react["default"].createElement(LayerColorRangeSelector, visConfiguratorProps) : _react["default"].createElement(ArcLayerColorSelector, {
layer: layer,
setColorUI: layerConfiguratorProps.setColorUI,
onChangeConfig: layerConfiguratorProps.onChange,
onChangeVisConfig: visConfiguratorProps.onChange
}), _react["default"].createElement(_layerConfigGroup.ConfigGroupCollapsibleContent, null, _react["default"].createElement(ChannelByValueSelector, (0, _extends2["default"])({
channel: layer.visualChannels.color
}, layerChannelConfigProps)), _react["default"].createElement(_visConfigSlider["default"], (0, _extends2["default"])({}, layer.visConfigSettings.opacity, visConfiguratorProps)))), _react["default"].createElement(_layerConfigGroup["default"], {
label: 'layer.stroke',
collapsible: true
}, layer.config.sizeField ? _react["default"].createElement(_visConfigSlider["default"], (0, _extends2["default"])({}, layer.visConfigSettings.sizeRange, visConfiguratorProps, {
disabled: !layer.config.sizeField,
label: false
})) : _react["default"].createElement(_visConfigSlider["default"], (0, _extends2["default"])({}, layer.visConfigSettings.thickness, visConfiguratorProps, {
label: false
})), _react["default"].createElement(_layerConfigGroup.ConfigGroupCollapsibleContent, null, _react["default"].createElement(ChannelByValueSelector, (0, _extends2["default"])({
channel: layer.visualChannels.size
}, layerChannelConfigProps)))));
}
}, {
key: "_renderTripLayerConfig",
value: function _renderTripLayerConfig(_ref7) {
var layer = _ref7.layer,
visConfiguratorProps = _ref7.visConfiguratorProps,
layerConfiguratorProps = _ref7.layerConfiguratorProps,
layerChannelConfigProps = _ref7.layerChannelConfigProps;
var _layer$meta$featureTy = layer.meta.featureTypes,
featureTypes = _layer$meta$featureTy === void 0 ? {} : _layer$meta$featureTy;
return _react["default"].createElement(StyledLayerVisualConfigurator, null, _react["default"].createElement(_layerConfigGroup["default"], {
label: 'layer.color',
collapsible: true
}, layer.config.colorField ? _react["default"].createElement(LayerColorRangeSelector, visConfiguratorProps) : _react["default"].createElement(LayerColorSelector, layerConfiguratorProps), _react["default"].createElement(_layerConfigGroup.ConfigGroupCollapsibleContent, null, _react["default"].createElement(ChannelByValueSelector, (0, _extends2["default"])({
channel: layer.visualChannels.color
}, layerChannelConfigProps)), _react["default"].createElement(_visConfigSlider["default"], (0, _extends2["default"])({}, layer.visConfigSettings.opacity, visConfiguratorProps)))), _react["default"].createElement(_layerConfigGroup["default"], (0, _extends2["default"])({}, visConfiguratorProps, {
label: "layer.strokeWidth",
collapsible: true
}), layer.config.sizeField ? _react["default"].createElement(_visConfigSlider["default"], (0, _extends2["default"])({}, layer.visConfigSettings.sizeRange, visConfiguratorProps, {
label: false
})) : _react["default"].createElement(_visConfigSlider["default"], (0, _extends2["default"])({}, layer.visConfigSettings.thickness, visConfiguratorProps, {
label: false
})), _react["default"].createElement(_layerConfigGroup.ConfigGroupCollapsibleContent, null, _react["default"].createElement(ChannelByValueSelector, (0, _extends2["default"])({
channel: layer.visualChannels.size
}, layerChannelConfigProps)))), _react["default"].createElement(_layerConfigGroup["default"], (0, _extends2["default"])({}, visConfiguratorProps, featureTypes.polygon ? layer.visConfigSettings.stroked : {}, {
label: "layer.trailLength",
description: "layer.trailLengthDescription"
}), _react["default"].createElement(_visConfigSlider["default"], (0, _extends2["default"])({}, layer.visConfigSettings.trailLength, visConfiguratorProps, {
label: false
}))));
}
}, {
key: "_renderGeojsonLayerConfig",
value: function _renderGeojsonLayerConfig(_ref8) {
var layer = _ref8.layer,
visConfiguratorProps = _ref8.visConfiguratorProps,
layerConfiguratorProps = _ref8.layerConfiguratorProps,
layerChannelConfigProps = _ref8.layerChannelConfigProps;
var _layer$meta$featureTy2 = layer.meta.featureTypes,
featureTypes = _layer$meta$featureTy2 === void 0 ? {} : _layer$meta$featureTy2,
visConfig = layer.config.visConfig;
return _react["default"].createElement(StyledLayerVisualConfigurator, null, featureTypes.polygon || featureTypes.point ? _react["default"].createElement(_layerConfigGroup["default"], (0, _extends2["default"])({}, layer.visConfigSettings.filled, visConfiguratorProps, {
label: "layer.fillColor",
collapsible: true
}), layer.config.colorField ? _react["default"].createElement(LayerColorRangeSelector, visConfiguratorProps) : _react["default"].createElement(LayerColorSelector, layerConfiguratorProps), _react["default"].createElement(_layerConfigGroup.ConfigGroupCollapsibleContent, null, _react["default"].createElement(ChannelByValueSelector, (0, _extends2["default"])({
channel: layer.visualChannels.color
}, layerChannelConfigProps)), _react["default"].createElement(_visConfigSlider["default"], (0, _extends2["default"])({}, layer.visConfigSettings.opacity, visConfiguratorProps)))) : null, _react["default"].createElement(_layerConfigGroup["default"], (0, _extends2["default"])({}, layer.visConfigSettings.stroked, visConfiguratorProps, {
label: "layer.strokeColor",
collapsible: true
}), layer.config.strokeColorField ? _react["default"].createElement(LayerColorRangeSelector, (0, _extends2["default"])({}, visConfiguratorProps, {
property: "strokeColorRange"
})) : _react["default"].createElement(LayerColorSelector, (0, _extends2["default"])({}, visConfiguratorProps, {
selectedColor: layer.config.visConfig.strokeColor,
property: "strokeColor"
})), _react["default"].createElement(_layerConfigGroup.ConfigGroupCollapsibleContent, null, _react["default"].createElement(ChannelByValueSelector, (0, _extends2["default"])({
channel: layer.visualChannels.strokeColor
}, layerChannelConfigProps)), _react["default"].createElement(_visConfigSlider["default"], (0, _extends2["default"])({}, layer.visConfigSettings.strokeOpacity, visConfiguratorProps)))), _react["default"].createElement(_layerConfigGroup["default"], (0, _extends2["default"])({}, visConfiguratorProps, featureTypes.polygon ? layer.visConfigSettings.stroked : {}, {
label: "layer.strokeWidth",
collapsible: true
}), layer.config.sizeField ? _react["default"].createElement(_visConfigSlider["default"], (0, _extends2["default"])({}, layer.visConfigSettings.sizeRange, visConfiguratorProps, {
label: false
})) : _react["default"].createElement(_visConfigSlider["default"], (0, _extends2["default"])({}, layer.visConfigSettings.thickness, visConfiguratorProps, {
label: false
})), _react["default"].createElement(_layerConfigGroup.ConfigGroupCollapsibleContent, null, _react["default"].createElement(ChannelByValueSelector, (0, _extends2["default"])({
channel: layer.visualChannels.size
}, layerChannelConfigProps)))), featureTypes.polygon ? _react["default"].createElement(_layerConfigGroup["default"], (0, _extends2["default"])({}, visConfiguratorProps, layer.visConfigSettings.enable3d, {
disabled: !visConfig.filled,
collapsible: true
}), _react["default"].createElement(_visConfigSlider["default"], (0, _extends2["default"])({}, layer.visConfigSettings.elevationScale, visConfiguratorProps, {
label: false
})), _react["default"].createElement(_layerConfigGroup.ConfigGroupCollapsibleContent, null, _react["default"].createElement(ChannelByValueSelector, (0, _extends2["default"])({
channel: layer.visualChannels.height
}, layerChannelConfigProps)), _react["default"].createElement(_visConfigSwitch["default"], (0, _extends2["default"])({}, visConfiguratorProps, layer.visConfigSettings.wireframe)))) : null, featureTypes.point ? _react["default"].createElement(_layerConfigGroup["default"], {
label: 'layer.radius',
collapsible: true
}, !layer.config.radiusField ? _react["default"].createElement(_visConfigSlider["default"], (0, _extends2["default"])({}, layer.visConfigSettings.radius, visConfiguratorProps, {
label: false,
disabled: Boolean(layer.config.radiusField)
})) : _react["default"].createElement(_visConfigSlider["default"], (0, _extends2["default"])({}, layer.visConfigSettings.radiusRange, visConfiguratorProps, {
label: false,
disabled: !layer.config.radiusField
})), _react["default"].createElement(_layerConfigGroup.ConfigGroupCollapsibleContent, null, _react["default"].createElement(ChannelByValueSelector, (0, _extends2["default"])({
channel: layer.visualChannels.radius
}, layerChannelConfigProps)))) : null);
}
}, {
key: "_render3DLayerConfig",
value: function _render3DLayerConfig(_ref9) {
var layer = _ref9.layer,
visConfiguratorProps = _ref9.visConfiguratorProps;
return _react["default"].createElement(_react.Fragment, null, _react["default"].createElement(_layerConfigGroup["default"], {
label: 'layer.3DModel',
collapsible: true
}, _react["default"].createElement(_styledComponents2.Input, {
type: "file",
accept: ".glb,.gltf",
onChange: function onChange(e) {
if (e.target.files && e.target.files[0]) {
var url = URL.createObjectURL(e.target.files[0]);
visConfiguratorProps.onChange({
scenegraph: url
});
}
}
})), _react["default"].createElement(_layerConfigGroup["default"], {
label: 'layer.3DModelOptions',
collapsible: true
}, _react["default"].createElement(_visConfigSlider["default"], (0, _extends2["default"])({}, layer.visConfigSettings.sizeScale, visConfiguratorProps, {
disabled: false
})), _react["default"].createElement(_visConfigSlider["default"], (0, _extends2["default"])({}, layer.visConfigSettings.angleX, visConfiguratorProps, {
disabled: false
})), _react["default"].createElement(_visConfigSlider["default"], (0, _extends2["default"])({}, layer.visConfigSettings.angleY, visConfiguratorProps, {
disabled: false
})), _react["default"].createElement(_visConfigSlider["default"], (0, _extends2["default"])({}, layer.visConfigSettings.angleZ, visConfiguratorProps, {
disabled: false
}))));
}
}, {
key: "_renderS2LayerConfig",
value: function _renderS2LayerConfig(_ref10) {
var layer = _ref10.layer,
visConfiguratorProps = _ref10.visConfiguratorProps,
layerConfiguratorProps = _ref10.layerConfiguratorProps,
layerChannelConfigProps = _ref10.layerChannelConfigProps;
var visConfig = layer.config.visConfig;
return _react["default"].createElement(StyledLayerVisualConfigurator, null, _react["default"].createElement(_layerConfigGroup["default"], (0, _extends2["default"])({}, layer.visConfigSettings.filled, visConfiguratorProps, {
label: "layer.fillColor",
collapsible: true
}), layer.config.colorField ? _react["default"].createElement(LayerColorRangeSelector, visConfiguratorProps) : _react["default"].createElement(LayerColorSelector, layerConfiguratorProps), _react["default"].createElement(_layerConfigGroup.ConfigGroupCollapsibleContent, null, _react["default"].createElement(ChannelByValueSelector, (0, _extends2["default"])({
channel: layer.visualChannels.color
}, layerChannelConfigProps)), _react["default"].createElement(_visConfigSlider["default"], (0, _extends2["default"])({}, layer.visConfigSettings.opacity, visConfiguratorProps)))), _react["default"].createElement(_layerConfigGroup["default"], (0, _extends2["default"])({}, layer.visConfigSettings.stroked, visConfiguratorProps, {
label: "layer.strokeColor",
collapsible: true
}), layer.config.strokeColorField ? _react["default"].createElement(LayerColorRangeSelector, (0, _extends2["default"])({}, visConfiguratorProps, {
property: "strokeColorRange"
})) : _react["default"].createElement(LayerColorSelector, (0, _extends2["default"])({}, visConfiguratorProps, {
selectedColor: layer.config.visConfig.strokeColor,
property: "strokeColor"
})), _react["default"].createElement(_layerConfigGroup.ConfigGroupCollapsibleContent, null, _react["default"].createElement(ChannelByValueSelector, (0, _extends2["default"])({
channel: layer.visualChannels.strokeColor
}, layerChannelConfigProps)))), _react["default"].createElement(_layerConfigGroup["default"], (0, _extends2["default"])({}, visConfiguratorProps, {
label: "layer.strokeWidth",
collapsible: true
}), layer.config.sizeField ? _react["default"].createElement(_visConfigSlider["default"], (0, _extends2["default"])({}, layer.visConfigSettings.sizeRange, visConfiguratorProps, {
label: false
})) : _react["default"].createElement(_visConfigSlider["default"], (0, _extends2["default"])({}, layer.visConfigSettings.thickness, visConfiguratorProps, {
label: false
})), _react["default"].createElement(_layerConfigGroup.ConfigGroupCollapsibleContent, null, _react["default"].createElement(ChannelByValueSelector, (0, _extends2["default"])({
channel: layer.visualChannels.size
}, layerChannelConfigProps)))), _react["default"].createElement(_layerConfigGroup["default"], (0, _extends2["default"])({}, visConfiguratorProps, layer.visConfigSettings.enable3d, {
disabled: !visConfig.filled,
collapsible: true
}), _react["default"].createElement(ChannelByValueSelector, (0, _extends2["default"])({
channel: layer.visualChannels.height
}, layerChannelConfigProps)), _react["default"].createElement(_visConfigSlider["default"], (0, _extends2["default"])({}, layer.visConfigSettings.elevationScale, visConfiguratorProps, {
label: "layerVisConfigs.elevationScale"
})), _react["default"].createElement(_layerConfigGroup.ConfigGroupCollapsibleContent, null, _react["default"].createElement(_visConfigSlider["default"], (0, _extends2["default"])({}, layer.visConfigSettings.heightRange, visConfiguratorProps, {
label: "layerVisConfigs.heightRange"
})), _react["default"].createElement(_visConfigSwitch["default"], (0, _extends2["default"])({}, visConfiguratorProps, layer.visConfigSettings.wireframe)))));
}
}, {
key: "render",
value: function render() {
var _this = this;
var _this$props = this.props,
layer = _this$props.layer,
datasets = _this$props.datasets,
updateLayerConfig = _this$props.updateLayerConfig,
layerTypeOptions = _this$props.layerTypeOptions,
updateLayerType = _this$props.updateLayerType;
var _ref11 = layer.config.dataId ? datasets[layer.config.dataId] : {},
_ref11$fields = _ref11.fields,
fields = _ref11$fields === void 0 ? [] : _ref11$fields,
fieldPairs = _ref11.fieldPairs;
var config = layer.config;
var visConfiguratorProps = getVisConfiguratorProps(this.props);
var layerConfiguratorProps = getLayerConfiguratorProps(this.props);
var layerChannelConfigProps = getLayerChannelConfigProps(this.props);
var renderTemplate = layer.type && "_render".concat((0, _utils.capitalizeFirstLetter)(layer.type), "LayerConfig");
return _react["default"].createElement(StyledLayerConfigurator, null, layer.layerInfoModal ? _react["default"].createElement(HowToButton, {
onClick: function onClick() {
return _this.props.openModal(layer.layerInfoModal);
}
}) : null, _react["default"].createElement(_layerConfigGroup["default"], {
label: 'layer.basic',
collapsible: true,
expanded: !layer.hasAllColumns()
}, _react["default"].createElement(_layerTypeSelector["default"], {
layer: layer,
layerTypeOptions: layerTypeOptions,
onSelect: updateLayerType
}), _react["default"].createElement(_layerConfigGroup.ConfigGroupCollapsibleContent, null, Object.keys(datasets).length > 1 && _react["default"].createElement(SourceDataSelector, {
datasets: datasets,
id: layer.id,
disabled: layer.type && config.columns,
dataId: config.dataId,
onSelect: function onSelect(value) {
return updateLayerConfig({
dataId: value
});
}
}), _react["default"].createElement(_layerColumnConfig["default"], {
columnPairs: layer.columnPairs,
columns: layer.config.columns,
assignColumnPairs: layer.assignColumnPairs.bind(layer),
assignColumn: layer.assignColumn.bind(layer),
columnLabels: layer.columnLabels,
fields: fields,
fieldPairs: fieldPairs,
updateLayerConfig: updateLayerConfig,
updateLayerType: this.props.updateLayerType
}))), this[renderTemplate] && this[renderTemplate]({
layer: layer,
visConfiguratorProps: visConfiguratorProps,
layerChannelConfigProps: layerChannelConfigProps,
layerConfiguratorProps: layerConfiguratorProps
}));
}
}]);
return LayerConfigurator;
}(_react.Component);
(0, _defineProperty2["default"])(LayerConfigurator, "propTypes", {
layer: _propTypes["default"].object.isRequired,
datasets: _propTypes["default"].object.isRequired,
layerTypeOptions: _propTypes["default"].arrayOf(_propTypes["default"].any).isRequired,
openModal: _propTypes["default"].func.isRequired,
updateLayerConfig: _propTypes["default"].func.isRequired,
updateLayerType: _propTypes["default"].func.isRequired,
updateLayerVisConfig: _propTypes["default"].func.isRequired,
updateLayerVisualChannelConfig: _propTypes["default"].func.isRequired,
updateLayerColorUI: _propTypes["default"].func.isRequired
});
return LayerConfigurator;
}
/*
* Componentize config component into pure functional components
*/
var StyledHowToButton = _styledComponents["default"].div(_templateObject3());
var HowToButton = function HowToButton(_ref12) {
var onClick = _ref12.onClick;
return _react["default"].createElement(StyledHowToButton, null, _react["default"].createElement(_styledComponents2.Button, {
link: true,
small: true,
onClick: onClick
}, _react["default"].createElement(_reactIntl.FormattedMessage, {
id: 'layerConfiguration.howTo'
})));
};
exports.HowToButton = HowToButton;
var LayerColorSelector = function LayerColorSelector(_ref13) {
var layer = _ref13.layer,
onChange = _ref13.onChange,
label = _ref13.label,
selectedColor = _ref13.selectedColor,
_ref13$property = _ref13.property,
property = _ref13$property === void 0 ? 'color' : _ref13$property,
_setColorUI = _ref13.setColorUI;
return _react["default"].createElement(_styledComponents2.SidePanelSection, null, _react["default"].createElement(_colorSelector["default"], {
colorSets: [{
selectedColor: selectedColor || layer.config.color,
setColor: function setColor(rgbValue) {
return onChange((0, _defineProperty2["default"])({}, property, rgbValue));
}
}],
colorUI: layer.config.colorUI[property],
setColorUI: function setColorUI(newConfig) {
return _setColorUI(property, newConfig);
}
}));
};
exports.LayerColorSelector = LayerColorSelector;
var ArcLayerColorSelector = function ArcLayerColorSelector(_ref14) {
var layer = _ref14.layer,
onChangeConfig = _ref14.onChangeConfig,
onChangeVisConfig = _ref14.onChangeVisConfig,
_ref14$property = _ref14.property,
property = _ref14$property === void 0 ? 'color' : _ref14$property,
_setColorUI2 = _ref14.setColorUI;
return _react["default"].createElement(_styledComponents2.SidePanelSection, null, _react["default"].createElement(_colorSelector["default"], {
colorSets: [{
selectedColor: layer.config.color,
setColor: function setColor(rgbValue) {
return onChangeConfig({
color: rgbValue
});
},
label: 'Source'
}, {
selectedColor: layer.config.visConfig.targetColor || layer.config.color,
setColor: function setColor(rgbValue) {
return onChangeVisConfig({
targetColor: rgbValue
});
},
label: 'Target'
}],
colorUI: layer.config.colorUI[property],
setColorUI: function setColorUI(newConfig) {
return _setColorUI2(property, newConfig);
}
}));
};
exports.ArcLayerColorSelector = ArcLayerColorSelector;
var LayerColorRangeSelector = function LayerColorRangeSelector(_ref15) {
var layer = _ref15.layer,
onChange = _ref15.onChange,
_ref15$property = _ref15.property,
property = _ref15$property === void 0 ? 'colorRange' : _ref15$property,
_setColorUI3 = _ref15.setColorUI;
return _react["default"].createElement(_styledComponents2.SidePanelSection, null, _react["default"].createElement(_colorSelector["default"], {
colorSets: [{
selectedColor: layer.config.visConfig[property],
isRange: true,
setColor: function setColor(colorRange) {
return onChange((0, _defineProperty2["default"])({}, property, colorRange));
}
}],
colorUI: layer.config.colorUI[property],
setColorUI: function setColorUI(newConfig) {
return _setColorUI3(property, newConfig);
}
}));
};
exports.LayerColorRangeSelector = LayerColorRangeSelector;
var ChannelByValueSelector = function ChannelByValueSelector(_ref16) {
var layer = _ref16.layer,
channel = _ref16.channel,
onChange = _ref16.onChange,
fields = _ref16.fields,
description = _ref16.description;
var channelScaleType = channel.channelScaleType,
domain = channel.domain,
field = channel.field,
key = channel.key,
property = channel.property,
range = channel.range,
scale = channel.scale,
defaultMeasure = channel.defaultMeasure,
supportedFieldTypes = channel.supportedFieldTypes;
var channelSupportedFieldTypes = supportedFieldTypes || _defaultSettings.CHANNEL_SCALE_SUPPORTED_FIELDS[channelScaleType];
var supportedFields = fields.filter(function (_ref17) {
var type = _ref17.type;
return channelSupportedFieldTypes.includes(type);
});
var scaleOptions = layer.getScaleOptions(channel.key);
var showScale = !layer.isAggregated && layer.config[scale] && scaleOptions.length > 1;
var defaultDescription = 'layerConfiguration.defaultDescription';
return _react["default"].createElement(_visConfigByFieldSelector["default"], {
channel: channel.key,
description: description || defaultDescription,
domain: layer.config[domain],
fields: supportedFields,
id: layer.id,
key: "".concat(key, "-channel-selector"),
property: property,
placeholder: defaultMeasure || 'placeholder.selectField',
range: layer.config.visConfig[range],
scaleOptions: scaleOptions,
scaleType: scale ? layer.config[scale] : null,
selectedField: layer.config[field],
showScale: showScale,
updateField: function updateField(val) {
return onChange((0, _defineProperty2["default"])({}, field, val), key);
},
updateScale: function updateScale(val) {
return onChange((0, _defineProperty2["default"])({}, scale, val), key);
}
});
};
exports.ChannelByValueSelector = ChannelByValueSelector;
var AggrScaleSelector = function AggrScaleSelector(_ref18) {
var channel = _ref18.channel,
layer = _ref18.layer,
onChange = _ref18.onChange;
var scale = channel.scale,
key = channel.key;
var scaleOptions = layer.getScaleOptions(key);
return Array.isArray(scaleOptions) && scaleOptions.length > 1 ? _react["default"].createElement(_dimensionScaleSelector["default"], {
label: "".concat(key, " Scale"),
options: scaleOptions,
scaleType: layer.config[scale],
onSelect: function onSelect(val) {
return onChange((0, _defineProperty2["default"])({}, scale, val), key);
}
}) : null;
};
exports.AggrScaleSelector = AggrScaleSelector;
var AggregationTypeSelector = function AggregationTypeSelector(_ref19) {
var layer = _ref19.layer,
channel = _ref19.channel,
_onChange6 = _ref19.onChange;
var field = channel.field,
aggregation = channel.aggregation,
key = channel.key;
var selectedField = layer.config[field];
var visConfig = layer.config.visConfig; // aggregation should only be selectable when field is selected
var aggregationOptions = layer.getAggregationOptions(key);
return _react["default"].createElement(_styledComponents2.SidePanelSection, null, _react["default"].createElement(_styledComponents2.PanelLabel, null, _react["default"].createElement(_reactIntl.FormattedMessage, {
id: 'layer.aggregateBy',
values: {
field: selectedField.name
}
})), _react["default"].createElement(_itemSelector["default"], {
selectedItems: visConfig[aggregation],
options: aggregationOptions,
multiSelect: false,
searchable: false,
onChange: function onChange(value) {
return _onChange6({
visConfig: _objectSpread({}, layer.config.visConfig, (0, _defineProperty2["default"])({}, aggregation, value))
}, channel.key);
}
}));
};
/* eslint-enable max-params */
exports.AggregationTypeSelector = AggregationTypeSelector;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL3NpZGUtcGFuZWwvbGF5ZXItcGFuZWwvbGF5ZXItY29uZmlndXJhdG9yLmpzIl0sIm5hbWVzIjpbIlN0eWxlZExheWVyQ29uZmlndXJhdG9yIiwic3R5bGVkIiwiZGl2IiwiYXR0cnMiLCJjbGFzc05hbWUiLCJTdHlsZWRMYXllclZpc3VhbENvbmZpZ3VyYXRvciIsImdldExheWVyRmllbGRzIiwiZGF0YXNldHMiLCJsYXllciIsImNvbmZpZyIsImRhdGFJZCIsImZpZWxkcyIsImdldExheWVyQ29uZmlndXJhdG9yUHJvcHMiLCJwcm9wcyIsIm9uQ2hhbmdlIiwidXBkYXRlTGF5ZXJDb25maWciLCJzZXRDb2xvclVJIiwidXBkYXRlTGF5ZXJDb2xvclVJIiwiZ2V0VmlzQ29uZmlndXJhdG9yUHJvcHMiLCJ1cGRhdGVMYXllclZpc0NvbmZpZyIsImdldExheWVyQ2hhbm5lbENvbmZpZ1Byb3BzIiwidXBkYXRlTGF5ZXJWaXN1YWxDaGFubmVsQ29uZmlnIiwiTGF5ZXJDb25maWd1cmF0b3JGYWN0b3J5IiwiZGVwcyIsIlNvdXJjZURhdGFTZWxlY3RvckZhY3RvcnkiLCJTb3VyY2VEYXRhU2VsZWN0b3IiLCJMYXllckNvbmZpZ3VyYXRvciIsIl9yZW5kZXJTY2F0dGVycGxvdExheWVyQ29uZmlnIiwidmlzQ29uZmlndXJhdG9yUHJvcHMiLCJsYXllckNoYW5uZWxDb25maWdQcm9wcyIsImxheWVyQ29uZmlndXJhdG9yUHJvcHMiLCJ2aXNDb25maWdTZXR0aW5ncyIsImZpbGxlZCIsImNvbG9yRmllbGQiLCJ2aXN1YWxDaGFubmVscyIsImNvbG9yIiwib3BhY2l0eSIsInR5cGUiLCJMQVlFUl9UWVBFUyIsInBvaW50Iiwib3V0bGluZSIsInN0cm9rZUNvbG9yRmllbGQiLCJ2aXNDb25maWciLCJzdHJva2VDb2xvciIsInRoaWNrbmVzcyIsInNpemVGaWVsZCIsInJhZGl1cyIsIkJvb2xlYW4iLCJyYWRpdXNSYW5nZSIsImZpeGVkUmFkaXVzIiwic2l6ZSIsInVwZGF0ZUxheWVyVGV4dExhYmVsIiwidGV4dExhYmVsIiwiY29sb3JQYWxldHRlIiwic2V0Q29sb3JQYWxldHRlVUkiLCJjb2xvckFnZ3JlZ2F0aW9uIiwiY29uZGl0aW9uIiwiY2x1c3RlclJhZGl1cyIsIndlaWdodCIsIl9yZW5kZXJBZ2dyZWdhdGlvbkxheWVyQ29uZmlnIiwiZW5hYmxlM2QiLCJlbGV2YXRpb25CeURlc2NyaXB0aW9uIiwiY29sb3JCeURlc2NyaXB0aW9uIiwicGVyY2VudGlsZSIsIndvc