[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