| 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116 | 1×
1×
1×
1×
46959×
46959×
46959×
46959×
46959×
46959×
46959×
1×
46959×
46959×
1×
46959×
46959×
46959×
13994×
13994×
13994×
13994×
20700×
20700×
20700×
127×
127×
18×
18×
20700×
20682×
46959×
1×
46959×
46959×
82×
82×
82×
82×
82×
82×
82×
82×
82×
82×
82×
82×
82×
82×
82×
82×
164×
164×
82×
82×
82×
82×
82×
164×
164×
82×
82×
82×
82×
93×
1×
41960348×
41960348×
41960348×
1×
1×
| define(["require", "exports"], function (require, exports) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var CalendarContext = (function () {
function CalendarContext(parent, calendar) {
this.defaultHolidays = [];
this.sortedDefaultHolidays = [];
this.exceptionDateSet = new Map();
this.exceptionsRanges = [];
this.parent = parent;
this.calendar = calendar;
this.initialize();
}
CalendarContext.prototype.initialize = function () {
this.buildDefaultHolidays();
this.buildExceptionsCollection();
};
CalendarContext.prototype.buildDefaultHolidays = function () {
var holidays = this.calendar['propName'] === 'projectCalendar' ? this.parent.calendarModule.holidays : this.calendar.holidays;
var overrides = this.calendar.exceptions;
for (var i = 0; i < holidays.length; i++) {
var holiday = holidays[i];
var fromDate = holiday.from ? new Date(holiday.from) : new Date(holiday.to);
var toDate = holiday.to ? new Date(holiday.to) : new Date(holiday.from);
for (var d = new Date(fromDate); d <= toDate; d.setDate(d.getDate() + 1)) {
var timestamp = new Date(d).setHours(0, 0, 0, 0);
var isOverridden = false;
for (var j = 0; j < overrides.length; j++) {
var overrideDate = new Date(overrides[j].from).setHours(0, 0, 0, 0);
if (overrideDate === timestamp) {
isOverridden = true;
break;
}
}
if (!isOverridden) {
this.defaultHolidays.push(timestamp);
}
}
}
this.sortedDefaultHolidays = this.defaultHolidays.slice().sort(function (a, b) { return a - b; });
};
CalendarContext.prototype.buildExceptionsCollection = function () {
var overrides = this.calendar.exceptions;
for (var i = 0; i < overrides.length; i++) {
var override = overrides[i];
var fromDate = new Date(override.from);
var toDate = new Date(override.to);
var totalDurationDays = Math.floor((toDate.getTime() - fromDate.getTime()) / (1000 * 60 * 60 * 24)) + 1;
var id = "exception_" + i;
var effectiveExceptionWorkingTime = override.exceptionWorkingTime &&
override.exceptionWorkingTime.length > 0
? override.exceptionWorkingTime
: this.calendar.workingTime || this.parent.defaultCalendarContext.calendar.workingTime;
var range = {
id: id,
from: fromDate,
to: toDate,
label: override.label,
exceptionWorkingTime: effectiveExceptionWorkingTime
};
var workingRanges = [];
var totalSeconds = 0;
var nonWorkingHours = [];
var nonWorking = [];
var startDate = new Date('10/11/2018');
var startTimeObj = { startTime: 0 };
var endTimeObj = { endTime: 0 };
var seconds = 0;
for (var j = 0; j < range.exceptionWorkingTime.length; j++) {
var currentRange = range.exceptionWorkingTime[j];
seconds = seconds + this.parent.dateValidationModule['getWorkingTime']('', currentRange, startDate, totalSeconds, j, nonWorkingHours, workingRanges, nonWorking, startTimeObj, endTimeObj);
}
Eif (endTimeObj.endTime / 3600 !== 24) {
nonWorking.push({ from: endTimeObj.endTime, to: 86400, isWorking: false, interval: 86400 - endTimeObj.endTime });
}
totalSeconds = seconds;
var dailyWorkingHours = 0;
for (var _i = 0, _a = range.exceptionWorkingTime; _i < _a.length; _i++) {
var timeRange = _a[_i];
dailyWorkingHours += timeRange.to - timeRange.from;
}
var totalWorkingHours = dailyWorkingHours * totalDurationDays;
var exceptionRange = {
id: id,
from: fromDate,
to: toDate,
workingTime: override.exceptionWorkingTime,
label: override.label,
secondsPerDay: totalSeconds,
workingRange: workingRanges,
nonWorkingRange: nonWorking,
nonWorkingHours: nonWorkingHours,
totalDurationDays: totalDurationDays,
totalWorkingHours: totalWorkingHours,
startTime: startTimeObj.startTime,
endTime: endTimeObj.endTime
};
this.exceptionsRanges.push(exceptionRange);
for (var d = new Date(fromDate); d <= toDate; d.setDate(d.getDate() + 1)) {
this.exceptionDateSet.set(new Date(d).setHours(0, 0, 0, 0), exceptionRange);
}
}
};
CalendarContext.prototype.getExceptionForDate = function (date) {
var timestamp = new Date(date.getTime()).setHours(0, 0, 0, 0);
var range = this.exceptionDateSet.get(timestamp);
return {
hasException: !!range,
data: range || null
};
};
return CalendarContext;
}());
exports.CalendarContext = CalendarContext;
});
|