Commit 875c19cd authored by Johannes Bill's avatar Johannes Bill

bugfixing

parent b58db5f7
...@@ -52,9 +52,7 @@ function Holidays(year) { ...@@ -52,9 +52,7 @@ function Holidays(year) {
var dateString = fixedHolidays[key]; var dateString = fixedHolidays[key];
var date = parseInt(dateString.slice(0,2)); var date = parseInt(dateString.slice(0,2));
var month = parseInt(dateString.slice(2,4)); var month = parseInt(dateString.slice(2,4));
console.log(date, month);
result[key] = new Date(year, month - 1, date); result[key] = new Date(year, month - 1, date);
console.log(result[key]);
} }
return result; return result;
} }
...@@ -69,10 +67,18 @@ function Holidays(year) { ...@@ -69,10 +67,18 @@ function Holidays(year) {
return result; return result;
} }
console.log(getFixedHolidays(fixedHolidays)); var holidays = getFixedHolidays(fixedHolidays);
console.log(getVariableHolidaysMap(variableOffsets)); var holidays = getVariableHolidaysMap(variableOffsets, holidays);
this.getHoliday = function(id) {
if(id in holidays)
return holidays[id];
console.error("invalid holiday id " + id);
return null;
}
} }
new Holidays(2014); var holidays = new Holidays(2014);
console.log(holidays.getHoliday(2));
module.exports = Holidays; module.exports = Holidays;
\ No newline at end of file
...@@ -5,40 +5,48 @@ var includeString = "810a6deb-46f2-4fa8-b779-bb5c2a6b5577"; ...@@ -5,40 +5,48 @@ var includeString = "810a6deb-46f2-4fa8-b779-bb5c2a6b5577";
var excludeString = "bb74c170-b06f-4d2b-ab88-2f6bf9ce8068"; var excludeString = "bb74c170-b06f-4d2b-ab88-2f6bf9ce8068";
var _epochStart = new Date(); var _epochStart = new Date();
_epochStart.setDate(_epochStart.getDate()-14); _epochStart.setDate(_epochStart.getDate() - 14);
var _epochEnd = new Date(_epochStart.getTime()+31*24*3600000); var _epochEnd = new Date(_epochStart.getTime() + 31 * 24 * 3600000);
var epocheSpan = [_epochStart, _epochEnd]; var epocheSpan = [_epochStart, _epochEnd];
function calculateOpeningHours(json) { function calculateOpeningHours(json) {
var jsonIncl = json[includeString]; var jsonIncl = json[includeString];
var jsonExcl = json[excludeString]; var jsonExcl = json[excludeString];
// console.log(jsonExcl);
// console.log(getOpeningHours(jsonExcl[0]));
var resultIncl = getIntervals(jsonIncl); var resultIncl = getIntervals(jsonIncl);
var resultExcl = getIntervals(jsonExcl); var resultExcl = getIntervals(jsonExcl);
var result = tmUtils.andNotOperator(resultIncl, resultExcl); var result = tmUtils.andNotOperator(resultIncl, resultExcl);
console.log(process.hrtime(time0));
console.log(result); console.log(result);
} }
function getHolidays(data) {
}
function getIntervals(json) { function getIntervals(json) {
var result = []; var result = [];
for (var key in json) { var holidays = [];
for(var key in json) {
var x = getOpeningHours(json[key]); var x = getOpeningHours(json[key]);
if (x) if(x)
result.push(x); result.push(x);
else {
x = getHolidays(json[key])
if(x)
holidays.push(x);
}
} }
return tmUtils.orOperator(result); return tmUtils.orOperator(result);
} }
function getDaySpan(dayoption) { function getDaySpan(dayoption) {
if (dayoption < 7) return [dayoption, dayoption]; if(dayoption < 7) return [dayoption, dayoption];
switch (dayoption) { switch(dayoption) {
case 7: case 7:
return [0, 0]; return [0, 0];
case 8: case 8:
...@@ -61,29 +69,29 @@ function parseTime(time) { ...@@ -61,29 +69,29 @@ function parseTime(time) {
} }
function parseDate(date, addOneDay) { function parseDate(date, addOneDay) {
if (date.length == 0) if(date.length == 0)
return null; return null;
var year = now.getFullYear(); var year = now.getFullYear();
var split = date.split("."); var split = date.split(".");
var month = parseInt(split[1])-1; var month = parseInt(split[1]) - 1;
var day = parseInt(split[0])+addOneDay ? 1 : 0; var day = parseInt(split[0]) + addOneDay ? 1 : 0;
return new Date(year, month, day); return new Date(year, month, day);
} }
function getOpeningHours(data) { function getOpeningHours(data) {
var dayoption = parseInt(data["dayoption"]["0"]);
var daySpan = getDaySpan(dayoption);
var option = data["option"]["0"]; var option = data["option"]["0"];
var dayoption = parseInt(data["dayoption"]["0"]);
var daySpan = getDaySpan(dayoption);
var startDate = parseDate(data["opening_day_from"]) || _epochStart; var startDate = parseDate(data["opening_day_from"]) || _epochStart;
var endDate = parseDate(data["opening_day_to"], true) || _epochEnd; var endDate = parseDate(data["opening_day_to"], true) || _epochEnd;
var dateSpan = [startDate, endDate]; var dateSpan = [startDate, endDate];
var timeSpan = [parseTime(data["opening_from"]), parseTime(data["opening_to"])]; var timeSpan = [parseTime(data["opening_from"]), parseTime(data["opening_to"])];
var result = {type: 0};
switch (option) { switch(option) {
case "default": case "default":
return tmUtils.standardFromTillDay(daySpan, timeSpan, epocheSpan, 7); return tmUtils.standardFromTillDay(daySpan, timeSpan, epocheSpan, 7);
case "season": case "season":
...@@ -91,22 +99,23 @@ function getOpeningHours(data) { ...@@ -91,22 +99,23 @@ function getOpeningHours(data) {
case "repeatable": case "repeatable":
var repeatOption = parseInt(data["repeatoption"]["0"]); var repeatOption = parseInt(data["repeatoption"]["0"]);
var noInMonth; var noInMonth;
if (repeatOption <= 4) noInMonth = repeatOption; if(repeatOption <= 4) noInMonth = repeatOption;
else if (repeatOption == 30) noInMonth = -1; else if(repeatOption == 30) noInMonth = -1;
if (noInMonth) if(noInMonth)
return tmUtils.cyclicFromTillDay(daySpan, noInMonth, timeSpan, dateSpan, epocheSpan); return tmUtils.cyclicFromTillDay(daySpan, noInMonth, timeSpan, dateSpan, epocheSpan);
switch (repeatOption) { switch(repeatOption) {
case 14: case 14:
case 21: case 21:
case 28: case 28:
return tmUtils.standardFromTillDay(daySpan, timeSpan, dateSpan, repeatOption); return tmUtils.standardFromTillDay(daySpan, timeSpan, dateSpan, repeatOption);
default: default:
throw "invalid repeat option"; console.error("invalid repeatoption");
} }
} }
// throw "invalid data";
} }
calculateOpeningHours(require('./testData/testHof.json')); calculateOpeningHours(require('./testData/testHof.json'));
\ No newline at end of file
...@@ -180,6 +180,14 @@ function _getNextNoInMonthOccurence(day, startDate, noInMonth) { ...@@ -180,6 +180,14 @@ function _getNextNoInMonthOccurence(day, startDate, noInMonth) {
return startDate; return startDate;
} }
/**
* return a timespan on one day, if not timespan is given,
* the whole day is returned
*
* @param date
* @param [timeSpan]
* @returns {*[]}
*/
function singleDay(date, timeSpan) { function singleDay(date, timeSpan) {
var startDate, endDate; var startDate, endDate;
if(timeSpan) { if(timeSpan) {
......
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