ngx-mat-tui-calendar
Version:
Angular Material Design wrapper, supporting theming, for the Toast UI Calendar, suitable for web-based scheduling, events, appointments, and day planner applications.
103 lines • 13 kB
JavaScript
// import { TZDate } from 'tui-calendar';
export class LocalDate {
// month = 1 to 12
constructor(args) {
let numbers;
if (typeof args == 'string') {
numbers = LocalDate.parse_YYYYMMDD(args);
}
else if (args instanceof LocalDate) {
numbers = args.get();
}
else if (args instanceof Date) {
numbers = LocalDate.convertDateToNumbers(args);
}
else if (typeof args.toDate === 'function') {
numbers = LocalDate.convertDateToNumbers(args.toDate());
}
else if (args['_date'] instanceof Date) {
numbers = LocalDate.convertDateToNumbers(args['_date']);
}
else if (args instanceof Object) {
numbers = args;
}
this.date = LocalDate.convertNumbersToDate(numbers);
}
static convertToJsDate(args) {
return (new LocalDate(args)).toDate();
}
// return new LocalDate(date.getFullYear(), date.getMonth() + 1, date.getDate());
static parse_YYYYMMDD(str) {
// yyyy-mm-dd
const regexp = /^(\d\d\d\d)-(\d\d)-(\d\d)/g;
let matches = Array.from(str.matchAll(regexp), m => ({
year: Number(m[1]),
month: Number(m[2]),
day: Number(m[3])
}));
if (matches.length != 1) {
console.error(`dateIn: unknown date format: ${str}`);
return null;
}
return matches[0];
}
static convertNumbersToDate({ year, month, day, hours, minutes, seconds, milliseconds }) {
// month = 1 to 12
// start with today's *local* date. this is really important
let date = new Date();
date.setDate(1); // very important
date.setFullYear(year);
date.setMonth((month == null) ? 0 : month - 1);
date.setDate((day == null) ? 1 : day);
date.setHours((hours == null) ? 0 : hours);
date.setMinutes((minutes == null) ? 0 : minutes);
date.setSeconds((seconds == null) ? 0 : seconds);
date.setMilliseconds((milliseconds == null) ? 1 : milliseconds);
return date;
}
static convertDateToNumbers(date) {
// month = 1 to 12
return {
year: date.getFullYear(),
month: date.getMonth() + 1,
day: date.getDate(),
hours: date.getHours(),
minutes: date.getMinutes(),
seconds: date.getSeconds(),
milliseconds: date.getMilliseconds(),
};
}
get() {
return LocalDate.convertDateToNumbers(this.date);
}
toMsgFormat() {
return this.toYYYYMMDD();
}
toYYYYMMDD() {
// yyyy-mm-dd
let yyyy = this.date.getFullYear();
let mm = (this.date.getMonth() + 1).toString().padStart(2, '0');
let dd = (this.date.getDate()).toString().padStart(2, '0');
let str = `${yyyy}-${mm}-${dd}`;
// console.warn(`date=${str}=${this.toDisplayFormat()}`);
return str;
}
toDisplayDateFormat() {
return this.date.toLocaleDateString("en-US", {
weekday: 'short',
year: 'numeric',
month: 'short',
day: 'numeric',
});
}
toDisplayFormat() {
return this.date.toString();
}
toDate() {
return this.date;
}
clearTime() {
this.date.setHours(0, 0, 0, 1);
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWwtZGF0ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1tYXQtdHVpLWNhbGVuZGFyL3NyYy9saWIvbG9jYWwtZGF0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSx5Q0FBeUM7QUFFekMsTUFBTSxPQUFPLFNBQVM7SUFHcEIsa0JBQWtCO0lBQ2xCLFlBQVksSUFBSTtRQUNkLElBQUksT0FBTyxDQUFDO1FBQ1osSUFBSSxPQUFPLElBQUksSUFBSSxRQUFRLEVBQUU7WUFDM0IsT0FBTyxHQUFHLFNBQVMsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDMUM7YUFBTSxJQUFJLElBQUksWUFBWSxTQUFTLEVBQUU7WUFDcEMsT0FBTyxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztTQUN0QjthQUFNLElBQUksSUFBSSxZQUFZLElBQUksRUFBRTtZQUMvQixPQUFPLEdBQUcsU0FBUyxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxDQUFDO1NBQ2hEO2FBQU0sSUFBSSxPQUFPLElBQUksQ0FBQyxNQUFNLEtBQUssVUFBVSxFQUFFO1lBQzVDLE9BQU8sR0FBRyxTQUFTLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7U0FDekQ7YUFBTSxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxJQUFJLEVBQUc7WUFDekMsT0FBTyxHQUFHLFNBQVMsQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztTQUN6RDthQUFNLElBQUksSUFBSSxZQUFZLE1BQU0sRUFBRTtZQUNqQyxPQUFPLEdBQUcsSUFBSSxDQUFDO1NBQ2hCO1FBQ0QsSUFBSSxDQUFDLElBQUksR0FBRyxTQUFTLENBQUMsb0JBQW9CLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDdEQsQ0FBQztJQUVELE1BQU0sQ0FBQyxlQUFlLENBQUMsSUFBSTtRQUN6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QVM7UUFDUCxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNqQyxDQUFDO0NBRUYiLCJzb3VyY2VzQ29udGVudCI6WyJcclxuLy8gaW1wb3J0IHsgVFpEYXRlIH0gZnJvbSAndHVpLWNhbGVuZGFyJztcclxuXHJcbmV4cG9ydCBjbGFzcyBMb2NhbERhdGUge1xyXG4gIGRhdGU6IERhdGU7XHJcblxyXG4gIC8vIG1vbnRoID0gMSB0byAxMlxyXG4gIGNvbnN0cnVjdG9yKGFyZ3MpIHtcclxuICAgIGxldCBudW1iZXJzO1xyXG4gICAgaWYgKHR5cGVvZiBhcmdzID09ICdzdHJpbmcnKSB7XHJcbiAgICAgIG51bWJlcnMgPSBMb2NhbERhdGUucGFyc2VfWVlZWU1NREQoYXJncyk7XHJcbiAgICB9IGVsc2UgaWYgKGFyZ3MgaW5zdGFuY2VvZiBMb2NhbERhdGUpIHtcclxuICAgICAgbnVtYmVycyA9IGFyZ3MuZ2V0KCk7XHJcbiAgICB9IGVsc2UgaWYgKGFyZ3MgaW5zdGFuY2VvZiBEYXRlKSB7XHJcbiAgICAgIG51bWJlcnMgPSBMb2NhbERhdGUuY29udmVydERhdGVUb051bWJlcnMoYXJncyk7XHJcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBhcmdzLnRvRGF0ZSA9PT0gJ2Z1bmN0aW9uJykge1xyXG4gICAgICBudW1iZXJzID0gTG9jYWxEYXRlLmNvbnZlcnREYXRlVG9OdW1iZXJzKGFyZ3MudG9EYXRlKCkpO1xyXG4gICAgfSBlbHNlIGlmIChhcmdzWydfZGF0ZSddIGluc3RhbmNlb2YgRGF0ZSApIHtcclxuICAgICAgbnVtYmVycyA9IExvY2FsRGF0ZS5jb252ZXJ0RGF0ZVRvTnVtYmVycyhhcmdzWydfZGF0ZSddKTtcclxuICAgIH0gZWxzZSBpZiAoYXJncyBpbnN0YW5jZW9mIE9iamVjdCkge1xyXG4gICAgICBudW1iZXJzID0gYXJncztcclxuICAgIH1cclxuICAgIHRoaXMuZGF0ZSA9IExvY2FsRGF0ZS5jb252ZXJ0TnVtYmVyc1RvRGF0ZShudW1iZXJzKTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBjb252ZXJ0VG9Kc0RhdGUoYXJncykge1xyXG4gICAgcmV0dXJuIChuZXcgTG9jYWxEYXRlKGFyZ3MpKS50b0RhdGUoKTtcclxuICB9XHJcblxyXG5cclxuICAvLyByZXR1cm4gbmV3IExvY2FsRGF0ZShkYXRlLmdldEZ1bGxZZWFyKCksIGRhdGUuZ2V0TW9udGgoKSArIDEsIGRhdGUuZ2V0RGF0ZSgpKTtcclxuICBzdGF0aWMgcGFyc2VfWVlZWU1NREQoc3RyKSB7XHJcbiAgICAvLyB5eXl5LW1tLWRkXHJcbiAgICBjb25zdCByZWdleHAgPSAvXihcXGRcXGRcXGRcXGQpLShcXGRcXGQpLShcXGRcXGQpL2c7XHJcbiAgICBsZXQgbWF0Y2hlcyA9IEFycmF5LmZyb20oXHJcbiAgICAgIHN0ci5tYXRjaEFsbChyZWdleHApLCBtID0+ICh7XHJcbiAgICAgICAgeWVhcjogTnVtYmVyKG1bMV0pLFxyXG4gICAgICAgIG1vbnRoOiBOdW1iZXIobVsyXSksXHJcbiAgICAgICAgZGF5OiBOdW1iZXIobVszXSlcclxuICAgICAgfSlcclxuICAgICk7XHJcbiAgICBpZiAobWF0Y2hlcy5sZW5ndGggIT0gMSkge1xyXG4gICAgICBjb25zb2xlLmVycm9yKGBkYXRlSW46IHVua25vd24gZGF0ZSBmb3JtYXQ6ICR7c3RyfWApO1xyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuICAgIHJldHVybiBtYXRjaGVzWzBdO1xyXG4gIH1cclxuICBzdGF0aWMgY29udmVydE51bWJlcnNUb0RhdGUoeyB5ZWFyLCBtb250aCwgZGF5LCBob3VycywgbWludXRlcywgc2Vjb25kcywgbWlsbGlzZWNvbmRzIH0pIHtcclxuICAgIC8vIG1vbnRoID0gMSB0byAxMlxyXG4gICAgLy8gc3RhcnQgd2l0aCB0b2RheSdzICpsb2NhbCogZGF0ZS4gdGhpcyBpcyByZWFsbHkgaW1wb3J0YW50XHJcbiAgICBsZXQgZGF0ZSA9IG5ldyBEYXRlKCk7XHJcbiAgICBkYXRlLnNldERhdGUoMSk7IC8vIHZlcnkgaW1wb3J0YW50XHJcbiAgICBkYXRlLnNldEZ1bGxZZWFyKHllYXIpO1xyXG4gICAgZGF0ZS5zZXRNb250aCgobW9udGg9PW51bGwpID8gMCA6IG1vbnRoIC0gMSk7XHJcbiAgICBkYXRlLnNldERhdGUoKGRheT09bnVsbCkgPyAxIDogZGF5KTtcclxuICAgIGRhdGUuc2V0SG91cnMoKGhvdXJzPT1udWxsKSA/IDAgOiBob3Vycyk7XHJcbiAgICBkYXRlLnNldE1pbnV0ZXMoKG1pbnV0ZXM9PW51bGwpID8gMCA6IG1pbnV0ZXMpO1xyXG4gICAgZGF0ZS5zZXRTZWNvbmRzKChzZWNvbmRzPT1udWxsKSA/IDAgOiBzZWNvbmRzKTtcclxuICAgIGRhdGUuc2V0TWlsbGlzZWNvbmRzKChtaWxsaXNlY29uZHM9PW51bGwpID8gMSA6IG1pbGxpc2Vjb25kcyk7XHJcbiAgICByZXR1cm4gZGF0ZTtcclxuICB9XHJcblxyXG5cclxuICBzdGF0aWMgY29udmVydERhdGVUb051bWJlcnMoZGF0ZSkge1xyXG4gICAgLy8gbW9udGggPSAxIHRvIDEyXHJcbiAgICByZXR1cm4ge1xyXG4gICAgICB5ZWFyOiBkYXRlLmdldEZ1bGxZZWFyKCksXHJcbiAgICAgIG1vbnRoOiBkYXRlLmdldE1vbnRoKCkgKyAxLFxyXG4gICAgICBkYXk6IGRhdGUuZ2V0RGF0ZSgpLFxyXG4gICAgICBob3VyczogZGF0ZS5nZXRIb3VycygpLFxyXG4gICAgICBtaW51dGVzOiBkYXRlLmdldE1pbnV0ZXMoKSxcclxuICAgICAgc2Vjb25kczogZGF0ZS5nZXRTZWNvbmRzKCksXHJcbiAgICAgIG1pbGxpc2Vjb25kczogZGF0ZS5nZXRNaWxsaXNlY29uZHMoKSxcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICBnZXQoKSB7XHJcbiAgICByZXR1cm4gTG9jYWxEYXRlLmNvbnZlcnREYXRlVG9OdW1iZXJzKHRoaXMuZGF0ZSk7XHJcbiAgfVxyXG5cclxuICB0b01zZ0Zvcm1hdCgpIHtcclxuICAgIHJldHVybiB0aGlzLnRvWVlZWU1NREQoKTtcclxuICB9XHJcbiAgdG9ZWVlZTU1ERCgpIHtcclxuICAgIC8vIHl5eXktbW0tZGRcclxuXHJcbiAgICBsZXQgeXl5eSA9IHRoaXMuZGF0ZS5nZXRGdWxsWWVhcigpO1xyXG4gICAgbGV0IG1tID0gKHRoaXMuZGF0ZS5nZXRNb250aCgpICsgMSkudG9TdHJpbmcoKS5wYWRTdGFydCgyLCAnMCcpO1xyXG4gICAgbGV0IGRkID0gKHRoaXMuZGF0ZS5nZXREYXRlKCkpLnRvU3RyaW5nKCkucGFkU3RhcnQoMiwgJzAnKTtcclxuICAgIGxldCBzdHIgPSBgJHt5eXl5fS0ke21tfS0ke2RkfWA7XHJcbiAgICAvLyBjb25zb2xlLndhcm4oYGRhdGU9JHtzdHJ9PSR7dGhpcy50b0Rpc3BsYXlGb3JtYXQoKX1gKTtcclxuICAgIHJldHVybiBzdHI7XHJcbiAgfVxyXG4gIHRvRGlzcGxheURhdGVGb3JtYXQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5kYXRlLnRvTG9jYWxlRGF0ZVN0cmluZyhcImVuLVVTXCIsIHtcclxuICAgICAgd2Vla2RheTogJ3Nob3J0JyxcclxuICAgICAgeWVhcjogJ251bWVyaWMnLFxyXG4gICAgICBtb250aDogJ3Nob3J0JyxcclxuICAgICAgZGF5OiAnbnVtZXJpYycsXHJcbiAgICB9KTtcclxuICB9XHJcbiAgdG9EaXNwbGF5Rm9ybWF0KCkge1xyXG4gICAgcmV0dXJuIHRoaXMuZGF0ZS50b1N0cmluZygpO1xyXG4gIH1cclxuICB0b0RhdGUoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5kYXRlO1xyXG4gIH1cclxuICBjbGVhclRpbWUoKSB7XHJcbiAgICB0aGlzLmRhdGUuc2V0SG91cnMoMCwgMCwgMCwgMSk7XHJcbiAgfVxyXG5cclxufVxyXG5cclxuIl19