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
05b35c95
Commit
05b35c95
authored
Jun 30, 2014
by
Johannes Bill
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
added days bucketing
parent
667cab34
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
79 additions
and
23 deletions
+79
-23
jsonInput.js
jsonInput.js
+77
-21
testHof.json
testData/testHof.json
+2
-2
No files found.
jsonInput.js
View file @
05b35c95
...
@@ -6,11 +6,12 @@ var holidaysGetter = new Holidays(now.getFullYear());
...
@@ -6,11 +6,12 @@ var holidaysGetter = new Holidays(now.getFullYear());
var
includeString
=
"810a6deb-46f2-4fa8-b779-bb5c2a6b5577"
;
var
includeString
=
"810a6deb-46f2-4fa8-b779-bb5c2a6b5577"
;
var
excludeString
=
"bb74c170-b06f-4d2b-ab88-2f6bf9ce8068"
;
var
excludeString
=
"bb74c170-b06f-4d2b-ab88-2f6bf9ce8068"
;
//var _epochStart = new Date(2014, 3, 0);
var
_epochStart
=
new
Date
();
var
_epochStart
=
new
Date
(
2014
,
0
,
0
);
_epochStart
=
new
Date
(
_epochStart
.
getFullYear
(),
_epochStart
.
getMonth
(),
_epochStart
.
getDate
());
//_epochStart.setDate(_epochStart.getDate() - 30);
//var _epochStart = new Date(2014, 0, 0);
//var _epochEnd = new Date(_epochStart.getTime() + 500 * 24 * 3600000);
_epochStart
.
setDate
(
_epochStart
.
getDate
()
-
30
);
var
_epochEnd
=
new
Date
(
2015
,
0
,
0
);
var
_epochEnd
=
new
Date
(
_epochStart
.
getTime
()
+
100
*
24
*
3600000
);
//var _epochEnd = new Date(2015, 0, 0);
var
epochSpan
=
[
_epochStart
,
_epochEnd
];
var
epochSpan
=
[
_epochStart
,
_epochEnd
];
...
@@ -23,19 +24,19 @@ function calculateOpeningHours(json) {
...
@@ -23,19 +24,19 @@ function calculateOpeningHours(json) {
var
holidayIncl
=
[];
var
holidayIncl
=
[];
var
data
,
option
,
key
;
var
data
,
option
,
key
;
for
(
key
in
jsonIncl
)
{
for
(
key
in
jsonIncl
)
{
data
=
jsonIncl
[
key
];
data
=
jsonIncl
[
key
];
option
=
getOption
(
data
);
option
=
getOption
(
data
);
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
));
}
}
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
));
...
@@ -51,8 +52,8 @@ function calculateOpeningHours(json) {
...
@@ -51,8 +52,8 @@ function calculateOpeningHours(json) {
function
getDaySpan
(
data
)
{
function
getDaySpan
(
data
)
{
var
dayoption
=
parseInt
(
data
[
"dayoption"
][
"0"
]);
var
dayoption
=
parseInt
(
data
[
"dayoption"
][
"0"
]);
if
(
dayoption
<
7
)
return
[
dayoption
,
dayoption
];
if
(
dayoption
<
7
)
return
[
dayoption
,
dayoption
];
switch
(
dayoption
)
{
switch
(
dayoption
)
{
case
7
:
case
7
:
return
[
0
,
0
];
return
[
0
,
0
];
case
8
:
case
8
:
...
@@ -75,7 +76,7 @@ function parseTime(time) {
...
@@ -75,7 +76,7 @@ function parseTime(time) {
}
}
function
parseDate
(
date
,
addOneDay
)
{
function
parseDate
(
date
,
addOneDay
)
{
if
(
date
.
length
==
0
)
if
(
date
.
length
==
0
)
return
null
;
return
null
;
var
year
=
now
.
getFullYear
();
var
year
=
now
.
getFullYear
();
...
@@ -88,7 +89,7 @@ function parseDate(date, addOneDay) {
...
@@ -88,7 +89,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"
);
console
.
error
(
"data is no holiday"
);
console
.
error
(
data
);
console
.
error
(
data
);
return
null
;
return
null
;
...
@@ -98,7 +99,7 @@ function getHolidays(data) {
...
@@ -98,7 +99,7 @@ function getHolidays(data) {
var
holidayId
=
data
[
"holidayoption"
][
0
];
var
holidayId
=
data
[
"holidayoption"
][
0
];
var
days
=
holidaysGetter
.
getHoliday
(
holidayId
);
var
days
=
holidaysGetter
.
getHoliday
(
holidayId
);
var
intervals
=
days
.
map
(
function
(
date
)
{
var
intervals
=
days
.
map
(
function
(
date
)
{
return
tmUtils
.
singleDay
(
date
,
timeSpan
);
return
tmUtils
.
singleDay
(
date
,
timeSpan
);
});
});
tmUtils
.
sort
(
intervals
);
tmUtils
.
sort
(
intervals
);
...
@@ -107,7 +108,7 @@ function getHolidays(data) {
...
@@ -107,7 +108,7 @@ function getHolidays(data) {
function
getAllHolidays
()
{
function
getAllHolidays
()
{
var
days
=
holidaysGetter
.
getHoliday
(
0
);
var
days
=
holidaysGetter
.
getHoliday
(
0
);
var
intervals
=
days
.
map
(
function
(
date
)
{
var
intervals
=
days
.
map
(
function
(
date
)
{
return
tmUtils
.
singleDay
(
date
);
return
tmUtils
.
singleDay
(
date
);
});
});
tmUtils
.
sort
(
intervals
);
tmUtils
.
sort
(
intervals
);
...
@@ -131,7 +132,7 @@ function getOption(data) {
...
@@ -131,7 +132,7 @@ function getOption(data) {
function
getOpeningHours
(
data
,
option
)
{
function
getOpeningHours
(
data
,
option
)
{
option
=
option
||
getOption
(
data
);
option
=
option
||
getOption
(
data
);
switch
(
option
)
{
switch
(
option
)
{
case
"default"
:
case
"default"
:
return
getOpeningHoursDefault
(
data
);
return
getOpeningHoursDefault
(
data
);
case
"season"
:
case
"season"
:
...
@@ -171,12 +172,12 @@ function getOpeningHoursRepeatable(data) {
...
@@ -171,12 +172,12 @@ function getOpeningHoursRepeatable(data) {
var
repeatOption
=
parseInt
(
data
[
"repeatoption"
][
"0"
]);
var
repeatOption
=
parseInt
(
data
[
"repeatoption"
][
"0"
]);
var
noInMonth
;
var
noInMonth
;
if
(
repeatOption
<=
4
)
noInMonth
=
repeatOption
;
if
(
repeatOption
<=
4
)
noInMonth
=
repeatOption
;
else
if
(
repeatOption
==
30
)
noInMonth
=
-
1
;
else
if
(
repeatOption
==
30
)
noInMonth
=
-
1
;
if
(
noInMonth
)
if
(
noInMonth
)
return
tmUtils
.
cyclicFromTillDay
(
daySpan
,
noInMonth
,
timeSpan
,
dateSpan
,
epochSpan
);
return
tmUtils
.
cyclicFromTillDay
(
daySpan
,
noInMonth
,
timeSpan
,
dateSpan
,
epochSpan
);
else
{
else
{
switch
(
repeatOption
)
{
switch
(
repeatOption
)
{
case
14
:
case
14
:
case
21
:
case
21
:
case
28
:
case
28
:
...
@@ -187,7 +188,62 @@ function getOpeningHoursRepeatable(data) {
...
@@ -187,7 +188,62 @@ function getOpeningHoursRepeatable(data) {
}
}
}
}
//TODO falls intervall ueber mitternacht, muss davor getrennt werden
function
bucketToDays
(
data
)
{
var
result
=
[];
for
(
var
i
=
0
;
i
<
data
.
length
;
i
++
)
{
var
e
=
data
[
i
];
if
(
current
&&
current
.
date
==
e
[
0
].
toDateString
())
{
current
.
time
.
push
([
e
[
0
].
toTimeString
(),
e
[
1
].
toTimeString
()]);
}
else
{
current
=
{
date
:
e
[
0
].
toDateString
(),
time
:
[
[
e
[
0
].
toTimeString
(),
e
[
1
].
toTimeString
()]
]
};
result
.
push
(
current
);
}
}
return
result
;
}
function
daysBucket
(
data
)
{
var
result
=
[];
var
current
;
for
(
var
i
=
0
;
i
<
data
.
length
;
i
++
)
{
var
e
=
data
[
i
];
if
(
current
&&
compareDay
(
current
[
0
][
0
],
e
[
0
]))
{
current
.
push
([
e
[
0
],
e
[
1
]]);
}
else
{
current
=
[[
e
[
0
],
e
[
1
]]];
result
.
push
(
current
);
}
}
return
result
;
}
function
compareDay
(
date1
,
date2
)
{
if
(
date1
.
getFullYear
()
!=
date2
.
getFullYear
())
return
false
;
if
(
date1
.
getMonth
()
!=
date2
.
getMonth
())
return
false
;
return
date1
.
getDate
()
==
date2
.
getDate
();
}
module
.
exports
.
calculate
=
function
(
json
)
{
var
res
=
calculateOpeningHours
(
json
);
return
daysBucket
(
res
);
};
var
data1
=
calculateOpeningHours
(
require
(
'./testData/testHof.json'
));
var
data1
=
calculateOpeningHours
(
require
(
'./testData/testHof.json'
));
//data1[0][0] = 0;
//data1[0][0] = 0;
console
.
log
(
data1
);
//console.log(data1);
var
bData
=
daysBucket
(
data1
);
console
.
log
(
JSON
.
stringify
(
bData
));
tmUtils
.
validate
(
data1
);
tmUtils
.
validate
(
data1
);
\ No newline at end of file
testData/testHof.json
View file @
05b35c95
...
@@ -90,7 +90,7 @@
...
@@ -90,7 +90,7 @@
"0"
:
"default"
"0"
:
"default"
},
},
"dayoption"
:
{
"dayoption"
:
{
"0"
:
"
1
"
"0"
:
"
8
"
},
},
"repeatoption"
:
{
"repeatoption"
:
{
"0"
:
""
"0"
:
""
...
@@ -101,7 +101,7 @@
...
@@ -101,7 +101,7 @@
"opening_day_from"
:
""
,
"opening_day_from"
:
""
,
"opening_day_to"
:
""
,
"opening_day_to"
:
""
,
"opening_from"
:
"09:00"
,
"opening_from"
:
"09:00"
,
"opening_to"
:
"1
8
:00"
"opening_to"
:
"1
7
:00"
},
},
"1"
:
{
"1"
:
{
"option"
:
{
"option"
:
{
...
...
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