year-scheduler
Version:
An Angular Year Scheduler component.
54 lines • 7.9 kB
JavaScript
export class AxiomSchedulerYearViewMonthObject {
month;
days;
monthWeeks = [];
constructor(month) {
this.month = month.clone();
this.setDays();
}
setDays() {
const monthSize = 42;
const startOfMonth = this.month.clone().startOf('month');
const endOfMonth = this.month.clone().endOf('month');
this.days = [];
let day = startOfMonth.clone();
while (day <= endOfMonth) {
this.days.push(day);
day = day.clone().add(1, 'd');
}
this.setMonthWeeks(startOfMonth, endOfMonth);
// Solo si empieza en lunes el mes no se anhade ningun dia anterior
if (startOfMonth.clone().get('d') > 1 || startOfMonth.clone().get('d') === 0) {
day = startOfMonth.clone();
while (day.get('d') > 1 || day.get('d') === 0) {
day = day.clone().add(-1, 'days');
this.days.unshift(day);
}
}
if (this.days.length < monthSize) {
const size = (monthSize - this.days.length);
for (let index = 1; index <= size; index++) {
this.days.push(endOfMonth.clone().add(index, 'days'));
}
}
}
setMonthWeeks(startOfMonth, endOfMonth) {
let day = startOfMonth.clone();
const set = new Set();
const date = startOfMonth.clone().startOf('year');
// El domingo es el 0 por lo que lo controlamos especificamente
let yearStartDays = date.get('d');
if (yearStartDays === 0) {
yearStartDays = 6;
}
else {
yearStartDays -= 1;
}
while (day <= endOfMonth) {
set.add(Math.ceil((day.dayOfYear() + yearStartDays) / 7));
day = day.add(1, 'd');
}
this.monthWeeks = Array.from(set);
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXhpb20tc2NoZWR1bGVyLXllYXItdmlldy1tb250aC1vYmplY3QubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy95ZWFyLXNjaGVkdWxlci9zcmMvbGliL21vZGVsL2F4aW9tLXNjaGVkdWxlci15ZWFyLXZpZXctbW9udGgtb2JqZWN0Lm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE1BQU0sT0FBTyxpQ0FBaUM7SUFFbkMsS0FBSyxDQUFnQjtJQUNyQixJQUFJLENBQW1CO0lBQ3ZCLFVBQVUsR0FBYSxFQUFFLENBQUM7SUFFakMsWUFBWSxLQUFvQjtRQUM5QixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUMzQixJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDakIsQ0FBQztJQUVELE9BQU87UUFDTCxNQUFNLFNBQVMsR0FBRyxFQUFFLENBQUM7UUFDckIsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDekQsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDckQsSUFBSSxDQUFDLElBQUksR0FBRyxFQUFFLENBQUM7UUFDZixJQUFJLEdBQUcsR0FBRyxZQUFZLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDL0IsT0FBTyxHQUFHLElBQUksVUFBVSxFQUFFLENBQUM7WUFDekIsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDcEIsR0FBRyxHQUFHLEdBQUcsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ2hDLENBQUM7UUFDRCxJQUFJLENBQUMsYUFBYSxDQUFDLFlBQVksRUFBRSxVQUFVLENBQUMsQ0FBQztRQUM3QyxtRUFBbUU7UUFDbkUsSUFBSSxZQUFZLENBQUMsS0FBSyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsSUFBSSxZQUFZLENBQUMsS0FBSyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQzdFLEdBQUcsR0FBRyxZQUFZLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDM0IsT0FBTyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsSUFBSSxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO2dCQUM5QyxHQUFHLEdBQUcsR0FBRyxDQUFDLEtBQUssRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQztnQkFDbEMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDekIsQ0FBQztRQUNILENBQUM7UUFDRCxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLFNBQVMsRUFBRSxDQUFDO1lBQ2pDLE1BQU0sSUFBSSxHQUFHLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDNUMsS0FBSyxJQUFJLEtBQUssR0FBRyxDQUFDLEVBQUUsS0FBSyxJQUFJLElBQUksRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDO2dCQUMzQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDO1lBQ3hELENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUVELGFBQWEsQ0FBQyxZQUEyQixFQUFFLFVBQXlCO1FBQ2xFLElBQUksR0FBRyxHQUFHLFlBQVksQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUMvQixNQUFNLEdBQUcsR0FBRyxJQUFJLEdBQUcsRUFBVSxDQUFDO1FBQzlCLE1BQU0sSUFBSSxHQUFHLFlBQVksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDbEQsK0RBQStEO1FBQy9ELElBQUksYUFBYSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDbEMsSUFBSSxhQUFhLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDeEIsYUFBYSxHQUFHLENBQUMsQ0FBQztRQUNwQixDQUFDO2FBQU0sQ0FBQztZQUNOLGFBQWEsSUFBSSxDQUFDLENBQUM7UUFDckIsQ0FBQztRQUNELE9BQU8sR0FBRyxJQUFJLFVBQVUsRUFBRSxDQUFDO1lBQ3pCLEdBQUcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxTQUFTLEVBQUUsR0FBRyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzFELEdBQUcsR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUN4QixDQUFDO1FBQ0QsSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3BDLENBQUM7Q0FFRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50JztcclxuXHJcbmV4cG9ydCBjbGFzcyBBeGlvbVNjaGVkdWxlclllYXJWaWV3TW9udGhPYmplY3Qge1xyXG5cclxuICAgIHB1YmxpYyBtb250aDogbW9tZW50Lk1vbWVudDtcclxuICAgIHB1YmxpYyBkYXlzITogbW9tZW50Lk1vbWVudFtdO1xyXG4gICAgcHVibGljIG1vbnRoV2Vla3M6IG51bWJlcltdID0gW107XHJcbiAgXHJcbiAgICBjb25zdHJ1Y3Rvcihtb250aDogbW9tZW50Lk1vbWVudCkge1xyXG4gICAgICB0aGlzLm1vbnRoID0gbW9udGguY2xvbmUoKTtcclxuICAgICAgdGhpcy5zZXREYXlzKCk7XHJcbiAgICB9XHJcbiAgXHJcbiAgICBzZXREYXlzKCk6IHZvaWQge1xyXG4gICAgICBjb25zdCBtb250aFNpemUgPSA0MjtcclxuICAgICAgY29uc3Qgc3RhcnRPZk1vbnRoID0gdGhpcy5tb250aC5jbG9uZSgpLnN0YXJ0T2YoJ21vbnRoJyk7XHJcbiAgICAgIGNvbnN0IGVuZE9mTW9udGggPSB0aGlzLm1vbnRoLmNsb25lKCkuZW5kT2YoJ21vbnRoJyk7XHJcbiAgICAgIHRoaXMuZGF5cyA9IFtdO1xyXG4gICAgICBsZXQgZGF5ID0gc3RhcnRPZk1vbnRoLmNsb25lKCk7XHJcbiAgICAgIHdoaWxlIChkYXkgPD0gZW5kT2ZNb250aCkge1xyXG4gICAgICAgIHRoaXMuZGF5cy5wdXNoKGRheSk7XHJcbiAgICAgICAgZGF5ID0gZGF5LmNsb25lKCkuYWRkKDEsICdkJyk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5zZXRNb250aFdlZWtzKHN0YXJ0T2ZNb250aCwgZW5kT2ZNb250aCk7XHJcbiAgICAgIC8vIFNvbG8gc2kgZW1waWV6YSBlbiBsdW5lcyBlbCBtZXMgbm8gc2UgYW5oYWRlIG5pbmd1biBkaWEgYW50ZXJpb3JcclxuICAgICAgaWYgKHN0YXJ0T2ZNb250aC5jbG9uZSgpLmdldCgnZCcpID4gMSB8fCBzdGFydE9mTW9udGguY2xvbmUoKS5nZXQoJ2QnKSA9PT0gMCkge1xyXG4gICAgICAgIGRheSA9IHN0YXJ0T2ZNb250aC5jbG9uZSgpO1xyXG4gICAgICAgIHdoaWxlIChkYXkuZ2V0KCdkJykgPiAxIHx8IGRheS5nZXQoJ2QnKSA9PT0gMCkge1xyXG4gICAgICAgICAgZGF5ID0gZGF5LmNsb25lKCkuYWRkKC0xLCAnZGF5cycpO1xyXG4gICAgICAgICAgdGhpcy5kYXlzLnVuc2hpZnQoZGF5KTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHRoaXMuZGF5cy5sZW5ndGggPCBtb250aFNpemUpIHtcclxuICAgICAgICBjb25zdCBzaXplID0gKG1vbnRoU2l6ZSAtIHRoaXMuZGF5cy5sZW5ndGgpO1xyXG4gICAgICAgIGZvciAobGV0IGluZGV4ID0gMTsgaW5kZXggPD0gc2l6ZTsgaW5kZXgrKykge1xyXG4gICAgICAgICAgdGhpcy5kYXlzLnB1c2goZW5kT2ZNb250aC5jbG9uZSgpLmFkZChpbmRleCwgJ2RheXMnKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgXHJcbiAgICBzZXRNb250aFdlZWtzKHN0YXJ0T2ZNb250aDogbW9tZW50Lk1vbWVudCwgZW5kT2ZNb250aDogbW9tZW50Lk1vbWVudCk6IHZvaWQge1xyXG4gICAgICBsZXQgZGF5ID0gc3RhcnRPZk1vbnRoLmNsb25lKCk7XHJcbiAgICAgIGNvbnN0IHNldCA9IG5ldyBTZXQ8bnVtYmVyPigpO1xyXG4gICAgICBjb25zdCBkYXRlID0gc3RhcnRPZk1vbnRoLmNsb25lKCkuc3RhcnRPZigneWVhcicpO1xyXG4gICAgICAvLyBFbCBkb21pbmdvIGVzIGVsIDAgcG9yIGxvIHF1ZSBsbyBjb250cm9sYW1vcyBlc3BlY2lmaWNhbWVudGVcclxuICAgICAgbGV0IHllYXJTdGFydERheXMgPSBkYXRlLmdldCgnZCcpO1xyXG4gICAgICBpZiAoeWVhclN0YXJ0RGF5cyA9PT0gMCkge1xyXG4gICAgICAgIHllYXJTdGFydERheXMgPSA2O1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHllYXJTdGFydERheXMgLT0gMTtcclxuICAgICAgfVxyXG4gICAgICB3aGlsZSAoZGF5IDw9IGVuZE9mTW9udGgpIHtcclxuICAgICAgICBzZXQuYWRkKE1hdGguY2VpbCgoZGF5LmRheU9mWWVhcigpICsgeWVhclN0YXJ0RGF5cykgLyA3KSk7XHJcbiAgICAgICAgZGF5ID0gZGF5LmFkZCgxLCAnZCcpO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMubW9udGhXZWVrcyA9IEFycmF5LmZyb20oc2V0KTtcclxuICAgIH1cclxuICBcclxuICB9Il19