UNPKG

sparnatural

Version:

Visual client-side SPARQL query builder and knowledge graph exploration tool

180 lines 10.7 kB
var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) { if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter"); if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it"); return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver); }; var _TimeDatePickerWidget_instances, _TimeDatePickerWidget_addValueBtnClicked, _TimeDatePickerWidget_getFirstDayYear, _TimeDatePickerWidget_getLastDayOfYear, _TimeDatePickerWidget_shiftOneMoreMinute, _TimeDatePickerWidget_toISOStringWithTimezone, _TimeDatePickerWidget_getValueLabel, _TimeDatePickerWidget_isValidDate; import { AddUserInputBtn } from "../../buttons/AddUserInputBtn"; import { InfoBtn } from "../../buttons/InfoBtn"; import { AbstractWidget, ValueRepetition } from "../AbstractWidget"; import "@chenfengyuan/datepicker"; import { DataFactory } from 'rdf-data-factory'; import { I18n } from "../../../settings/I18n"; import { TOOLTIP_CONFIG } from "../../../settings/defaultSettings"; const factory = new DataFactory(); export class TimeDatePickerWidget extends AbstractWidget { constructor(parentComponent, dateFormat, startClassCal, objectPropVal, endClassVal, specProvider) { super("timedatepicker-widget", parentComponent, null, startClassCal, objectPropVal, endClassVal, ValueRepetition.SINGLE); _TimeDatePickerWidget_instances.add(this); _TimeDatePickerWidget_addValueBtnClicked.set(this, () => { // ensure calendar is hidden to avoid error // // (otherwise the calendar tries to remove itself but its parent node is gone) this.inputStart.datepicker("hide"); this.inputEnd.datepicker("hide"); // fix for negative years // set a minus in front of the date if there was one in the value let startDate; if (this.inputStart.val() != '') { let dateString = this.inputStart.val(); startDate = this.inputStart.datepicker("getDate"); // if original date value was only 2 digits, force it because the getDate returns a 19xx date if ((!dateString.startsWith("-") && dateString.length == 2) || (dateString.startsWith("-") && dateString.length == 3)) { let year = parseInt(dateString); startDate.setFullYear(year); } if (dateString.startsWith("-") && !startDate.toISOString().startsWith("-")) { startDate.setFullYear(parseInt(dateString)); } } let endDate; if (this.inputEnd.val() != '') { let dateString = this.inputEnd.val(); endDate = this.inputEnd.datepicker("getDate"); // if original date value was only 2 digits, force it because the getDate returns a 19xx date if ((!dateString.startsWith("-") && dateString.length == 2) || (dateString.startsWith("-") && dateString.length == 3)) { let year = parseInt(dateString); endDate.setFullYear(year); } if (dateString.startsWith("-") && !endDate.toISOString().startsWith("-")) { endDate.setFullYear(parseInt(dateString)); } } let stringDateTimeVal = { label: null, criteria: { start: (startDate) ? startDate.toISOString() : null, stop: (endDate) ? endDate.toISOString() : null } }; let widgetVal = this.parseInput(stringDateTimeVal); if (!widgetVal) return; this.triggerRenderWidgetVal(widgetVal); }); _TimeDatePickerWidget_getValueLabel.set(this, function (startLabel, stopLabel) { let valueLabel = ""; if ((startLabel != "") && (stopLabel != "")) { valueLabel = I18n.labels.LabelDateFrom + ' ' + startLabel + ' ' + I18n.labels.LabelDateTo + ' ' + stopLabel; } else if (startLabel != "") { valueLabel = I18n.labels.DisplayValueDateFrom + ' ' + startLabel; } else if (stopLabel != "") { valueLabel = I18n.labels.DisplayValueDateTo + ' ' + stopLabel; } return valueLabel; }); this.dateFormat = dateFormat; this.specProvider = specProvider; } render() { super.render(); this.html.append($(`<span>${I18n.labels.LabelDateFrom}&nbsp;</span>`)); this.inputStart = $(`<input id="input-start" placeholder="${I18n.labels.TimeWidgetDateFrom}" autocomplete="off" class="${this.dateFormat}" />`); this.inputEnd = $(`<input id="input-end" placeholder="${I18n.labels.TimeWidgetDateTo}" autocomplete="off" class="${this.dateFormat}" />`); this.inputValue = $(`<input id="input-value" type="hidden"/>`); let span = $(`<span>&nbsp;${I18n.labels.LabelDateTo}&nbsp;</span>`); this.html .append(this.inputStart) .append(span) .append(this.inputEnd) .append(this.inputValue); // Build datatippy info let datatippy = this.dateFormat == "day" ? I18n.labels.TimeWidgetDateHelp : I18n.labels.TimeWidgetYearHelp; // set a tooltip on the info circle var tippySettings = Object.assign({}, TOOLTIP_CONFIG); tippySettings.placement = "left"; tippySettings.trigger = "click"; tippySettings.offset = [this.dateFormat == "day" ? 75 : 50, -20]; tippySettings.delay = [0, 0]; this.infoBtn = new InfoBtn(this, datatippy, tippySettings).render(); //finish datatippy this.addValueBtn = new AddUserInputBtn(this, I18n.labels.ButtonAdd, __classPrivateFieldGet(this, _TimeDatePickerWidget_addValueBtnClicked, "f")).render(); let calendarFormat = (this.dateFormat === "day") ? I18n.labels.TimeWidgetDateFormat : I18n.labels.TimeWidgetYearFormat; var options = { language: I18n.labels.LangCodeTimeDate, autoHide: true, format: calendarFormat, date: null, startView: 2, }; this.inputStart.datepicker(options); this.inputEnd.datepicker(options); return this; } parseInput(input) { let theValue = input.criteria; if (!__classPrivateFieldGet(this, _TimeDatePickerWidget_instances, "m", _TimeDatePickerWidget_isValidDate).call(this, theValue.start) && !__classPrivateFieldGet(this, _TimeDatePickerWidget_instances, "m", _TimeDatePickerWidget_isValidDate).call(this, theValue.stop)) throw Error('No valid Date received'); let startValue = (__classPrivateFieldGet(this, _TimeDatePickerWidget_instances, "m", _TimeDatePickerWidget_isValidDate).call(this, theValue.start)) ? new Date(theValue.start) : null; let endValue = (__classPrivateFieldGet(this, _TimeDatePickerWidget_instances, "m", _TimeDatePickerWidget_isValidDate).call(this, theValue.stop)) ? new Date(theValue.stop) : null; if (startValue && endValue && (startValue > endValue)) throw Error('StartDate is bigger than Enddate!'); let tmpValue; if (this.dateFormat == "day") { tmpValue = { start: (startValue) ? new Date(startValue.setHours(0, 0, 0, 0)) : null, // we set it to the end of the day and we shift one more minute to jumpt to tomorrow // so that if the same date is searched as start + end it will find this value // stop: (endValue)?this.#shiftOneMoreMinute(new Date(endValue.setHours(23, 59, 1, 59))):null, stop: (endValue) ? new Date(endValue.setHours(23, 59, 59, 59)) : null, startLabel: startValue ? startValue.toLocaleDateString() : "", endLabel: endValue ? endValue.toLocaleDateString() : "" }; } else { tmpValue = { start: __classPrivateFieldGet(this, _TimeDatePickerWidget_instances, "m", _TimeDatePickerWidget_getFirstDayYear).call(this, startValue), stop: __classPrivateFieldGet(this, _TimeDatePickerWidget_instances, "m", _TimeDatePickerWidget_getLastDayOfYear).call(this, endValue), startLabel: startValue ? startValue.getFullYear().toString() : "", endLabel: endValue ? endValue.getFullYear().toString() : "" }; } let dateTimePickerVal = { label: __classPrivateFieldGet(this, _TimeDatePickerWidget_getValueLabel, "f").call(this, tmpValue.startLabel, tmpValue.endLabel), criteria: { start: (tmpValue.start) ? __classPrivateFieldGet(this, _TimeDatePickerWidget_instances, "m", _TimeDatePickerWidget_toISOStringWithTimezone).call(this, tmpValue.start) : null, stop: (tmpValue.stop) ? __classPrivateFieldGet(this, _TimeDatePickerWidget_instances, "m", _TimeDatePickerWidget_toISOStringWithTimezone).call(this, tmpValue.stop) : null, } }; return dateTimePickerVal; } } _TimeDatePickerWidget_addValueBtnClicked = new WeakMap(), _TimeDatePickerWidget_getValueLabel = new WeakMap(), _TimeDatePickerWidget_instances = new WeakSet(), _TimeDatePickerWidget_getFirstDayYear = function _TimeDatePickerWidget_getFirstDayYear(startValue) { return startValue ? new Date(startValue.getFullYear(), 0, 1, 0, 0, 1, 0) : null; }, _TimeDatePickerWidget_getLastDayOfYear = function _TimeDatePickerWidget_getLastDayOfYear(endValue) { return endValue ? new Date(endValue.getFullYear(), 11, 31, 23, 59, 59) : null; }, _TimeDatePickerWidget_shiftOneMoreMinute = function _TimeDatePickerWidget_shiftOneMoreMinute(date) { if (!date) return null; let newDate = new Date(date); newDate.setMinutes(date.getMinutes() + 1); return newDate; }, _TimeDatePickerWidget_toISOStringWithTimezone = function _TimeDatePickerWidget_toISOStringWithTimezone(date) { return new Date(date.getTime() - (date.getTimezoneOffset() * 60000)).toISOString(); }, _TimeDatePickerWidget_isValidDate = function _TimeDatePickerWidget_isValidDate(dateString) { return (new Date(dateString).toString() !== "Invalid Date") && !isNaN(Date.parse(dateString)); }; //# sourceMappingURL=TimeDatePickerWidget.js.map