Mercurial > hg > extraction-interface
diff geotemco/js/Overlayloader/OverlayloaderGui.js @ 0:b12c99b7c3f0
commit for previous development
author | Zoe Hong <zhong@mpiwg-berlin.mpg.de> |
---|---|
date | Mon, 19 Jan 2015 17:13:49 +0100 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/geotemco/js/Overlayloader/OverlayloaderGui.js Mon Jan 19 17:13:49 2015 +0100 @@ -0,0 +1,89 @@ +/* +* OverlayloaderGui.js +* +* Copyright (c) 2013, Sebastian Kruse. All rights reserved. +* +* This library is free software; you can redistribute it and/or +* modify it under the terms of the GNU Lesser General Public +* License as published by the Free Software Foundation; either +* version 3 of the License, or (at your option) any later version. +* +* This library is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +* Lesser General Public License for more details. +* +* You should have received a copy of the GNU Lesser General Public +* License along with this library; if not, write to the Free Software +* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, +* MA 02110-1301 USA +*/ + +/** + * @class OverlayloaderGui + * Overlayloader GUI Implementation + * @author Sebastian Kruse (skruse@mpiwg-berlin.mpg.de) + * + * @param {OverlayloaderWidget} parent Overlayloader widget object + * @param {HTML object} div parent div to append the Overlayloader gui + * @param {JSON} options Overlayloader configuration + */ +function OverlayloaderGui(overlayloader, div, options) { + + this.parent = overlayloader; + var overlayloaderGui = this; + + this.overlayloaderContainer = div; + this.overlayloaderContainer.style.position = 'relative'; + + this.loaderTypeSelect = document.createElement("select"); + div.appendChild(this.loaderTypeSelect); + + this.loaders = document.createElement("div"); + div.appendChild(this.loaders); + + this.overlayList = document.createElement("div"); + div.appendChild(this.overlayList); + + $(this.loaderTypeSelect).change(function(){ + var activeLoader = $(this).val(); + $(overlayloaderGui.loaders).find("div").each(function(){ + if ($(this).attr("id") == activeLoader) + $(this).show(); + else + $(this).hide(); + }); + }); + + this.refreshOverlayList = function(){ + var overlayloaderGui = this; + + $(overlayloaderGui.overlayList).empty(); + $(this.parent.overlayLoader.overlays).each(function(){ + var overlay = this; + $(overlayloaderGui.overlayList).append(overlay.name); + var link = document.createElement("a"); + $(link).text("(x)"); + link.href=""; + + $(link).click($.proxy(function(){ + $(overlay.layers).each(function(){ + this.map.removeLayer(this.layer); + }); + + var overlays = overlayloaderGui.parent.overlayLoader.overlays; + + overlays = $.grep(overlays, function(value) { + return overlay != value; + }); + + overlayloaderGui.parent.overlayLoader.overlays = overlays; + + overlayloaderGui.refreshOverlayList(); + + return(false); + },{overlay:overlay,overlayloaderGui:overlayloaderGui})); + $(overlayloaderGui.overlayList).append(link); + }); + }; +};