terriajs
Version:
Geospatial data visualization platform.
92 lines (78 loc) • 2.29 kB
JSX
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;