Commit ac7d743e authored by Johannes Bill's avatar Johannes Bill

fixed error with mo-mo

parent f14c708e
......@@ -137,7 +137,7 @@ function wrapper(_epochSpan) {
case 7:
return [0, 0];
case 8:
return [0, 7];
return [1, 7];
case 9:
return [1, 5];
case 10:
......
......@@ -3,14 +3,14 @@ var assert = require('assert');
function compareTimeSpan(timeSpan) {
var from = timeSpan[0];
var till = timeSpan[1];
if(from.h == till.h)
if (from.h == till.h)
return from.m - till.m;
else
return from.h - till.h
}
function transformTimeSpan(timeSpan) {
if(compareTimeSpan(timeSpan) >= 0) {
if (compareTimeSpan(timeSpan) >= 0) {
timeSpan[1].h += 24;
}
return timeSpan;
......@@ -26,12 +26,12 @@ function transformTimeSpan(timeSpan) {
//}
function _cyclicInterval(from, until, distanceDays, epochStart, epochEnd) {
if(from.getTime() >= until.getTime()) throw new Error("startDate cant be greater than endDate");
if (from.getTime() >= until.getTime()) throw new Error("startDate cant be greater than endDate");
var resultArray = [];
from = new Date(from);
until = new Date(until);
while(until.getTime() <= epochEnd.getTime()) {
while (until.getTime() <= epochEnd.getTime()) {
resultArray.push([new Date(from), new Date(until)]);
from.setDate(from.getDate() + distanceDays);
until.setDate(until.getDate() + distanceDays);
......@@ -41,11 +41,11 @@ function _cyclicInterval(from, until, distanceDays, epochStart, epochEnd) {
function _standard(day, timeFrom, timeUntil, startDate, endDate, distanceDays) {
var dayDiff = day - startDate.getDay();
if(dayDiff < 0)
dayDiff += 7;
if(dayDiff > 0) dayDiff -= 7;
var date0 = new Date(startDate.getFullYear(), startDate.getMonth(),
startDate.getDate() + dayDiff, timeFrom.h, timeFrom.m);
var date1 = new Date(startDate.getFullYear(), startDate.getMonth(),
startDate.getDate() + dayDiff, timeUntil.h, timeUntil.m);
......@@ -53,6 +53,9 @@ function _standard(day, timeFrom, timeUntil, startDate, endDate, distanceDays) {
}
function standardFromTillDay(daySpan, timeSpan, dateSpan, epochSpan, daysDistance) {
if(dateSpan[0] > epochSpan[1] || dateSpan[1] < epochSpan[0]) {
return [];
}
timeSpan = transformTimeSpan(timeSpan);
var dayFrom = daySpan[0];
var dayTo = daySpan[1];
......@@ -63,23 +66,24 @@ function standardFromTillDay(daySpan, timeSpan, dateSpan, epochSpan, daysDistanc
var firstDays = _standard(dayFrom, timeFrom, timeUntil, epochStart, epochEnd, daysDistance);
var result = firstDays.slice();
for(var offset = 1; offset <= dayTo - dayFrom; offset++) {
for(var i = 0; i < firstDays.length; i++) {
for (var offset = 1; offset <= dayTo - dayFrom; offset++) {
for (var i = 0; i < firstDays.length; i++) {
var start = new Date(firstDays[i][0]);
var end = new Date(firstDays[i][1]);
start.setDate(start.getDate() + offset);
end.setDate(end.getDate() + offset);
if(end.getTime() <= epochEnd.getTime())
if (end.getTime() <= epochEnd.getTime())
result.push([start, end]);
}
}
result = sort(result);
result = andOp(result, [dateSpan]);
result = andOp(result, [epochSpan]);
return result;
}
function cyclicFromTillDay(daySpan, noInMonth, timeSpan, dateSpan, epochSpan) {
if(!epochSpan)
if (!epochSpan)
epochSpan = dateSpan;
timeSpan = transformTimeSpan(timeSpan);
......@@ -91,8 +95,8 @@ function cyclicFromTillDay(daySpan, noInMonth, timeSpan, dateSpan, epochSpan) {
var endDate = dateSpan[1];
//limit dateSpan to epochSpan, to reduce costs
if(endDate.getTime() > epochSpan[1].getTime()) endDate = epochSpan[1];
if(startDate.getTime() < epochSpan[0].getTime()) {
if (endDate.getTime() > epochSpan[1].getTime()) endDate = epochSpan[1];
if (startDate.getTime() < epochSpan[0].getTime()) {
var t = epochSpan[0];
//substract 1 month to cover special cases
startDate = new Date(t.getFullYear(), t.getMonth() - 1, t.getDate())
......@@ -101,25 +105,25 @@ function cyclicFromTillDay(daySpan, noInMonth, timeSpan, dateSpan, epochSpan) {
var result = [];
startDate = new Date(startDate);
while(true) {
while (true) {
var date0 = _getNextNoInMonthOccurence(dayFrom, startDate, noInMonth);
date0.setHours(timeFrom.h);
date0.setMinutes(timeFrom.m);
var date1 = new Date(date0);
date1.setHours(timeUntil.h);
date1.setMinutes(timeUntil.m);
if(date1.getTime() > endDate.getTime())
if (date1.getTime() > endDate.getTime())
break;
else {
result.push([date0, date1]);
startDate = new Date(date1);
startDate.setDate(startDate.getDate() + 1);
for(var offset = 1; offset <= dayTo - dayFrom; offset++) {
for (var offset = 1; offset <= dayTo - dayFrom; offset++) {
date0 = new Date(date0);
date1 = new Date(date1);
date0.setDate(date0.getDate() + 1);
date1.setDate(date1.getDate() + 1);
if(date1.getTime() <= endDate.getTime())
if (date1.getTime() <= endDate.getTime())
result.push([date0, date1]);
else break;
}
......@@ -134,7 +138,7 @@ function _getNextNoInMonthOccurence(day, startDate, noInMonth) {
startDate = new Date(startDate);
var _noInMonth;
if(noInMonth == -1) {
if (noInMonth == -1) {
_noInMonth = 1;
startDate.setDate(startDate.getDate() + 7);
}
......@@ -143,16 +147,16 @@ function _getNextNoInMonthOccurence(day, startDate, noInMonth) {
}
var dayDiff = day - startDate.getDay();
if(dayDiff < 0) dayDiff += 7;
if (dayDiff < 0) dayDiff += 7;
startDate.setDate(startDate.getDate() + dayDiff);
var currentNoInMonth = Math.ceil(startDate.getDate() / 7);
while(currentNoInMonth != _noInMonth) {
while (currentNoInMonth != _noInMonth) {
startDate = new Date(startDate.getTime() + 7 * 24 * 3600000);
currentNoInMonth = Math.ceil(startDate.getDate() / 7);
}
if(noInMonth == -1) {
if (noInMonth == -1) {
startDate.setDate(startDate.getDate() - 7);
}
return startDate;
......@@ -168,7 +172,7 @@ function _getNextNoInMonthOccurence(day, startDate, noInMonth) {
*/
function singleDay(date, timeSpan) {
var startDate, endDate;
if(timeSpan) {
if (timeSpan) {
timeSpan = transformTimeSpan(timeSpan);
startDate = new Date(date.getFullYear(), date.getMonth(), date.getDate(), timeSpan[0].h, timeSpan[0].m);
endDate = new Date(date.getFullYear(), date.getMonth(), date.getDate(), timeSpan[1].h, timeSpan[1].m);
......@@ -193,7 +197,7 @@ function dateSpan(dateSpan) {
function orOp(intervals) {
var result = [];
for(var i = 0; i < intervals.length; i++) {
for (var i = 0; i < intervals.length; i++) {
result = result.concat(intervals[i]);
}
sort(result);
......@@ -202,7 +206,7 @@ function orOp(intervals) {
}
function sort(intervals) {
intervals.sort(function(a, b) {
intervals.sort(function (a, b) {
return a[0].getTime() - b[0].getTime();
});
return intervals;
......@@ -210,11 +214,11 @@ function sort(intervals) {
function mergeOverlaps(interval) {
var i = 0;
while(i < interval.length - 1) {
while (i < interval.length - 1) {
var endFirst = interval[i][1];
var startSecond = interval[i + 1][0];
var endSecond = interval[i + 1][1];
if(endFirst.getTime() >= startSecond.getTime()) {
if (endFirst.getTime() >= startSecond.getTime()) {
interval.splice(i + 1, 1);
interval[i][1] = new Date(Math.max(endFirst, endSecond));
}
......@@ -228,23 +232,23 @@ function andOp(interval1, interval2) {
var i = 0;
var j = 0;
while(i < interval1.length && j < interval2.length) {
while (i < interval1.length && j < interval2.length) {
var start1 = interval1[i][0];
var end1 = interval1[i][1];
var start2 = interval2[j][0];
var end2 = interval2[j][1];
//no overlap
if(end2.getTime() <= start1.getTime())
if (end2.getTime() <= start1.getTime())
j++;
else if(end1.getTime() <= start2.getTime())
else if (end1.getTime() <= start2.getTime())
i++;
//overlap
else {
var newStart;
var newEnd;
if(end2.getTime() <= end1.getTime()) {
if (end2.getTime() <= end1.getTime()) {
j++;
newEnd = end2;
}
......@@ -262,13 +266,13 @@ function andOp(interval1, interval2) {
function invert(interval, epochStart, epochEnd) {
var result = [];
var start = epochStart;
for(var i = 0; i < interval.length; i++) {
for (var i = 0; i < interval.length; i++) {
var end = interval[i][0];
if(start.getTime() < end.getTime())
if (start.getTime() < end.getTime())
result.push([start, end]);
start = interval[i][1];
}
if(start.getTime() < epochEnd.getTime())
if (start.getTime() < epochEnd.getTime())
result.push([start, epochEnd]);
return result;
}
......@@ -279,10 +283,10 @@ function invert(interval, epochStart, epochEnd) {
* @returns Array{dateInterval}
*/
function andNotOp(interval1, interval2) {
if(!(interval1 && interval1[0] && interval1[0][0])) {
if (!(interval1 && interval1[0] && interval1[0][0])) {
return [];
}
if(!(interval2 && interval2[0] && interval2[0][0])) {
if (!(interval2 && interval2[0] && interval2[0][0])) {
return interval1;
}
......
......@@ -19,7 +19,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, elements FROM cms_zoo_item WHERE id in (864)', function (err, rows) {
connection.query('SELECT name, elements FROM cms_zoo_item WHERE id in (2513)', function (err, rows) {
console.error(err);
console.log(rows.length);
var result = [];
......
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