[Mapbender-commits] r8117 - in trunk/mapbender/http: img javascripts

svn_mapbender at osgeo.org svn_mapbender at osgeo.org
Thu Sep 8 05:25:16 EDT 2011


Author: verenadiewald
Date: 2011-09-08 02:25:16 -0700 (Thu, 08 Sep 2011)
New Revision: 8117

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

Added: trunk/mapbender/http/img/progress.gif
===================================================================
(Binary files differ)


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

Modified: trunk/mapbender/http/javascripts/mod_tooltip.php
===================================================================
--- trunk/mapbender/http/javascripts/mod_tooltip.php	2011-09-08 09:22:48 UTC (rev 8116)
+++ trunk/mapbender/http/javascripts/mod_tooltip.php	2011-09-08 09:25:16 UTC (rev 8117)
@@ -36,13 +36,15 @@
 
 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)
@@ -91,6 +93,18 @@
             mouseMoves=0;
         });
 
+		if (tooltipWin) {
+			tooltipWin.hide();
+                        hideProgressDisplay();
+		}
+		buildProgressDisplay();
+
+                $(".printPDF-dialog").bind("dialogopen", function () {
+                    tooltipWin.destroy();
+                    hideProgressDisplay();
+                });
+
+
 }
 
 eventInit.register(mod_tooltipInit); //initialize tooltips!
@@ -105,21 +119,82 @@
             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));
@@ -129,6 +204,9 @@
 		//FeatureInfo requests
 		urls = mb_mapObj[ind].getFeatureInfoRequests(point);
 		tooltipWmsRequestCount = urls.length;
+                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]},
@@ -140,6 +218,9 @@
 		//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++){
@@ -164,10 +245,15 @@
 function checkFeatureInfoResults(js_code,status){
 	numberOfFinishedWmsRequests++;
 
+        if(isLastResult()){
+		eventTooltipWmsRequestsFinished.trigger();
+	}
+
 	//check if there are results
 	if(js_code == ""){
 		if(!isFirstResult())
 			displayResultDoc("");
+                        hideProgressDisplay();
 		return;
 	}
 
@@ -175,15 +261,35 @@
 		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,7 +312,12 @@
 }
 
 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);
 	}
@@ -233,9 +335,25 @@
 			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
 
@@ -247,7 +365,7 @@
 			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();
 	}
@@ -262,8 +380,13 @@
 	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;
 	});
 }
 



More information about the Mapbender_commits mailing list