Commit 611f1301 authored by Johannes Bill's avatar Johannes Bill

added datespan option, splitted dates over midnight

parent 73889a29
...@@ -119,6 +119,8 @@ function wrapper(_epochSpan) { ...@@ -119,6 +119,8 @@ function wrapper(_epochSpan) {
if (jsonExcl) if (jsonExcl)
result = tmUtils.andNotOp(resultIncl, resultExcl); result = tmUtils.andNotOp(resultIncl, resultExcl);
//result = tmUtils.splitMidnight(result);
return result; return result;
} }
...@@ -258,6 +260,8 @@ function wrapper(_epochSpan) { ...@@ -258,6 +260,8 @@ function wrapper(_epochSpan) {
return getOpeningHoursRepeatable(data); return getOpeningHoursRepeatable(data);
case "vacation": case "vacation":
return getOpeningHoursVacation(data); return getOpeningHoursVacation(data);
case "datespan":
return getOpeningHoursDatespan(data);
case "": case "":
return []; return [];
default: default:
...@@ -281,6 +285,17 @@ function wrapper(_epochSpan) { ...@@ -281,6 +285,17 @@ function wrapper(_epochSpan) {
})); }));
} }
function getOpeningHoursDatespan(data) {
var from = new Date(data['opening_date_from']);
var to = new Date(data['opening_date_to']);
if(!from || !to) {
console.error(new Error('invalid data for datespan option ' + JSON.stringify(data)))
}
else {
return [[from, to]];
}
}
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 moment = require('moment'); var moment = require('moment');
var tmUtils = require('./timeUtils');
var maybeString = "nach Absprache geöffnet"; var maybeString = "nach Absprache geöffnet";
var andMaybeString = "und nach Absprache geöffnet"; var andMaybeString = "und nach Absprache geöffnet";
//var maybeString = "nag"; //var maybeString = "nag";
...@@ -489,6 +489,10 @@ function weekViewData(dataObj, now) { ...@@ -489,6 +489,10 @@ function weekViewData(dataObj, now) {
} }
function transformData(dataObj, startDate, endDate) { function transformData(dataObj, startDate, endDate) {
dataObj.intervals = tmUtils.splitMidnight(dataObj.intervals);
dataObj.maybeIntervals = tmUtils.splitMidnight(dataObj.maybeIntervals);
var data = dataObj.intervals.map(function (e) { var data = dataObj.intervals.map(function (e) {
return e; return e;
/* return { /* return {
...@@ -555,7 +559,6 @@ function transformData(dataObj, startDate, endDate) { ...@@ -555,7 +559,6 @@ function transformData(dataObj, startDate, endDate) {
var isHoliday = false; var isHoliday = false;
while (holidayIdx < holidays.length) { while (holidayIdx < holidays.length) {
var comp = compareDate(holidays[holidayIdx], curDate); var comp = compareDate(holidays[holidayIdx], curDate);
//TODO: split midnight
if (comp < 0) if (comp < 0)
holidayIdx++; holidayIdx++;
else if (comp == 0) { else if (comp == 0) {
......
"use strict";
var assert = require('assert'); var assert = require('assert');
var moment = require('moment');
function compareTimeSpan(timeSpan) { function compareTimeSpan(timeSpan) {
var from = timeSpan[0]; var from = timeSpan[0];
...@@ -307,6 +310,31 @@ function validate(interval) { ...@@ -307,6 +310,31 @@ function validate(interval) {
} }
} }
function splitSingleInterval(interval) {
var res = [];
var from = new Date(interval[0]);
var to = new Date(interval[1]);
var endOfDay = new Date(from.getFullYear(), from.getMonth(), from.getDate() + 1);
while(endOfDay < to) {
res.push([from, endOfDay]);
from = endOfDay;
endOfDay = new Date(from.getFullYear(), from.getMonth(), from.getDate() + 1);
}
res.push([from, to]);
return res;
}
function splitMidnight(intervals) {
var res = [];
for (let interval of intervals) {
var subRes = splitSingleInterval(interval);
for (let sub of subRes) {
res.push(sub);
}
}
return res;
}
module.exports.standardFromTillDay = standardFromTillDay; module.exports.standardFromTillDay = standardFromTillDay;
module.exports.cyclicFromTillDay = cyclicFromTillDay; module.exports.cyclicFromTillDay = cyclicFromTillDay;
module.exports.singleDay = singleDay; module.exports.singleDay = singleDay;
...@@ -317,3 +345,4 @@ module.exports.mergeOverlaps = mergeOverlaps; ...@@ -317,3 +345,4 @@ module.exports.mergeOverlaps = mergeOverlaps;
module.exports.sort = sort; module.exports.sort = sort;
module.exports.dateSpan = dateSpan; module.exports.dateSpan = dateSpan;
module.exports.validate = validate; module.exports.validate = validate;
module.exports.splitMidnight = splitMidnight;
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