MCPcopy Create free account
hub / github.com/DHTMLX/scheduler / rebuildYear

Function rebuildYear

codebase/sources/dhtmlxscheduler.js:17349–17432  ·  view source on GitHub ↗
(year, options)

Source from the content-addressed store, hash-verified

17347 return wdaymask;
17348 }();
17349 function rebuildYear(year, options) {
17350 var firstyday = datetime(year, 1, 1);
17351 var yearlen = isLeapYear(year) ? 366 : 365;
17352 var nextyearlen = isLeapYear(year + 1) ? 366 : 365;
17353 var yearordinal = toOrdinal(firstyday);
17354 var yearweekday = getWeekday(firstyday);
17355 var result = __assign(__assign({ yearlen, nextyearlen, yearordinal, yearweekday }, baseYearMasks(year)), { wnomask: null });
17356 if (empty(options.byweekno)) {
17357 return result;
17358 }
17359 result.wnomask = repeat(0, yearlen + 7);
17360 var firstwkst;
17361 var wyearlen;
17362 var no1wkst = firstwkst = pymod(7 - yearweekday + options.wkst, 7);
17363 if (no1wkst >= 4) {
17364 no1wkst = 0;
17365 wyearlen = result.yearlen + pymod(yearweekday - options.wkst, 7);
17366 } else {
17367 wyearlen = yearlen - no1wkst;
17368 }
17369 var div = Math.floor(wyearlen / 7);
17370 var mod = pymod(wyearlen, 7);
17371 var numweeks = Math.floor(div + mod / 4);
17372 for (var j = 0; j < options.byweekno.length; j++) {
17373 var n = options.byweekno[j];
17374 if (n < 0) {
17375 n += numweeks + 1;
17376 }
17377 if (!(n > 0 && n <= numweeks)) {
17378 continue;
17379 }
17380 var i = void 0;
17381 if (n > 1) {
17382 i = no1wkst + (n - 1) * 7;
17383 if (no1wkst !== firstwkst) {
17384 i -= 7 - firstwkst;
17385 }
17386 } else {
17387 i = no1wkst;
17388 }
17389 for (var k = 0; k < 7; k++) {
17390 result.wnomask[i] = 1;
17391 i++;
17392 if (result.wdaymask[i] === options.wkst)
17393 break;
17394 }
17395 }
17396 if (includes(options.byweekno, 1)) {
17397 var i = no1wkst + numweeks * 7;
17398 if (no1wkst !== firstwkst)
17399 i -= 7 - firstwkst;
17400 if (i < yearlen) {
17401 for (var j = 0; j < 7; j++) {
17402 result.wnomask[i] = 1;
17403 i += 1;
17404 if (result.wdaymask[i] === options.wkst)
17405 break;
17406 }

Callers 1

dhtmlxscheduler.jsFile · 0.70

Calls 10

datetimeFunction · 0.70
isLeapYearFunction · 0.70
toOrdinalFunction · 0.70
getWeekdayFunction · 0.70
__assignFunction · 0.70
baseYearMasksFunction · 0.70
emptyFunction · 0.70
repeatFunction · 0.70
pymodFunction · 0.70
includesFunction · 0.70

Tested by

no test coverage detected