[Mapbender-commits] r8116 - in branches/2.7/http: img javascripts

svn_mapbender at osgeo.org svn_mapbender at osgeo.org
Thu Sep 8 05:22:48 EDT 2011


Author: verenadiewald
Date: 2011-09-08 02:22:48 -0700 (Thu, 08 Sep 2011)
New Revision: 8116

Added:
   branches/2.7/http/img/progress.gif
Modified:
   branches/2.7/http/javascripts/mod_tooltip.php
Log:
some changes for tooltip module

Added: branches/2.7/http/img/progress.gif
===================================================================
(Binary files differ)


Property changes on: branches/2.7/http/img/progress.gif
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Modified: branches/2.7/http/javascripts/mod_tooltip.php
===================================================================
--- branches/2.7/http/javascripts/mod_tooltip.php	2011-09-08 08:30:15 UTC (rev 8115)
+++ branches/2.7/http/javascripts/mod_tooltip.php	2011-09-08 09:22:48 UTC (rev 8116)
@@ -1,7 +1,7 @@
 <?php
 # $Id: mod_toggleModule.php 2238 2008-03-13 14:24:56Z christoph $
 # http://www.mapbender.org/index.php/mod_toggleModule.php
-# Copyright (C) 2002 CCGIS 
+# Copyright (C) 2002 CCGIS
 #
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -32,17 +32,19 @@
 	$e = new mb_exception("tooltip.php: Configuration file " . $wfs_conf_filename . " not found.");
 }
 
-echo "var tooltipTarget ='".$e_target[0]."';"; 
+echo "var tooltipTarget ='".$e_target[0]."';";
 
 include '../include/dyn_js.php';
 ?>
-//tolerance when we ask wfs (comes from conf file)
-if(typeof(mb_wfs_tolerance)==='undefined') {
-	var mb_wfs_tolerance = 8;
-}	
+//tolerance when we ask wfs
+var mb_wfs_tolerance = 8;
 
-var targetArray = tooltipTarget.split(",");
+var mapframeOffset = {
+	x : parseInt(document.getElementById(tooltipTarget).style.left),
+	y : parseInt(document.getElementById(tooltipTarget).style.top)
+};
 
+
 //initialize Element Vars
 
 //destination frame for the request (creates Popup if empty)
@@ -61,7 +63,7 @@
 if(typeof(tooltip_disableWms)==='undefined')
 	var tooltip_disableWms = "0";
 if(typeof(tooltip_disableWfs)==='undefined')
-	var tooltip_disableWfs = "0";	
+	var tooltip_disableWfs = "0";
 try{
 	var no_result_text = eval(tooltip_noResultArray);
 }catch(e){
@@ -90,7 +92,19 @@
         $(domNode).bind("mouseout", function() {
             mouseMoves=0;
         });
-	
+
+		if (tooltipWin) {
+			tooltipWin.hide();
+                        hideProgressDisplay();
+		}
+		buildProgressDisplay();
+
+                $(".printPDF-dialog").bind("dialogopen", function () {
+                    tooltipWin.destroy();
+                    hideProgressDisplay();
+                });
+
+
 }
 
 eventInit.register(mod_tooltipInit); //initialize tooltips!
@@ -105,41 +119,108 @@
             point = tooltip_map.getMousePosition(e);
             mod_tooltip_run(point);
         });
+        $(domNode).bind("mouseout", function() {
+            mouseMoves=0;
+        });
+
+		if (tooltipWin) {
+			tooltipWin.hide();
+                        hideProgressDisplay();
+		}
+		buildProgressDisplay();
+
+                $(".printPDF-dialog").bind("dialogopen", function () {
+                    tooltipWin.destroy();
+                    hideProgressDisplay();
+                });
+
 });
 
 function mod_tooltip_run(point){
-	mouseMoves++;
+        mouseMoves++;
 	var currentMouseMoves = mouseMoves;
 	setTimeout(function () {
 			if(point !== null && mouseMoves == currentMouseMoves) {
-				fireRequests(point);
+				if($("#container_printbox").length > 0) {
+                                    return;
+                                }
+                                else {
+                                    fireRequests(point);
+                                    eventTooltipWmsRequestsStarted.trigger({clickX:point.x, clickY:point.y});
+                                }
 			}
 		}
 		,tooltip_timeDelay
 	);
 }
 
-function fireRequests(point){
+// Tooltip mit Zustandsanzeiger (Fortschritt der Abfrage) erzeugen
+var progressDisplay = false;
+
+function buildProgressDisplay() {
+	var progressDisplayImg = document.createElement('img');
+
+	progressDisplayImg.id               = 'progress_display';
+	progressDisplayImg.src              = '../img/progress.gif';
+	progressDisplayImg.style.visibility = 'hidden';
+	progressDisplayImg.style.position   = 'absolute';
+	progressDisplayImg.style.zIndex     = 999999;
+
+	document.getElementById(tooltipTarget + '_maps').appendChild(progressDisplayImg);
+
+	progressDisplay = progressDisplayImg;
+
+	document.onmouseout = hideProgressDisplay;
+}
+
+// Tooltip mit Zustandsanzeiger (Fortschritt der Abfrage) anzeigen
+function showProgressDisplay(point) {
+	if(progressDisplay === false) {
+		buildProgressDisplay();
+	}
+
+	progressDisplay.style.visibility = 'visible';
+
+	progressDisplay.style.top  = (point.y + 5) + 'px';
+	progressDisplay.style.left = (point.x + 5) + 'px';
+}
+
+// Tooltip mit Zustandsanzeiger (Fortschritt der Abfrage) verbergen
+function hideProgressDisplay() {
+	if(progressDisplay) {
+		progressDisplay.style.visibility = 'hidden';
+	}
+}
+
+var exisitingBalloonId = false;
+
+function fireRequests(obj){
 	var ind = getMapObjIndexByName(tooltipTarget);
 	var point_geom = new Geometry(geomType.point);
 	point_geom.addPoint(mapToReal(tooltipTarget,point));
 	visibleRequest = 0;
 
-	if(tooltip_disableWms != '1') {	
+	if(tooltip_disableWms != '1') {
 		//FeatureInfo requests
 		urls = mb_mapObj[ind].getFeatureInfoRequests(point);
 		tooltipWmsRequestCount = urls.length;
-		numberOfFinishedWmsRequests	= 0;	
+                if (urls.length > 0) {
+                    showProgressDisplay(point);
+                }
+		numberOfFinishedWmsRequests	= 0;
 		for(var j=0;j < urls.length;j++){
-			mb_ajax_post("../extensions/ext_featureInfoTunnel.php", {url:urls[j]}, 
+			mb_ajax_post("../extensions/ext_featureInfoTunnel.php", {url:urls[j]},
 				checkFeatureInfoResults);
 		}
 	}
-	
-	if(tooltip_disableWfs != '1') {	
+
+	if(tooltip_disableWfs != '1') {
 		//WFS requests
 		requests = getWfsRequests(tooltipTarget, point_geom, true);
 		tooltipWfsRequestCount = requests.length;
+                if (requests.length > 0) {
+                    showProgressDisplay(point);
+                }
 		numberOfFinishedWfsRequests = 0;
 		resultGeomArray = new GeometryArray();
 		for(var j=0;j< requests.length;j++){
@@ -151,7 +232,7 @@
 						if (typeof(currentRequest) === "object" && typeof(currentRequest.js_wfs_conf_id) !== "undefined") {
 							for (var i = 0; i < geom.count(); i++) {
 								geom.get(i).wfs_conf = parseInt(currentRequest.js_wfs_conf_id);
-							}					
+							}
 						}
 					}
 					checkWfsResultsFinished(geom);
@@ -164,26 +245,51 @@
 function checkFeatureInfoResults(js_code,status){
 	numberOfFinishedWmsRequests++;
 
+        if(isLastResult()){
+		eventTooltipWmsRequestsFinished.trigger();
+	}
+
 	//check if there are results
 	if(js_code == ""){
 		if(!isFirstResult())
 			displayResultDoc("");
+                        hideProgressDisplay();
 		return;
 	}
-	
+
 	for(var k=0;k < no_result_text.length;k++){
 		if(js_code.indexOf(no_result_text[k])!==-1){
 			if(!isFirstResult()) {
 				displayResultDoc("");
-			}	
+                                hideProgressDisplay();
+			}
 			return;
 		}
 	}
 
+        hideProgressDisplay();
 	//output code
 	displayResultDoc(js_code);
 }
 
+eventTooltipWfsRequestsFinished = new MapbenderEvent();
+
+eventTooltipWfsRequestsFinished.register(function(obj) {
+	var resultGeomArray = obj.geomArray;
+	if(resultGeomArray.count()>0){
+		//generate and output result
+		if(resultGeomArray.count()>1)
+			var html = createSimpleWfsResultHtml(resultGeomArray);
+		else
+			var html = createDetailedWfsResultHtml(resultGeomArray);
+		displayResultDoc(html);
+                hideProgressDisplay();
+	}
+	else if(!isFirstResult())
+		displayResultDoc("");
+                hideProgressDisplay();
+});
+
 function checkWfsResultsFinished(g){
 	//check if all wfs requests arrived
 	numberOfFinishedWfsRequests++;
@@ -191,18 +297,9 @@
 		resultGeomArray.union(g);
 	}
 	if (numberOfFinishedWfsRequests == tooltipWfsRequestCount) {
-		if(resultGeomArray.count()>0){
-			//generate and output result
-			//if(resultGeomArray.count()>1) {
-				var html = createSimpleWfsResultHtml(resultGeomArray);
-			//}	
-			//else {
-			//	var html = createDetailedWfsResultHtml(resultGeomArray);
-			//}	
-			displayResultDoc(html);
-		}
-		else if(!isFirstResult())
-			displayResultDoc("");
+		eventTooltipWfsRequestsFinished.trigger({
+			"geomArray" : resultGeomArray
+		});
 	}
 }
 
@@ -215,11 +312,16 @@
 }
 
 function displayResultDoc(html){
-	//test if we have a fixed destination and create popup otherwise
+	if(exisitingBalloonId) {
+		$('#' + exisitingBalloonId).hide();
+		$('#balloon_' + exisitingBalloonId).remove();
+	}
+
+        //test if we have a fixed destination and create popup otherwise
 	if(tooltip_destinationFrame=="") {
 		return showBalloonFrame(html);
 	}
-          	
+
 	//put the frame there
 	$("#"+tooltip_destinationFrame).each(function(){
 	    var oDoc = this.contentWindow || this.contentDocument;
@@ -231,39 +333,60 @@
 		oDoc.write(html);
 		if(isLastResult())
 			oDoc.close();
-	});	
+	});
 	visibleRequest++;
+        hideProgressDisplay();
 }
 
