Commit a3741655 authored by Johannes Bill's avatar Johannes Bill

fixed issue with datespan

parent 7f3179af
......@@ -21,7 +21,7 @@ function wrapper(_epochSpan) {
if (!holidaysGetter[yr])
holidaysGetter[yr] = new Holidays(yr);
}
year = new Date(epochSpan[0].getTime()/2 + epochSpan[1].getTime()/2).getFullYear();
year = new Date(epochSpan[0].getTime() / 2 + epochSpan[1].getTime() / 2).getFullYear();
}
function parseJSON(json) {
......@@ -31,7 +31,7 @@ function wrapper(_epochSpan) {
res.excl = json[1];
res.maybe = json[2];
}
else if (json.incl){
else if (json.incl) {
res = json;
}
else {
......@@ -59,10 +59,10 @@ function wrapper(_epochSpan) {
var ret = {holidays: holidays};
ret.intervals = buildOpeningHours([json.incl, json.excl], holidayIntervals);
ret.maybeIntervals = [];
if(json.maybe) {
if (json.maybe) {
var maybeIntervals = buildOpeningHours([json.maybe], holidayIntervals);
ret.maybeIntervals = tmUtils.andNotOp(maybeIntervals, ret.intervals);
}
}
cb(null, ret);
}
......@@ -218,36 +218,28 @@ function wrapper(_epochSpan) {
var start = parseDate(data["opening_day_from"]);
var end = parseDate(data["opening_day_to"]);
if(!start) {
if (!start) {
return [epochSpan];
}
var startDate, endDate;
if(!end) {
if (!end) {
console.log('no endDate for dateSpan');
startDate = new Date(startYear, start[1] - 1, start[0]);
endDate = new Date(startYear + 2, start[1] - 1, start[0]);
return [[startDate, endDate]];
}
else {
var newYear = 0;
if(end[1] < start[1]) newYear = 1;
else if(end[1] == start[1] && end[0] < start[0]) newYear = 1;
var newYear = 0;
if (end[1] < start[1] || (end[1] == start[1] && end[0] < start[0])) newYear = 1;
startDate = new Date(startYear, start[1] - 1, start[0]);
endDate = new Date(startYear + newYear, end[1] - 1, end[0] + 1);
var dateSpanArray = [];
for (var offset = -1; offset <= 1; offset++) {
dateSpanArray.push([new Date(startYear + offset, start[1] - 1, start[0]),
new Date(startYear + offset + newYear, end[1] - 1, end[0] + 1)])
}
if(endDate < epochSpan[0]) {
startDate = new Date(startYear + 1, start[1] - 1, start[0]);
endDate = new Date(startYear + 1 + newYear, end[1] - 1, end[0] + 1);
}
else if(startDate > epochSpan[1]) {
startDate = new Date(startYear - 1, start[1] - 1, start[0]);
endDate = new Date(startYear - 1 + newYear, end[1] - 1, end[0] + 1);
}
return [startDate, endDate];
return dateSpanArray;
}
function getTimeSpan(data) {
......@@ -288,15 +280,19 @@ function wrapper(_epochSpan) {
var daySpan = getDaySpan(data);
var timeSpan = getTimeSpan(data);
var dateSpan = getDateSpan(data);
return tmUtils.standardFromTillDay(daySpan, timeSpan, dateSpan, epochSpan, 7);
return tmUtils.orOp(dateSpan.map(function (dateSpanElem) {
return tmUtils.standardFromTillDay(daySpan, timeSpan, dateSpanElem, epochSpan, 7);
}));
}
function getOpeningHoursVacation(data) {
if(data["opening_day_from"] == "" || data["opening_day_to"] == "") {
if (data["opening_day_from"] == "" || data["opening_day_to"] == "") {
console.error(new Error("opening_day cant be empty in vacations"));
}
var dateSpan = getDateSpan(data);
return tmUtils.dateSpan(dateSpan);
return tmUtils.orOp(dateSpan.map(function (dateSpanElem) {
return tmUtils.dateSpan(dateSpanElem);
}));
}
function getOpeningHoursRepeatable(data) {
......@@ -309,13 +305,17 @@ function wrapper(_epochSpan) {
if (repeatOption <= 4) noInMonth = repeatOption;
else if (repeatOption == 30) noInMonth = -1;
if (noInMonth)
return tmUtils.cyclicFromTillDay(daySpan, noInMonth, timeSpan, dateSpan, epochSpan);
return tmUtils.orOp(dateSpan.map(function (dateSpanElem) {
tmUtils.cyclicFromTillDay(daySpan, noInMonth, timeSpan, dateSpanElem, epochSpan);
}));
else {
switch (repeatOption) {
case 14:
case 21:
case 28:
return tmUtils.standardFromTillDay(daySpan, timeSpan, dateSpan, epochSpan, repeatOption);
return tmUtils.orOp(dateSpan.map(function (dateSpanElem) {
tmUtils.standardFromTillDay(daySpan, timeSpan, dateSpan, epochSpan, repeatOption);
}));
default:
throw new Error("invalid repeatoption");
}
......
......@@ -295,7 +295,13 @@ function createMonthView(dataObj, now, monthOffset) {
var startDate = new Date(now.getFullYear(), now.getMonth() + monthOffset, 1);
var monthDate = new Date(startDate);
startDate.setDate(2 - startDate.getDay());
if(startDate.getDay() === 0) {
startDate.setDate(-5);
}
else {
startDate.setDate(2 - startDate.getDay());
}
var endDate = new Date(now.getFullYear(), currentMonth + 1, 1);
if (endDate.getDay() != 1)
......
......@@ -192,4 +192,3 @@ module.exports.setTestHandler = function() {
};
};
//var hds = new Holidays(2014);
......@@ -20,7 +20,7 @@ module.exports.getData = function (now, cb) {
// dateArray.setEpocheSpan(epocheSpan);
// connection.query('SELECT name, elements FROM cms_zoo_item WHERE type in ("pos", "company") ORDER BY id', function (err, rows) {
connection.query('SELECT name, type, elements FROM cms_zoo_item WHERE id in (832)', function (err, rows) {
connection.query('SELECT name, type, elements FROM cms_zoo_item WHERE id in (4116)', function (err, rows) {
console.error(err);
console.log(rows.length);
var result = [];
......@@ -40,7 +40,7 @@ module.exports.getData = function (now, cb) {
dateArray(epocheSpan).getData(hours, plz, function (err, dataObj) {
console.log(dataObj);
if (err) {
console.log(name, err);
console.error(name, err.stack);
}
if (dataObj && (dataObj.intervals.length > 0 || dataObj.maybeIntervals.length > 0)) {
cnt++;
......
spezial oeffnungszeiten:
bayer manfred: id 864, mit string
1. prioritaet harte oeffnungszeiten
falls feiertag, hart nicht offen, weich offen -> geschlossen
falls weich feiertag explizit offen -> offen
wochenansicht:
falls 2 spalten und an manchen tagen nur eine offnungszeit, diese jenachdem, an welchem durchschnitt sie naeher
liegt entsprechend einordnen
......@@ -14,12 +8,8 @@ was passiert bei der zeitumstellung?
falls oeffnungszeit z.b. von 21:00 bis 4:00 muss bei 0:00 getrennt werden
saisonal,urlaub etc ueber neujahr? 23.12.2014 - 10.01.2015????
openNow auch nach absprache, nur mit json incl
evtl ical export
view asString: relative angaben: heute nicht geoeffnet, morgen|uebermorgen|in 3 tagen| in einer woche | in einem monat | in mehr als einem monat wieder geoffnet
falls im 3 monatszeitraum nicht geöffnet, für asString bis max 12 monate weitersuchen
\ No newline at end of file
falls im 3 monatszeitraum nicht geöffnet, für asString bis max 12 monate weitersuchen
problematik mit feiertag: leerer beutel bis 1 (25:00) geoffnet, wird von feiertag abgeschitten. loesung: 18:00 - 25:00 eingeben, falls enddatum grösser 24:00, nicht von feiertag abschneiden lassen
\ 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