UNPKG

@genexus/web-standard-functions

Version:

GeneXus JavaScript standard functions library for web generators

76 lines 2.77 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.createCalendarEvent = exports.schedule = void 0; const addHours_1 = require("../../../datetime/addHours"); const gxguid_1 = require("../../../types/gxguid"); const gxdatetime_1 = require("../../../types/gxdatetime"); /** * Allows scheduling some task on the end user's calendar. Every parameter is optional except for `title` and `startDate`. * @param {string} title * @param {GxDatetime} startDate * @param {GxDatetime} endDate * @param {GxDatetime} startTime * @param {GxDatetime} endTime * @param {string} place */ const schedule = (title, startDate, endDate, startTime, endTime, place) => { const sDateTime = getDateTime(startDate, startTime); const eDateTime = getDateTime(endDate, endTime, (0, addHours_1.addHours)(sDateTime, 1)); const calStr = (0, exports.createCalendarEvent)(sDateTime, eDateTime, title, place); downloadCalendar(calStr); }; exports.schedule = schedule; function convertDateTimeToString(dt) { // 20190814T160000Z return (dt.getUTCFullYear().toString() + stringFromTimeNumber(dt.getUTCMonth() + 1) + stringFromTimeNumber(dt.getUTCDate()) + "T" + stringFromTimeNumber(dt.getUTCHours()) + stringFromTimeNumber(dt.getUTCMinutes()) + stringFromTimeNumber(dt.getUTCSeconds()) + "Z"); } function stringFromTimeNumber(num) { return num.toString().padStart(2, "0"); } function getDateTime(datePart, timePart, defaultValue) { if (!datePart) { return defaultValue; } const result = datePart; if (timePart) { result.setHours(timePart.getHours()); result.setMinutes(timePart.getMinutes()); result.setSeconds(timePart.getSeconds()); } return result; } const createCalendarEvent = (start, end, title, place) => `BEGIN:VCALENDAR VERSION:2.0 BEGIN:VEVENT UID:${getGUIDString()} SEQUENCE:0 DTSTAMP:${convertDateTimeToString(new gxdatetime_1.GxDatetime())} DTSTART:${convertDateTimeToString(start)} DTEND:${convertDateTimeToString(end)} SUMMARY:${title} LOCATION:${place} END:VEVENT END:VCALENDAR`; exports.createCalendarEvent = createCalendarEvent; function getGUIDString() { return gxguid_1.GxGuid.newGuid().toString(); } function downloadCalendar(calendarStr) { const guidStr = getGUIDString(); const fileName = guidStr + ".ics"; const element = document.createElement("a"); element.setAttribute("href", "data:text/plain;charset=utf-8," + encodeURIComponent(calendarStr)); element.setAttribute("download", fileName); element.style.display = "none"; document.body.appendChild(element); element.click(); document.body.removeChild(element); } //# sourceMappingURL=schedule.js.map