UNPKG

terriajs

Version:

Geospatial data visualization platform.

87 lines (75 loc) 2.13 kB
"use strict"; import React from "react"; import createReactClass from "create-react-class"; import PropTypes from "prop-types"; import Styles from "./parameter-editors.scss"; import RegionPicker, { getDisplayValue } from "./RegionPicker"; import MapInteractionMode from "../../Models/MapInteractionMode"; const RegionParameterEditor = createReactClass({ displayName: "RegionParameterEditor", propTypes: { previewed: PropTypes.object, viewState: PropTypes.object, parameter: PropTypes.object }, selectRegionOnMap() { RegionParameterEditor.selectOnMap( this.props.viewState, this.props.parameter, this.props.previewed ); }, render() { return ( <div> <input className={Styles.field} type="text" readOnly value={getDisplayValue( this.props.parameter.value, this.props.parameter )} /> <button type="button" onClick={this.selectRegionOnMap} className={Styles.btnSelector} > Select region </button> </div> ); } }); /** * Prompt user to select/draw on map in order to define parameter. * @param {Object} viewState ViewState. * @param {FunctionParameter} parameter Parameter. * @param {Object} previewed Previewed. */ RegionParameterEditor.selectOnMap = function (viewState, parameter, previewed) { const terria = previewed.terria; // Cancel any feature picking already in progress. terria.pickedFeatures = undefined; const pickPointMode = new MapInteractionMode({ message: "Select a region on the map", onCancel: function () { terria.mapInteractionModeStack.pop(); viewState.openAddData(); }, buttonText: "Done", customUi: function Done() { return ( <RegionPicker className={Styles.parameterEditor} previewed={previewed} parameter={parameter} /> ); } }); terria.mapInteractionModeStack.push(pickPointMode); viewState.explorerPanelIsVisible = false; }; module.exports = RegionParameterEditor;