+eventTooltipWmsRequestsStarted = new MapbenderEvent();
+eventTooltipWmsRequestsStarted.register(function () {
+//	new Mb_notice("STARTED " + tooltipTarget);
+//	$("body", window.frames[tooltipTarget].document).css({"cursor": "pointer"});
+});
+eventTooltipWmsRequestsStarted.register(fireRequests);
+
+eventTooltipWmsRequestsFinished = new MapbenderEvent();
+eventTooltipWmsRequestsFinished.register(function () {
+//	new Mb_notice("FINISHED " + tooltipTarget);
+//	$("body", window.frames[tooltipTarget].document).css({"cursor": "default"});
+});
+
 function showBalloonFrame(html){
+        hideProgressDisplay();
+
 	if(isFirstResult()){
 		//calculate Position
-		
+
 		x=point.x+parseInt(document.getElementById(tooltipTarget).style.left, 10);
 		y=point.y+parseInt(document.getElementById(tooltipTarget).style.top, 10);
-		
+
 		//hide old Popup
 		if(tooltipWin&&tooltipWin.isVisible())
 			tooltipWin.destroy();
-	
+
 		//create Popup and append document
-		tooltipWin = new mb_popup({html:'<iframe id="tooltipWin" name="tooltipWin" src="about:blank"/>',title:tooltipMsg.title,width:tooltip_width,height:tooltip_height,balloon:true,left:x,top:y});
+		tooltipWin = new mb_popup({html:'<iframe allowTransparency="true" id="tooltipWin" name="tooltipWin" src="about:blank"/>',title:tooltipMsg.title,width:tooltip_width,height:tooltip_height,balloon:true,left:x,top:y});
 		//open document
 		tooltipWin.open();
 	}
 	tooltipWin.write(html);
-	
+
 	if(isLastResult()){
 		tooltipWin.close();
 	}
-		
+
 	//finally display popup
 	tooltipWin.show();
 	visibleRequest++;
 
 	// destroy the popup if the mouse leaves the popup
-	$("#"+tooltipWin.id + " #tooltipWin").mouseout(function() {
-		tooltipWin.destroy();
+	$("#balloon_"+tooltipWin.id).mousemove(function(e){
+		var tooltip_map = getMapObjByName(tooltipTarget);
+                point = tooltip_map.getMousePosition(e);
+		mod_tooltip_run(point);
+	}).mouseout(function() {
+		//tooltipWin.destroy();
+                mouseMoves=0;
 	});
 }
 
@@ -273,7 +396,7 @@
 	var ind = getMapObjIndexByName(target);
 	var db_wfs_conf_id = [];
 	var js_wfs_conf_id = [];
-	
+
 	//search configurations that are selected (and in scale)
 	for (var i=0; i < mb_mapObj[ind].wms.length; i++){
 		for(var ii=0; ii < mb_mapObj[ind].wms[i].objLayer.length; ii++){
@@ -295,7 +418,7 @@
 
 	//build requests
 	var requests = [];
-	
+
 	for(var i=0;i < js_wfs_conf_id.length; i++){
 		//build url
 		var url = wfs_config[js_wfs_conf_id[i]]['wfs_getfeature'];
@@ -303,7 +426,7 @@
 		url += "service=wfs&request=getFeature&version=1.0.0";
 		url += "&typename="+ wfs_config[js_wfs_conf_id[i]]['featuretype_name'];
 		url += "&filter=";
-	
+
 		//search for geometry column
 		var geometryCol;
 		for(var j=0; j < wfs_config[js_wfs_conf_id[i]]['element'].length; j++){
@@ -311,14 +434,14 @@
 				geometryCol = wfs_config[js_wfs_conf_id[i]]['element'][j]['element_name'];
 			}
 		}
-		
+
 		//get filter
 		var filter = new WfsFilter();
 		filter.addSpatial(geom, geometryCol, filteroption, wfs_config[js_wfs_conf_id[i]]['featuretype_srs'], target);
 
 		requests.push({'url':url,'filter':filter.toString(), 'typename':wfs_config[js_wfs_conf_id[i]]['featuretype_name'],'js_wfs_conf_id':js_wfs_conf_id[i], 'db_wfs_conf_id':db_wfs_conf_id[i]});
 	}
-	
+
 	return requests;
 }
 
@@ -335,9 +458,9 @@
 			html += "\t\t\t onmouseover='parent.setResult(\"over\","+i+");' ";
 			html += " onmouseout='parent.setResult(\"out\","+i+")' ";
 			html += " onclick='parent.setResult(\"click\","+i+");' ";
-			var geomName = getWfsListEntry(_geomArray.get(i)); 
+			var geomName = getWfsListEntry(_geomArray.get(i));
 			html += ">" + geomName +"</td>";
-			html += "\t\t</tr>\n"; 
+			html += "\t\t</tr>\n";
 		}
 	}
 
