Commit 05b35c95 authored by Johannes Bill's avatar Johannes Bill

added days bucketing

parent 667cab34
......@@ -6,11 +6,12 @@ var holidaysGetter = new Holidays(now.getFullYear());
var includeString = "810a6deb-46f2-4fa8-b779-bb5c2a6b5577";
var excludeString = "bb74c170-b06f-4d2b-ab88-2f6bf9ce8068";
//var _epochStart = new Date(2014, 3, 0);
var _epochStart = new Date(2014, 0, 0);
//_epochStart.setDate(_epochStart.getDate() - 30);
//var _epochEnd = new Date(_epochStart.getTime() + 500 * 24 * 3600000);
var _epochEnd = new Date(2015, 0, 0);
var _epochStart = new Date();
_epochStart = new Date(_epochStart.getFullYear(), _epochStart.getMonth(), _epochStart.getDate());
//var _epochStart = new Date(2014, 0, 0);
_epochStart.setDate(_epochStart.getDate() - 30);
var _epochEnd = new Date(_epochStart.getTime() + 100 * 24 * 3600000);
//var _epochEnd = new Date(2015, 0, 0);
var epochSpan = [_epochStart, _epochEnd];
......@@ -23,19 +24,19 @@ function calculateOpeningHours(json) {
var holidayIncl = [];
var data, option, key;
for(key in jsonIncl) {
for (key in jsonIncl) {
data = jsonIncl[key];
option = getOption(data);
if(option == "holiday")
if (option == "holiday")
holidayIncl = holidayIncl.concat(getHolidays(data));
else if(option == "vacation") {
else if (option == "vacation") {
resultExcl.push(getOpeningHours(data, option));
}
else
resultIncl.push(getOpeningHours(data, option));
}
for(key in jsonExcl) {
for (key in jsonExcl) {
data = jsonExcl[key];
option = getOption(data);
resultExcl.push(getOpeningHours(data, option));
......@@ -51,8 +52,8 @@ function calculateOpeningHours(json) {
function getDaySpan(data) {
var dayoption = parseInt(data["dayoption"]["0"]);
if(dayoption < 7) return [dayoption, dayoption];
switch(dayoption) {
if (dayoption < 7) return [dayoption, dayoption];
switch (dayoption) {
case 7:
return [0, 0];
case 8:
......@@ -75,7 +76,7 @@ function parseTime(time) {
}
function parseDate(date, addOneDay) {
if(date.length == 0)
if (date.length == 0)
return null;
var year = now.getFullYear();
......@@ -88,7 +89,7 @@ function parseDate(date, addOneDay) {
function getHolidays(data) {
var option = data["option"]["0"];
if(option != "holiday") {
if (option != "holiday") {
console.error("data is no holiday");
console.error(data);
return null;
......@@ -98,7 +99,7 @@ function getHolidays(data) {
var holidayId = data["holidayoption"][0];
var days = holidaysGetter.getHoliday(holidayId);
var intervals = days.map(function(date) {
var intervals = days.map(function (date) {
return tmUtils.singleDay(date, timeSpan);
});
tmUtils.sort(intervals);
......@@ -107,7 +108,7 @@ function getHolidays(data) {
function getAllHolidays() {
var days = holidaysGetter.getHoliday(0);
var intervals = days.map(function(date) {
var intervals = days.map(function (date) {
return tmUtils.singleDay(date);
});
tmUtils.sort(intervals);
......@@ -131,7 +132,7 @@ function getOption(data) {
function getOpeningHours(data, option) {
option = option || getOption(data);
switch(option) {
switch (option) {
case "default":
return getOpeningHoursDefault(data);
case "season":
......@@ -171,12 +172,12 @@ function getOpeningHoursRepeatable(data) {
var repeatOption = parseInt(data["repeatoption"]["0"]);
var noInMonth;
if(repeatOption <= 4) noInMonth = repeatOption;
else if(repeatOption == 30) noInMonth = -1;
if(noInMonth)
if (repeatOption <= 4) noInMonth = repeatOption;
else if (repeatOption == 30) noInMonth = -1;
if (noInMonth)
return tmUtils.cyclicFromTillDay(daySpan, noInMonth, timeSpan, dateSpan, epochSpan);
else {
switch(repeatOption) {
switch (repeatOption) {
case 14:
case 21:
case 28:
......@@ -187,7 +188,62 @@ function getOpeningHoursRepeatable(data) {
}
}
//TODO falls intervall ueber mitternacht, muss davor getrennt werden
function bucketToDays(data) {
var result = [];
for (var i = 0; i < data.length; i++) {
var e = data[i];
if (current && current.date == e[0].toDateString()) {
current.time.push([e[0].toTimeString(), e[1].toTimeString()]);
}
else {
current = {
date: e[0].toDateString(),
time: [
[e[0].toTimeString(), e[1].toTimeString()]
]
};
result.push(current);
}
}
return result;
}
function daysBucket(data) {
var result = [];
var current;
for (var i = 0; i < data.length; i++) {
var e = data[i];
if(current && compareDay(current[0][0], e[0])) {
current.push([e[0], e[1]]);
}
else {
current = [[e[0], e[1]]];
result.push(current);
}
}
return result;
}
function compareDay(date1, date2) {
if(date1.getFullYear() != date2.getFullYear())
return false;
if(date1.getMonth() != date2.getMonth())
return false;
return date1.getDate() == date2.getDate();
}
module.exports.calculate = function(json) {
var res = calculateOpeningHours(json);
return daysBucket(res);
};
var data1 = calculateOpeningHours(require('./testData/testHof.json'));
//data1[0][0] = 0;
console.log(data1);
//console.log(data1);
var bData = daysBucket(data1);
console.log(JSON.stringify(bData));
tmUtils.validate(data1);
\ No newline at end of file
......@@ -90,7 +90,7 @@
"0": "default"
},
"dayoption": {
"0": "1"
"0": "8"
},
"repeatoption": {
"0": ""
......@@ -101,7 +101,7 @@
"opening_day_from": "",
"opening_day_to": "",
"opening_from": "09:00",
"opening_to": "18:00"
"opening_to": "17:00"
},
"1": {
"option": {
......
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