UNPKG

terriajs

Version:

Geospatial data visualization platform.

92 lines (78 loc) 2.29 kB
import React from "react"; import defined from "terriajs-cesium/Source/Core/defined"; import createReactClass from "create-react-class"; import PropTypes from "prop-types"; import Styles from "./parameter-editors.scss"; import CommonStrata from "../../Models/Definition/CommonStrata"; const DateTimeParameterEditor = createReactClass({ displayName: "DateTimeParameterEditor", propTypes: { previewed: PropTypes.object, parameter: PropTypes.object }, getInitialState() { return this.getDateTime(); }, getDateTime() { const dateTimeBreakOut = {}; const timeDate = this.props.parameter.value; if (timeDate !== undefined) { const splits = timeDate.split("T"); dateTimeBreakOut.date = splits[0]; if (splits[1].length === 0) { dateTimeBreakOut.time = "00:00"; } else { dateTimeBreakOut.time = splits[1]; } } else { dateTimeBreakOut.date = ""; dateTimeBreakOut.time = "00:00"; } this.setDateTime(dateTimeBreakOut); return dateTimeBreakOut; }, setDateTime(dateTime) { let value; if (dateTime.date && dateTime.time) { value = dateTime.date + "T" + dateTime.time; } this.props.parameter.setValue(CommonStrata.user, value); }, onChangeDate(e) { const dateTimeBreakOut = this.getDateTime(); dateTimeBreakOut.date = e.target.value; this.setDateTime(dateTimeBreakOut); this.setState(dateTimeBreakOut); }, onChangeTime(e) { const dateTimeBreakOut = this.getDateTime(); dateTimeBreakOut.time = e.target.value; this.setDateTime(dateTimeBreakOut); this.setState(dateTimeBreakOut); }, render() { const style = defined(this.props.parameter) && defined(this.props.parameter.value) ? Styles.field : Styles.fieldDatePlaceholder; return ( <div> <input className={style} type="date" placeholder="YYYY-MM-DD" onChange={this.onChangeDate} value={this.state.date} /> <input className={style} type="time" placeholder="HH:mm:ss.sss" onChange={this.onChangeTime} value={this.state.time} /> </div> ); } }); module.exports = DateTimeParameterEditor;