Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
O
opening-hours
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Commits
Issue Boards
Open sidebar
regionalkauf
opening-hours
Commits
aeca4ffa
Commit
aeca4ffa
authored
Jul 02, 2014
by
Johannes Bill
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
implemented test with database data
parent
1509eb46
Changes
7
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
125 additions
and
33 deletions
+125
-33
dateArray.js
lib/dateArray.js
+33
-13
dateViews.js
lib/dateViews.js
+17
-15
timeUtils.js
lib/timeUtils.js
+7
-0
package.json
package.json
+2
-2
test.js
test/test.js
+47
-0
test1.js
test/test1.js
+0
-0
todo
todo
+19
-3
No files found.
lib/
jsonInput
.js
→
lib/
dateArray
.js
View file @
aeca4ffa
...
...
@@ -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
));
}
for
(
key
in
jsonExcl
)
{
data
=
jsonExcl
[
key
];
option
=
getOption
(
data
);
resultExcl
.
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
);
}
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
;
lib/dateViews.js
View file @
aeca4ffa
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
);
});
console
.
log
(
moment
.
weekdaysMin
());
\ No newline at end of file
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
lib/timeUtils.js
View file @
aeca4ffa
...
...
@@ -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
]));
...
...
package.json
View file @
aeca4ffa
...
...
@@ -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
"
,
...
...
test/test.js
0 → 100644
View file @
aeca4ffa
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
test/test1.js
deleted
100644 → 0
View file @
1509eb46
todo
View file @
aeca4ffa
...
...
@@ -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>.
as
String=0
as
Literal
{
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
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment