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

Function rebuildYear

codebase/sources/dhtmlxscheduler.es.js:17345–17428  ·  view source on GitHub ↗
(year, options)

Source from the content-addressed store, hash-verified

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

Callers 1

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