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); ...@@ -14,11 +14,20 @@ var _epochEnd = new Date(_epochStart.getTime() + 130 * 24 * 3600000);
//var _epochEnd = new Date(2015, 0, 0); //var _epochEnd = new Date(2015, 0, 0);
var epochSpan = [_epochStart, _epochEnd]; var epochSpan = [_epochStart, _epochEnd];
function setEpocheSpan(startDate, endDate) {
epochSpan[0] = startDate;
epochSpan[1] = endDate;
}
function calculateOpeningHours(json) { function calculateOpeningHours(json) {
var jsonIncl = json[includeString]; var jsonIncl = json[includeString];
var jsonExcl = json[excludeString]; var jsonExcl = json[excludeString];
if (!jsonIncl) {
throw 'no openinghours model found';
return [];
}
var resultIncl = []; var resultIncl = [];
var resultExcl = []; var resultExcl = [];
var holidayIncl = []; var holidayIncl = [];
...@@ -30,24 +39,31 @@ function calculateOpeningHours(json) { ...@@ -30,24 +39,31 @@ function calculateOpeningHours(json) {
if (option == "holiday") if (option == "holiday")
holidayIncl = holidayIncl.concat(getHolidays(data)); holidayIncl = holidayIncl.concat(getHolidays(data));
else if (option == "vacation") { else if (option == "vacation") {
resultExcl.push(getOpeningHours(data, option)); // resultExcl.push(getOpeningHours(data, option));
} }
else else
resultIncl.push(getOpeningHours(data, option)); resultIncl.push(getOpeningHours(data, option));
} }
if (jsonExcl) {
for (key in jsonExcl) { for (key in jsonExcl) {
data = jsonExcl[key]; data = jsonExcl[key];
option = getOption(data); option = getOption(data);
resultExcl.push(getOpeningHours(data, option)); resultExcl.push(getOpeningHours(data, option));
} }
resultExcl = tmUtils.orOperator(resultExcl); resultExcl = tmUtils.orOperator(resultExcl);
}
var allHolidays = getAllHolidays(); var allHolidays = getAllHolidays();
resultIncl = tmUtils.orOperator(resultIncl); resultIncl = tmUtils.orOperator(resultIncl);
resultIncl = tmUtils.andNotOperator(resultIncl, allHolidays); resultIncl = tmUtils.andNotOperator(resultIncl, allHolidays);
resultIncl = tmUtils.orOperator([resultIncl, holidayIncl]); 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) { function getDaySpan(data) {
...@@ -63,7 +79,8 @@ function getDaySpan(data) { ...@@ -63,7 +79,8 @@ function getDaySpan(data) {
case 10: case 10:
return [1, 6]; return [1, 6];
default: default:
console.error("Invalid day option"); throw "Invalid day option: " + dayoption;
return [];
} }
} }
...@@ -90,8 +107,7 @@ function parseDate(date, addOneDay) { ...@@ -90,8 +107,7 @@ function parseDate(date, addOneDay) {
function getHolidays(data) { function getHolidays(data) {
var option = data["option"]["0"]; var option = data["option"]["0"];
if (option != "holiday") { if (option != "holiday") {
console.error("data is no holiday"); throw 'not holiday: ' + option;
console.error(data);
return null; return null;
} }
...@@ -141,8 +157,10 @@ function getOpeningHours(data, option) { ...@@ -141,8 +157,10 @@ function getOpeningHours(data, option) {
return getOpeningHoursRepeatable(data); return getOpeningHoursRepeatable(data);
case "vacation": case "vacation":
return getOpeningHoursVacation(data); return getOpeningHoursVacation(data);
case "":
return [];
default: default:
console.error("option %s not supported", option); throw "option not supported: " + option;
return []; return [];
} }
} }
...@@ -183,13 +201,15 @@ function getOpeningHoursRepeatable(data) { ...@@ -183,13 +201,15 @@ function getOpeningHoursRepeatable(data) {
case 28: case 28:
return tmUtils.standardFromTillDay(daySpan, timeSpan, dateSpan, epochSpan, repeatOption); return tmUtils.standardFromTillDay(daySpan, timeSpan, dateSpan, epochSpan, repeatOption);
default: default:
console.error("invalid repeatoption"); throw "invalid repeatoption";
} }
} }
} }
module.exports.getData = function(json) { module.exports.getData = function (json) {
return calculateOpeningHours(json); return calculateOpeningHours(json);
}; };
module.exports.setEpocheSpan = setEpocheSpan;
var dateArray = require('./dateArray');
var moment = require('moment'); var moment = require('moment');
moment.lang("de");
function createWeekView(data, now) { function createWeekView(data, now) {
var noOfDays = 7; var noOfDays = 7;
var offset = 3; var offset = 3;
var startDate = new Date(now.getFullYear(), now.getMonth(), now.getDate() - offset); var startDate = new Date(now.getFullYear(), now.getMonth(), now.getDate() - offset);
var endDate = new Date(now.getFullYear(), now.getMonth(), now.getDate() + noOfDays - 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 maxNumber = getMaxNoOfItemsPerDay(oHours);
var tableWidth = 2 * maxNumber; var tableWidth = 2 * maxNumber;
var content = '<table class="weekview-table>"'; var content = '<div class="weekview-container"><table class="weekview-table">';
content += '<tbody>'; content += '<tbody>';
for(var i = 0; i < noOfDays; i++) { for(var i = 0; i < noOfDays; i++) {
...@@ -29,7 +33,7 @@ function createWeekView(data, now) { ...@@ -29,7 +33,7 @@ function createWeekView(data, now) {
} }
content += '</tbody>'; content += '</tbody>';
content += '</table>'; content += '</table></div>';
return content; return content;
} }
...@@ -44,7 +48,7 @@ function createMonthView(data, now, monthOffset) { ...@@ -44,7 +48,7 @@ function createMonthView(data, now, monthOffset) {
if(endDate.getDay() != 1) if(endDate.getDay() != 1)
endDate.setDate(9 - endDate.getDay()); endDate.setDate(9 - endDate.getDay());
var oHours = getDataFromTo(data, startDate, endDate); var oHours = transformData(data, startDate, endDate);
var content = '<div class="monthview-maindiv">'; var content = '<div class="monthview-maindiv">';
content += '<div class="monthview-month">' + moment(monthDate).format("MMMM") + '</div>'; content += '<div class="monthview-month">' + moment(monthDate).format("MMMM") + '</div>';
...@@ -119,7 +123,7 @@ function formatTime(date) { ...@@ -119,7 +123,7 @@ function formatTime(date) {
return moment(date).format("HH:mm"); return moment(date).format("HH:mm");
} }
function getDataFromTo(data, startDate, endDate) { function transformData(data, startDate, endDate) {
var dataIdx = 0; var dataIdx = 0;
var result = []; var result = [];
var curDate = new Date(startDate); var curDate = new Date(startDate);
...@@ -153,17 +157,15 @@ function compareDate(date1, date2) { ...@@ -153,17 +157,15 @@ function compareDate(date1, date2) {
return diff; return diff;
} }
moment.lang("de");
var jsonInput = require('./jsonInput');
var fs = require('fs'); var fs = require('fs');
var data = jsonInput.getData(require('./../testData/testHof.json')); var data = dateArray.getData(require('./../testData/testHof.json'));
console.log(data); console.log(data);
var weekView = create3MonthView(data, new Date(), 0); var view = create3MonthView(data, new Date(), 0);
view += createWeekView(data, new Date());
console.log(); 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) { ...@@ -306,6 +306,13 @@ function invert(interval, epochStart, epochEnd) {
* @returns {*} * @returns {*}
*/ */
function andNotOperator(interval1, interval2) { 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 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])); var epochEnd = new Date(Math.max(interval1[interval1.length - 1][1], interval2[interval2.length - 1][1]));
......
...@@ -3,12 +3,12 @@ ...@@ -3,12 +3,12 @@
"version": "0.0.0", "version": "0.0.0",
"main": "holidays.js", "main": "holidays.js",
"dependencies": { "dependencies": {
"express": "^4.4.5",
"moment": "^2.7.0" "moment": "^2.7.0"
}, },
"devDependencies": { "devDependencies": {
"chai": "^1.9.1", "chai": "^1.9.1",
"node-mysql": "^0.3.7" "mysql": "*",
"express": "*"
}, },
"author": "", "author": "",
"license": "ISC", "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 ...@@ -9,17 +9,33 @@ falls oeffnungszeit z.b. von 21:00 bis 4:00 muss bei 0:00 getrennt werden
Funktionen: Funktionen:
openNow(json, now, gemeindezeugs, lang, asString) openNow(json, now, regionalCode, lang, asString)
asString=1 asString
Falls geoffnet: Falls geoffnet:
<WochenTag>, jetzt bis <UhrZeit> geoeffnet. <WochenTag>, jetzt bis <UhrZeit> geoeffnet.
Falls nicht geoffnet: Falls nicht geoffnet:
Am <WochenTag> nicht geoffnet. Wieder geoeffnet am <WochendTag, Datum> ab <UhrZeit>. Am <WochenTag> nicht geoffnet. Wieder geoeffnet am <WochendTag, Datum> ab <UhrZeit>.
asString=0 asLiteral
{ {
open: true|false, open: true|false,
date: bis|ab 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