view geotemco/js/Overlayloader/OverlayloaderGui.js @ 29:fc7342914cdf

develop_v0
author Zoe Hong <zhong@mpiwg-berlin.mpg.de>
date Thu, 05 Mar 2015 15:08:09 +0100
parents b12c99b7c3f0
children
line wrap: on
line source

/*
* 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);
		});
	};
};