[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