Commit 9f8a2c46 authored by Johannes Bill's avatar Johannes Bill

bugfixing

parent eca9e65e
function Holidays(year) {
/* var mapping = {
0: "Alle",
101: "Neujahrstag",
106: "Hl. drei Koenige",
301: "Karfreitag",
302: "Ostersonntag",
303: "Ostermontag",
501: "Tag der Arbeit",
502: "Himmelfahrt",
601: "Pfingstsonntag",
602: "Pfingstmontag",
808: "Augsburger Friedensfest",
815: "Mariae Himmelfahrt",
103: "Tag der Deutschen Einheit",
131: "Reformationstag",
111: "Allerheiligen",
121: "Heilig Abend",
122: "Erster Weihnachtstag",
123: "Zweiter Weihnachtstag"};*/
var fixedHolidays = {
101: "0101",
106: "0601",
501: "0105",
808: "0808",
815: "1508",
103: "0310",
131: "3110",
111: "1101",
121: "2412",
122: "2512",
123: "2612"
};
var variableOffsets = {
301: -2,
302: 0,
303: 1,
502: 39,
601: 49,
602: 50
};
function getEasterSunday() {
return new Date(2014, 3, 5);
}
function getFixedHolidays(fixedHolidays) {
var result = {};
for(var key in fixedHolidays) {
var dateString = fixedHolidays[key];
var date = parseInt(dateString.slice(0,2));
var month = parseInt(dateString.slice(2,4));
console.log(date, month);
result[key] = new Date(year, month - 1, date);
console.log(result[key]);
}
return result;
}
function getVariableHolidaysMap(offsets) {
var result = {};
var easterDate = getEasterSunday();
for(var key in offsets) {
var offset = offsets[key];
result[key] = new Date(year, easterDate.getMonth(), easterDate.getDate() + offset);
}
return result;
}
console.log(getFixedHolidays(fixedHolidays));
console.log(getVariableHolidaysMap(variableOffsets));
}
new Holidays(2014);
module.exports = Holidays;
\ No newline at end of file
......@@ -6,7 +6,7 @@ var excludeString = "bb74c170-b06f-4d2b-ab88-2f6bf9ce8068";
var _epochStart = new Date();
_epochStart.setDate(_epochStart.getDate() - 14);
var _epochEnd = new Date(_epochStart.getTime() + 60 * 24 * 3600000);
var _epochEnd = new Date(_epochStart.getTime() + 31 * 24 * 3600000);
var epocheSpan = [_epochStart, _epochEnd];
......
function compareFT(from, till) {
function compareTimeSpan(timeSpan) {
var from = timeSpan[0];
var till = timeSpan[1];
if(from.h == till.h)
return from.m - till.m;
else
return from.h - till.h
}
function transformTill(from, till) {
if(compareFT(from, till) >= 0) {
return {h: till.h + 24, m: till.m}
function transformTimeSpan(timeSpan) {
if(compareTimeSpan(timeSpan) >= 0) {
timeSpan[1].h += 24;
}
else return till;
return timeSpan;
}
function _cyclicInterval(from, until, interval, epochStart, epochEnd) {
......@@ -35,6 +37,7 @@ function _standard(day, timeFrom, timeUntil, epochStart, epochEnd, distanceDays)
}
function standardFromTillDay(daySpan, timeSpan, dateSpan, daysDistance) {
timeSpan = transformTimeSpan(timeSpan);
var dayFrom = daySpan[0];
var dayTill = daySpan[1];
var timeFrom = timeSpan[0];
......@@ -42,8 +45,6 @@ function standardFromTillDay(daySpan, timeSpan, dateSpan, daysDistance) {
var epochStart = dateSpan[0];
var epochEnd = dateSpan[1];
timeUntil = transformTill(timeFrom, timeUntil);
var firstDays = _standard(dayFrom, timeFrom, timeUntil, epochStart, epochEnd, daysDistance);
var result = firstDays.slice();
......@@ -85,6 +86,7 @@ function cyclic(day, noInMonth, timeFrom, timeUntil, epochStart, epochEnd) {
}
function cyclicFromTillDay(daySpan, noInMonth, timeSpan, dateSpan, epochSpan) {
timeSpan = transformTimeSpan(timeSpan);
var dayFrom = daySpan[0];
var dayTill = daySpan[1];
var timeFrom = timeSpan[0];
......@@ -100,7 +102,6 @@ function cyclicFromTillDay(daySpan, noInMonth, timeSpan, dateSpan, epochSpan) {
epochStart = new Date(t.getFullYear(), t.getMonth() - 1, t.getDate())
}
timeUntil = transformTill(timeFrom, timeUntil);
var result = [];
epochStart = new Date(epochStart);
......@@ -179,26 +180,22 @@ function _getNextNoInMonthOccurence(day, startDate, noInMonth) {
return startDate;
}
function singleDay(date) {
var startDate = new Date(date.getFullYear(), date.getMonth(), date.getDate());
var endDate = new Date(startDate);
endDate.setDate(endDate.getDate() + 1);
function singleDay(date, timeSpan) {
var startDate, endDate;
if(timeSpan) {
startDate = new Date(date.getFullYear(), date.getMonth(), date.getDate(), timeSpan[0].h, timeSpan[0].m);
endDate = new Date(date.getFullYear(), date.getMonth(), date.getDate(), timeSpan[1].h, timeSpan[1].m);
}
else {
startDate = new Date(date.getFullYear(), date.getMonth(), date.getDate());
endDate = new Date(date.getFullYear(), date.getMonth(), date.getDate() + 1);
}
return [
[startDate, endDate]
];
}
function wholeInterval(start, end) {
return [new Date(start.getFullYear(), start.getMonth(), start.getDate()),
new Date(end.getFullYear(), end.getMonth(), end.getDate())];
}
function limitToInterval(intervals, start, end) {
var limit = wholeInterval(start, end);
intervals = andOperator(intervals, limit);
return intervals;
}
function orOperator(intervals) {
var result = [];
for(var i = 0; i < intervals.length; i++) {
......@@ -296,4 +293,3 @@ module.exports.orOperator = orOperator;
module.exports.andOperator = andOperator;
module.exports.andNotOperator = andNotOperator;
module.exports.mergeOverlaps = mergeOverlaps;
\ No newline at end of file
module.exports.limitToInterval = limitToInterval;
\ No newline at end of file
feiertage defaultmaessig abziehen
feiertage defaultmaessig abziehen ausser feiertage sind in der ausschlussliste
verbindung feiertag - region
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment