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
dd40e13c
Commit
dd40e13c
authored
Jun 28, 2014
by
Johannes Bill
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
added validate function
added validate function removed new holiday removed new holiday
parent
a80c76ee
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
52 additions
and
40 deletions
+52
-40
holidays.js
holidays.js
+5
-3
jsonInput.js
jsonInput.js
+13
-24
testHof.json
testData/testHof.json
+4
-4
timeUtils.js
timeUtils.js
+27
-8
todo
todo
+3
-1
No files found.
holidays.js
View file @
dd40e13c
...
...
@@ -42,8 +42,12 @@ function Holidays(year) {
602
:
50
};
var
easterSundays
=
{
2014
:
new
Date
(
2014
,
3
,
20
)
};
function
getEasterSunday
()
{
return
new
Date
(
2014
,
3
,
20
)
;
return
easterSundays
[
year
]
;
}
function
getFixedHolidays
(
fixedHolidays
,
object
)
{
...
...
@@ -86,6 +90,4 @@ function Holidays(year) {
}
var
holidays
=
new
Holidays
(
2014
);
module
.
exports
=
Holidays
;
\ No newline at end of file
jsonInput.js
View file @
dd40e13c
...
...
@@ -10,8 +10,8 @@ var excludeString = "bb74c170-b06f-4d2b-ab88-2f6bf9ce8068";
var
_epochStart
=
new
Date
(
2014
,
0
,
0
);
//_epochStart.setDate(_epochStart.getDate() - 30);
//var _epochEnd = new Date(_epochStart.getTime() + 500 * 24 * 3600000);
var
_epochEnd
=
new
Date
(
201
6
,
0
,
0
);
var
epoch
e
Span
=
[
_epochStart
,
_epochEnd
];
var
_epochEnd
=
new
Date
(
201
5
,
0
,
0
);
var
epochSpan
=
[
_epochStart
,
_epochEnd
];
function
calculateOpeningHours
(
json
)
{
...
...
@@ -49,19 +49,6 @@ function calculateOpeningHours(json) {
return
tmUtils
.
andNotOperator
(
resultIncl
,
resultExcl
);
}
function
getIntervals
(
json
)
{
var
result
=
[];
var
holidays
=
[];
for
(
var
key
in
json
)
{
var
x
=
getOpeningHours
(
json
[
key
]);
if
(
x
)
result
.
push
(
x
);
}
return
tmUtils
.
orOperator
(
result
);
}
function
getDaySpan
(
data
)
{
var
dayoption
=
parseInt
(
data
[
"dayoption"
][
"0"
]);
if
(
dayoption
<
7
)
return
[
dayoption
,
dayoption
];
...
...
@@ -128,8 +115,8 @@ function getAllHolidays() {
}
function
getDateSpan
(
data
)
{
var
startDate
=
parseDate
(
data
[
"opening_day_from"
])
||
_epochStart
;
var
endDate
=
parseDate
(
data
[
"opening_day_to"
],
true
)
||
_epochEnd
;
var
startDate
=
parseDate
(
data
[
"opening_day_from"
])
||
epochSpan
[
0
]
;
var
endDate
=
parseDate
(
data
[
"opening_day_to"
],
true
)
||
epochSpan
[
1
]
;
return
[
startDate
,
endDate
];
}
...
...
@@ -154,7 +141,7 @@ function getOpeningHours(data, option) {
case
"vacation"
:
return
getOpeningHoursVacation
(
data
);
default
:
console
.
error
(
"
no propper option found"
);
console
.
error
(
"
option %s not supported"
,
option
);
return
[];
}
}
...
...
@@ -162,14 +149,14 @@ function getOpeningHours(data, option) {
function
getOpeningHoursDefault
(
data
)
{
var
daySpan
=
getDaySpan
(
data
);
var
timeSpan
=
getTimeSpan
(
data
);
return
tmUtils
.
standardFromTillDay
(
daySpan
,
timeSpan
,
epoch
eSpan
,
epoche
Span
,
7
);
return
tmUtils
.
standardFromTillDay
(
daySpan
,
timeSpan
,
epoch
Span
,
epoch
Span
,
7
);
}
function
getOpeningHoursSeason
(
data
)
{
var
daySpan
=
getDaySpan
(
data
);
var
timeSpan
=
getTimeSpan
(
data
);
var
dateSpan
=
getDateSpan
(
data
);
return
tmUtils
.
standardFromTillDay
(
daySpan
,
timeSpan
,
dateSpan
,
epoch
e
Span
,
7
);
return
tmUtils
.
standardFromTillDay
(
daySpan
,
timeSpan
,
dateSpan
,
epochSpan
,
7
);
}
function
getOpeningHoursVacation
(
data
)
{
...
...
@@ -187,18 +174,20 @@ function getOpeningHoursRepeatable(data) {
if
(
repeatOption
<=
4
)
noInMonth
=
repeatOption
;
else
if
(
repeatOption
==
30
)
noInMonth
=
-
1
;
if
(
noInMonth
)
return
tmUtils
.
cyclicFromTillDay
(
daySpan
,
noInMonth
,
timeSpan
,
dateSpan
,
epoch
e
Span
);
return
tmUtils
.
cyclicFromTillDay
(
daySpan
,
noInMonth
,
timeSpan
,
dateSpan
,
epochSpan
);
else
{
switch
(
repeatOption
)
{
case
14
:
case
21
:
case
28
:
return
tmUtils
.
standardFromTillDay
(
daySpan
,
timeSpan
,
dateSpan
,
epoch
e
Span
,
repeatOption
);
return
tmUtils
.
standardFromTillDay
(
daySpan
,
timeSpan
,
dateSpan
,
epochSpan
,
repeatOption
);
default
:
console
.
error
(
"invalid repeatoption"
);
}
}
}
var
data
=
calculateOpeningHours
(
require
(
'./testData/testHof.json'
));
console
.
log
(
data
);
\ No newline at end of file
var
data1
=
calculateOpeningHours
(
require
(
'./testData/testHof.json'
));
//data1[0][0] = 0;
console
.
log
(
data1
);
tmUtils
.
validate
(
data1
);
\ No newline at end of file
testData/testHof.json
View file @
dd40e13c
...
...
@@ -134,10 +134,10 @@
"holidayoption"
:
{
"0"
:
""
},
"opening_day_from"
:
"
21.05
"
,
"opening_day_to"
:
"
21.06
"
,
"opening_from"
:
"
9
:00"
,
"opening_to"
:
"1
8
:00"
"opening_day_from"
:
""
,
"opening_day_to"
:
""
,
"opening_from"
:
"
10
:00"
,
"opening_to"
:
"1
3
:00"
},
"3"
:
{
"option"
:
{
...
...
timeUtils.js
View file @
dd40e13c
var
assert
=
require
(
'assert'
);
function
compareTimeSpan
(
timeSpan
)
{
var
from
=
timeSpan
[
0
];
var
till
=
timeSpan
[
1
];
...
...
@@ -39,7 +41,7 @@ function _standard(day, timeFrom, timeUntil, startDate, endDate, distanceDays) {
function
standardFromTillDay
(
daySpan
,
timeSpan
,
dateSpan
,
epochSpan
,
daysDistance
)
{
timeSpan
=
transformTimeSpan
(
timeSpan
);
var
dayFrom
=
daySpan
[
0
];
var
dayT
ill
=
daySpan
[
1
];
var
dayT
o
=
daySpan
[
1
];
var
timeFrom
=
timeSpan
[
0
];
var
timeUntil
=
timeSpan
[
1
];
var
epochStart
=
dateSpan
[
0
];
...
...
@@ -48,7 +50,7 @@ function standardFromTillDay(daySpan, timeSpan, dateSpan, epochSpan, daysDistanc
var
firstDays
=
_standard
(
dayFrom
,
timeFrom
,
timeUntil
,
epochStart
,
epochEnd
,
daysDistance
);
var
result
=
firstDays
.
slice
();
for
(
var
offset
=
1
;
offset
<=
dayT
ill
-
dayFrom
;
offset
++
)
{
for
(
var
offset
=
1
;
offset
<=
dayT
o
-
dayFrom
;
offset
++
)
{
for
(
var
i
=
0
;
i
<
firstDays
.
length
;
i
++
)
{
var
start
=
new
Date
(
firstDays
[
i
][
0
]);
var
end
=
new
Date
(
firstDays
[
i
][
1
]);
...
...
@@ -91,7 +93,7 @@ function cyclicFromTillDay(daySpan, noInMonth, timeSpan, dateSpan, epochSpan) {
timeSpan
=
transformTimeSpan
(
timeSpan
);
var
dayFrom
=
daySpan
[
0
];
var
dayT
ill
=
daySpan
[
1
];
var
dayT
o
=
daySpan
[
1
];
var
timeFrom
=
timeSpan
[
0
];
var
timeUntil
=
timeSpan
[
1
];
var
startDate
=
dateSpan
[
0
];
...
...
@@ -121,7 +123,7 @@ function cyclicFromTillDay(daySpan, noInMonth, timeSpan, dateSpan, epochSpan) {
result
.
push
([
date0
,
date1
]);
startDate
=
new
Date
(
date1
);
startDate
.
setDate
(
startDate
.
getDate
()
+
1
);
for
(
var
offset
=
1
;
offset
<=
dayT
ill
-
dayFrom
;
offset
++
)
{
for
(
var
offset
=
1
;
offset
<=
dayT
o
-
dayFrom
;
offset
++
)
{
date0
=
new
Date
(
date0
);
date1
=
new
Date
(
date1
);
date0
.
setDate
(
date0
.
getDate
()
+
1
);
...
...
@@ -184,7 +186,7 @@ function _getNextNoInMonthOccurence(day, startDate, noInMonth) {
}
/**
* return a timespan on one day, if no
t
timespan is given,
* return a timespan on one day, if no timespan is given,
* the whole day is returned
*
* @param date
...
...
@@ -194,7 +196,7 @@ function _getNextNoInMonthOccurence(day, startDate, noInMonth) {
function
singleDay
(
date
,
timeSpan
)
{
var
startDate
,
endDate
;
if
(
timeSpan
)
{
transformTimeSpan
(
timeSpan
);
t
imeSpan
=
t
ransformTimeSpan
(
timeSpan
);
startDate
=
new
Date
(
date
.
getFullYear
(),
date
.
getMonth
(),
date
.
getDate
(),
timeSpan
[
0
].
h
,
timeSpan
[
0
].
m
);
endDate
=
new
Date
(
date
.
getFullYear
(),
date
.
getMonth
(),
date
.
getDate
(),
timeSpan
[
1
].
h
,
timeSpan
[
1
].
m
);
}
...
...
@@ -297,7 +299,12 @@ function invert(interval, epochStart, epochEnd) {
result
.
push
([
start
,
epochEnd
]);
return
result
;
}
/**
* "substracts" interval2 from interval1
* @param interval1
* @param interval2
* @returns {*}
*/
function
andNotOperator
(
interval1
,
interval2
)
{
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
]));
...
...
@@ -306,6 +313,17 @@ function andNotOperator(interval1, interval2) {
return
andOperator
(
interval1
,
interval2
);
}
function
validate
(
interval
)
{
assert
(
interval
instanceof
Array
,
"has to be array"
);
for
(
var
i
=
0
;
i
<
interval
.
length
;
i
++
)
{
var
element
=
interval
[
i
];
assert
(
element
instanceof
Array
,
"has to be array"
);
assert
(
element
[
0
]
instanceof
Date
,
"has to be date"
);
assert
(
element
[
1
]
instanceof
Date
,
"has to be date"
);
assert
(
element
[
0
].
getTime
()
<=
element
[
1
].
getTime
(),
"start has to be <= end"
);
}
}
module
.
exports
.
standardFromTillDay
=
standardFromTillDay
;
module
.
exports
.
cyclicFromTillDay
=
cyclicFromTillDay
;
module
.
exports
.
singleDay
=
singleDay
;
...
...
@@ -314,4 +332,5 @@ module.exports.andOperator = andOperator;
module
.
exports
.
andNotOperator
=
andNotOperator
;
module
.
exports
.
mergeOverlaps
=
mergeOverlaps
;
module
.
exports
.
sort
=
sort
;
module
.
exports
.
dateSpan
=
dateSpan
;
\ No newline at end of file
module
.
exports
.
dateSpan
=
dateSpan
;
module
.
exports
.
validate
=
validate
;
\ No newline at end of file
todo
View file @
dd40e13c
...
...
@@ -2,4 +2,6 @@ feiertage defaultmaessig abziehen ausser feiertage sind in der ausschlussliste
verbindung feiertag - region
ics import - regeln extrahieren
\ No newline at end of file
ics import - regeln extrahieren
was passiert bei der zeitumstellung?
\ 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