@@ -351,18 +474,18 @@
 	wfsConf = get_complete_wfs_conf();
 	var html = '<html><head><style type="text/css">';
 	html += tooltip_styles_detail;
-	html += "</style></head><body><table>\n";	
-		
+	html += "</style></head><body><table>\n";
+
 	var wfsConfIndex = _geomArray.get(geometryIndex).wfs_conf;
 	var currentWfsConf = wfsConf[wfsConfIndex];
 	for (var i = 0 ; i <currentWfsConf.element.length; i ++) {
 	    if(currentWfsConf.element[i].f_show_detail==1){
 	    	if( _geomArray.get(geometryIndex).e.getElementValueByName(currentWfsConf.element[i].element_name)!=false){
-				html +="<tr class='list_"+(cnt%2?"uneven":"even")+"'><td>\n"; 
+				html +="<tr class='list_"+(cnt%2?"uneven":"even")+"'><td>\n";
 				html += currentWfsConf.element[i].f_label;
-				html +="</td>\n"; 
+				html +="</td>\n";
 				html += "<td>\n";
-				var elementVal = _geomArray.get(geometryIndex).e.getElementValueByName(currentWfsConf.element[i].element_name); 
+				var elementVal = _geomArray.get(geometryIndex).e.getElementValueByName(currentWfsConf.element[i].element_name);
 				if(currentWfsConf.element[i].f_form_element_html.indexOf("href")!=-1){
 					var setUrl = currentWfsConf.element[i].f_form_element_html.replace(/href\s*=\s*['|"]\s*['|"]/, "href='"+elementVal+"' target='_blank'");
 					if(setUrl.match(/><\/a>/)){
@@ -381,7 +504,7 @@
 			}
 		}
 	}
-	
+
 	html += "</table></body>\n";
 	return html;
 }
@@ -400,7 +523,7 @@
 				}
 				else {
 					resultArray[pos] = geom.e.getElementValueByName(wfsConf[wfsConfId]['element'][i]['element_name']);
-				} 
+				}
 			}
 		}
 		var resultName = resultArray.join(" ");
@@ -422,7 +545,7 @@
 	var currentGeom = resultGeomArray.get(index);
 	var resultHighlight = new parent.Highlight(targetArray, "tooltipHighlight", {"position":"absolute", "top":"0px", "left":"0px", "z-index":100}, 2);
 	var cw_fillcolor = "#cc33cc";
-	
+
 	if (event == "over") {
 		resultHighlight.add(currentGeom, cw_fillcolor);
 		resultHighlight.paint();



More information about the Mapbender_commits mailing list