in src/UXClient/Components/DateTimePicker/DateTimePicker.ts [546:603]
private createTimePicker () {
var timeInputContainer = this.timeControls.append("div").attr("class", "tsi-timeInputContainer");
var createTimePicker = (startOrEnd) => {
var fromOrToContainer = timeInputContainer.append("div").classed("tsi-" + startOrEnd + "Container", true);
let inputLabelID = Utils.guid();
let inputID = inputLabelID + 'Input';
let timeLabel = fromOrToContainer.append("label")
.classed("tsi-timeLabel", true)
.attr('id', inputLabelID)
.attr('for', inputID)
.attr('aria-label', `${startOrEnd === 'start' ? this.getString('Start time input') : this.getString('End time input')}`)
.text(this.getString(startOrEnd));
timeLabel.append("span")
.classed("tsi-timeRequired", true)
.text(this.getString('*'));
let inputName = startOrEnd === 'start' ? 'fromInput' : 'toInput'
this[inputName] = fromOrToContainer.append('input')
.attr('class', 'tsi-dateTimeInput', true)
.attr('aria-labelledby', inputLabelID)
.attr('required', true)
.attr('id', inputID)
.on('input', () => {
let rangeErrorCheck: any = this.checkDateTimeValidity();
this.isSettingStartTime = true;
if (this.isValid) {
if (startOrEnd === 'start') {
let parsedFrom = Utils.parseUserInputDateTime(this.fromInput.node().value, this.chartOptions.offset);
this.setFromMillis(parsedFrom);
this.updateDisplayedFromDateTime(true);
this.calendarPicker.draw();
} else {
let parsedTo = Utils.parseUserInputDateTime(this.toInput.node().value, this.chartOptions.offset);
this.setToMillis(parsedTo);
this.updateDisplayedToDateTime(true);
this.calendarPicker.draw();
}
}
});
if (startOrEnd == 'end') {
fromOrToContainer.append("button")
.attr("class", "tsi-snapToEndRangeButton")
.text(this.getString("Latest"))
.attr('aria-label', this.getString('snap end time to latest'))
.on("click", () => {
if (!this.isSettingStartTime) {
this.setFromDate(this.startRange);
}
this.setToMillis(this.maxMillis);
this.updateDisplayedFromDateTime();
this.updateDisplayedToDateTime();
this.isSettingStartTime = true;
this.calendarPicker.draw();
});
}
}
createTimePicker("start");
createTimePicker("end");
}