-
-
Notifications
You must be signed in to change notification settings - Fork 336
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
5 changed files
with
233 additions
and
2 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,105 @@ | ||
<!DOCTYPE html> | ||
<html> | ||
<head> | ||
<title>sidebar-v2 example</title> | ||
|
||
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no"> | ||
|
||
<link href="//maxcdn.bootstrapcdn.com/font-awesome/4.1.0/css/font-awesome.min.css" rel="stylesheet"> | ||
<link rel="stylesheet" href="//openlayers.org/en/master/css/ol.css" type="text/css"> | ||
|
||
<link rel="stylesheet" href="../css/ol3-sidebar.css" /> | ||
|
||
<style> | ||
body { | ||
padding: 0; | ||
margin: 0; | ||
overflow: hidden; | ||
} | ||
|
||
html, body, #map { | ||
height: 100%; | ||
font: 10pt "Helvetica Neue", Arial, Helvetica, sans-serif; | ||
} | ||
|
||
.lorem { | ||
font-style: italic; | ||
color: #AAA; | ||
} | ||
</style> | ||
</head> | ||
<body> | ||
<div id="sidebar" class="sidebar collapsed"> | ||
<!-- Nav tabs --> | ||
<div class="sidebar-tabs"> | ||
<ul role="tablist"> | ||
<li><a href="#home" role="tab"><i class="fa fa-bars"></i></a></li> | ||
<li><a href="#profile" role="tab"><i class="fa fa-user"></i></a></li> | ||
<li class="disabled"><a href="#messages" role="tab"><i class="fa fa-envelope"></i></a></li> | ||
</ul> | ||
|
||
<ul role="tablist"> | ||
<li><a href="#settings" role="tab"><i class="fa fa-gear"></i></a></li> | ||
</ul> | ||
</div> | ||
|
||
<!-- Tab panes --> | ||
<div class="sidebar-content"> | ||
<div class="sidebar-pane" id="home"> | ||
<h1 class="sidebar-header"> | ||
sidebar-v2 | ||
<span class="sidebar-close"><i class="fa fa-caret-left"></i></span> | ||
</h1> | ||
|
||
<p>A responsive sidebar for mapping libraries like <a href="http://leafletjs.com/">Leaflet</a> or <a href="http://openlayers.org/">OpenLayers</a>.</p> | ||
|
||
<p class="lorem">Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.</p> | ||
|
||
<p class="lorem">Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.</p> | ||
|
||
<p class="lorem">Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.</p> | ||
|
||
<p class="lorem">Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.</p> | ||
</div> | ||
|
||
<div class="sidebar-pane" id="profile"> | ||
<h1 class="sidebar-header">Profile<span class="sidebar-close"><i class="fa fa-caret-left"></i></span></h1> | ||
</div> | ||
|
||
<div class="sidebar-pane" id="messages"> | ||
<h1 class="sidebar-header">Messages<span class="sidebar-close"><i class="fa fa-caret-left"></i></span></h1> | ||
</div> | ||
|
||
<div class="sidebar-pane" id="settings"> | ||
<h1 class="sidebar-header">Settings<span class="sidebar-close"><i class="fa fa-caret-left"></i></span></h1> | ||
</div> | ||
</div> | ||
</div> | ||
|
||
<div id="map" class="sidebar-map"></div> | ||
|
||
<a href="https://github.com/Turbo87/sidebar-v2/"><img style="position: fixed; top: 0; right: 0; border: 0; z-index: 5000" src="https://s3.amazonaws.com/github/ribbons/forkme_right_darkblue_121621.png" alt="Fork me on GitHub"></a> | ||
|
||
<script src="//openlayers.org/en/master/build/ol.js" type="text/javascript"></script> | ||
<script src="../js/ol3-sidebar.js"></script> | ||
|
||
<script> | ||
var map = new ol.Map({ | ||
target: 'map', | ||
layers: [ | ||
new ol.layer.Tile({ | ||
source: new ol.source.OSM() | ||
}) | ||
], | ||
view: new ol.View({ | ||
center: ol.proj.transform([7, 51.2], 'EPSG:4326', 'EPSG:3857'), | ||
zoom: 4 | ||
}) | ||
}); | ||
|
||
var sidebar = new ol.control.Sidebar({ element: 'sidebar', position: 'left' }); | ||
map.addControl(sidebar); | ||
//sidebar.open('home'); | ||
</script> | ||
</body> | ||
</html> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,124 @@ | ||
ol.control.Sidebar = function (settings) { | ||
|
||
var defaults = { | ||
element: null, | ||
position: 'left' | ||
}, i, child; | ||
|
||
this._options = Object.assign({}, defaults, settings); | ||
|
||
ol.control.Control.call(this, { | ||
element: document.getElementById(this._options.element), | ||
target: this._options.target | ||
}); | ||
|
||
// Attach .sidebar-left/right class | ||
this.element.classList.add('sidebar-' + this._options.position); | ||
|
||
// Find sidebar > div.sidebar-content | ||
for (i = this.element.children.length - 1; i >= 0; i--) { | ||
child = this.element.children[i]; | ||
if (child.tagName === 'DIV' && | ||
child.classList.contains('sidebar-content')) { | ||
this._container = child; | ||
} | ||
} | ||
|
||
// Find sidebar ul.sidebar-tabs > li, sidebar .sidebar-tabs > ul > li | ||
this._tabitems = this.element.querySelectorAll('ul.sidebar-tabs > li, .sidebar-tabs > ul > li'); | ||
for (i = this._tabitems.length - 1; i >= 0; i--) { | ||
this._tabitems[i]._sidebar = this; | ||
} | ||
|
||
// Find sidebar > div.sidebar-content > div.sidebar-pane | ||
this._panes = []; | ||
this._closeButtons = []; | ||
for (i = this._container.children.length - 1; i >= 0; i--) { | ||
child = this._container.children[i]; | ||
if (child.tagName == 'DIV' && | ||
child.classList.contains('sidebar-pane')) { | ||
this._panes.push(child); | ||
|
||
var closeButtons = child.querySelectorAll('.sidebar-close'); | ||
for (var j = 0, len = closeButtons.length; j < len; j++) { | ||
this._closeButtons.push(closeButtons[j]); | ||
} | ||
} | ||
} | ||
}; | ||
|
||
ol.inherits(ol.control.Sidebar, ol.control.Control); | ||
|
||
ol.control.Sidebar.prototype.setMap = function(map) { | ||
var i, child; | ||
|
||
for (i = this._tabitems.length - 1; i >= 0; i--) { | ||
child = this._tabitems[i]; | ||
var sub = child.querySelector('a'); | ||
if (sub.hasAttribute('href') && sub.getAttribute('href').slice(0,1) == '#') { | ||
sub.onclick = this._onClick.bind(child); | ||
} | ||
} | ||
|
||
for (i = this._closeButtons.length - 1; i >= 0; i--) { | ||
child = this._closeButtons[i]; | ||
child.onclick = this._onCloseClick.bind(this); | ||
} | ||
}; | ||
|
||
ol.control.Sidebar.prototype.open = function(id) { | ||
var i, child; | ||
|
||
// hide old active contents and show new content | ||
for (i = this._panes.length - 1; i >= 0; i--) { | ||
child = this._panes[i]; | ||
if (child.id == id) | ||
child.classList.add('active'); | ||
else if (child.classList.contains('active')) | ||
child.classList.remove('active'); | ||
} | ||
|
||
// remove old active highlights and set new highlight | ||
for (i = this._tabitems.length - 1; i >= 0; i--) { | ||
child = this._tabitems[i]; | ||
if (child.querySelector('a').hash == '#' + id) | ||
child.classList.add('active'); | ||
else if (child.classList.contains('active')) | ||
child.classList.remove('active'); | ||
} | ||
|
||
// open sidebar (if necessary) | ||
if (this.element.classList.contains('collapsed')) { | ||
this.element.classList.remove('collapsed'); | ||
} | ||
|
||
return this; | ||
}; | ||
|
||
ol.control.Sidebar.prototype.close = function() { | ||
// remove old active highlights | ||
for (var i = this._tabitems.length - 1; i >= 0; i--) { | ||
var child = this._tabitems[i]; | ||
if (child.classList.contains('active')) | ||
child.classList.remove('active'); | ||
} | ||
|
||
// close sidebar | ||
if (!this.element.classList.contains('collapsed')) { | ||
this.element.classList.add('collapsed'); | ||
} | ||
|
||
return this; | ||
}; | ||
|
||
ol.control.Sidebar.prototype._onClick = function() { | ||
if (this.classList.contains('active')) { | ||
this._sidebar.close(); | ||
} else if (!this.classList.contains('disabled')) { | ||
this._sidebar.open(this.querySelector('a').hash.slice(1)); | ||
} | ||
}; | ||
|
||
ol.control.Sidebar.prototype._onCloseClick = function() { | ||
this.close(); | ||
}; |
Oops, something went wrong.