Commit a3741655 authored by Johannes Bill's avatar Johannes Bill

fixed issue with datespan

parent 7f3179af
...@@ -21,7 +21,7 @@ function wrapper(_epochSpan) { ...@@ -21,7 +21,7 @@ function wrapper(_epochSpan) {
if (!holidaysGetter[yr]) if (!holidaysGetter[yr])
holidaysGetter[yr] = new Holidays(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) { function parseJSON(json) {
...@@ -31,7 +31,7 @@ function wrapper(_epochSpan) { ...@@ -31,7 +31,7 @@ function wrapper(_epochSpan) {
res.excl = json[1]; res.excl = json[1];
res.maybe = json[2]; res.maybe = json[2];
} }
else if (json.incl){ else if (json.incl) {
res = json; res = json;
} }
else { else {
...@@ -59,7 +59,7 @@ function wrapper(_epochSpan) { ...@@ -59,7 +59,7 @@ function wrapper(_epochSpan) {
var ret = {holidays: holidays}; var ret = {holidays: holidays};
ret.intervals = buildOpeningHours([json.incl, json.excl], holidayIntervals); ret.intervals = buildOpeningHours([json.incl, json.excl], holidayIntervals);
ret.maybeIntervals = []; ret.maybeIntervals = [];
if(json.maybe) { if (json.maybe) {
var maybeIntervals = buildOpeningHours([json.maybe], holidayIntervals); var maybeIntervals = buildOpeningHours([json.maybe], holidayIntervals);
ret.maybeIntervals = tmUtils.andNotOp(maybeIntervals, ret.intervals); ret.maybeIntervals = tmUtils.andNotOp(maybeIntervals, ret.intervals);
} }
...@@ -218,36 +218,28 @@ function wrapper(_epochSpan) { ...@@ -218,36 +218,28 @@ function wrapper(_epochSpan) {
var start = parseDate(data["opening_day_from"]); var start = parseDate(data["opening_day_from"]);
var end = parseDate(data["opening_day_to"]); var end = parseDate(data["opening_day_to"]);
if(!start) { if (!start) {
return [epochSpan]; return [epochSpan];
} }
var startDate, endDate; var startDate, endDate;
if(!end) { if (!end) {
console.log('no endDate for dateSpan');
startDate = new Date(startYear, start[1] - 1, start[0]); startDate = new Date(startYear, start[1] - 1, start[0]);
endDate = new Date(startYear + 2, start[1] - 1, start[0]); endDate = new Date(startYear + 2, start[1] - 1, start[0]);
return [[startDate, endDate]];
} }
else {
var newYear = 0; var newYear = 0;
if(end[1] < start[1]) newYear = 1; if (end[1] < start[1] || (end[1] == start[1] && end[0] < start[0])) newYear = 1;
else if(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);
}
if(endDate < epochSpan[0]) { var dateSpanArray = [];
startDate = new Date(startYear + 1, start[1] - 1, start[0]); for (var offset = -1; offset <= 1; offset++) {
endDate = new Date(startYear + 1 + newYear, end[1] - 1, end[0] + 1); dateSpanArray.push([new Date(startYear + offset, start[1] - 1, start[0]),
} new Date(startYear + offset + 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 dateSpanArray;
return [startDate, endDate];
} }
function getTimeSpan(data) { function getTimeSpan(data) {
...@@ -288,15 +280,19 @@ function wrapper(_epochSpan) { ...@@ -288,15 +280,19 @@ function wrapper(_epochSpan) {
var daySpan = getDaySpan(data); var daySpan = getDaySpan(data);
var timeSpan = getTimeSpan(data); var timeSpan = getTimeSpan(data);
var dateSpan = getDateSpan(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) { 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")); console.error(new Error("opening_day cant be empty in vacations"));
} }
var dateSpan = getDateSpan(data); var dateSpan = getDateSpan(data);
return tmUtils.dateSpan(dateSpan); return tmUtils.orOp(dateSpan.map(function (dateSpanElem) {
return tmUtils.dateSpan(dateSpanElem);
}));
} }
function getOpeningHoursRepeatable(data) { function getOpeningHoursRepeatable(data) {
...@@ -309,13 +305,17 @@ function wrapper(_epochSpan) { ...@@ -309,13 +305,17 @@ function wrapper(_epochSpan) {
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.orOp(dateSpan.map(function (dateSpanElem) {
tmUtils.cyclicFromTillDay(daySpan, noInMonth, timeSpan, dateSpanElem, epochSpan);
}));
else { else {
switch (repeatOption) { switch (repeatOption) {
case 14: case 14:
case 21: case 21:
case 28: 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: default:
throw new Error("invalid repeatoption"); throw new Error("invalid repeatoption");
} }
......
...@@ -295,7 +295,13 @@ function createMonthView(dataObj, now, monthOffset) { ...@@ -295,7 +295,13 @@ function createMonthView(dataObj, now, monthOffset) {
var startDate = new Date(now.getFullYear(), now.getMonth() + monthOffset, 1); var startDate = new Date(now.getFullYear(), now.getMonth() + monthOffset, 1);
var monthDate = new Date(startDate); var monthDate = new Date(startDate);
if(startDate.getDay() === 0) {
startDate.setDate(-5);
}
else {
startDate.setDate(2 - startDate.getDay()); startDate.setDate(2 - startDate.getDay());
}
var endDate = new Date(now.getFullYear(), currentMonth + 1, 1); var endDate = new Date(now.getFullYear(), currentMonth + 1, 1);
if (endDate.getDay() != 1) if (endDate.getDay() != 1)
......
...@@ -192,4 +192,3 @@ module.exports.setTestHandler = function() { ...@@ -192,4 +192,3 @@ module.exports.setTestHandler = function() {
}; };
}; };
//var hds = new Holidays(2014);
...@@ -20,7 +20,7 @@ module.exports.getData = function (now, cb) { ...@@ -20,7 +20,7 @@ module.exports.getData = function (now, cb) {
// dateArray.setEpocheSpan(epocheSpan); // 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, 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.error(err);
console.log(rows.length); console.log(rows.length);
var result = []; var result = [];
...@@ -40,7 +40,7 @@ module.exports.getData = function (now, cb) { ...@@ -40,7 +40,7 @@ module.exports.getData = function (now, cb) {
dateArray(epocheSpan).getData(hours, plz, function (err, dataObj) { dateArray(epocheSpan).getData(hours, plz, function (err, dataObj) {
console.log(dataObj); console.log(dataObj);
if (err) { if (err) {
console.log(name, err); console.error(name, err.stack);
} }
if (dataObj && (dataObj.intervals.length > 0 || dataObj.maybeIntervals.length > 0)) { if (dataObj && (dataObj.intervals.length > 0 || dataObj.maybeIntervals.length > 0)) {
cnt++; 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: wochenansicht:
falls 2 spalten und an manchen tagen nur eine offnungszeit, diese jenachdem, an welchem durchschnitt sie naeher falls 2 spalten und an manchen tagen nur eine offnungszeit, diese jenachdem, an welchem durchschnitt sie naeher
liegt entsprechend einordnen liegt entsprechend einordnen
...@@ -14,12 +8,8 @@ was passiert bei der zeitumstellung? ...@@ -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 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 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 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