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) {
if (jsonExcl)
result = tmUtils.andNotOp(resultIncl, resultExcl);
//result = tmUtils.splitMidnight(result);
return result;
}
......@@ -258,6 +260,8 @@ function wrapper(_epochSpan) {
return getOpeningHoursRepeatable(data);
case "vacation":
return getOpeningHoursVacation(data);
case "datespan":
return getOpeningHoursDatespan(data);
case "":
return [];
default:
......@@ -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) {
if (data["opening_day_from"] == "" || data["opening_day_to"] == "") {
console.error(new Error("opening_day cant be empty in vacations"));
......
var moment = require('moment');
var tmUtils = require('./timeUtils');
var maybeString = "nach Absprache geöffnet";
var andMaybeString = "und nach Absprache geöffnet";
//var maybeString = "nag";
......@@ -489,6 +489,10 @@ function weekViewData(dataObj, now) {
}
function transformData(dataObj, startDate, endDate) {
dataObj.intervals = tmUtils.splitMidnight(dataObj.intervals);
dataObj.maybeIntervals = tmUtils.splitMidnight(dataObj.maybeIntervals);
var data = dataObj.intervals.map(function (e) {
return e;
/* return {
......@@ -555,7 +559,6 @@ function transformData(dataObj, startDate, endDate) {
var isHoliday = false;
while (holidayIdx < holidays.length) {
var comp = compareDate(holidays[holidayIdx], curDate);
//TODO: split midnight
if (comp < 0)
holidayIdx++;
else if (comp == 0) {
......
"use strict";
var assert = require('assert');
var moment = require('moment');
function compareTimeSpan(timeSpan) {
var from = timeSpan[0];
......@@ -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.cyclicFromTillDay = cyclicFromTillDay;
module.exports.singleDay = singleDay;
......@@ -317,3 +345,4 @@ module.exports.mergeOverlaps = mergeOverlaps;
module.exports.sort = sort;
module.exports.dateSpan = dateSpan;
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