@genexus/web-standard-functions
Version:
GeneXus JavaScript standard functions library for web generators
76 lines • 2.76 kB
JavaScript
;
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