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