Compare commits
226 commits
Author | SHA1 | Date | |
---|---|---|---|
b4adda93ac | |||
b50b08f766 | |||
cdf633a9bd | |||
baab6bbfc4 | |||
2b46153d20 | |||
10c385975c | |||
ddc034e6b2 | |||
0fc0098442 | |||
2503c153eb | |||
3af32d958e | |||
bf30ee7f7d | |||
94c85f1c4d | |||
e3acb3ee73 | |||
a9954b1a76 | |||
3adf8249a8 | |||
0f30b462d6 | |||
cf6ff9085f | |||
7d528d0cbb | |||
1b3856e834 | |||
Midgard | a8de34ff60 | ||
Midgard | 74ee5b751d | ||
Midgard | 0b6d9e9349 | ||
d60fc09823 | |||
Niko Strijbol | 6e62004a58 | ||
2bf5bbf066 | |||
Midgard | 3f44786c0e | ||
57c0654694 | |||
Midgard | 7040282def | ||
Midgard | 3cfb1b058b | ||
Midgard | 24019119d1 | ||
Midgard | 5d9d45b4f5 | ||
31e7c39508 | |||
8774e1921d | |||
Midgard | 4daecbccd3 | ||
e763493fd5 | |||
Midgard | 296365b925 | ||
Midgard | 21d7a994f8 | ||
ae5f48e9d5 | |||
Midgard | cea52ea188 | ||
Midgard | d5fe062e7f | ||
Midgard | d3cb7bfca8 | ||
Midgard | c9294024a5 | ||
4aceb15174 | |||
Midgard | 2af33c6464 | ||
Midgard | 44980c0ba2 | ||
Midgard | fbc52a8cc8 | ||
Midgard | 9b83232bb8 | ||
Midgard | a85e87a70c | ||
Midgard | 9102750770 | ||
Midgard | 77ceb6fa47 | ||
Midgard | b2c86c9a94 | ||
Midgard | 855488d227 | ||
Midgard | 9e72a5dcc2 | ||
Midgard | dff357cfca | ||
Midgard | 9f0e5f7598 | ||
Midgard | daf979ee0e | ||
Midgard | 47a0f53ed3 | ||
Midgard | 43fdcf0c87 | ||
Midgard | fb377030ef | ||
Midgard | 3943320c8e | ||
Midgard | 42a326aee3 | ||
Midgard | bffc160d65 | ||
Midgard | 8f464cdd93 | ||
81b03b98be | |||
8b52ba1869 | |||
9903d3baf5 | |||
6be5239118 | |||
8296779cb4 | |||
0ef626ec10 | |||
43e10ec9a4 | |||
aad50d92e7 | |||
fc592d742f | |||
f673ff6637 | |||
c4b27dafd9 | |||
f7dbe2f518 | |||
8aae4c6b58 | |||
8e40aa9fdd | |||
c01d5a2180 | |||
e1433015c5 | |||
6b5ccccfe7 | |||
ef3f74b380 | |||
dc98be9b58 | |||
a9840bbe02 | |||
86b61715a6 | |||
97aeb3c0b0 | |||
Francis Begyn | b48542f9e6 | ||
429b8b14b9 | |||
Francis Begyn | 86c19cf93a | ||
f6b99c680e | |||
f3ffd9bf92 | |||
82b84404f0 | |||
02e12a856d | |||
1433afe261 | |||
234c7d0554 | |||
67917aa526 | |||
cbc064260a | |||
b43b8e9f43 | |||
b167817ea4 | |||
f12a1c1ef5 | |||
fe38e5c8bf | |||
348ebfd8b7 | |||
07e0db8edf | |||
4bcf99dfcd | |||
53a5ac0ce0 | |||
afcc9a256b | |||
88833f6595 | |||
e4e91b19fa | |||
27745a76dc | |||
8200304470 | |||
d01115f54b | |||
53506686bb | |||
5088e09562 | |||
f2220626e7 | |||
1e7b400d18 | |||
10292c8f52 | |||
9481a95a1a | |||
6acdbeaffb | |||
1a679a70ca | |||
a549b29017 | |||
ba48c6db60 | |||
39cf70a6a0 | |||
83d7f4e4e5 | |||
840f68f112 | |||
4e20d203da | |||
2e7ae22540 | |||
4a259db3a0 | |||
53d1ded73e | |||
2fb4a3e52f | |||
0c3d15a723 | |||
b9fcd4f4b9 | |||
f0b19b5780 | |||
84294309ff | |||
edc35fbbfe | |||
75ec6dbd16 | |||
85c4dded10 | |||
e4a3f64a52 | |||
9183fe6ff9 | |||
372e230661 | |||
1495529570 | |||
7f2661bd96 | |||
09fd79aff8 | |||
b5e3e50ba4 | |||
a49205bca8 | |||
35fd66c14e | |||
a86bedaf9b | |||
1759f41d1a | |||
94254df35a | |||
3b70f95e56 | |||
13faf10cb9 | |||
c8b7add9d7 | |||
2ddf507659 | |||
4b890ced7e | |||
09d0868ddc | |||
4392d0b9db | |||
36c2a2abe1 | |||
4d798496e4 | |||
41c0a68c72 | |||
9459b81231 | |||
6ec5262cf8 | |||
2f6b08920f | |||
34baaffa6e | |||
7d0da8a885 | |||
0b725e1404 | |||
e50aa158ca | |||
ec556f6fbd | |||
03c4631292 | |||
257b7320e8 | |||
c6b5f1042d | |||
2ed9d60b9d | |||
41d6533859 | |||
04b96fcc0a | |||
ecd42ef8d5 | |||
fcb1e09397 | |||
8c3f30ea61 | |||
439c7871b7 | |||
8ee329943a | |||
e1717d9bbd | |||
58c1ba122b | |||
3d2348d68a | |||
f9b27db5e9 | |||
aa1bc3dabe | |||
25919738bd | |||
6dcc940509 | |||
7cb5f716bb | |||
348f6518ce | |||
19ca4f141a | |||
fb82a9dd1b | |||
e65e94b0ee | |||
8114c0949d | |||
386b9439f4 | |||
a2601903d1 | |||
2795f31a3f | |||
b5751c5450 | |||
a25e3109d0 | |||
dbc31aa7aa | |||
1b98930899 | |||
b5b46e9db8 | |||
494ce7b64e | |||
b2ce94db83 | |||
015b3243b1 | |||
9bbf6064c2 | |||
bbae69885e | |||
ed940931a6 | |||
59a8eead8a | |||
b095d8d039 | |||
da2877bf20 | |||
667ceba671 | |||
655333b9a5 | |||
6ac2ecaa66 | |||
21ca746454 | |||
187d5e696f | |||
349ea1ac84 | |||
d232afef7d | |||
87896ebb17 | |||
ca64494cbb | |||
89ca8c2ae6 | |||
488cf81f03 | |||
8b32c781c3 | |||
60569e3fe3 | |||
0cb823c5a0 | |||
bc580e5860 | |||
838988bf95 | |||
d45716b7fb | |||
6312728720 | |||
7bb7dce61c | |||
37ad54ae4f |
19
.editorconfig
Normal file
|
@ -0,0 +1,19 @@
|
|||
# https://editorconfig.org
|
||||
|
||||
root = true
|
||||
|
||||
[*]
|
||||
charset = utf-8
|
||||
end_of_line = lf
|
||||
insert_final_newline = true
|
||||
trim_trailing_whitespace = true
|
||||
indent_style = space
|
||||
indent_size = 4
|
||||
quote_type = double
|
||||
|
||||
[*.html]
|
||||
indent_size = 2
|
||||
|
||||
[*.svg]
|
||||
indent_style = tab
|
||||
indent_size = unset
|
3
.gitignore
vendored
Normal file
|
@ -0,0 +1,3 @@
|
|||
releases/
|
||||
current
|
||||
|
Before Width: | Height: | Size: 2.9 KiB |
25
LICENSE.md
Normal file
|
@ -0,0 +1,25 @@
|
|||
The MIT License (MIT)
|
||||
=====================
|
||||
|
||||
Copyright © 2018 Zeus WPI
|
||||
|
||||
Permission is hereby granted, free of charge, to any person
|
||||
obtaining a copy of this software and associated documentation
|
||||
files (the “Software”), to deal in the Software without
|
||||
restriction, including without limitation the rights to use,
|
||||
copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the
|
||||
Software is furnished to do so, subject to the following
|
||||
conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be
|
||||
included in all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND,
|
||||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
|
||||
OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
|
||||
HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
||||
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
||||
OTHER DEALINGS IN THE SOFTWARE.
|
BIN
Odisee.png
Before Width: | Height: | Size: 2.1 KiB |
13
README.md
Normal file
|
@ -0,0 +1,13 @@
|
|||
# BlokLocaties Op Kaart Met Aanduidende Pins
|
||||
|
||||
A useful map that lists all the public study locations in Ghent.
|
||||
|
||||
Data is managed in a separate project, [Blokdata](https://github.com/ZeusWPI/Blokdata).
|
||||
|
||||
## Development
|
||||
|
||||
You can easily run the site locally by spawning a simple static file server in the `src` directory. For example by using the following command, or by using any other one-liner from [this big list](https://gist.github.com/willurd/5720255).
|
||||
|
||||
```
|
||||
(cd src/; python3 -m http.server)
|
||||
```
|
BIN
Stad Gent.png
Before Width: | Height: | Size: 2.5 KiB |
409
data.json
|
@ -1,409 +0,0 @@
|
|||
[{
|
||||
"type": "Feature",
|
||||
"geometry": {
|
||||
"type": "Point",
|
||||
"coordinates": [3.726759, 51.045660]
|
||||
},
|
||||
"properties": {
|
||||
"name": "Studentenrestaurant De Brug",
|
||||
"address": "Sint-Pietersnieuwstraat 45",
|
||||
"capacity": 700,
|
||||
"period": { "start": "05/01/2015", "end": "23/01/2015" },
|
||||
"hours": {
|
||||
"monday": "8u - 22u",
|
||||
"tuesday": "8u - 22u",
|
||||
"wednesday": "8u - 22u",
|
||||
"thursday": "8u - 22u",
|
||||
"friday": "8u - 22u",
|
||||
"saturday": false,
|
||||
"sunday": false
|
||||
},
|
||||
"extra": "2 aparte zaaltjes doorlopend beschikbaar (120 plaatsen). Restaurant (1ste en 2de verdieping) gesloten tussen 11u15 en 14u en na 17u",
|
||||
"type": "UGent"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "Feature",
|
||||
"geometry": {
|
||||
"type": "Point",
|
||||
"coordinates": [3.728294, 51.039980]
|
||||
},
|
||||
"properties": {
|
||||
"name": "Studentenrestaurant Kantienberg",
|
||||
"address": "Stalhof 45",
|
||||
"capacity": 600,
|
||||
"period": { "start": "05/01/2015", "end": "23/01/2015" },
|
||||
"hours": {
|
||||
"monday": false,
|
||||
"tuesday": false,
|
||||
"wednesday": false,
|
||||
"thursday": false,
|
||||
"friday": false,
|
||||
"saturday": "8u30 - 22u",
|
||||
"sunday": "8u30 - 22u"
|
||||
},
|
||||
"extra": "Enkel weekend, kerstverlof en feestdagen,Registratie noodzakelijk! Registreer <a href=\"http://student.UGent.be/blok_kantien/\">hier</a>. Vanaf 9u kunnen studenten zonder registratie toegang krijgen.",
|
||||
"type": "UGent"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "Feature",
|
||||
"geometry": {
|
||||
"type": "Point",
|
||||
"coordinates": [ 3.724770, 51.045507 ]
|
||||
},
|
||||
"properties": {
|
||||
"name": "Faculteit Letteren en Wijsbegeerte, faculteitsbibliotheek, vleugels Magnel & Loveling",
|
||||
"address": "Rozier 44",
|
||||
"capacity": 580,
|
||||
"period": { "start": "24/11/2014", "end": "30/01/2014" },
|
||||
"hours": {
|
||||
"monday": "9u - 20u",
|
||||
"tuesday": "9u - 20u",
|
||||
"wednesday": "9u - 20u",
|
||||
"thursday": "9u - 20u",
|
||||
"friday": "9u - 17u",
|
||||
"saturday": false,
|
||||
"sunday": false
|
||||
},
|
||||
"extra": "Toegangkelijk voor iedereen. Gesloten tijdens het kerstverlof",
|
||||
"type": "UGent"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "Feature",
|
||||
"geometry": {
|
||||
"type": "Point",
|
||||
"coordinates": [3.727952, 51.044599]
|
||||
},
|
||||
"properties": {
|
||||
"name": "Blok@Therminal",
|
||||
"address": "Hoveniersberg 24",
|
||||
"capacity": 300,
|
||||
"period": { "start": "18/08/2014", "end": "12/09/2014" },
|
||||
"hours": {
|
||||
"monday": "8u30 - 22u",
|
||||
"tuesday": "8u30 - 22u",
|
||||
"wednesday": "8u30 - 22u",
|
||||
"thursday": "8u30 - 22u",
|
||||
"friday": "8u30 - 22u",
|
||||
"saturday": "8u30 - 22u",
|
||||
"sunday": "8u30 - 22u"
|
||||
},
|
||||
"extra": "Registratie noodzakelijk! Registreer <a href=\"http://student.UGent.be/blok/\">hier</a>. Vanaf 9u kunnen studenten zonder registratie toegang krijgen.",
|
||||
"type": "UGent"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "Feature",
|
||||
"geometry": {
|
||||
"type": "Point",
|
||||
"coordinates": [3.723510, 51.052041]
|
||||
},
|
||||
"properties": {
|
||||
"name": "Blok@Aula",
|
||||
"address": "Volderstraat 9",
|
||||
"capacity": 210,
|
||||
"period": { "start": "20/12/2014", "end": "23/01/2015" },
|
||||
"hours": {
|
||||
"monday": "8u30 - 22u",
|
||||
"tuesday": "8u30 - 22u",
|
||||
"wednesday": "8u30 - 22u",
|
||||
"thursday": "8u30 - 22u",
|
||||
"friday": "8u30 - 22u",
|
||||
"saturday": "8u30 - 22u",
|
||||
"sunday": "8u30 - 22u"
|
||||
},
|
||||
"extra": "Registratie noodzakelijk! Registreer <a href=\"http://student.UGent.be/blok_aula/\">hier</a>. Vanaf 9u kunnen studenten zonder registratie toegang krijgen. Sluitingsdagen: 25/12, 01/01, 3/01, 4/01, 5/01,6/01, 13/01 en 20/01.<br/>24/12 en 31/12: 8u-16u",
|
||||
"type": "UGent"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "Feature",
|
||||
"geometry": {
|
||||
"type": "Point",
|
||||
"coordinates": [3.702897, 51.031507]
|
||||
},
|
||||
"properties": {
|
||||
"name": "BYTES & BOOKS @ gebouw D",
|
||||
"address": "Openleercentrum campus Schoonmeersen",
|
||||
"capacity": 444,
|
||||
"period": { "start": "15/12/2014", "end": "30/01/2015" },
|
||||
"hours": {
|
||||
"monday": "8u - 21u45*",
|
||||
"tuesday": "8u - 21u45",
|
||||
"wednesday": "8u - 21u45",
|
||||
"thursday": "8u - 21u45",
|
||||
"friday": "8u - 16u45*",
|
||||
"saturday": false,
|
||||
"sunday": false
|
||||
},
|
||||
"extra": "Toegankelijk voor alle Gentse studenten. * Tot 19/12 gewone openingsuren, op 29/12, 30/12 en 2/01 open van 8u-16u45 en op31/12 open van 8u – 12u45",
|
||||
"type": "hogent"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "Feature",
|
||||
"geometry": {
|
||||
"type": "Point",
|
||||
"coordinates": [3.702700, 51.031201]
|
||||
},
|
||||
"properties": {
|
||||
"name": "Resto D als blokruimte",
|
||||
"address": "Openleercentrum campus Schoonmeersen",
|
||||
"capacity": 250,
|
||||
"period": { "start": "03/01/2015", "end": "25/01/2015" },
|
||||
"hours": {
|
||||
"monday": false,
|
||||
"tuesday": false,
|
||||
"wednesday": false,
|
||||
"thursday": false,
|
||||
"friday": false,
|
||||
"saturday": "8u - 18u",
|
||||
"sunday": "8u - 18u"
|
||||
},
|
||||
"extra": "Tijdens het weekend enkel HoGent en UGent studenten in bezit van campuskaart Schoonmeersen",
|
||||
"type": "hogent"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "Feature",
|
||||
"geometry": {
|
||||
"type": "Point",
|
||||
"coordinates": [3.724278, 51.036589]
|
||||
},
|
||||
"properties": {
|
||||
"name": "BYTES & BOOKS LERA",
|
||||
"address": "K.L. Ledeganckstraat 8",
|
||||
"capacity": 110,
|
||||
"period": { "start": "15/12/2014", "end": "30/01/2015" },
|
||||
"hours": {
|
||||
"monday": "8u15 - 18u",
|
||||
"tuesday": "8u15 - 18u",
|
||||
"wednesday": "8u15 - 18u",
|
||||
"thursday": "8u15 - 18u",
|
||||
"friday": "8u15 - 18u",
|
||||
"saturday": false,
|
||||
"sunday": false
|
||||
},
|
||||
"extra": "Toegankelijk voor alle Gentse studenten.",
|
||||
"type": "hogent"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "Feature",
|
||||
"geometry": {
|
||||
"type": "Point",
|
||||
"coordinates": [3.726827, 51.019702]
|
||||
},
|
||||
"properties": {
|
||||
"name": "BYTES & BOOKS VESALIUS",
|
||||
"address": "Keramiekstraat 80",
|
||||
"capacity": 58,
|
||||
"period": { "start": "05/01/2014", "end": "30/01/2015" },
|
||||
"hours": {
|
||||
"monday": "9u - 17u",
|
||||
"tuesday": "9u - 18u",
|
||||
"wednesday": "9u - 11u30 <br> 12u45 - 16u45",
|
||||
"thursday": "9u - 18u",
|
||||
"friday": "9u - 17u",
|
||||
"saturday": false,
|
||||
"sunday": false
|
||||
},
|
||||
"extra": "Toegankelijk voor alle Gentse studenten.",
|
||||
"type": "hogent"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "Feature",
|
||||
"geometry": {
|
||||
"type": "Point",
|
||||
"coordinates": [3.718445, 51.045588]
|
||||
},
|
||||
"properties": {
|
||||
"name": "BYTES & BOOKS BIJLOKE",
|
||||
"address": "J. Kluyskensstraat 2",
|
||||
"capacity": 44,
|
||||
"period": { "start": "05/01/2014", "end": "30/01/2015" },
|
||||
"hours": {
|
||||
"monday": "8u30 - 17u",
|
||||
"tuesday": "8u30 - 17u",
|
||||
"wednesday": "8u30 - 17u",
|
||||
"thursday": "8u30 - 17u",
|
||||
"friday": "9u - 16u30",
|
||||
"saturday": false,
|
||||
"sunday": false
|
||||
},
|
||||
"extra": "Toegankelijk voor alle Gentse studenten.",
|
||||
"type": "hogent"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "Feature",
|
||||
"geometry": {
|
||||
"type": "Point",
|
||||
"coordinates": [3.726340, 51.054186]
|
||||
},
|
||||
"properties": {
|
||||
"name": "BYTES & BOOKS CONSERVATORIUM",
|
||||
"address": "Hoogpoort 64",
|
||||
"capacity": 15,
|
||||
"period": { "start": "05/01/2014", "end": "30/01/2015" },
|
||||
"hours": {
|
||||
"monday": "10u - 12u30<br />13u - 16u15",
|
||||
"tuesday": "10u - 12u30<br />13u - 16u15",
|
||||
"wednesday": "10u - 12u30<br />13u - 16u15",
|
||||
"thursday": "10u - 12u",
|
||||
"friday": "10u - 12u30<br />13u - 16u15",
|
||||
"saturday": false,
|
||||
"sunday": false
|
||||
},
|
||||
"extra": "Toegankelijk voor alle Gentse studenten.",
|
||||
"type": "hogent"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "Feature",
|
||||
"geometry": {
|
||||
"type": "Point",
|
||||
"coordinates": [3.746496, 51.038855]
|
||||
},
|
||||
"properties": {
|
||||
"name": "BYTES & BOOKS MELLE",
|
||||
"address": "Brusselsesteenweg 161",
|
||||
"capacity": 50,
|
||||
"period": { "start": "05/01/2014", "end": "30/01/2015" },
|
||||
"hours": {
|
||||
"monday": "9u - 12u30<br />13u - 17u",
|
||||
"tuesday": "8u30u - 12u30<br />13u - 17u",
|
||||
"wednesday": "9u - 12u30<br />13u - 17u",
|
||||
"thursday": "8u - 12u<br />12u30 - 17u",
|
||||
"friday": "8u - 12u<br />12u30 - 17u",
|
||||
"saturday": false,
|
||||
"sunday": false
|
||||
},
|
||||
"extra": "Toegankelijk voor alle Gentse studenten.",
|
||||
"type": "hogent"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "Feature",
|
||||
"geometry": {
|
||||
"type": "Point",
|
||||
"coordinates": [3.728505, 51.040832]
|
||||
},
|
||||
"properties": {
|
||||
"name": "Mediatheek campus Kantienberg",
|
||||
"address": "Voetweg 66",
|
||||
"capacity": 190,
|
||||
"period": { "start": "05/01/2015", "end": "06/02/2015" },
|
||||
"hours": {
|
||||
"monday": "9u - 17u",
|
||||
"tuesday": "9u - 17u",
|
||||
"wednesday": "9u - 17u",
|
||||
"thursday": "9u - 17u",
|
||||
"friday": "9u - 16u",
|
||||
"saturday": false,
|
||||
"sunday": false
|
||||
},
|
||||
"extra": "Gesloten op 16 januari. Toegankelijk voor alle Gentse studenten. 40 stille plaatsen.",
|
||||
"type": "Arteveldehogeschool"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "Feature",
|
||||
"geometry": {
|
||||
"type": "Point",
|
||||
"coordinates": [ 3.719359, 51.042548 ]
|
||||
},
|
||||
"properties": {
|
||||
"name": "Studentenhuis - Persellezaal",
|
||||
"address": "Kortrijksepoortstraat 254",
|
||||
"capacity": 20,
|
||||
"period": { "start": "05/01/2015", "end": "06/02/2015" },
|
||||
"hours": {
|
||||
"monday": "9u - 21u",
|
||||
"tuesday": "9u - 21u",
|
||||
"wednesday": "9u - 21u",
|
||||
"thursday": "9u - 21u",
|
||||
"friday": "9u - 21u",
|
||||
"saturday": false,
|
||||
"sunday": false
|
||||
},
|
||||
"extra": "Ingang door groen poortje",
|
||||
"type": "Arteveldehogeschool"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "Feature",
|
||||
"geometry": {
|
||||
"type": "Point",
|
||||
"coordinates": [3.708694, 51.061123]
|
||||
},
|
||||
"properties": {
|
||||
"name": "Bibliotheek",
|
||||
"address": "Gebr. Desmetstraat 1",
|
||||
"capacity": 50,
|
||||
"period": { "start": "12/01/2015", "end": "30/01/2015" },
|
||||
"hours": {
|
||||
"monday": "8u30 - 17u30",
|
||||
"tuesday": "8u30 - 17u30",
|
||||
"wednesday": "8u30 - 17u30",
|
||||
"thursday": "8u30 - 17u30",
|
||||
"friday": "9u - 16u",
|
||||
"saturday": false,
|
||||
"sunday": false
|
||||
},
|
||||
"type": "Odisee",
|
||||
"extra": false
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "Feature",
|
||||
"geometry": {
|
||||
"type": "Point",
|
||||
"coordinates": [3.726730, 51.042146]
|
||||
},
|
||||
"properties": {
|
||||
"name": "Sint-Pietersabdij Kapittelzaal",
|
||||
"address": "Sint-Pietersabdij Kapittelzaal",
|
||||
"capacity": 60,
|
||||
"period": { "start": "16/12/2014", "end": "30/01/2015" },
|
||||
"hours": {
|
||||
"monday": false,
|
||||
"tuesday": "10u - 18u",
|
||||
"wednesday": "10u - 18u",
|
||||
"thursday": "10u - 18u",
|
||||
"friday": "10u - 18u",
|
||||
"saturday": "10u - 18u",
|
||||
"sunday": "10u - 18u"
|
||||
},
|
||||
"extra": "Gesloten op 24, 25, 31/12 en 1/01.",
|
||||
"type": "Stad Gent"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "Feature",
|
||||
"geometry": {
|
||||
"type": "Point",
|
||||
"coordinates": [3.731393, 51.047282]
|
||||
},
|
||||
"properties": {
|
||||
"name": "Openbare Bibliotheek Zuid",
|
||||
"address": "Achilles Musschezaal",
|
||||
"capacity": 100,
|
||||
"period": { "start": "18/08/2014", "end": "12/09/2014" },
|
||||
"hours": {
|
||||
"monday": "10u - 18u45",
|
||||
"tuesday": "10u - 18u45",
|
||||
"wednesday": "10u - 18u45",
|
||||
"thursday": "10u - 18u45",
|
||||
"friday": "8u30 - 16u45",
|
||||
"saturday": "8u30 - 16u45",
|
||||
"sunday": false
|
||||
},
|
||||
"extra": "Kerstverlof: 23/12 - 3/1: open 10u - 16u45 en niet beschikbaar op 18/12 (voormiddag), 25 en 26/12, 1 en 2/01, 14/01 (voormiddag)",
|
||||
"type": "Stad Gent"
|
||||
}
|
||||
}
|
||||
]
|
27
deploy.sh
Executable file
|
@ -0,0 +1,27 @@
|
|||
#!/bin/bash
|
||||
set -euo pipefail
|
||||
|
||||
declare dir=$(pwd)
|
||||
|
||||
declare timestamp=$(date +%Y-%m-%d_%H%M)
|
||||
|
||||
declare release_dir="$dir/releases/$timestamp"
|
||||
|
||||
|
||||
# Pull latest revision
|
||||
echo "-> Pulling latest release"
|
||||
# Apparently, some systems put "up to date", while others put "up-to-date"
|
||||
git pull | grep 'Already up[- ]to[- ]date.' && echo "No updates, exiting..." && exit 20
|
||||
|
||||
|
||||
# Create release dir and copy sources to that dir
|
||||
echo "-> This release will be stored in $release_dir"
|
||||
mkdir -p "$release_dir"
|
||||
cp -ar src/* "$release_dir"
|
||||
|
||||
# Link this relase to $current
|
||||
echo "-> Linking $dir/current to $release_dir"
|
||||
rm "$dir/current" || true # This may fail
|
||||
ln -sf "$dir/releases/$timestamp" "$dir/current"
|
||||
|
||||
echo "-> Deployed succesfully!"
|
10
index.html
|
@ -1,10 +0,0 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>Blokken in Gent</title>
|
||||
</head>
|
||||
<body>
|
||||
<iframe id="iframe" src="map.html" style="width: 1000px; height: 500px"></iframe>
|
||||
</body>
|
||||
</html>
|
|
@ -1,199 +0,0 @@
|
|||
/*
|
||||
* Google layer using Google Maps API
|
||||
*/
|
||||
|
||||
/* global google: true */
|
||||
|
||||
L.Google = L.Class.extend({
|
||||
includes: L.Mixin.Events,
|
||||
|
||||
options: {
|
||||
minZoom: 0,
|
||||
maxZoom: 18,
|
||||
tileSize: 256,
|
||||
subdomains: 'abc',
|
||||
errorTileUrl: '',
|
||||
attribution: 'Made with ❤ by <a href="http://zeus.ugent.be">Zeus WPI</a>',
|
||||
opacity: 1,
|
||||
continuousWorld: false,
|
||||
noWrap: false,
|
||||
mapOptions: {
|
||||
backgroundColor: '#dddddd'
|
||||
}
|
||||
},
|
||||
|
||||
// Possible types: SATELLITE, ROADMAP, HYBRID, TERRAIN
|
||||
initialize: function(type, options) {
|
||||
L.Util.setOptions(this, options);
|
||||
|
||||
this._ready = google.maps.Map !== undefined;
|
||||
if (!this._ready) L.Google.asyncWait.push(this);
|
||||
|
||||
this._type = type || 'SATELLITE';
|
||||
},
|
||||
|
||||
onAdd: function(map, insertAtTheBottom) {
|
||||
this._map = map;
|
||||
this._insertAtTheBottom = insertAtTheBottom;
|
||||
|
||||
// create a container div for tiles
|
||||
this._initContainer();
|
||||
this._initMapObject();
|
||||
|
||||
// set up events
|
||||
map.on('viewreset', this._resetCallback, this);
|
||||
|
||||
this._limitedUpdate = L.Util.limitExecByInterval(this._update, 150, this);
|
||||
map.on('move', this._update, this);
|
||||
|
||||
map.on('zoomanim', this._handleZoomAnim, this);
|
||||
|
||||
//20px instead of 1em to avoid a slight overlap with google's attribution
|
||||
map._controlCorners.bottomright.style.marginBottom = '20px';
|
||||
|
||||
this._reset();
|
||||
this._update();
|
||||
},
|
||||
|
||||
onRemove: function(map) {
|
||||
map._container.removeChild(this._container);
|
||||
|
||||
map.off('viewreset', this._resetCallback, this);
|
||||
|
||||
map.off('move', this._update, this);
|
||||
|
||||
map.off('zoomanim', this._handleZoomAnim, this);
|
||||
|
||||
map._controlCorners.bottomright.style.marginBottom = '0em';
|
||||
},
|
||||
|
||||
getAttribution: function() {
|
||||
return this.options.attribution;
|
||||
},
|
||||
|
||||
setOpacity: function(opacity) {
|
||||
this.options.opacity = opacity;
|
||||
if (opacity < 1) {
|
||||
L.DomUtil.setOpacity(this._container, opacity);
|
||||
}
|
||||
},
|
||||
|
||||
setElementSize: function(e, size) {
|
||||
e.style.width = size.x + 'px';
|
||||
e.style.height = size.y + 'px';
|
||||
},
|
||||
|
||||
_initContainer: function() {
|
||||
var tilePane = this._map._container,
|
||||
first = tilePane.firstChild;
|
||||
|
||||
if (!this._container) {
|
||||
this._container = L.DomUtil.create('div', 'leaflet-google-layer leaflet-top leaflet-left');
|
||||
this._container.id = '_GMapContainer_' + L.Util.stamp(this);
|
||||
this._container.style.zIndex = 'auto';
|
||||
}
|
||||
|
||||
tilePane.insertBefore(this._container, first);
|
||||
|
||||
this.setOpacity(this.options.opacity);
|
||||
this.setElementSize(this._container, this._map.getSize());
|
||||
},
|
||||
|
||||
_initMapObject: function() {
|
||||
if (!this._ready) return;
|
||||
this._google_center = new google.maps.LatLng(0, 0);
|
||||
var map = new google.maps.Map(this._container, {
|
||||
center: this._google_center,
|
||||
zoom: 0,
|
||||
tilt: 0,
|
||||
mapTypeId: google.maps.MapTypeId[this._type],
|
||||
disableDefaultUI: true,
|
||||
keyboardShortcuts: false,
|
||||
draggable: false,
|
||||
disableDoubleClickZoom: true,
|
||||
scrollwheel: false,
|
||||
streetViewControl: false,
|
||||
styles: this.options.mapOptions.styles,
|
||||
backgroundColor: this.options.mapOptions.backgroundColor
|
||||
});
|
||||
|
||||
var _this = this;
|
||||
this._reposition = google.maps.event.addListenerOnce(map, 'center_changed',
|
||||
function() { _this.onReposition(); });
|
||||
this._google = map;
|
||||
|
||||
google.maps.event.addListenerOnce(map, 'idle',
|
||||
function() { _this._checkZoomLevels(); });
|
||||
//Reporting that map-object was initialized.
|
||||
this.fire('MapObjectInitialized', { mapObject: map });
|
||||
},
|
||||
|
||||
_checkZoomLevels: function() {
|
||||
//setting the zoom level on the Google map may result in a different zoom level than the one requested
|
||||
//(it won't go beyond the level for which they have data).
|
||||
// verify and make sure the zoom levels on both Leaflet and Google maps are consistent
|
||||
if (this._google.getZoom() !== this._map.getZoom()) {
|
||||
//zoom levels are out of sync. Set the leaflet zoom level to match the google one
|
||||
this._map.setZoom( this._google.getZoom() );
|
||||
}
|
||||
},
|
||||
|
||||
_resetCallback: function(e) {
|
||||
this._reset(e.hard);
|
||||
},
|
||||
|
||||
_reset: function(clearOldContainer) {
|
||||
this._initContainer();
|
||||
},
|
||||
|
||||
_update: function(e) {
|
||||
if (!this._google) return;
|
||||
this._resize();
|
||||
|
||||
var center = this._map.getCenter();
|
||||
var _center = new google.maps.LatLng(center.lat, center.lng);
|
||||
|
||||
this._google.setCenter(_center);
|
||||
this._google.setZoom(Math.round(this._map.getZoom()));
|
||||
|
||||
this._checkZoomLevels();
|
||||
},
|
||||
|
||||
_resize: function() {
|
||||
var size = this._map.getSize();
|
||||
if (this._container.style.width === size.x &&
|
||||
this._container.style.height === size.y)
|
||||
return;
|
||||
this.setElementSize(this._container, size);
|
||||
this.onReposition();
|
||||
},
|
||||
|
||||
|
||||
_handleZoomAnim: function (e) {
|
||||
var center = e.center;
|
||||
var _center = new google.maps.LatLng(center.lat, center.lng);
|
||||
|
||||
this._google.setCenter(_center);
|
||||
this._google.setZoom(Math.round(e.zoom));
|
||||
},
|
||||
|
||||
|
||||
onReposition: function() {
|
||||
if (!this._google) return;
|
||||
google.maps.event.trigger(this._google, 'resize');
|
||||
}
|
||||
});
|
||||
|
||||
L.Google.asyncWait = [];
|
||||
L.Google.asyncInitialize = function() {
|
||||
var i;
|
||||
for (i = 0; i < L.Google.asyncWait.length; i++) {
|
||||
var o = L.Google.asyncWait[i];
|
||||
o._ready = true;
|
||||
if (o._container) {
|
||||
o._initMapObject();
|
||||
o._update();
|
||||
}
|
||||
}
|
||||
L.Google.asyncWait = [];
|
||||
};
|
141
map.css
|
@ -1,141 +0,0 @@
|
|||
html, body {
|
||||
margin: 0px;
|
||||
padding: 0px;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
#map {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
.leaflet-popup-content-wrapper,
|
||||
.leaflet-control-zoom {
|
||||
border-radius: 0px;
|
||||
}
|
||||
|
||||
.leaflet-map-pane {
|
||||
z-index: 2 !important;
|
||||
}
|
||||
|
||||
.leaflet-google-layer {
|
||||
z-index: 1 !important;
|
||||
}
|
||||
|
||||
.leaflet-popup-content-wrapper {
|
||||
width: 600px;
|
||||
max-height: 400px;
|
||||
overflow-y:auto
|
||||
}
|
||||
|
||||
.leaflet-popup-content {
|
||||
width:auto !important;
|
||||
}
|
||||
|
||||
.leaflet-control-attribution {
|
||||
bottom: -5px;
|
||||
}
|
||||
|
||||
div.leaflet-top.leaflet-right {
|
||||
z-index:1;
|
||||
}
|
||||
|
||||
a img {
|
||||
border: none;
|
||||
}
|
||||
|
||||
h4 {
|
||||
margin-top: 5px;
|
||||
margin-bottom: 5px;
|
||||
}
|
||||
|
||||
table {
|
||||
padding-bottom: 10px;
|
||||
border-spacing: 0;
|
||||
width: 100%
|
||||
}
|
||||
|
||||
.desktop tr td {
|
||||
padding-right: 5px;
|
||||
width: 75;
|
||||
vertical-align: top;
|
||||
}
|
||||
|
||||
.mobile tr td:first-child {
|
||||
padding: 0;
|
||||
padding-right: 10px;
|
||||
}
|
||||
|
||||
.mobile tr:nth-child(2n) {
|
||||
background: rgb(244,244,244);
|
||||
}
|
||||
|
||||
.info {
|
||||
padding: 6px 8px;
|
||||
font: 14px/16px Arial, Helvetica, sans-serif;
|
||||
background: white;
|
||||
background: rgba(255,255,255,0.0);
|
||||
}
|
||||
|
||||
#zeus {
|
||||
padding-left: 10px;
|
||||
}
|
||||
|
||||
.legend {
|
||||
|
||||
height: 52px;
|
||||
width: 130px;
|
||||
background-color: #fff;
|
||||
box-shadow: 0 1px 5px rgba(0,0,0,0.65);
|
||||
}
|
||||
|
||||
.type {
|
||||
position: absolute;
|
||||
top: 15px;
|
||||
right: 15px;
|
||||
}
|
||||
|
||||
|
||||
.mobile {
|
||||
display: none;
|
||||
}
|
||||
|
||||
@media screen and (max-width: 1000px) {
|
||||
.leaflet-popup-content-wrapper {
|
||||
width: 250px;
|
||||
}
|
||||
|
||||
.desktop {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.mobile {
|
||||
display: block;
|
||||
width: 213px;
|
||||
}
|
||||
|
||||
h3, .text {
|
||||
max-width: 150px;
|
||||
}
|
||||
}
|
||||
|
||||
@media screen and (max-width: 800px) {
|
||||
.info {
|
||||
max-width: 90px;s
|
||||
}
|
||||
|
||||
#schamper {
|
||||
width: 90px;
|
||||
}
|
||||
|
||||
#zeus {
|
||||
width: 75px;
|
||||
}
|
||||
}
|
||||
|
||||
@media screen and (max-height: 400px) {
|
||||
.leaflet-popup-content-wrapper {
|
||||
max-height: 150px;
|
||||
}
|
||||
}
|
135
map.html
|
@ -1,135 +0,0 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>Bloklocaties in Gent</title>
|
||||
<meta name="apple-itunes-app" content="app-id=602640924">
|
||||
<meta name="google-play-app" content="app-id=be.ugent.zeus.hydra">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
|
||||
|
||||
<meta property="og:site_name" content="Zeus WPI">
|
||||
<meta property="og:type" content="article">
|
||||
<meta property="og:title" content="Bloklocaties in Gent">
|
||||
<meta property="og:description" content="Samenhokken om te blokken? Er zijn maar liefst 4000 zitjes in Gent om dat te doen. Schamper en Zeus maakten een overzicht!">
|
||||
<meta property="og:url" content="http://zeus.ugent.be/blok/">
|
||||
<meta property="og:image" content="http://zeus.ugent.be/blok/share.jpg">
|
||||
|
||||
<meta name="twitter:card" content="summary">
|
||||
<meta name="twitter:url" content="http://zeus.ugent.be/blok/">
|
||||
<meta name="twitter:title" content="Bloklocaties in Gent">
|
||||
<meta name="twitter:description" content="Samenhokken om te blokken? Er zijn maar liefst 4000 zitjes in Gent om dat te doen. Schamper en Zeus maakten een overzicht!">
|
||||
<meta name="twitter:image" content="http://zeus.ugent.be/blok/share.jpg">
|
||||
|
||||
<link rel="stylesheet" href="http://cdn.leafletjs.com/leaflet-0.7.3/leaflet.css" />
|
||||
<link rel="stylesheet" href="map.css" />
|
||||
<script src="http://cdn.leafletjs.com/leaflet-0.7.3/leaflet.js"></script>
|
||||
<script src="http://maps.google.com/maps/api/js?key=AIzaSyBAuXgl_O24GqLMl-ylUPLEH7O0wbK3J4A&v=3.2&sensor=false"></script>
|
||||
<script src="leaflet-google.js"></script>
|
||||
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
|
||||
<script type="text/javascript" src="//cdnjs.cloudflare.com/ajax/libs/handlebars.js/2.0.0/handlebars.min.js"></script>
|
||||
<script type="text/javascript" src="map.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<div id="map"></div>
|
||||
<script id="popup-template" type="text/x-handlebars-template">
|
||||
<div id="resto-popup">
|
||||
<h3>{{name}} ({{capacity}} pl.)</h3>
|
||||
<img src="{{type}}.png" class="type">
|
||||
<div class="text">Locatie: {{address}}<br />
|
||||
Van {{period.start}} tot {{period.end}}
|
||||
</div>
|
||||
<h4>Openingsuren</h4>
|
||||
<table class="desktop">
|
||||
<tr>
|
||||
<td>Maandag</td>
|
||||
<td>Dinsdag</td>
|
||||
<td>Woensdag</td>
|
||||
<td>Donderdag</td>
|
||||
<td>Vrijdag</td>
|
||||
<td>Zaterdag</td>
|
||||
<td>Zondag</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{{#if hours.monday}}{{{hours.monday}}}{{else}}Gesloten{{/if}}</td>
|
||||
<td>{{#if hours.tuesday}}{{{hours.tuesday}}}{{else}}Gesloten{{/if}}</td>
|
||||
<td>{{#if hours.wednesday}}{{{hours.wednesday}}}{{else}}Gesloten{{/if}}</td>
|
||||
<td>{{#if hours.thursday}}{{{hours.thursday}}}{{else}}Gesloten{{/if}}</td>
|
||||
<td>{{#if hours.friday}}{{{hours.friday}}}{{else}}Gesloten{{/if}}</td>
|
||||
<td>{{#if hours.saturday}}{{{hours.saturday}}}{{else}}Gesloten{{/if}}</td>
|
||||
<td>{{#if hours.sunday}}{{{hours.sunday}}}{{else}}Gesloten{{/if}}</td>
|
||||
</tr>
|
||||
</table>
|
||||
<table class="mobile">
|
||||
<tr>
|
||||
<td>Maandag</td>
|
||||
<td>{{#if hours.monday}}{{{hours.monday}}}{{else}}Gesloten{{/if}}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Dinsdag</td>
|
||||
<td>{{#if hours.tuesday}}{{{hours.tuesday}}}{{else}}Gesloten{{/if}}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Woensdag</td>
|
||||
<td>{{#if hours.wednesday}}{{{hours.wednesday}}}{{else}}Gesloten{{/if}}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Donderdag</td>
|
||||
<td>{{#if hours.thursday}}{{{hours.thursday}}}{{else}}Gesloten{{/if}}</td>
|
||||
</tr><tr>
|
||||
<td>Vrijdag</td>
|
||||
<td>{{#if hours.friday}}{{{hours.friday}}}{{else}}Gesloten{{/if}}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Zaterdag</td>
|
||||
<td>{{#if hours.saturday}}{{{hours.saturday}}}{{else}}Gesloten{{/if}}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Zondag</td>
|
||||
<td>{{#if hours.sunday}}{{{hours.sunday}}}{{else}}Gesloten{{/if}}</td>
|
||||
</tr>
|
||||
</table>
|
||||
{{#if extra}}{{{extra}}}{{/if}}
|
||||
</div>
|
||||
</script>
|
||||
<script id="info-template" type="text/x-handlebars-template">
|
||||
<a href="http://schamper.be/"><img id="schamper" src='schamper.png'></a>
|
||||
<a href="http://zeus.ugent.be/"><img id="zeus" src='zeus.png'></a>
|
||||
</script>
|
||||
<script id="share-template" type="text/x-handlebars-template">
|
||||
<div class="fb-share-button" data-href="http://zeus.ugent.be/blok/" data-layout="button_count"></div>
|
||||
</script>
|
||||
<script id="legend-template" type="text/x-handlebars-template">
|
||||
<div style="padding-top: 5px;">
|
||||
<div style="width: 125px; height: 18px; padding-top: 5px; padding-left: 5px;">
|
||||
<div style="height: 10px; width: 10px; background: rgb(209,39,35); margin-top: -1px; margin-left: 5px;"></div>
|
||||
<span style="position: absolute; left: 25px; top: 5px;">Week en weekend</span>
|
||||
</div>
|
||||
<div style="width: 125px; height: 18px; padding-top: 5px; padding-left: 5px;">
|
||||
<div style="height: 10px; width: 10px; background: rgb(36, 126, 202); margin-top: 1px; margin-left: 5px;"></div>
|
||||
<span style="position: absolute; left: 25px; top: 30px;">Enkel week</span>
|
||||
</div>
|
||||
</div>
|
||||
</script>
|
||||
|
||||
<!-- Facebook SDK -->
|
||||
<div id="fb-root"></div>
|
||||
<script>(function(d, s, id) {
|
||||
var js, fjs = d.getElementsByTagName(s)[0];
|
||||
if (d.getElementById(id)) return;
|
||||
js = d.createElement(s); js.id = id;
|
||||
js.src = "//connect.facebook.net/en_US/sdk.js#xfbml=1&appId=146947948791011&version=v2.0";
|
||||
fjs.parentNode.insertBefore(js, fjs);
|
||||
}(document, 'script', 'facebook-jssdk'));</script>
|
||||
<!-- Google Analytics SDK -->
|
||||
<script>
|
||||
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
|
||||
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
|
||||
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
|
||||
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
|
||||
|
||||
ga('create', 'UA-25444917-8', 'auto');
|
||||
ga('send', 'pageview');
|
||||
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
66
map.js
|
@ -1,66 +0,0 @@
|
|||
$(document).ready(function() {
|
||||
var popuptemplate = Handlebars.compile($('#popup-template').html());
|
||||
var RedIcon = L.Icon.Default.extend({
|
||||
options: {
|
||||
iconUrl: 'red-marker.png'
|
||||
}
|
||||
});
|
||||
var redIcon = new RedIcon();
|
||||
var BlueIcon = L.Icon.Default.extend({});
|
||||
var blueIcon = new BlueIcon();
|
||||
|
||||
function onEachFeature(feature, layer) {
|
||||
if (feature.properties) {
|
||||
layer.bindPopup(popuptemplate(feature.properties));
|
||||
}
|
||||
}
|
||||
|
||||
function pointToLayer(feature, latlng) {
|
||||
if (feature.properties) {
|
||||
if (!feature.properties.hours.saturday && !feature.properties.hours.sunday) {
|
||||
return L.marker(latlng, {icon:blueIcon});
|
||||
}
|
||||
}
|
||||
return L.marker(latlng, {icon: redIcon});
|
||||
}
|
||||
|
||||
var map = L.map('map').setView([51.0475378, 3.7261835], 13);
|
||||
var googleLayer = new L.Google('TERRAIN');
|
||||
map.addLayer(googleLayer);
|
||||
|
||||
$.getJSON('data.json')
|
||||
.done(function(data) {
|
||||
var geojson = L.geoJson(data, {
|
||||
onEachFeature: onEachFeature,
|
||||
pointToLayer: pointToLayer
|
||||
});
|
||||
map.addLayer(geojson);
|
||||
});
|
||||
|
||||
var SimpleControl = L.Control.extend({
|
||||
initialize: function(templateId, divClass, options) {
|
||||
this.template = Handlebars.compile($(templateId).html());
|
||||
this.divClass = divClass;
|
||||
L.Util.setOptions(this, options);
|
||||
},
|
||||
|
||||
onAdd: function (map) {
|
||||
this._div = L.DomUtil.create('div', this.divClass);
|
||||
this._div.innerHTML = this.template();
|
||||
|
||||
return this._div;
|
||||
}
|
||||
});
|
||||
|
||||
var info = new SimpleControl('#info-template', 'info', {
|
||||
position: 'topright'
|
||||
}).addTo(map);
|
||||
|
||||
var sharePane = new SimpleControl('#share-template', 'info', {
|
||||
position: 'bottomleft'
|
||||
}).addTo(map);
|
||||
|
||||
var legend = new SimpleControl('#legend-template', 'legend', {
|
||||
position: 'bottomright'
|
||||
}).addTo(map);
|
||||
});
|
BIN
red-marker.png
Before Width: | Height: | Size: 1.7 KiB |
BIN
schamper.png
Before Width: | Height: | Size: 12 KiB |
523
src/css/leaflet-1.0.0.css
Normal file
|
@ -0,0 +1,523 @@
|
|||
/* required styles */
|
||||
|
||||
.leaflet-pane,
|
||||
.leaflet-tile,
|
||||
.leaflet-marker-icon,
|
||||
.leaflet-marker-shadow,
|
||||
.leaflet-tile-container,
|
||||
.leaflet-map-pane svg,
|
||||
.leaflet-map-pane canvas,
|
||||
.leaflet-zoom-box,
|
||||
.leaflet-image-layer,
|
||||
.leaflet-layer {
|
||||
position: absolute;
|
||||
left: 0;
|
||||
top: 0;
|
||||
}
|
||||
.leaflet-container {
|
||||
overflow: hidden;
|
||||
-ms-touch-action: none;
|
||||
touch-action: none;
|
||||
}
|
||||
.leaflet-tile,
|
||||
.leaflet-marker-icon,
|
||||
.leaflet-marker-shadow {
|
||||
-webkit-user-select: none;
|
||||
-moz-user-select: none;
|
||||
user-select: none;
|
||||
-webkit-user-drag: none;
|
||||
}
|
||||
/* Safari renders non-retina tile on retina better with this, but Chrome is worse */
|
||||
.leaflet-safari .leaflet-tile {
|
||||
image-rendering: -webkit-optimize-contrast;
|
||||
}
|
||||
/* hack that prevents hw layers "stretching" when loading new tiles */
|
||||
.leaflet-safari .leaflet-tile-container {
|
||||
width: 1600px;
|
||||
height: 1600px;
|
||||
-webkit-transform-origin: 0 0;
|
||||
}
|
||||
.leaflet-marker-icon,
|
||||
.leaflet-marker-shadow {
|
||||
display: block;
|
||||
}
|
||||
/* .leaflet-container svg: reset svg max-width decleration shipped in Joomla! (joomla.org) 3.x */
|
||||
/* .leaflet-container img: map is broken in FF if you have max-width: 100% on tiles */
|
||||
.leaflet-container .leaflet-overlay-pane svg,
|
||||
.leaflet-container .leaflet-marker-pane img,
|
||||
.leaflet-container .leaflet-tile-pane img,
|
||||
.leaflet-container img.leaflet-image-layer {
|
||||
max-width: none !important;
|
||||
}
|
||||
.leaflet-tile {
|
||||
filter: inherit;
|
||||
visibility: hidden;
|
||||
}
|
||||
.leaflet-tile-loaded {
|
||||
visibility: inherit;
|
||||
}
|
||||
.leaflet-zoom-box {
|
||||
width: 0;
|
||||
height: 0;
|
||||
-moz-box-sizing: border-box;
|
||||
box-sizing: border-box;
|
||||
z-index: 800;
|
||||
}
|
||||
/* workaround for https://bugzilla.mozilla.org/show_bug.cgi?id=888319 */
|
||||
.leaflet-overlay-pane svg {
|
||||
-moz-user-select: none;
|
||||
}
|
||||
|
||||
.leaflet-pane { z-index: 400; }
|
||||
|
||||
.leaflet-tile-pane { z-index: 200; }
|
||||
.leaflet-overlay-pane { z-index: 400; }
|
||||
.leaflet-shadow-pane { z-index: 500; }
|
||||
.leaflet-marker-pane { z-index: 600; }
|
||||
.leaflet-popup-pane { z-index: 700; }
|
||||
|
||||
.leaflet-map-pane canvas { z-index: 100; }
|
||||
.leaflet-map-pane svg { z-index: 200; }
|
||||
|
||||
.leaflet-vml-shape {
|
||||
width: 1px;
|
||||
height: 1px;
|
||||
}
|
||||
.lvml {
|
||||
behavior: url(#default#VML);
|
||||
display: inline-block;
|
||||
position: absolute;
|
||||
}
|
||||
|
||||
|
||||
/* control positioning */
|
||||
|
||||
.leaflet-control {
|
||||
position: relative;
|
||||
z-index: 800;
|
||||
pointer-events: auto;
|
||||
}
|
||||
.leaflet-top,
|
||||
.leaflet-bottom {
|
||||
position: absolute;
|
||||
z-index: 1000;
|
||||
pointer-events: none;
|
||||
}
|
||||
.leaflet-top {
|
||||
top: 0;
|
||||
}
|
||||
.leaflet-right {
|
||||
right: 0;
|
||||
}
|
||||
.leaflet-bottom {
|
||||
bottom: 0;
|
||||
}
|
||||
.leaflet-left {
|
||||
left: 0;
|
||||
}
|
||||
.leaflet-control {
|
||||
float: left;
|
||||
clear: both;
|
||||
}
|
||||
.leaflet-right .leaflet-control {
|
||||
float: right;
|
||||
}
|
||||
.leaflet-top .leaflet-control {
|
||||
margin-top: 10px;
|
||||
}
|
||||
.leaflet-bottom .leaflet-control {
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
.leaflet-left .leaflet-control {
|
||||
margin-left: 10px;
|
||||
}
|
||||
.leaflet-right .leaflet-control {
|
||||
margin-right: 10px;
|
||||
}
|
||||
|
||||
|
||||
/* zoom and fade animations */
|
||||
|
||||
.leaflet-fade-anim .leaflet-tile {
|
||||
will-change: opacity;
|
||||
}
|
||||
.leaflet-fade-anim .leaflet-popup {
|
||||
opacity: 0;
|
||||
-webkit-transition: opacity 0.2s linear;
|
||||
-moz-transition: opacity 0.2s linear;
|
||||
-o-transition: opacity 0.2s linear;
|
||||
transition: opacity 0.2s linear;
|
||||
}
|
||||
.leaflet-fade-anim .leaflet-map-pane .leaflet-popup {
|
||||
opacity: 1;
|
||||
}
|
||||
.leaflet-zoom-animated {
|
||||
-webkit-transform-origin: 0 0;
|
||||
-ms-transform-origin: 0 0;
|
||||
transform-origin: 0 0;
|
||||
}
|
||||
.leaflet-zoom-anim .leaflet-zoom-animated {
|
||||
will-change: transform;
|
||||
}
|
||||
.leaflet-zoom-anim .leaflet-zoom-animated {
|
||||
-webkit-transition: -webkit-transform 0.25s cubic-bezier(0,0,0.25,1);
|
||||
-moz-transition: -moz-transform 0.25s cubic-bezier(0,0,0.25,1);
|
||||
-o-transition: -o-transform 0.25s cubic-bezier(0,0,0.25,1);
|
||||
transition: transform 0.25s cubic-bezier(0,0,0.25,1);
|
||||
}
|
||||
.leaflet-zoom-anim .leaflet-tile,
|
||||
.leaflet-pan-anim .leaflet-tile {
|
||||
-webkit-transition: none;
|
||||
-moz-transition: none;
|
||||
-o-transition: none;
|
||||
transition: none;
|
||||
}
|
||||
|
||||
.leaflet-zoom-anim .leaflet-zoom-hide {
|
||||
visibility: hidden;
|
||||
}
|
||||
|
||||
|
||||
/* cursors */
|
||||
|
||||
.leaflet-interactive {
|
||||
cursor: pointer;
|
||||
}
|
||||
.leaflet-grab {
|
||||
cursor: -webkit-grab;
|
||||
cursor: -moz-grab;
|
||||
}
|
||||
.leaflet-crosshair,
|
||||
.leaflet-crosshair .leaflet-interactive {
|
||||
cursor: crosshair;
|
||||
}
|
||||
.leaflet-popup-pane,
|
||||
.leaflet-control {
|
||||
cursor: auto;
|
||||
}
|
||||
.leaflet-dragging .leaflet-grab,
|
||||
.leaflet-dragging .leaflet-grab .leaflet-interactive,
|
||||
.leaflet-dragging .leaflet-marker-draggable {
|
||||
cursor: move;
|
||||
cursor: -webkit-grabbing;
|
||||
cursor: -moz-grabbing;
|
||||
}
|
||||
|
||||
/* marker & overlays interactivity */
|
||||
.leaflet-marker-icon,
|
||||
.leaflet-marker-shadow,
|
||||
.leaflet-image-layer,
|
||||
.leaflet-pane > svg path,
|
||||
.leaflet-tile-container {
|
||||
pointer-events: none;
|
||||
}
|
||||
|
||||
.leaflet-marker-icon.leaflet-interactive,
|
||||
.leaflet-image-layer.leaflet-interactive,
|
||||
.leaflet-pane > svg path.leaflet-interactive {
|
||||
pointer-events: auto;
|
||||
}
|
||||
|
||||
/* visual tweaks */
|
||||
|
||||
.leaflet-container {
|
||||
background: #ddd;
|
||||
outline: 0;
|
||||
}
|
||||
.leaflet-container a {
|
||||
color: #0078A8;
|
||||
}
|
||||
.leaflet-container a.leaflet-active {
|
||||
outline: 2px solid orange;
|
||||
}
|
||||
.leaflet-zoom-box {
|
||||
border: 2px dotted #38f;
|
||||
background: rgba(255,255,255,0.5);
|
||||
}
|
||||
|
||||
|
||||
/* general typography */
|
||||
.leaflet-container {
|
||||
font: 12px/1.5 "Helvetica Neue", Arial, Helvetica, sans-serif;
|
||||
}
|
||||
|
||||
|
||||
/* general toolbar styles */
|
||||
|
||||
.leaflet-bar {
|
||||
box-shadow: 0 1px 5px rgba(0,0,0,0.65);
|
||||
border-radius: 4px;
|
||||
}
|
||||
.leaflet-bar a,
|
||||
.leaflet-bar a:hover {
|
||||
background-color: #fff;
|
||||
border-bottom: 1px solid #ccc;
|
||||
width: 26px;
|
||||
height: 26px;
|
||||
line-height: 26px;
|
||||
display: block;
|
||||
text-align: center;
|
||||
text-decoration: none;
|
||||
color: black;
|
||||
}
|
||||
.leaflet-bar a,
|
||||
.leaflet-control-layers-toggle {
|
||||
background-position: 50% 50%;
|
||||
background-repeat: no-repeat;
|
||||
display: block;
|
||||
}
|
||||
.leaflet-bar a:hover {
|
||||
background-color: #f4f4f4;
|
||||
}
|
||||
.leaflet-bar a:first-child {
|
||||
border-top-left-radius: 4px;
|
||||
border-top-right-radius: 4px;
|
||||
}
|
||||
.leaflet-bar a:last-child {
|
||||
border-bottom-left-radius: 4px;
|
||||
border-bottom-right-radius: 4px;
|
||||
border-bottom: none;
|
||||
}
|
||||
.leaflet-bar a.leaflet-disabled {
|
||||
cursor: default;
|
||||
background-color: #f4f4f4;
|
||||
color: #bbb;
|
||||
}
|
||||
|
||||
.leaflet-touch .leaflet-bar a {
|
||||
width: 30px;
|
||||
height: 30px;
|
||||
line-height: 30px;
|
||||
}
|
||||
|
||||
|
||||
/* zoom control */
|
||||
|
||||
.leaflet-control-zoom-in,
|
||||
.leaflet-control-zoom-out {
|
||||
font: bold 18px 'Lucida Console', Monaco, monospace;
|
||||
text-indent: 1px;
|
||||
}
|
||||
.leaflet-control-zoom-out {
|
||||
font-size: 20px;
|
||||
}
|
||||
|
||||
.leaflet-touch .leaflet-control-zoom-in {
|
||||
font-size: 22px;
|
||||
}
|
||||
.leaflet-touch .leaflet-control-zoom-out {
|
||||
font-size: 24px;
|
||||
}
|
||||
|
||||
|
||||
/* layers control */
|
||||
|
||||
.leaflet-control-layers {
|
||||
box-shadow: 0 1px 5px rgba(0,0,0,0.4);
|
||||
background: #fff;
|
||||
border-radius: 5px;
|
||||
}
|
||||
.leaflet-control-layers-toggle {
|
||||
background-image: url(images/layers.png);
|
||||
width: 36px;
|
||||
height: 36px;
|
||||
}
|
||||
.leaflet-retina .leaflet-control-layers-toggle {
|
||||
background-image: url(images/layers-2x.png);
|
||||
background-size: 26px 26px;
|
||||
}
|
||||
.leaflet-touch .leaflet-control-layers-toggle {
|
||||
width: 44px;
|
||||
height: 44px;
|
||||
}
|
||||
.leaflet-control-layers .leaflet-control-layers-list,
|
||||
.leaflet-control-layers-expanded .leaflet-control-layers-toggle {
|
||||
display: none;
|
||||
}
|
||||
.leaflet-control-layers-expanded .leaflet-control-layers-list {
|
||||
display: block;
|
||||
position: relative;
|
||||
}
|
||||
.leaflet-control-layers-expanded {
|
||||
padding: 6px 10px 6px 6px;
|
||||
color: #333;
|
||||
background: #fff;
|
||||
}
|
||||
.leaflet-control-layers-scrollbar {
|
||||
overflow-y: scroll;
|
||||
padding-right: 5px;
|
||||
}
|
||||
.leaflet-control-layers-selector {
|
||||
margin-top: 2px;
|
||||
position: relative;
|
||||
top: 1px;
|
||||
}
|
||||
.leaflet-control-layers label {
|
||||
display: block;
|
||||
}
|
||||
.leaflet-control-layers-separator {
|
||||
height: 0;
|
||||
border-top: 1px solid #ddd;
|
||||
margin: 5px -10px 5px -6px;
|
||||
}
|
||||
|
||||
|
||||
/* attribution and scale controls */
|
||||
|
||||
.leaflet-container .leaflet-control-attribution {
|
||||
background: #fff;
|
||||
background: rgba(255, 255, 255, 0.7);
|
||||
margin: 0;
|
||||
}
|
||||
.leaflet-control-attribution,
|
||||
.leaflet-control-scale-line {
|
||||
padding: 0 5px;
|
||||
color: #333;
|
||||
}
|
||||
.leaflet-control-attribution a {
|
||||
text-decoration: none;
|
||||
}
|
||||
.leaflet-control-attribution a:hover {
|
||||
text-decoration: underline;
|
||||
}
|
||||
.leaflet-container .leaflet-control-attribution,
|
||||
.leaflet-container .leaflet-control-scale {
|
||||
font-size: 11px;
|
||||
}
|
||||
.leaflet-left .leaflet-control-scale {
|
||||
margin-left: 5px;
|
||||
}
|
||||
.leaflet-bottom .leaflet-control-scale {
|
||||
margin-bottom: 5px;
|
||||
}
|
||||
.leaflet-control-scale-line {
|
||||
border: 2px solid #777;
|
||||
border-top: none;
|
||||
line-height: 1.1;
|
||||
padding: 2px 5px 1px;
|
||||
font-size: 11px;
|
||||
white-space: nowrap;
|
||||
overflow: hidden;
|
||||
-moz-box-sizing: border-box;
|
||||
box-sizing: border-box;
|
||||
|
||||
background: #fff;
|
||||
background: rgba(255, 255, 255, 0.5);
|
||||
}
|
||||
.leaflet-control-scale-line:not(:first-child) {
|
||||
border-top: 2px solid #777;
|
||||
border-bottom: none;
|
||||
margin-top: -2px;
|
||||
}
|
||||
.leaflet-control-scale-line:not(:first-child):not(:last-child) {
|
||||
border-bottom: 2px solid #777;
|
||||
}
|
||||
|
||||
.leaflet-touch .leaflet-control-attribution,
|
||||
.leaflet-touch .leaflet-control-layers,
|
||||
.leaflet-touch .leaflet-bar {
|
||||
box-shadow: none;
|
||||
}
|
||||
.leaflet-touch .leaflet-control-layers,
|
||||
.leaflet-touch .leaflet-bar {
|
||||
border: 2px solid rgba(0,0,0,0.2);
|
||||
background-clip: padding-box;
|
||||
}
|
||||
|
||||
|
||||
/* popup */
|
||||
|
||||
.leaflet-popup {
|
||||
position: absolute;
|
||||
text-align: center;
|
||||
}
|
||||
.leaflet-popup-content-wrapper {
|
||||
padding: 1px;
|
||||
text-align: left;
|
||||
border-radius: 12px;
|
||||
}
|
||||
.leaflet-popup-content {
|
||||
margin: 13px 19px;
|
||||
line-height: 1.4;
|
||||
}
|
||||
.leaflet-popup-content p {
|
||||
margin: 18px 0;
|
||||
}
|
||||
.leaflet-popup-tip-container {
|
||||
margin: 0 auto;
|
||||
width: 40px;
|
||||
height: 20px;
|
||||
position: relative;
|
||||
overflow: hidden;
|
||||
}
|
||||
.leaflet-popup-tip {
|
||||
width: 17px;
|
||||
height: 17px;
|
||||
padding: 1px;
|
||||
|
||||
margin: -10px auto 0;
|
||||
|
||||
-webkit-transform: rotate(45deg);
|
||||
-moz-transform: rotate(45deg);
|
||||
-ms-transform: rotate(45deg);
|
||||
-o-transform: rotate(45deg);
|
||||
transform: rotate(45deg);
|
||||
}
|
||||
.leaflet-popup-content-wrapper,
|
||||
.leaflet-popup-tip {
|
||||
background: white;
|
||||
color: #333;
|
||||
box-shadow: 0 3px 14px rgba(0,0,0,0.4);
|
||||
}
|
||||
.leaflet-container a.leaflet-popup-close-button {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
right: 0;
|
||||
padding: 4px 4px 0 0;
|
||||
border: none;
|
||||
text-align: center;
|
||||
width: 18px;
|
||||
height: 14px;
|
||||
font: 16px/14px Tahoma, Verdana, sans-serif;
|
||||
color: #c3c3c3;
|
||||
text-decoration: none;
|
||||
font-weight: bold;
|
||||
background: transparent;
|
||||
}
|
||||
.leaflet-container a.leaflet-popup-close-button:hover {
|
||||
color: #999;
|
||||
}
|
||||
.leaflet-popup-scrolled {
|
||||
overflow: auto;
|
||||
border-bottom: 1px solid #ddd;
|
||||
border-top: 1px solid #ddd;
|
||||
}
|
||||
|
||||
.leaflet-oldie .leaflet-popup-content-wrapper {
|
||||
zoom: 1;
|
||||
}
|
||||
.leaflet-oldie .leaflet-popup-tip {
|
||||
width: 24px;
|
||||
margin: 0 auto;
|
||||
|
||||
-ms-filter: "progid:DXImageTransform.Microsoft.Matrix(M11=0.70710678, M12=0.70710678, M21=-0.70710678, M22=0.70710678)";
|
||||
filter: progid:DXImageTransform.Microsoft.Matrix(M11=0.70710678, M12=0.70710678, M21=-0.70710678, M22=0.70710678);
|
||||
}
|
||||
.leaflet-oldie .leaflet-popup-tip-container {
|
||||
margin-top: -1px;
|
||||
}
|
||||
|
||||
.leaflet-oldie .leaflet-control-zoom,
|
||||
.leaflet-oldie .leaflet-control-layers,
|
||||
.leaflet-oldie .leaflet-popup-content-wrapper,
|
||||
.leaflet-oldie .leaflet-popup-tip {
|
||||
border: 1px solid #999;
|
||||
}
|
||||
|
||||
|
||||
/* div icon */
|
||||
|
||||
.leaflet-div-icon {
|
||||
background: #fff;
|
||||
border: 1px solid #666;
|
||||
}
|
640
src/css/leaflet-1.6.0.css
Normal file
|
@ -0,0 +1,640 @@
|
|||
/* required styles */
|
||||
|
||||
.leaflet-pane,
|
||||
.leaflet-tile,
|
||||
.leaflet-marker-icon,
|
||||
.leaflet-marker-shadow,
|
||||
.leaflet-tile-container,
|
||||
.leaflet-pane > svg,
|
||||
.leaflet-pane > canvas,
|
||||
.leaflet-zoom-box,
|
||||
.leaflet-image-layer,
|
||||
.leaflet-layer {
|
||||
position: absolute;
|
||||
left: 0;
|
||||
top: 0;
|
||||
}
|
||||
.leaflet-container {
|
||||
overflow: hidden;
|
||||
}
|
||||
.leaflet-tile,
|
||||
.leaflet-marker-icon,
|
||||
.leaflet-marker-shadow {
|
||||
-webkit-user-select: none;
|
||||
-moz-user-select: none;
|
||||
user-select: none;
|
||||
-webkit-user-drag: none;
|
||||
}
|
||||
/* Prevents IE11 from highlighting tiles in blue */
|
||||
.leaflet-tile::selection {
|
||||
background: transparent;
|
||||
}
|
||||
/* Safari renders non-retina tile on retina better with this, but Chrome is worse */
|
||||
.leaflet-safari .leaflet-tile {
|
||||
image-rendering: -webkit-optimize-contrast;
|
||||
}
|
||||
/* hack that prevents hw layers "stretching" when loading new tiles */
|
||||
.leaflet-safari .leaflet-tile-container {
|
||||
width: 1600px;
|
||||
height: 1600px;
|
||||
-webkit-transform-origin: 0 0;
|
||||
}
|
||||
.leaflet-marker-icon,
|
||||
.leaflet-marker-shadow {
|
||||
display: block;
|
||||
}
|
||||
/* .leaflet-container svg: reset svg max-width decleration shipped in Joomla! (joomla.org) 3.x */
|
||||
/* .leaflet-container img: map is broken in FF if you have max-width: 100% on tiles */
|
||||
.leaflet-container .leaflet-overlay-pane svg,
|
||||
.leaflet-container .leaflet-marker-pane img,
|
||||
.leaflet-container .leaflet-shadow-pane img,
|
||||
.leaflet-container .leaflet-tile-pane img,
|
||||
.leaflet-container img.leaflet-image-layer,
|
||||
.leaflet-container .leaflet-tile {
|
||||
max-width: none !important;
|
||||
max-height: none !important;
|
||||
}
|
||||
|
||||
.leaflet-container.leaflet-touch-zoom {
|
||||
-ms-touch-action: pan-x pan-y;
|
||||
touch-action: pan-x pan-y;
|
||||
}
|
||||
.leaflet-container.leaflet-touch-drag {
|
||||
-ms-touch-action: pinch-zoom;
|
||||
/* Fallback for FF which doesn't support pinch-zoom */
|
||||
touch-action: none;
|
||||
touch-action: pinch-zoom;
|
||||
}
|
||||
.leaflet-container.leaflet-touch-drag.leaflet-touch-zoom {
|
||||
-ms-touch-action: none;
|
||||
touch-action: none;
|
||||
}
|
||||
.leaflet-container {
|
||||
-webkit-tap-highlight-color: transparent;
|
||||
}
|
||||
.leaflet-container a {
|
||||
-webkit-tap-highlight-color: rgba(51, 181, 229, 0.4);
|
||||
}
|
||||
.leaflet-tile {
|
||||
filter: inherit;
|
||||
visibility: hidden;
|
||||
}
|
||||
.leaflet-tile-loaded {
|
||||
visibility: inherit;
|
||||
}
|
||||
.leaflet-zoom-box {
|
||||
width: 0;
|
||||
height: 0;
|
||||
-moz-box-sizing: border-box;
|
||||
box-sizing: border-box;
|
||||
z-index: 800;
|
||||
}
|
||||
/* workaround for https://bugzilla.mozilla.org/show_bug.cgi?id=888319 */
|
||||
.leaflet-overlay-pane svg {
|
||||
-moz-user-select: none;
|
||||
}
|
||||
|
||||
.leaflet-pane { z-index: 400; }
|
||||
|
||||
.leaflet-tile-pane { z-index: 200; }
|
||||
.leaflet-overlay-pane { z-index: 400; }
|
||||
.leaflet-shadow-pane { z-index: 500; }
|
||||
.leaflet-marker-pane { z-index: 600; }
|
||||
.leaflet-tooltip-pane { z-index: 650; }
|
||||
.leaflet-popup-pane { z-index: 700; }
|
||||
|
||||
.leaflet-map-pane canvas { z-index: 100; }
|
||||
.leaflet-map-pane svg { z-index: 200; }
|
||||
|
||||
.leaflet-vml-shape {
|
||||
width: 1px;
|
||||
height: 1px;
|
||||
}
|
||||
.lvml {
|
||||
behavior: url(#default#VML);
|
||||
display: inline-block;
|
||||
position: absolute;
|
||||
}
|
||||
|
||||
|
||||
/* control positioning */
|
||||
|
||||
.leaflet-control {
|
||||
position: relative;
|
||||
z-index: 800;
|
||||
pointer-events: visiblePainted; /* IE 9-10 doesn't have auto */
|
||||
pointer-events: auto;
|
||||
}
|
||||
.leaflet-top,
|
||||
.leaflet-bottom {
|
||||
position: absolute;
|
||||
z-index: 1000;
|
||||
pointer-events: none;
|
||||
}
|
||||
.leaflet-top {
|
||||
top: 0;
|
||||
}
|
||||
.leaflet-right {
|
||||
right: 0;
|
||||
}
|
||||
.leaflet-bottom {
|
||||
bottom: 0;
|
||||
}
|
||||
.leaflet-left {
|
||||
left: 0;
|
||||
}
|
||||
.leaflet-control {
|
||||
float: left;
|
||||
clear: both;
|
||||
}
|
||||
.leaflet-right .leaflet-control {
|
||||
float: right;
|
||||
}
|
||||
.leaflet-top .leaflet-control {
|
||||
margin-top: 10px;
|
||||
}
|
||||
.leaflet-bottom .leaflet-control {
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
.leaflet-left .leaflet-control {
|
||||
margin-left: 10px;
|
||||
}
|
||||
.leaflet-right .leaflet-control {
|
||||
margin-right: 10px;
|
||||
}
|
||||
|
||||
|
||||
/* zoom and fade animations */
|
||||
|
||||
.leaflet-fade-anim .leaflet-tile {
|
||||
will-change: opacity;
|
||||
}
|
||||
.leaflet-fade-anim .leaflet-popup {
|
||||
opacity: 0;
|
||||
-webkit-transition: opacity 0.2s linear;
|
||||
-moz-transition: opacity 0.2s linear;
|
||||
transition: opacity 0.2s linear;
|
||||
}
|
||||
.leaflet-fade-anim .leaflet-map-pane .leaflet-popup {
|
||||
opacity: 1;
|
||||
}
|
||||
.leaflet-zoom-animated {
|
||||
-webkit-transform-origin: 0 0;
|
||||
-ms-transform-origin: 0 0;
|
||||
transform-origin: 0 0;
|
||||
}
|
||||
.leaflet-zoom-anim .leaflet-zoom-animated {
|
||||
will-change: transform;
|
||||
}
|
||||
.leaflet-zoom-anim .leaflet-zoom-animated {
|
||||
-webkit-transition: -webkit-transform 0.25s cubic-bezier(0,0,0.25,1);
|
||||
-moz-transition: -moz-transform 0.25s cubic-bezier(0,0,0.25,1);
|
||||
transition: transform 0.25s cubic-bezier(0,0,0.25,1);
|
||||
}
|
||||
.leaflet-zoom-anim .leaflet-tile,
|
||||
.leaflet-pan-anim .leaflet-tile {
|
||||
-webkit-transition: none;
|
||||
-moz-transition: none;
|
||||
transition: none;
|
||||
}
|
||||
|
||||
.leaflet-zoom-anim .leaflet-zoom-hide {
|
||||
visibility: hidden;
|
||||
}
|
||||
|
||||
|
||||
/* cursors */
|
||||
|
||||
.leaflet-interactive {
|
||||
cursor: pointer;
|
||||
}
|
||||
.leaflet-grab {
|
||||
cursor: -webkit-grab;
|
||||
cursor: -moz-grab;
|
||||
cursor: grab;
|
||||
}
|
||||
.leaflet-crosshair,
|
||||
.leaflet-crosshair .leaflet-interactive {
|
||||
cursor: crosshair;
|
||||
}
|
||||
.leaflet-popup-pane,
|
||||
.leaflet-control {
|
||||
cursor: auto;
|
||||
}
|
||||
.leaflet-dragging .leaflet-grab,
|
||||
.leaflet-dragging .leaflet-grab .leaflet-interactive,
|
||||
.leaflet-dragging .leaflet-marker-draggable {
|
||||
cursor: move;
|
||||
cursor: -webkit-grabbing;
|
||||
cursor: -moz-grabbing;
|
||||
cursor: grabbing;
|
||||
}
|
||||
|
||||
/* marker & overlays interactivity */
|
||||
.leaflet-marker-icon,
|
||||
.leaflet-marker-shadow,
|
||||
.leaflet-image-layer,
|
||||
.leaflet-pane > svg path,
|
||||
.leaflet-tile-container {
|
||||
pointer-events: none;
|
||||
}
|
||||
|
||||
.leaflet-marker-icon.leaflet-interactive,
|
||||
.leaflet-image-layer.leaflet-interactive,
|
||||
.leaflet-pane > svg path.leaflet-interactive,
|
||||
svg.leaflet-image-layer.leaflet-interactive path {
|
||||
pointer-events: visiblePainted; /* IE 9-10 doesn't have auto */
|
||||
pointer-events: auto;
|
||||
}
|
||||
|
||||
/* visual tweaks */
|
||||
|
||||
.leaflet-container {
|
||||
background: #ddd;
|
||||
outline: 0;
|
||||
}
|
||||
.leaflet-container a {
|
||||
color: #0078A8;
|
||||
}
|
||||
.leaflet-container a.leaflet-active {
|
||||
outline: 2px solid orange;
|
||||
}
|
||||
.leaflet-zoom-box {
|
||||
border: 2px dotted #38f;
|
||||
background: rgba(255,255,255,0.5);
|
||||
}
|
||||
|
||||
|
||||
/* general typography */
|
||||
.leaflet-container {
|
||||
font: 12px/1.5 "Helvetica Neue", Arial, Helvetica, sans-serif;
|
||||
}
|
||||
|
||||
|
||||
/* general toolbar styles */
|
||||
|
||||
.leaflet-bar {
|
||||
box-shadow: 0 1px 5px rgba(0,0,0,0.65);
|
||||
border-radius: 4px;
|
||||
}
|
||||
.leaflet-bar a,
|
||||
.leaflet-bar a:hover {
|
||||
background-color: #fff;
|
||||
border-bottom: 1px solid #ccc;
|
||||
width: 26px;
|
||||
height: 26px;
|
||||
line-height: 26px;
|
||||
display: block;
|
||||
text-align: center;
|
||||
text-decoration: none;
|
||||
color: black;
|
||||
}
|
||||
.leaflet-bar a,
|
||||
.leaflet-control-layers-toggle {
|
||||
background-position: 50% 50%;
|
||||
background-repeat: no-repeat;
|
||||
display: block;
|
||||
}
|
||||
.leaflet-bar a:hover {
|
||||
background-color: #f4f4f4;
|
||||
}
|
||||
.leaflet-bar a:first-child {
|
||||
border-top-left-radius: 4px;
|
||||
border-top-right-radius: 4px;
|
||||
}
|
||||
.leaflet-bar a:last-child {
|
||||
border-bottom-left-radius: 4px;
|
||||
border-bottom-right-radius: 4px;
|
||||
border-bottom: none;
|
||||
}
|
||||
.leaflet-bar a.leaflet-disabled {
|
||||
cursor: default;
|
||||
background-color: #f4f4f4;
|
||||
color: #bbb;
|
||||
}
|
||||
|
||||
.leaflet-touch .leaflet-bar a {
|
||||
width: 30px;
|
||||
height: 30px;
|
||||
line-height: 30px;
|
||||
}
|
||||
.leaflet-touch .leaflet-bar a:first-child {
|
||||
border-top-left-radius: 2px;
|
||||
border-top-right-radius: 2px;
|
||||
}
|
||||
.leaflet-touch .leaflet-bar a:last-child {
|
||||
border-bottom-left-radius: 2px;
|
||||
border-bottom-right-radius: 2px;
|
||||
}
|
||||
|
||||
/* zoom control */
|
||||
|
||||
.leaflet-control-zoom-in,
|
||||
.leaflet-control-zoom-out {
|
||||
font: bold 18px 'Lucida Console', Monaco, monospace;
|
||||
text-indent: 1px;
|
||||
}
|
||||
|
||||
.leaflet-touch .leaflet-control-zoom-in, .leaflet-touch .leaflet-control-zoom-out {
|
||||
font-size: 22px;
|
||||
}
|
||||
|
||||
|
||||
/* layers control */
|
||||
|
||||
.leaflet-control-layers {
|
||||
box-shadow: 0 1px 5px rgba(0,0,0,0.4);
|
||||
background: #fff;
|
||||
border-radius: 5px;
|
||||
}
|
||||
.leaflet-control-layers-toggle {
|
||||
background-image: url(images/layers.png);
|
||||
width: 36px;
|
||||
height: 36px;
|
||||
}
|
||||
.leaflet-retina .leaflet-control-layers-toggle {
|
||||
background-image: url(images/layers-2x.png);
|
||||
background-size: 26px 26px;
|
||||
}
|
||||
.leaflet-touch .leaflet-control-layers-toggle {
|
||||
width: 44px;
|
||||
height: 44px;
|
||||
}
|
||||
.leaflet-control-layers .leaflet-control-layers-list,
|
||||
.leaflet-control-layers-expanded .leaflet-control-layers-toggle {
|
||||
display: none;
|
||||
}
|
||||
.leaflet-control-layers-expanded .leaflet-control-layers-list {
|
||||
display: block;
|
||||
position: relative;
|
||||
}
|
||||
.leaflet-control-layers-expanded {
|
||||
padding: 6px 10px 6px 6px;
|
||||
color: #333;
|
||||
background: #fff;
|
||||
}
|
||||
.leaflet-control-layers-scrollbar {
|
||||
overflow-y: scroll;
|
||||
overflow-x: hidden;
|
||||
padding-right: 5px;
|
||||
}
|
||||
.leaflet-control-layers-selector {
|
||||
margin-top: 2px;
|
||||
position: relative;
|
||||
top: 1px;
|
||||
}
|
||||
.leaflet-control-layers label {
|
||||
display: block;
|
||||
}
|
||||
.leaflet-control-layers-separator {
|
||||
height: 0;
|
||||
border-top: 1px solid #ddd;
|
||||
margin: 5px -10px 5px -6px;
|
||||
}
|
||||
|
||||
/* Default icon URLs */
|
||||
.leaflet-default-icon-path {
|
||||
background-image: url(images/marker-icon.png);
|
||||
}
|
||||
|
||||
|
||||
/* attribution and scale controls */
|
||||
|
||||
.leaflet-container .leaflet-control-attribution {
|
||||
background: #fff;
|
||||
background: rgba(255, 255, 255, 0.7);
|
||||
margin: 0;
|
||||
}
|
||||
.leaflet-control-attribution,
|
||||
.leaflet-control-scale-line {
|
||||
padding: 0 5px;
|
||||
color: #333;
|
||||
}
|
||||
.leaflet-control-attribution a {
|
||||
text-decoration: none;
|
||||
}
|
||||
.leaflet-control-attribution a:hover {
|
||||
text-decoration: underline;
|
||||
}
|
||||
.leaflet-container .leaflet-control-attribution,
|
||||
.leaflet-container .leaflet-control-scale {
|
||||
font-size: 11px;
|
||||
}
|
||||
.leaflet-left .leaflet-control-scale {
|
||||
margin-left: 5px;
|
||||
}
|
||||
.leaflet-bottom .leaflet-control-scale {
|
||||
margin-bottom: 5px;
|
||||
}
|
||||
.leaflet-control-scale-line {
|
||||
border: 2px solid #777;
|
||||
border-top: none;
|
||||
line-height: 1.1;
|
||||
padding: 2px 5px 1px;
|
||||
font-size: 11px;
|
||||
white-space: nowrap;
|
||||
overflow: hidden;
|
||||
-moz-box-sizing: border-box;
|
||||
box-sizing: border-box;
|
||||
|
||||
background: #fff;
|
||||
background: rgba(255, 255, 255, 0.5);
|
||||
}
|
||||
.leaflet-control-scale-line:not(:first-child) {
|
||||
border-top: 2px solid #777;
|
||||
border-bottom: none;
|
||||
margin-top: -2px;
|
||||
}
|
||||
.leaflet-control-scale-line:not(:first-child):not(:last-child) {
|
||||
border-bottom: 2px solid #777;
|
||||
}
|
||||
|
||||
.leaflet-touch .leaflet-control-attribution,
|
||||
.leaflet-touch .leaflet-control-layers,
|
||||
.leaflet-touch .leaflet-bar {
|
||||
box-shadow: none;
|
||||
}
|
||||
.leaflet-touch .leaflet-control-layers,
|
||||
.leaflet-touch .leaflet-bar {
|
||||
border: 2px solid rgba(0,0,0,0.2);
|
||||
background-clip: padding-box;
|
||||
}
|
||||
|
||||
|
||||
/* popup */
|
||||
|
||||
.leaflet-popup {
|
||||
position: absolute;
|
||||
text-align: center;
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
.leaflet-popup-content-wrapper {
|
||||
padding: 1px;
|
||||
text-align: left;
|
||||
border-radius: 12px;
|
||||
}
|
||||
.leaflet-popup-content {
|
||||
margin: 13px 19px;
|
||||
line-height: 1.4;
|
||||
}
|
||||
.leaflet-popup-content p {
|
||||
margin: 18px 0;
|
||||
}
|
||||
.leaflet-popup-tip-container {
|
||||
width: 40px;
|
||||
height: 20px;
|
||||
position: absolute;
|
||||
left: 50%;
|
||||
margin-left: -20px;
|
||||
overflow: hidden;
|
||||
pointer-events: none;
|
||||
}
|
||||
.leaflet-popup-tip {
|
||||
width: 17px;
|
||||
height: 17px;
|
||||
padding: 1px;
|
||||
|
||||
margin: -10px auto 0;
|
||||
|
||||
-webkit-transform: rotate(45deg);
|
||||
-moz-transform: rotate(45deg);
|
||||
-ms-transform: rotate(45deg);
|
||||
transform: rotate(45deg);
|
||||
}
|
||||
.leaflet-popup-content-wrapper,
|
||||
.leaflet-popup-tip {
|
||||
background: white;
|
||||
color: #333;
|
||||
box-shadow: 0 3px 14px rgba(0,0,0,0.4);
|
||||
}
|
||||
.leaflet-container a.leaflet-popup-close-button {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
right: 0;
|
||||
padding: 4px 4px 0 0;
|
||||
border: none;
|
||||
text-align: center;
|
||||
width: 18px;
|
||||
height: 14px;
|
||||
font: 16px/14px Tahoma, Verdana, sans-serif;
|
||||
color: #c3c3c3;
|
||||
text-decoration: none;
|
||||
font-weight: bold;
|
||||
background: transparent;
|
||||
}
|
||||
.leaflet-container a.leaflet-popup-close-button:hover {
|
||||
color: #999;
|
||||
}
|
||||
.leaflet-popup-scrolled {
|
||||
overflow: auto;
|
||||
border-bottom: 1px solid #ddd;
|
||||
border-top: 1px solid #ddd;
|
||||
}
|
||||
|
||||
.leaflet-oldie .leaflet-popup-content-wrapper {
|
||||
zoom: 1;
|
||||
}
|
||||
.leaflet-oldie .leaflet-popup-tip {
|
||||
width: 24px;
|
||||
margin: 0 auto;
|
||||
|
||||
-ms-filter: "progid:DXImageTransform.Microsoft.Matrix(M11=0.70710678, M12=0.70710678, M21=-0.70710678, M22=0.70710678)";
|
||||
filter: progid:DXImageTransform.Microsoft.Matrix(M11=0.70710678, M12=0.70710678, M21=-0.70710678, M22=0.70710678);
|
||||
}
|
||||
.leaflet-oldie .leaflet-popup-tip-container {
|
||||
margin-top: -1px;
|
||||
}
|
||||
|
||||
.leaflet-oldie .leaflet-control-zoom,
|
||||
.leaflet-oldie .leaflet-control-layers,
|
||||
.leaflet-oldie .leaflet-popup-content-wrapper,
|
||||
.leaflet-oldie .leaflet-popup-tip {
|
||||
border: 1px solid #999;
|
||||
}
|
||||
|
||||
|
||||
/* div icon */
|
||||
|
||||
.leaflet-div-icon {
|
||||
background: #fff;
|
||||
border: 1px solid #666;
|
||||
}
|
||||
|
||||
|
||||
/* Tooltip */
|
||||
/* Base styles for the element that has a tooltip */
|
||||
.leaflet-tooltip {
|
||||
position: absolute;
|
||||
padding: 6px;
|
||||
background-color: #fff;
|
||||
border: 1px solid #fff;
|
||||
border-radius: 3px;
|
||||
color: #222;
|
||||
white-space: nowrap;
|
||||
-webkit-user-select: none;
|
||||
-moz-user-select: none;
|
||||
-ms-user-select: none;
|
||||
user-select: none;
|
||||
pointer-events: none;
|
||||
box-shadow: 0 1px 3px rgba(0,0,0,0.4);
|
||||
}
|
||||
.leaflet-tooltip.leaflet-clickable {
|
||||
cursor: pointer;
|
||||
pointer-events: auto;
|
||||
}
|
||||
.leaflet-tooltip-top:before,
|
||||
.leaflet-tooltip-bottom:before,
|
||||
.leaflet-tooltip-left:before,
|
||||
.leaflet-tooltip-right:before {
|
||||
position: absolute;
|
||||
pointer-events: none;
|
||||
border: 6px solid transparent;
|
||||
background: transparent;
|
||||
content: "";
|
||||
}
|
||||
|
||||
/* Directions */
|
||||
|
||||
.leaflet-tooltip-bottom {
|
||||
margin-top: 6px;
|
||||
}
|
||||
.leaflet-tooltip-top {
|
||||
margin-top: -6px;
|
||||
}
|
||||
.leaflet-tooltip-bottom:before,
|
||||
.leaflet-tooltip-top:before {
|
||||
left: 50%;
|
||||
margin-left: -6px;
|
||||
}
|
||||
.leaflet-tooltip-top:before {
|
||||
bottom: 0;
|
||||
margin-bottom: -12px;
|
||||
border-top-color: #fff;
|
||||
}
|
||||
.leaflet-tooltip-bottom:before {
|
||||
top: 0;
|
||||
margin-top: -12px;
|
||||
margin-left: -6px;
|
||||
border-bottom-color: #fff;
|
||||
}
|
||||
.leaflet-tooltip-left {
|
||||
margin-left: -6px;
|
||||
}
|
||||
.leaflet-tooltip-right {
|
||||
margin-left: 6px;
|
||||
}
|
||||
.leaflet-tooltip-left:before,
|
||||
.leaflet-tooltip-right:before {
|
||||
top: 50%;
|
||||
margin-top: -6px;
|
||||
}
|
||||
.leaflet-tooltip-left:before {
|
||||
right: 0;
|
||||
margin-right: -12px;
|
||||
border-left-color: #fff;
|
||||
}
|
||||
.leaflet-tooltip-right:before {
|
||||
left: 0;
|
||||
margin-left: -12px;
|
||||
border-right-color: #fff;
|
||||
}
|
193
src/css/map.css
Normal file
|
@ -0,0 +1,193 @@
|
|||
html, body {
|
||||
margin: 0px;
|
||||
padding: 0px;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
font-family: sans-serif;
|
||||
}
|
||||
|
||||
.notice {
|
||||
padding: 0.5em;
|
||||
background: #fff;
|
||||
color: #000;
|
||||
box-shadow: 0 1px 5px rgba(0,0,0,0.65);
|
||||
}
|
||||
.leaflet-top.leaflet-left {
|
||||
z-index: 1001;
|
||||
}
|
||||
|
||||
#map {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
.leaflet-popup-content-wrapper,
|
||||
.leaflet-control-zoom {
|
||||
border-radius: 0px;
|
||||
}
|
||||
|
||||
.leaflet-popup-content-wrapper {
|
||||
width: 600px;
|
||||
max-height: 400px;
|
||||
overflow-y: auto;
|
||||
overflow-wrap: anywhere;
|
||||
}
|
||||
|
||||
.leaflet-popup-content {
|
||||
width: auto !important;
|
||||
}
|
||||
|
||||
a img {
|
||||
border: none;
|
||||
max-height: 60px;
|
||||
}
|
||||
|
||||
h4 {
|
||||
margin-top: 5px;
|
||||
margin-bottom: 5px;
|
||||
}
|
||||
|
||||
.location, .period {
|
||||
margin-bottom: 3px;
|
||||
}
|
||||
|
||||
table {
|
||||
padding-bottom: 10px;
|
||||
border-spacing: 0;
|
||||
width: 100%
|
||||
}
|
||||
|
||||
td {
|
||||
white-space: pre-line;
|
||||
}
|
||||
|
||||
.desktop tr td {
|
||||
padding-right: 5px;
|
||||
width: 75;
|
||||
vertical-align: top;
|
||||
}
|
||||
|
||||
.mobile tr td:first-child {
|
||||
padding: 0;
|
||||
padding-right: 10px;
|
||||
}
|
||||
|
||||
.mobile tr:nth-child(2n) {
|
||||
background: rgb(244,244,244);
|
||||
}
|
||||
|
||||
.info {
|
||||
padding: 6px 8px;
|
||||
font: 14px/16px Arial, Helvetica, sans-serif;
|
||||
background: white;
|
||||
background: rgba(255,255,255,0.0);
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
.author-icon {
|
||||
display: block;
|
||||
margin-left: 10px;
|
||||
}
|
||||
|
||||
.share {
|
||||
background-color: rgba(255, 255, 255, 0.7);
|
||||
padding-right: 5px;
|
||||
margin-left: 10px;
|
||||
}
|
||||
|
||||
.share img {
|
||||
vertical-align: middle;
|
||||
margin-left: -10px;
|
||||
}
|
||||
|
||||
.share a {
|
||||
text-decoration: none;
|
||||
}
|
||||
.share a:hover {
|
||||
text-decoration: underline;
|
||||
}
|
||||
a.img-and-text-link:hover {
|
||||
text-decoration: none;
|
||||
}
|
||||
a.img-and-text-link:hover span {
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
.legend {
|
||||
height: 77px;
|
||||
width: 130px;
|
||||
background-color: #fff;
|
||||
box-shadow: 0 1px 5px rgba(0,0,0,0.65);
|
||||
}
|
||||
|
||||
.holiday-legend {
|
||||
width: 145px;
|
||||
background-color: #fff;
|
||||
box-shadow: 0 1px 5px rgba(0,0,0,0.65);
|
||||
}
|
||||
|
||||
.legend .holiday {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.type {
|
||||
position: absolute;
|
||||
top: 15px;
|
||||
right: 15px;
|
||||
}
|
||||
|
||||
|
||||
.mobile {
|
||||
display: none;
|
||||
}
|
||||
|
||||
@media screen and (max-width: 1000px) {
|
||||
.leaflet-popup-content-wrapper {
|
||||
width: 250px;
|
||||
}
|
||||
|
||||
.type {
|
||||
display: none;
|
||||
}
|
||||
|
||||
|
||||
.desktop {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.mobile {
|
||||
display: block;
|
||||
width: 213px;
|
||||
}
|
||||
|
||||
.location, .period {
|
||||
margin-bottom: 8px;
|
||||
}
|
||||
}
|
||||
|
||||
@media screen and (max-height: 400px) {
|
||||
.leaflet-popup-content-wrapper {
|
||||
max-height: 150px;
|
||||
}
|
||||
}
|
||||
|
||||
@media screen and (min-width: 300px) {
|
||||
.notice {
|
||||
max-width: calc(100vw - 150px);
|
||||
}
|
||||
}
|
||||
|
||||
@media screen and (min-width: 800px) {
|
||||
.author-icon {
|
||||
display: inline;
|
||||
}
|
||||
.notice {
|
||||
max-width: calc(100vw - 250px);
|
||||
}
|
||||
}
|
||||
|
||||
@media (min-width: 800px) and (min-height: 500px) {
|
||||
.notice {
|
||||
padding: 1em 1.5em;
|
||||
}
|
||||
}
|
BIN
src/img/AP.png
Normal file
After Width: | Height: | Size: 3.2 KiB |
BIN
src/img/Andere.png
Normal file
After Width: | Height: | Size: 68 B |
BIN
src/img/Arteveldehogeschool.png
Normal file
After Width: | Height: | Size: 2.7 KiB |
BIN
src/img/GSR.png
Normal file
After Width: | Height: | Size: 8.3 KiB |
BIN
src/img/KASK.png
Normal file
After Width: | Height: | Size: 3.4 KiB |
BIN
src/img/KDG.png
Normal file
After Width: | Height: | Size: 8.6 KiB |
BIN
src/img/KUL.png
Normal file
After Width: | Height: | Size: 1.6 KiB |
BIN
src/img/Kuurne.png
Normal file
After Width: | Height: | Size: 13 KiB |
140
src/img/Logo_WiFi.svg
Normal file
|
@ -0,0 +1,140 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="400"
|
||||
height="175.49457"
|
||||
id="svg2"
|
||||
version="1.1"
|
||||
inkscape:version="0.47 r22583"
|
||||
sodipodi:docname="Logo BEI por Hernando.svg">
|
||||
<defs
|
||||
id="defs4">
|
||||
<inkscape:perspective
|
||||
sodipodi:type="inkscape:persp3d"
|
||||
inkscape:vp_x="0 : 526.18109 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_z="744.09448 : 526.18109 : 1"
|
||||
inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
|
||||
id="perspective10" />
|
||||
<inkscape:perspective
|
||||
id="perspective9738"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<clipPath
|
||||
clipPathUnits="userSpaceOnUse"
|
||||
id="clipPath3180">
|
||||
<path
|
||||
d="m 596.741,190.075 149.223,0 0,64.79 -149.223,0 0,-64.79"
|
||||
id="path3182" />
|
||||
</clipPath>
|
||||
<inkscape:perspective
|
||||
id="perspective12948"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:perspective
|
||||
id="perspective8202"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
</defs>
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="0.35"
|
||||
inkscape:cx="71.569388"
|
||||
inkscape:cy="-45.087756"
|
||||
inkscape:document-units="px"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="false"
|
||||
inkscape:window-width="1280"
|
||||
inkscape:window-height="968"
|
||||
inkscape:window-x="-4"
|
||||
inkscape:window-y="-4"
|
||||
inkscape:window-maximized="1" />
|
||||
<metadata
|
||||
id="metadata7">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title></dc:title>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
inkscape:label="Capa 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1"
|
||||
transform="translate(-309.85919,-343.20843)">
|
||||
<g
|
||||
id="g2010"
|
||||
transform="matrix(7.4723057,0,0,-7.4723057,642.24229,518.703)">
|
||||
<path
|
||||
d="m 0,0 c 4.977,0 9.049,4.077 9.049,9.049 l 0,5.389 c 0,4.973 -4.072,9.048 -9.049,9.048 l -35.433,0 c -4.973,0 -9.049,-4.075 -9.049,-9.048 l 0,-5.389 C -44.482,4.077 -40.406,0 -35.433,0"
|
||||
style="fill:#231f20;fill-opacity:1;fill-rule:nonzero;stroke:none"
|
||||
id="path2012" />
|
||||
</g>
|
||||
<g
|
||||
id="g2014"
|
||||
transform="matrix(7.4723057,0,0,-7.4723057,518.90441,451.07859)">
|
||||
<path
|
||||
d="m 0,0 0,5.389 c 0,4.072 3.314,7.32 7.32,7.32 l 9.187,0 c 4.007,0 7.253,-3.248 7.253,-7.32 L 23.76,0 c 0,-4.005 -3.246,-7.32 -7.253,-7.32 l -20.239,0 C -1.451,-5.664 0,-3.036 0,0"
|
||||
style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none"
|
||||
id="path2016" />
|
||||
</g>
|
||||
<g
|
||||
id="g2018"
|
||||
transform="matrix(7.4723057,0,0,-7.4723057,430.12595,472.2626)">
|
||||
<path
|
||||
d="m 0,0 -3.043,0 -0.55,2.56 C -3.938,4.354 -4.285,6.565 -4.354,7.393 -4.423,6.565 -4.77,4.354 -5.179,2.56 L -5.734,0 l -2.968,0 -2.767,11.748 3.317,0 0.343,-2.004 c 0.276,-1.66 0.556,-3.659 0.695,-5.044 0.136,1.385 0.481,3.384 0.896,5.044 l 0.412,2.004 2.972,0 0.413,-2.004 c 0.348,-1.66 0.693,-3.659 0.833,-5.044 0.136,1.385 0.482,3.384 0.757,5.044 l 0.278,2.004 3.313,0"
|
||||
style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none"
|
||||
id="path2020" />
|
||||
</g>
|
||||
<g
|
||||
id="g2022"
|
||||
transform="matrix(7.4723057,0,0,-7.4723057,472.9572,401.52225)">
|
||||
<path
|
||||
d="m 0,0 c -0.968,0 -1.727,0.553 -1.727,1.451 0,0.899 0.759,1.45 1.727,1.45 1.036,0 1.796,-0.551 1.796,-1.45 C 1.796,0.553 1.036,0 0,0 m -1.521,-0.968 3.0401,0 0,-8.4984 -3.0401,0 0,8.4984 z"
|
||||
style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none"
|
||||
id="path2024" />
|
||||
</g>
|
||||
<g
|
||||
id="g2026"
|
||||
transform="matrix(7.4723057,0,0,-7.4723057,574.10981,405.16126)">
|
||||
<path
|
||||
d="m 0,0 0,-2.618 6.22,0 0,-2.767 -6.22,0 0,-3.593 -3.247,0 0,11.748 10.156,0 0,-2.77"
|
||||
style="fill:#231f20;fill-opacity:1;fill-rule:nonzero;stroke:none"
|
||||
id="path2028" />
|
||||
</g>
|
||||
<g
|
||||
id="g2030"
|
||||
transform="matrix(7.4723057,0,0,-7.4723057,651.02973,401.52225)">
|
||||
<path
|
||||
d="m 0,0 c -0.97,0 -1.727,0.553 -1.727,1.451 0,0.899 0.757,1.45 1.727,1.45 1.035,0 1.797,-0.551 1.797,-1.45 C 1.797,0.553 1.035,0 0,0 m -1.521,-0.968 3.0371,0 0,-8.4984 -3.0371,0 0,8.4984 z"
|
||||
style="fill:#231f20;fill-opacity:1;fill-rule:nonzero;stroke:none"
|
||||
id="path2032" />
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 5.3 KiB |
BIN
src/img/Luca.png
Normal file
After Width: | Height: | Size: 2.4 KiB |
BIN
src/img/Odisee.png
Normal file
After Width: | Height: | Size: 19 KiB |
BIN
src/img/PXL.png
Normal file
After Width: | Height: | Size: 1.4 KiB |
BIN
src/img/SanMarino.png
Normal file
After Width: | Height: | Size: 8.1 KiB |
BIN
src/img/Stad Gent.png
Normal file
After Width: | Height: | Size: 2.3 KiB |
BIN
src/img/ThomasMore.png
Normal file
After Width: | Height: | Size: 3.3 KiB |
BIN
src/img/UA.png
Normal file
After Width: | Height: | Size: 2.8 KiB |
BIN
src/img/UCL.png
Normal file
After Width: | Height: | Size: 2.6 KiB |
BIN
src/img/UCLL.png
Normal file
After Width: | Height: | Size: 5.9 KiB |
BIN
src/img/UDSSanMarino.jpg
Normal file
After Width: | Height: | Size: 10 KiB |
BIN
src/img/UGent.png
Normal file
After Width: | Height: | Size: 3.8 KiB |
BIN
src/img/UHasselt.png
Normal file
After Width: | Height: | Size: 1.4 KiB |
BIN
src/img/ULB.png
Normal file
After Width: | Height: | Size: 2.8 KiB |
BIN
src/img/USLB.png
Normal file
After Width: | Height: | Size: 5.3 KiB |
BIN
src/img/Uppsala.png
Normal file
After Width: | Height: | Size: 5.6 KiB |
BIN
src/img/VUB.png
Normal file
After Width: | Height: | Size: 2.2 KiB |
21
src/img/Wheelchair_symbol.svg
Normal file
|
@ -0,0 +1,21 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Generator: Adobe Illustrator 12.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 51448) -->
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" [
|
||||
<!ENTITY ns_svg "http://www.w3.org/2000/svg">
|
||||
<!ENTITY ns_xlink "http://www.w3.org/1999/xlink">
|
||||
]>
|
||||
<svg version="1.1" id="Layer_1" xmlns="&ns_svg;" xmlns:xlink="&ns_xlink;" width="483.2226563" height="551.4306641"
|
||||
viewBox="0 0 483.2226563 551.4306641" overflow="visible" enable-background="new 0 0 483.2226563 551.4306641"
|
||||
xml:space="preserve">
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" fill="#000000" d="M161.9882813,98.1240234
|
||||
c24.9628906-2.3046875,44.3574219-23.8110352,44.3574219-48.9658203C206.3457031,22.0830078,184.2626953,0,157.1875,0
|
||||
s-49.1572266,22.0830078-49.1572266,49.1582031c0,8.2568359,2.3037109,16.7055664,6.1445313,23.8105469l17.515625,246.4667969
|
||||
l180.3964844,0.0488281l73.9912109,173.3652344l97.1445313-38.0976563l-15.0429688-35.8203125l-54.3662109,19.625
|
||||
l-71.5908203-165.2802734l-167.7294922,1.1269531l-2.3027344-31.2128906l121.4228516,0.0483398v-46.1831055l-126.0546875-0.0493164
|
||||
L161.9882813,98.1240234z"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" fill="#000000" d="M343.4199219,451.5908203
|
||||
c-30.4472656,60.1875-94.1748047,99.8398438-162.1503906,99.8398438C81.4296875,551.4306641,0,470.0009766,0,370.1611328
|
||||
c0-70.1005859,42.4853516-135.2436523,105.8818359-164.1210938l4.1025391,53.5375977
|
||||
c-37.4970703,23.628418-60.6123047,66.262207-60.6123047,110.9506836c0,72.4267578,59.0712891,131.4970703,131.4970703,131.4970703
|
||||
c66.2617188,0,122.7646484-50.8515625,130.4697266-116.0869141L343.4199219,451.5908203z"/>
|
||||
</svg>
|
After Width: | Height: | Size: 1.7 KiB |
BIN
src/img/Zeevaartschool.png
Normal file
After Width: | Height: | Size: 1.7 KiB |
BIN
src/img/christmas-marker.png
Normal file
After Width: | Height: | Size: 39 KiB |
BIN
src/img/erasmus.png
Normal file
After Width: | Height: | Size: 3 KiB |
61
src/img/facebook.svg
Normal file
|
@ -0,0 +1,61 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="20"
|
||||
height="20"
|
||||
version="1.1"
|
||||
id="svg8"
|
||||
sodipodi:docname="facebook.svg"
|
||||
inkscape:version="0.92.4 5da689c313, 2019-01-14">
|
||||
<metadata
|
||||
id="metadata14">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title></dc:title>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<defs
|
||||
id="defs12" />
|
||||
<sodipodi:namedview
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1"
|
||||
objecttolerance="10"
|
||||
gridtolerance="10"
|
||||
guidetolerance="10"
|
||||
inkscape:pageopacity="0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:window-width="1920"
|
||||
inkscape:window-height="1043"
|
||||
id="namedview10"
|
||||
showgrid="false"
|
||||
inkscape:zoom="22.627417"
|
||||
inkscape:cx="9.2776978"
|
||||
inkscape:cy="-0.76716337"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="37"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:current-layer="svg8" />
|
||||
<path
|
||||
style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:18.33872604;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke fill markers"
|
||||
d="M 11.571808,19.876973 C 11.059776,19.957939 10.534798,20 10,20 9.470853,20 8.9513195,19.958841 8.4444262,19.879533 -16.009211,-2.1035465 38.618255,-2.3039341 11.571808,19.877009 Z"
|
||||
id="path821"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="cscc" />
|
||||
<path
|
||||
d="M 20,10.001126 C 20,4.4780969 15.522407,0 10,0 4.4775931,0 0,4.4780969 0,10.001126 c 0,4.991368 3.6563075,9.129087 8.4376465,9.880155 V 12.892716 H 5.8978981 v -2.89159 H 8.4376465 V 7.7971424 c 0,-2.5061407 1.4934564,-3.8916303 3.7772645,-3.8916303 1.094081,0 2.238707,0.195555 2.238707,0.195555 v 2.4612498 h -1.26142 c -1.241735,0 -1.629862,0.7707181 -1.629862,1.5625655 v 1.8762246 h 2.773191 l -0.442965,2.891591 h -2.330281 v 6.988565 c 4.781339,-0.749661 8.437647,-4.887345 8.437647,-9.880336"
|
||||
id="path4"
|
||||
style="fill:#1877f2;fill-opacity:1;stroke-width:1.80274773"
|
||||
inkscape:connector-curvature="0" />
|
||||
</svg>
|
After Width: | Height: | Size: 2.6 KiB |
BIN
src/img/grey-marker.png
Normal file
After Width: | Height: | Size: 1.4 KiB |
Before Width: | Height: | Size: 3 KiB After Width: | Height: | Size: 3 KiB |
BIN
src/img/howest.png
Normal file
After Width: | Height: | Size: 1.1 KiB |
BIN
src/img/layers-2x.png
Normal file
After Width: | Height: | Size: 1.7 KiB |
BIN
src/img/layers.png
Normal file
After Width: | Height: | Size: 1.1 KiB |
BIN
src/img/marker-icon-2x.png
Normal file
After Width: | Height: | Size: 3.9 KiB |
BIN
src/img/marker-icon.png
Normal file
After Width: | Height: | Size: 1.7 KiB |
BIN
src/img/marker-shadow.png
Normal file
After Width: | Height: | Size: 797 B |
BIN
src/img/red-marker.png
Normal file
After Width: | Height: | Size: 1.6 KiB |
BIN
src/img/share.jpg
Normal file
After Width: | Height: | Size: 266 KiB |
BIN
src/img/share.png
Normal file
After Width: | Height: | Size: 299 KiB |
BIN
src/img/share_square.png
Normal file
After Width: | Height: | Size: 217 KiB |
BIN
src/img/vives.png
Normal file
After Width: | Height: | Size: 2.5 KiB |
BIN
src/img/vlerick.png
Normal file
After Width: | Height: | Size: 1.7 KiB |
BIN
src/img/watt.png
Normal file
After Width: | Height: | Size: 14 KiB |
BIN
src/img/zeus.png
Normal file
After Width: | Height: | Size: 3.5 KiB |
140
src/index.html
Normal file
|
@ -0,0 +1,140 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="nl">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>Bloklocaties in Vlaanderen</title>
|
||||
<meta name="apple-itunes-app" content="app-id=602640924">
|
||||
<meta name="google-play-app" content="app-id=be.ugent.zeus.hydra">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
|
||||
|
||||
<meta property="og:site_name" content="Zeus WPI">
|
||||
<meta property="og:type" content="article">
|
||||
<meta property="og:title" content="Bloklocaties in Vlaanderen">
|
||||
<meta property="og:description" content="Heb je nood aan een plek om te blokken? Zeus en de Gentse Studentenraad maakten een overzicht van alle beschikbare bloklocaties op één kaart.">
|
||||
<meta property="og:url" content="https://blok.ugent.be">
|
||||
<meta property="og:image" content="https://blok.ugent.be/img/share_square.png">
|
||||
|
||||
<meta name="twitter:card" content="summary">
|
||||
<meta name="twitter:url" content="//blok.ugent.be">
|
||||
<meta name="twitter:title" content="Bloklocaties in Vlaanderen">
|
||||
<meta name="twitter:description" content="Heb je nood aan een plek om te blokken? Zeus en de Gentse Studentenraad maakten een overzicht van alle beschikbare bloklocaties op één kaart.">
|
||||
<meta name="twitter:image" content="https://blok.ugent.be/img/share_square.png">
|
||||
|
||||
<link rel="stylesheet" href="css/leaflet-1.0.0.css">
|
||||
<link rel="stylesheet" href="css/map.css">
|
||||
|
||||
<script type="text/javascript" src="js/leaflet-1.0.0.js"></script>
|
||||
<script type="text/javascript" src="js/jquery-1.11.0.js"></script>
|
||||
<script type="text/javascript" src="js/handlebars-2.0.0.js"></script>
|
||||
<script type="text/javascript" src="js/map.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<div id="map"></div>
|
||||
|
||||
<script id="popup-template" type="text/x-handlebars-template">
|
||||
<div id="resto-popup">
|
||||
<h3>{{name}} ({{capacity}} pl.)</h3>
|
||||
{{#if wheelchair}}<img src="img/Wheelchair_symbol.svg" class="wheelchair" style="width:30px;height:30px;">{{/if}}
|
||||
{{#if wifi}}<img src="img/Logo_WiFi.svg" class="wifi" style="width:40px;height:20px;">{{/if}}
|
||||
<img src="img/{{type}}.png" class="type">
|
||||
<div class="location">Locatie: {{address}}</div>
|
||||
<div class="period">{{#if period.start}}
|
||||
Periode: {{date period.start}} tot {{date period.end}}
|
||||
{{else}}
|
||||
Open gedurende het hele jaar.
|
||||
{{/if}}
|
||||
</div>
|
||||
<h4>Openingsuren</h4>
|
||||
<table class="desktop">
|
||||
<tr>
|
||||
<td>Maandag</td>
|
||||
<td>Dinsdag</td>
|
||||
<td>Woensdag</td>
|
||||
<td>Donderdag</td>
|
||||
<td>Vrijdag</td>
|
||||
<td>Zaterdag</td>
|
||||
<td>Zondag</td>
|
||||
</tr><tr>
|
||||
<td>{{#if hours.monday}}{{hours.monday}}{{else}}Gesloten{{/if}}</td>
|
||||
<td>{{#if hours.tuesday}}{{hours.tuesday}}{{else}}Gesloten{{/if}}</td>
|
||||
<td>{{#if hours.wednesday}}{{hours.wednesday}}{{else}}Gesloten{{/if}}</td>
|
||||
<td>{{#if hours.thursday}}{{hours.thursday}}{{else}}Gesloten{{/if}}</td>
|
||||
<td>{{#if hours.friday}}{{hours.friday}}{{else}}Gesloten{{/if}}</td>
|
||||
<td>{{#if hours.saturday}}{{hours.saturday}}{{else}}Gesloten{{/if}}</td>
|
||||
<td>{{#if hours.sunday}}{{hours.sunday}}{{else}}Gesloten{{/if}}</td>
|
||||
</tr>
|
||||
</table>
|
||||
<table class="mobile">
|
||||
<tr>
|
||||
<td>Maandag</td>
|
||||
<td>{{#if hours.monday}}{{hours.monday}}{{else}}Gesloten{{/if}}</td>
|
||||
</tr><tr>
|
||||
<td>Dinsdag</td>
|
||||
<td>{{#if hours.tuesday}}{{hours.tuesday}}{{else}}Gesloten{{/if}}</td>
|
||||
</tr><tr>
|
||||
<td>Woensdag</td>
|
||||
<td>{{#if hours.wednesday}}{{hours.wednesday}}{{else}}Gesloten{{/if}}</td>
|
||||
</tr><tr>
|
||||
<td>Donderdag</td>
|
||||
<td>{{#if hours.thursday}}{{hours.thursday}}{{else}}Gesloten{{/if}}</td>
|
||||
</tr><tr>
|
||||
<td>Vrijdag</td>
|
||||
<td>{{#if hours.friday}}{{hours.friday}}{{else}}Gesloten{{/if}}</td>
|
||||
</tr><tr>
|
||||
<td>Zaterdag</td>
|
||||
<td>{{#if hours.saturday}}{{hours.saturday}}{{else}}Gesloten{{/if}}</td>
|
||||
</tr><tr>
|
||||
<td>Zondag</td>
|
||||
<td>{{#if hours.sunday}}{{hours.sunday}}{{else}}Gesloten{{/if}}</td>
|
||||
</tr>
|
||||
</table>
|
||||
{{#if extra}}{{{extra}}}{{/if}}
|
||||
</div>
|
||||
</script>
|
||||
|
||||
<script id="info-template" type="text/x-handlebars-template">
|
||||
<a href="https://zeus.gent/" class="author-icon"><img src="img/zeus.png" alt="Zeus WPI"></a>
|
||||
<a href="https://gentsestudentenraad.be/" class="author-icon"><img src="img/GSR.png" alt="Gentse Studentenraad"></a>
|
||||
</script>
|
||||
|
||||
<script id="share-template" type="text/x-handlebars-template">
|
||||
<div class="share">
|
||||
<a href="https://www.facebook.com/Blokmap-Vlaanderen-105861927804347/" class="img-and-text-link"><img src="img/facebook.svg" alt=""> <span>Facebookpagina</span></a> |
|
||||
<a href="https://forms.gle/H67tFQp54udB9cyR7">Locatie melden</a>
|
||||
</div>
|
||||
</script>
|
||||
|
||||
<script id="legend-template" type="text/x-handlebars-template">
|
||||
<div style="padding-top: 5px;">
|
||||
<div style="width: 125px; height: 18px; padding-top: 5px; padding-left: 5px;">
|
||||
<div style="height: 10px; width: 10px; background: rgb(209,39,35); margin-top: -1px; margin-left: 5px;"></div>
|
||||
<span style="position: absolute; left: 25px; top: 5px;">Week en weekend</span>
|
||||
</div>
|
||||
<div style="width: 125px; height: 18px; padding-top: 5px; padding-left: 5px;">
|
||||
<div style="height: 10px; width: 10px; background: rgb(36, 126, 202); margin-top: 1px; margin-left: 5px;"></div>
|
||||
<span style="position: absolute; left: 25px; top: 30px;">Enkel week</span>
|
||||
</div>
|
||||
<div style="width: 125px; height: 18px; padding-top: 5px; padding-left: 5px;">
|
||||
<div style="height: 10px; width: 10px; background: rgb(120,120,120); margin-top: 1px; margin-left: 5px;"></div>
|
||||
<span style="position: absolute; left: 25px; top: 52px;">Opent binnenkort</span>
|
||||
</div>
|
||||
<div style="width: 140px; height: 18px; padding-top: 5px; padding-left: 5px;" class="holiday">
|
||||
<div style="height: 10px; width: 10px; background: rgb(121, 230, 121); margin-top: 0px; margin-left: 5px;"></div>
|
||||
<span style="position: absolute; left: 25px; top: 75px;">Tijdens kerstvakantie</span>
|
||||
</div>
|
||||
</div>
|
||||
</script>
|
||||
|
||||
<!-- Google Analytics SDK -->
|
||||
<script>
|
||||
(function(i,s,o,g,r,a,m){i["GoogleAnalyticsObject"]=r;i[r]=i[r]||function(){
|
||||
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
|
||||
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
|
||||
})(window,document,"script","//www.google-analytics.com/analytics.js","ga");
|
||||
|
||||
ga("create", "UA-25444917-8", "auto");
|
||||
ga('set', 'anonymizeIp', true);
|
||||
ga("send", "pageview");
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
28
src/js/handlebars-2.0.0.js
Normal file
4
src/js/jquery-1.11.0.js
vendored
Normal file
9
src/js/leaflet-1.0.0.js
Normal file
5
src/js/leaflet-1.6.0.js
Normal file
186
src/js/map.js
Normal file
|
@ -0,0 +1,186 @@
|
|||
$(document).ready(function() {
|
||||
Handlebars.registerHelper("date", function (ddmyyyy) {
|
||||
return ddmyyyy.replace(/-/g, "/");
|
||||
});
|
||||
|
||||
|
||||
L.Icon.Default.imagePath = "img";
|
||||
|
||||
var popuptemplate = Handlebars.compile($("#popup-template").html());
|
||||
|
||||
var BlueIcon = L.Icon.Default.extend({});
|
||||
var RedIcon = L.Icon.Default.extend({
|
||||
options: {
|
||||
iconUrl: "img/red-marker.png"
|
||||
}
|
||||
});
|
||||
var ChristmasIcon = L.Icon.Default.extend({
|
||||
options: {
|
||||
iconUrl: "img/christmas-marker.png"
|
||||
}
|
||||
});
|
||||
var GreyIcon = L.Icon.Default.extend({
|
||||
options: {
|
||||
iconUrl: "img/grey-marker.png"
|
||||
}
|
||||
});
|
||||
|
||||
var blueIcon = new BlueIcon();
|
||||
var redIcon = new RedIcon();
|
||||
var christmasIcon = new ChristmasIcon();
|
||||
var greyIcon = new GreyIcon();
|
||||
|
||||
var now = new Date();
|
||||
var christmasSeason =
|
||||
now.getTime() > new Date(now.getFullYear() + "-12-20").getTime() ||
|
||||
now.getTime() < new Date(now.getFullYear() + "-01-04").getTime();
|
||||
|
||||
function onEachFeature(feature, layer) {
|
||||
if (feature.properties) {
|
||||
layer.bindPopup(popuptemplate(feature.properties), {
|
||||
showOnMouseOver: true
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
function pointToLayer(feature, latlng) {
|
||||
var icon = redIcon;
|
||||
var iconDescription = "red";
|
||||
if (feature.properties) {
|
||||
var startingDateString =feature.properties.period.start;
|
||||
var month = (parseInt(startingDateString.substring(3,5))-1);
|
||||
var startingDate = new Date("20"+startingDateString.substring(6,8),month,startingDateString.substring(0,2));
|
||||
if (Date.now()<startingDate) {
|
||||
icon = greyIcon;
|
||||
iconDescription = "grey";
|
||||
} else if (feature.properties.holidays && christmasSeason) {
|
||||
icon = christmasIcon;
|
||||
iconDescription = "christmas";
|
||||
} else if ((!feature.properties.hours.saturday && !feature.properties.hours.sunday)||(feature.properties.hours.saturday.toLowerCase()==="gesloten"&&feature.properties.hours.sunday.toLowerCase()==="gesloten")) {
|
||||
icon = blueIcon;
|
||||
iconDescription = "blue";
|
||||
}
|
||||
}
|
||||
return new HoverMarker(latlng, { icon: icon, riseOnHover: true});
|
||||
}
|
||||
|
||||
var map = L.map("map", {zoomControl: false}).setView([50.702, 4.335], 9);
|
||||
var osm = L.tileLayer("https://api.mapbox.com/styles/v1/{id}/tiles/{z}/{x}/{y}?access_token={accessToken}", {
|
||||
id: 'mapbox/streets-v11',
|
||||
tileSize: 512,
|
||||
zoomOffset: -1,
|
||||
// account name = zeuswpi, details are in password manager
|
||||
// token has a restriction to only work with our domains and localhost
|
||||
accessToken: 'pk.eyJ1IjoiemV1c3dwaSIsImEiOiJja2QzMDZ1NmcwMjBtMnlxbXV2bXVpaXhuIn0.-ViXZUT9SqRI3IvB8209LQ',
|
||||
attribution: '<span>Achtergrondkaart © <a href="https://www.openstreetmap.org/copyright" target="_blank">OpenStreetMap</a>-bijdragers </span>, <span lang="en">Imagery © <a href="https://www.mapbox.com/">Mapbox</a></span>. | <span lang="en">Made with ❤ by <a href="https://zeus.gent/">Zeus WPI</a></span> | <a href="https://zeus.gent/about/privacy/">Privacybeleid</a>',
|
||||
maxZoom: 18
|
||||
}).addTo(map);
|
||||
|
||||
$.getJSON("https://blokdata.zeus.gent/data.json")
|
||||
.done(function(data) {
|
||||
var geojson = L.geoJson(data, {
|
||||
onEachFeature: onEachFeature,
|
||||
pointToLayer: pointToLayer
|
||||
});
|
||||
map.addLayer(geojson);
|
||||
});
|
||||
|
||||
var SimpleControl = L.Control.extend({
|
||||
initialize: function(templateId, divClass, options) {
|
||||
this.template = Handlebars.compile($(templateId).html());
|
||||
this.divClass = divClass;
|
||||
L.Util.setOptions(this, options);
|
||||
},
|
||||
|
||||
onAdd: function (map) {
|
||||
this._div = L.DomUtil.create("div", this.divClass);
|
||||
this._div.innerHTML = this.template();
|
||||
|
||||
return this._div;
|
||||
}
|
||||
});
|
||||
|
||||
// code copied from http://jsfiddle.net/sowelie/3JbNY/
|
||||
var HoverMarker = L.Marker.extend({
|
||||
bindPopup: function(htmlContent, options) {
|
||||
|
||||
if (options && options.showOnMouseOver) {
|
||||
|
||||
L.Marker.prototype.bindPopup.apply(this, [htmlContent, options]);
|
||||
|
||||
this.off("click", this.openPopup, this);
|
||||
|
||||
this.on("mouseover", function(e) {
|
||||
|
||||
// get the element that the mouse hovered onto
|
||||
var target = e.originalEvent.fromElement || e.originalEvent.relatedTarget;
|
||||
var ancestor = this._findAncestorWithClass(target, "leaflet-popup");
|
||||
|
||||
// check to see if the element is a popup, and if it is this marker's popup
|
||||
if (ancestor && ancestor === this._popup._container)
|
||||
return true;
|
||||
|
||||
this.openPopup();
|
||||
|
||||
}, this);
|
||||
|
||||
this.on("mouseout", function(e) {
|
||||
|
||||
// get the element that the mouse hovered onto
|
||||
var target = e.originalEvent.toElement || e.originalEvent.relatedTarget;
|
||||
|
||||
// check to see if the element is a popup
|
||||
if (this._findAncestorWithClass(target, "leaflet-popup")) {
|
||||
L.DomEvent.on(this._popup._container, "mouseout", this._popupMouseOut, this);
|
||||
return true;
|
||||
}
|
||||
|
||||
this.closePopup();
|
||||
|
||||
}, this);
|
||||
}
|
||||
},
|
||||
|
||||
_popupMouseOut: function(e) {
|
||||
// detach the event
|
||||
L.DomEvent.off(this._popup, "mouseout", this._popupMouseOut, this);
|
||||
|
||||
// get the element that the mouse hovered onto
|
||||
var target = e.toElement || e.relatedTarget;
|
||||
|
||||
// check to see if the element is a popup
|
||||
if (this._findAncestorWithClass(target, "leaflet-popup"))
|
||||
return true;
|
||||
|
||||
// check to see if the marker was hovered back onto
|
||||
if (target === this._icon)
|
||||
return true;
|
||||
|
||||
this.closePopup();
|
||||
},
|
||||
|
||||
_findAncestorWithClass: function(element, className) {
|
||||
while (element) {
|
||||
if (element.className && L.DomUtil.hasClass(element, className))
|
||||
return element;
|
||||
element = element.parentNode;
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
});
|
||||
|
||||
var info = new SimpleControl("#info-template", "info", {
|
||||
position: "topright"
|
||||
}).addTo(map);
|
||||
|
||||
var sharePane = new SimpleControl("#share-template", "info", {
|
||||
position: "bottomleft"
|
||||
}).addTo(map);
|
||||
|
||||
var legend = new SimpleControl("#legend-template", christmasSeason ? "holiday-legend" : "legend", {
|
||||
position: "bottomright"
|
||||
}).addTo(map);
|
||||
|
||||
L.control.zoom().addTo(map);
|
||||
});
|