Commit aeca4ffa authored by Johannes Bill's avatar Johannes Bill

implemented test with database data

parent 1509eb46
......@@ -14,11 +14,20 @@ var _epochEnd = new Date(_epochStart.getTime() + 130 * 24 * 3600000);
//var _epochEnd = new Date(2015, 0, 0);
var epochSpan = [_epochStart, _epochEnd];
function setEpocheSpan(startDate, endDate) {
epochSpan[0] = startDate;
epochSpan[1] = endDate;
}
function calculateOpeningHours(json) {
var jsonIncl = json[includeString];
var jsonExcl = json[excludeString];
if (!jsonIncl) {
throw 'no openinghours model found';
return [];
}
var resultIncl = [];
var resultExcl = [];
var holidayIncl = [];
......@@ -30,24 +39,31 @@ function calculateOpeningHours(json) {
if (option == "holiday")
holidayIncl = holidayIncl.concat(getHolidays(data));
else if (option == "vacation") {
resultExcl.push(getOpeningHours(data, option));
// resultExcl.push(getOpeningHours(data, option));
}
else
resultIncl.push(getOpeningHours(data, option));
}
if (jsonExcl) {
for (key in jsonExcl) {
data = jsonExcl[key];
option = getOption(data);
resultExcl.push(getOpeningHours(data, option));
}
resultExcl = tmUtils.orOperator(resultExcl);
}
var allHolidays = getAllHolidays();
resultIncl = tmUtils.orOperator(resultIncl);
resultIncl = tmUtils.andNotOperator(resultIncl, allHolidays);
resultIncl = tmUtils.orOperator([resultIncl, holidayIncl]);
return tmUtils.andNotOperator(resultIncl, resultExcl);
var result = resultIncl;
if (jsonExcl)
result = tmUtils.andNotOperator(resultIncl, resultExcl);
return result;
}
function getDaySpan(data) {
......@@ -63,7 +79,8 @@ function getDaySpan(data) {
case 10:
return [1, 6];
default:
console.error("Invalid day option");
throw "Invalid day option: " + dayoption;
return [];
}
}
......@@ -90,8 +107,7 @@ function parseDate(date, addOneDay) {
function getHolidays(data) {
var option = data["option"]["0"];
if (option != "holiday") {
console.error("data is no holiday");
console.error(data);
throw 'not holiday: ' + option;
return null;
}
......@@ -141,8 +157,10 @@ function getOpeningHours(data, option) {
return getOpeningHoursRepeatable(data);
case "vacation":
return getOpeningHoursVacation(data);
case "":
return [];
default:
console.error("option %s not supported", option);
throw "option not supported: " + option;
return [];
}
}
......@@ -183,13 +201,15 @@ function getOpeningHoursRepeatable(data) {
case 28:
return tmUtils.standardFromTillDay(daySpan, timeSpan, dateSpan, epochSpan, repeatOption);
default:
console.error("invalid repeatoption");
throw "invalid repeatoption";
}
}
}
module.exports.getData = function(json) {
module.exports.getData = function (json) {
return calculateOpeningHours(json);
};
module.exports.setEpocheSpan = setEpocheSpan;
var dateArray = require('./dateArray');
var moment = require('moment');
moment.lang("de");
function createWeekView(data, now) {
var noOfDays = 7;
var offset = 3;
var startDate = new Date(now.getFullYear(), now.getMonth(), now.getDate() - offset);
var endDate = new Date(now.getFullYear(), now.getMonth(), now.getDate() + noOfDays - offset);
var oHours = getDataFromTo(data, startDate, endDate);
var oHours = transformData(data, startDate, endDate);
var maxNumber = getMaxNoOfItemsPerDay(oHours);
var tableWidth = 2 * maxNumber;
var content = '<table class="weekview-table>"';
var content = '<div class="weekview-container"><table class="weekview-table">';
content += '<tbody>';
for(var i = 0; i < noOfDays; i++) {
......@@ -29,7 +33,7 @@ function createWeekView(data, now) {
}
content += '</tbody>';
content += '</table>';
content += '</table></div>';
return content;
}
......@@ -44,7 +48,7 @@ function createMonthView(data, now, monthOffset) {
if(endDate.getDay() != 1)
endDate.setDate(9 - endDate.getDay());
var oHours = getDataFromTo(data, startDate, endDate);
var oHours = transformData(data, startDate, endDate);
var content = '<div class="monthview-maindiv">';
content += '<div class="monthview-month">' + moment(monthDate).format("MMMM") + '</div>';
......@@ -119,7 +123,7 @@ function formatTime(date) {
return moment(date).format("HH:mm");
}
function getDataFromTo(data, startDate, endDate) {
function transformData(data, startDate, endDate) {
var dataIdx = 0;
var result = [];
var curDate = new Date(startDate);
......@@ -153,17 +157,15 @@ function compareDate(date1, date2) {
return diff;
}
moment.lang("de");
var jsonInput = require('./jsonInput');
var fs = require('fs');
var data = jsonInput.getData(require('./../testData/testHof.json'));
var data = dateArray.getData(require('./../testData/testHof.json'));
console.log(data);
var weekView = create3MonthView(data, new Date(), 0);
var view = create3MonthView(data, new Date(), 0);
view += createWeekView(data, new Date());
console.log();
fs.writeFile(process.env["HOME"] + '/Desktop/bla.html', weekView, function(err) {
console.log(err);
fs.writeFile(process.env["HOME"] + '/Desktop/bla.html', view, function(err) {
if(err) console.log(err);
else console.log("file saved");
});
\ No newline at end of file
console.log(moment.weekdaysMin());
\ No newline at end of file
......@@ -306,6 +306,13 @@ function invert(interval, epochStart, epochEnd) {
* @returns {*}
*/
function andNotOperator(interval1, interval2) {
if(!(interval1 && interval1[0] && interval1[0][0])) {
return [];
}
if(!(interval2 && interval2[0] && interval2[0][0])) {
return interval1;
}
var epochStart = new Date(Math.min(interval1[0][0], interval2[0][0]));
var epochEnd = new Date(Math.max(interval1[interval1.length - 1][1], interval2[interval2.length - 1][1]));
......
......@@ -3,12 +3,12 @@
"version": "0.0.0",
"main": "holidays.js",
"dependencies": {
"express": "^4.4.5",
"moment": "^2.7.0"
},
"devDependencies": {
"chai": "^1.9.1",
"node-mysql": "^0.3.7"
"mysql": "*",
"express": "*"
},
"author": "",
"license": "ISC",
......
var mysql = require('mysql');
var dateArray = require('../lib/dateArray');
var fs = require('fs');
var includeString = "810a6deb-46f2-4fa8-b779-bb5c2a6b5577";
var excludeString = "bb74c170-b06f-4d2b-ab88-2f6bf9ce8068";
var connection = mysql.createConnection({
host: 'localhost',
user: 'root',
password: 'bla',
database: 'regiostart'
});
connection.connect();
connection.query('SELECT name, elements FROM cms_zoo_item WHERE type = "company"', function(err, rows) {
var cntGood = 0;
var cntBad = 0;
for (var i = 0; i < rows.length; i++) {
var json = rows[i].elements;
var obj = JSON.parse(json);
var name = rows[i].name;
try{
var result = dateArray.getData(obj);
}
catch(err)
{
console.log(err, name);
var result = [];
fs.writeFileSync(process.env["HOME"] + '/Desktop/invalid/' + name + '.json', json);
}
if(result.length > 0) {
// console.log(name);
// console.log(JSON.stringify(result));
cntGood++;
}
else {
cntBad++;
}
}
console.log(cntGood, cntBad);
});
connection.end();
\ No newline at end of file
......@@ -9,17 +9,33 @@ falls oeffnungszeit z.b. von 21:00 bis 4:00 muss bei 0:00 getrennt werden
Funktionen:
openNow(json, now, gemeindezeugs, lang, asString)
openNow(json, now, regionalCode, lang, asString)
asString=1
asString
Falls geoffnet:
<WochenTag>, jetzt bis <UhrZeit> geoeffnet.
Falls nicht geoffnet:
Am <WochenTag> nicht geoffnet. Wieder geoeffnet am <WochendTag, Datum> ab <UhrZeit>.
asString=0
asLiteral
{
open: true|false,
date: bis|ab
}
asIndexJson
0 { opening-from:
opening-to:
opening-day:}
1 { .... }
...
asIndex
Array(day => ""
open => ""
close => "")
openingHoursView(json, now, regionalCode, lang)
-->html string
\ 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