Commit 86ae6f3d authored by Niels Holt's avatar Niels Holt

Leaflet in /select updated to version 1.3.1

parent 86e01d0d
...@@ -22,9 +22,9 @@ ...@@ -22,9 +22,9 @@
<h1 class="show-for-lang-da">Sejladsudsigt</h1> <h1 class="show-for-lang-da">Sejladsudsigt</h1>
<h1 class="show-for-lang-en">Marine Forecast</h1> <h1 class="show-for-lang-en">Marine Forecast</h1>
<select id="select-area" onchange="onChange(this)"></select> <select id="select-area" onchange="onChange(this)"></select>
<div id="map"></div> <div id="map"></div>
</div> </div>
<script src="leaflet.js"></script> <script src="leaflet.js"></script>
...@@ -32,7 +32,7 @@ ...@@ -32,7 +32,7 @@
var search = window.location.search, var search = window.location.search,
isEn = search.toUpperCase().indexOf('LANG=EN') > -1, isEn = search.toUpperCase().indexOf('LANG=EN') > -1,
baseHRef = window.location.href; baseHRef = window.location.href;
baseHRef = baseHRef.replace( window.location.hash, ''); baseHRef = baseHRef.replace( window.location.hash, '');
baseHRef = baseHRef.replace( window.location.search, ''); baseHRef = baseHRef.replace( window.location.search, '');
baseHRef = baseHRef.replace( 'index.html', ''); baseHRef = baseHRef.replace( 'index.html', '');
...@@ -40,10 +40,10 @@ ...@@ -40,10 +40,10 @@
baseHRef = baseHRef + 'index.html' + (isEn ? '?lang=en' : '') + '#domain='; baseHRef = baseHRef + 'index.html' + (isEn ? '?lang=en' : '') + '#domain=';
function getHref( domain ){ function getHref( domain ){
return baseHRef + domain; return baseHRef + domain;
} }
//Set lang-class and title //Set lang-class and title
document.body.className = isEn ? 'lang-en' : 'lang-da'; document.body.className = isEn ? 'lang-en' : 'lang-da';
document.title = 'fcoo.dk - ' + (isEn ? 'Marine Forecast' : 'Sejladsudsigt'); document.title = 'fcoo.dk - ' + (isEn ? 'Marine Forecast' : 'Sejladsudsigt');
...@@ -62,13 +62,13 @@ ...@@ -62,13 +62,13 @@
//Set da- or en-name //Set da- or en-name
for (i=0; i<areas.length; i++ ) for (i=0; i<areas.length; i++ )
areas[i].name = isEn ? areas[i].en : areas[i].da; areas[i].name = isEn ? areas[i].en : areas[i].da;
//Add options to <select> //Add options to <select>
var select = document.getElementById('select-area'), var select = document.getElementById('select-area'),
addOption = function(select, text, value, selected){ addOption = function(select, text, value, selected){
var option = document.createElement('option'); var option = document.createElement('option');
if (value !== null) if (value !== null)
option.value = value; option.value = value;
option.innerHTML = text; option.innerHTML = text;
if (selected) if (selected)
option.setAttribute("selected", "selected"); option.setAttribute("selected", "selected");
...@@ -78,18 +78,18 @@ ...@@ -78,18 +78,18 @@
function onChange( select ) { function onChange( select ) {
var option = select.options[select.selectedIndex]; var option = select.options[select.selectedIndex];
if (option.value) if (option.value)
selectAreaByIndex( option.value ); selectAreaByIndex( option.value );
}; };
//Add default option //Add default option
addOption(select, isEn ? '** Select Area **' : '** Vælg Område **', null, true); addOption(select, isEn ? '** Select Area **' : '** Vælg Område **', null, true);
for (i=0; i<areas.length; i++ ) for (i=0; i<areas.length; i++ )
addOption(select, areas[i].name, i); addOption(select, areas[i].name, i);
//Create Leaflet map //Create Leaflet map
var minZoom = 1, var minZoom = 1,
defaultZoom = 2, defaultZoom = 2,
maxZoom = 4, maxZoom = 4,
style = {color: 'cornflowerblue', weight: 1, opacity: 0.5, fillOpacity:0.4}, style = {color: 'cornflowerblue', weight: 1, opacity: 0.5, fillOpacity:0.4},
...@@ -101,44 +101,43 @@ ...@@ -101,44 +101,43 @@
//For debug map.on('click', function(e){ console.log('mouse:',e.latlng, 'map-center', map.getCenter(), 'map-zoom', map.getZoom()); }); //For debug map.on('click', function(e){ console.log('mouse:',e.latlng, 'map-center', map.getCenter(), 'map-zoom', map.getZoom()); });
L.tileLayer( L.tileLayer(
'https://tiles{s}.fcoo.dk/tiles/tiles_bckgrnd_512_mercator_201508030000/{z}/{x}/{y}.png', 'https://tiles{s}.fcoo.dk/tiles/tiles_bckgrnd_512_mercator_201508030000/{z}/{x}/{y}.png',
{minZoom: minZoom, maxZoom: maxZoom, subdomains:['01','02','03'], tileSize:512, continuousWorld: false {minZoom: minZoom, maxZoom: maxZoom, subdomains:['01','02','03'], tileSize:512, continuousWorld: false
}).addTo(map); }).addTo(map);
for (i=0; i<areas.length; i++ ){ for (i=0; i<areas.length; i++ ){
var area = areas[i], var area = areas[i],
rect = L.rectangle(area.bounds, style).addTo(map); rect = L.rectangle(area.bounds, style).addTo(map);
rect.options._area_index = i; rect.options._area_index = i;
area.rect = rect; area.rect = rect;
rect.on('click', function( event ){ selectAreaByIndex( event.target.options._area_index ); }); rect.on('click', function( event ){ selectAreaByIndex( event.target.options._area_index ); });
rect.on('mousedown', function( event ){ event.target.setStyle( clickStyle ); }); rect.on('mousedown', function( event ){ event.target.setStyle( clickStyle ); });
rect.on('mouseover', function( event ){ rect.on('mouseover', function( event ){
var rect = event.target; var rect = event.target;
rect.setStyle( hoverStyle ); rect.setStyle( hoverStyle );
select.selectedIndex = rect.options._area_index + 1; select.selectedIndex = rect.options._area_index + 1;
}); });
rect.on('mouseout', function( event ){ rect.on('mouseout', function( event ){
event.target.setStyle( style ); event.target.setStyle( style );
select.selectedIndex = 0; select.selectedIndex = 0;
}); });
rect.getPane().setAttribute('title', area.name);
rect._container.setAttribute('title', area.name);
} }
//Select the area //Select the area
function selectAreaByIndex( index ) { function selectAreaByIndex( index ) {
var area = areas[index]; var area = areas[index];
area.rect.setStyle( clickStyle ); area.rect.setStyle( clickStyle );
window.location.href = area.href;// + (isEn ? '?lang=en' : ''); window.location.href = area.href;// + (isEn ? '?lang=en' : '');
} }
</script> </script>
<!-- Piwik --> <!-- Piwik -->
<script type="text/javascript"> <script type="text/javascript">
var _paq = _paq || []; var _paq = _paq || [];
......
/* required styles */ /* required styles */
.leaflet-map-pane, .leaflet-pane,
.leaflet-tile, .leaflet-tile,
.leaflet-marker-icon, .leaflet-marker-icon,
.leaflet-marker-shadow, .leaflet-marker-shadow,
.leaflet-tile-pane,
.leaflet-tile-container, .leaflet-tile-container,
.leaflet-overlay-pane, .leaflet-pane > svg,
.leaflet-shadow-pane, .leaflet-pane > canvas,
.leaflet-marker-pane,
.leaflet-popup-pane,
.leaflet-overlay-pane svg,
.leaflet-zoom-box, .leaflet-zoom-box,
.leaflet-image-layer, .leaflet-image-layer,
.leaflet-layer { .leaflet-layer {
...@@ -20,8 +16,6 @@ ...@@ -20,8 +16,6 @@
} }
.leaflet-container { .leaflet-container {
overflow: hidden; overflow: hidden;
-ms-touch-action: none;
touch-action: none;
} }
.leaflet-tile, .leaflet-tile,
.leaflet-marker-icon, .leaflet-marker-icon,
...@@ -29,20 +23,53 @@ ...@@ -29,20 +23,53 @@
-webkit-user-select: none; -webkit-user-select: none;
-moz-user-select: none; -moz-user-select: none;
user-select: none; user-select: none;
-webkit-user-drag: 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-icon,
.leaflet-marker-shadow { .leaflet-marker-shadow {
display: block; display: block;
} }
/* map is broken in FF if you have max-width: 100% on tiles */ /* .leaflet-container svg: reset svg max-width decleration shipped in Joomla! (joomla.org) 3.x */
.leaflet-container img { /* .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 {
max-width: none !important; max-width: none !important;
max-height: none !important;
} }
/* stupid Android 2 doesn't understand "max-width: none" properly */
.leaflet-container img.leaflet-image-layer { .leaflet-container.leaflet-touch-zoom {
max-width: 15000px !important; -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 { .leaflet-tile {
filter: inherit; filter: inherit;
visibility: hidden; visibility: hidden;
...@@ -53,18 +80,26 @@ ...@@ -53,18 +80,26 @@
.leaflet-zoom-box { .leaflet-zoom-box {
width: 0; width: 0;
height: 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 */ /* workaround for https://bugzilla.mozilla.org/show_bug.cgi?id=888319 */
.leaflet-overlay-pane svg { .leaflet-overlay-pane svg {
-moz-user-select: none; -moz-user-select: none;
} }
.leaflet-tile-pane { z-index: 2; } .leaflet-pane { z-index: 400; }
.leaflet-objects-pane { z-index: 3; }
.leaflet-overlay-pane { z-index: 4; } .leaflet-tile-pane { z-index: 200; }
.leaflet-shadow-pane { z-index: 5; } .leaflet-overlay-pane { z-index: 400; }
.leaflet-marker-pane { z-index: 6; } .leaflet-shadow-pane { z-index: 500; }
.leaflet-popup-pane { z-index: 7; } .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 { .leaflet-vml-shape {
width: 1px; width: 1px;
...@@ -81,7 +116,8 @@ ...@@ -81,7 +116,8 @@
.leaflet-control { .leaflet-control {
position: relative; position: relative;
z-index: 7; z-index: 800;
pointer-events: visiblePainted; /* IE 9-10 doesn't have auto */
pointer-events: auto; pointer-events: auto;
} }
.leaflet-top, .leaflet-top,
...@@ -125,7 +161,9 @@ ...@@ -125,7 +161,9 @@
/* zoom and fade animations */ /* zoom and fade animations */
.leaflet-fade-anim .leaflet-tile, .leaflet-fade-anim .leaflet-tile {
will-change: opacity;
}
.leaflet-fade-anim .leaflet-popup { .leaflet-fade-anim .leaflet-popup {
opacity: 0; opacity: 0;
-webkit-transition: opacity 0.2s linear; -webkit-transition: opacity 0.2s linear;
...@@ -133,11 +171,17 @@ ...@@ -133,11 +171,17 @@
-o-transition: opacity 0.2s linear; -o-transition: opacity 0.2s linear;
transition: opacity 0.2s linear; transition: opacity 0.2s linear;
} }
.leaflet-fade-anim .leaflet-tile-loaded,
.leaflet-fade-anim .leaflet-map-pane .leaflet-popup { .leaflet-fade-anim .leaflet-map-pane .leaflet-popup {
opacity: 1; 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 { .leaflet-zoom-anim .leaflet-zoom-animated {
-webkit-transition: -webkit-transform 0.25s cubic-bezier(0,0,0.25,1); -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); -moz-transition: -moz-transform 0.25s cubic-bezier(0,0,0.25,1);
...@@ -145,8 +189,7 @@ ...@@ -145,8 +189,7 @@
transition: 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-zoom-anim .leaflet-tile,
.leaflet-pan-anim .leaflet-tile, .leaflet-pan-anim .leaflet-tile {
.leaflet-touching .leaflet-zoom-animated {
-webkit-transition: none; -webkit-transition: none;
-moz-transition: none; -moz-transition: none;
-o-transition: none; -o-transition: none;
...@@ -160,24 +203,44 @@ ...@@ -160,24 +203,44 @@
/* cursors */ /* cursors */
.leaflet-clickable { .leaflet-interactive {
cursor: pointer; cursor: pointer;
} }
.leaflet-container { .leaflet-grab {
cursor: -webkit-grab; cursor: -webkit-grab;
cursor: -moz-grab; cursor: -moz-grab;
} }
.leaflet-crosshair,
.leaflet-crosshair .leaflet-interactive {
cursor: crosshair;
}
.leaflet-popup-pane, .leaflet-popup-pane,
.leaflet-control { .leaflet-control {
cursor: auto; cursor: auto;
} }
.leaflet-dragging .leaflet-container, .leaflet-dragging .leaflet-grab,
.leaflet-dragging .leaflet-clickable { .leaflet-dragging .leaflet-grab .leaflet-interactive,
.leaflet-dragging .leaflet-marker-draggable {
cursor: move; cursor: move;
cursor: -webkit-grabbing; cursor: -webkit-grabbing;
cursor: -moz-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: visiblePainted; /* IE 9-10 doesn't have auto */
pointer-events: auto;
}
/* visual tweaks */ /* visual tweaks */
...@@ -250,7 +313,14 @@ ...@@ -250,7 +313,14 @@
height: 30px; height: 30px;
line-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 */ /* zoom control */
...@@ -259,16 +329,10 @@ ...@@ -259,16 +329,10 @@
font: bold 18px 'Lucida Console', Monaco, monospace; font: bold 18px 'Lucida Console', Monaco, monospace;
text-indent: 1px; text-indent: 1px;
} }
.leaflet-control-zoom-out {
font-size: 20px;
}
.leaflet-touch .leaflet-control-zoom-in { .leaflet-touch .leaflet-control-zoom-in, .leaflet-touch .leaflet-control-zoom-out {
font-size: 22px; font-size: 22px;
} }
.leaflet-touch .leaflet-control-zoom-out {
font-size: 24px;
}
/* layers control */ /* layers control */
...@@ -304,6 +368,11 @@ ...@@ -304,6 +368,11 @@
color: #333; color: #333;
background: #fff; background: #fff;
} }
.leaflet-control-layers-scrollbar {
overflow-y: scroll;
overflow-x: hidden;
padding-right: 5px;
}
.leaflet-control-layers-selector { .leaflet-control-layers-selector {
margin-top: 2px; margin-top: 2px;
position: relative; position: relative;
...@@ -318,6 +387,11 @@ ...@@ -318,6 +387,11 @@
margin: 5px -10px 5px -6px; margin: 5px -10px 5px -6px;
} }
/* Default icon URLs */
.leaflet-default-icon-path {
background-image: url(images/marker-icon.png);
}
/* attribution and scale controls */ /* attribution and scale controls */
...@@ -355,8 +429,8 @@ ...@@ -355,8 +429,8 @@
font-size: 11px; font-size: 11px;
white-space: nowrap; white-space: nowrap;
overflow: hidden; overflow: hidden;
-moz-box-sizing: content-box; -moz-box-sizing: border-box;
box-sizing: content-box; box-sizing: border-box;
background: #fff; background: #fff;
background: rgba(255, 255, 255, 0.5); background: rgba(255, 255, 255, 0.5);
...@@ -387,6 +461,7 @@ ...@@ -387,6 +461,7 @@
.leaflet-popup { .leaflet-popup {
position: absolute; position: absolute;
text-align: center; text-align: center;
margin-bottom: 20px;
} }
.leaflet-popup-content-wrapper { .leaflet-popup-content-wrapper {
padding: 1px; padding: 1px;
...@@ -401,11 +476,13 @@ ...@@ -401,11 +476,13 @@
margin: 18px 0; margin: 18px 0;
} }
.leaflet-popup-tip-container { .leaflet-popup-tip-container {
margin: 0 auto;
width: 40px; width: 40px;
height: 20px; height: 20px;
position: relative; position: absolute;
left: 50%;
margin-left: -20px;
overflow: hidden; overflow: hidden;
pointer-events: none;
} }
.leaflet-popup-tip { .leaflet-popup-tip {
width: 17px; width: 17px;
...@@ -423,7 +500,7 @@ ...@@ -423,7 +500,7 @@
.leaflet-popup-content-wrapper, .leaflet-popup-content-wrapper,
.leaflet-popup-tip { .leaflet-popup-tip {
background: white; background: white;
color: #333;
box-shadow: 0 3px 14px rgba(0,0,0,0.4); box-shadow: 0 3px 14px rgba(0,0,0,0.4);
} }
.leaflet-container a.leaflet-popup-close-button { .leaflet-container a.leaflet-popup-close-button {
...@@ -431,6 +508,7 @@ ...@@ -431,6 +508,7 @@
top: 0; top: 0;
right: 0; right: 0;
padding: 4px 4px 0 0; padding: 4px 4px 0 0;
border: none;
text-align: center; text-align: center;
width: 18px; width: 18px;
height: 14px; height: 14px;
...@@ -477,3 +555,82 @@ ...@@ -477,3 +555,82 @@
background: #fff; background: #fff;
border: 1px solid #666; 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;
}
This source diff could not be displayed because it is too large. You can view the blob instead.
This diff is collapsed.
...@@ -12,11 +12,11 @@ ...@@ -12,11 +12,11 @@
"url": "git://github.com/FCOO/ifm-maps.git" "url": "git://github.com/FCOO/ifm-maps.git"
}, },
"dependencies": { "dependencies": {
"babel-core": "^6.26.0",
"grunt": "^1.0.1", "grunt": "^1.0.1",
"grunt-fcoo-grunt-plugin": "^4.0.0", "grunt-fcoo-grunt-plugin": "^4.0.0",
"grunt-real-favicon": "0.2.2" "grunt-real-favicon": "0.2.2"
}, },
"license": "MIT", "license": "MIT",
"devDependencies": { "devDependencies": {}
}
} }
...@@ -228,6 +228,43 @@ babel-code-frame@^6.22.0, babel-code-frame@^6.26.0: ...@@ -228,6 +228,43 @@ babel-code-frame@^6.22.0, babel-code-frame@^6.26.0:
esutils "^2.0.2" esutils "^2.0.2"
js-tokens "^3.0.2" js-tokens "^3.0.2"
babel-core@^6.26.0:
version "6.26.0"