[Mapbender-commits] r4412 - branches/2.6/http/javascripts

svn_mapbender at osgeo.org svn_mapbender at osgeo.org
Wed Jul 22 04:09:07 EDT 2009


Author: christoph
Date: 2009-07-22 04:09:06 -0400 (Wed, 22 Jul 2009)
New Revision: 4412

Modified:
   branches/2.6/http/javascripts/mod_wfs_gazetteer_client.php
Log:


Modified: branches/2.6/http/javascripts/mod_wfs_gazetteer_client.php
===================================================================
--- branches/2.6/http/javascripts/mod_wfs_gazetteer_client.php	2009-07-21 14:54:03 UTC (rev 4411)
+++ branches/2.6/http/javascripts/mod_wfs_gazetteer_client.php	2009-07-22 08:09:06 UTC (rev 4412)
@@ -43,9 +43,32 @@
 	echo "var wfsConfIdString = '" . $wfsConfIdString . "';";
 	echo "var e_id_css = '" . $e_id_css . "';";
 ?>
+
+// Element var maxHighlightedPoints
+try{
+	if (maxHighlightedPoints){
+		maxHighlightedPoints = Number(maxHighlightedPoints);
+
+		if (isNaN(maxHighlightedPoints)) {
+//			var e = new parent.Mb_warning("mod_wfs_gazetteer_client.php: Element var maxHighlightedPoints must be a number.");
+		}
+	}
+}
+catch(e){
+	maxHighlightedPoints = 0;
+//	var e = new parent.Mb_warning("mod_wfs_gazetteer_client.php: Element var maxHighlightedPoints is not set, see 'edit element vars'.");
+}
 // Element var showResultInPopup
 try {if(showResultInPopup){}}catch(e) {showResultInPopup = 1;}
 
+//element var openLinkFromSearch for opening attribute link directly onclick of searchResult entry
+try{
+	if (openLinkFromSearch){}
+}
+catch(e){
+	openLinkFromSearch =0;
+}
+
 var targetArray = targetString.split(",");
 var global_wfsConfObj;
 var global_selectedWfsConfId;
@@ -458,18 +481,18 @@
 	if (parent.ie) {
 		selectNode.onchange = function() {
 		global_selectedWfsConfId = this.value;
-     	if(typeof(parent.resultGeometryPopup)!="undefined"){
-	 		parent.resultGeometryPopup.destroy();
+     	if(typeof(resultGeometryPopup)!="undefined"){
+	 		resultGeometryPopup.destroy();
 	 	}
-	 	if(typeof(parent.wfsPopup)!="undefined"){
-	 		parent.wfsPopup.destroy();
+	 	if(typeof(wfsPopup)!="undefined"){
+	 		wfsPopup.destroy();
 	 	}
     	appendStyles();
 		appendWfsForm();
 		};
 	}
 	else{
-	   selectNode.setAttribute("onchange", "if(typeof(parent.resultGeometryPopup)!='undefined'){parent.resultGeometryPopup.destroy();}if(typeof(parent.wfsPopup)!='undefined'){parent.wfsPopup.destroy();};global_selectedWfsConfId = this.value;appendStyles();appendWfsForm();");
+	   selectNode.setAttribute("onchange", "if(typeof(resultGeometryPopup)!='undefined'){resultGeometryPopup.destroy();}if(typeof(wfsPopup)!='undefined'){wfsPopup.destroy();};global_selectedWfsConfId = this.value;appendStyles();appendWfsForm();");
 	}
 	var isSelected = false;
 	for (var wfsConfId in global_wfsConfObj) {
@@ -629,12 +652,12 @@
  	}
 
 	//remove result popup
-	if(typeof(parent.resultGeometryPopup)!="undefined"){
- 		parent.resultGeometryPopup.destroy();
+	if(typeof(resultGeometryPopup)!="undefined"){
+ 		resultGeometryPopup.destroy();
  	}
  	//remove detail popup
- 	if(typeof(parent.wfsPopup)!="undefined"){
- 		parent.wfsPopup.destroy();
+ 	if(typeof(wfsPopup)!="undefined"){
+ 		wfsPopup.destroy();
  	}
 
  	if(document.getElementById('spatialResHint')){
@@ -692,13 +715,14 @@
 	if(geomArray.count()>0){
  		geomArray.empty();
  	}
- 	if(typeof(parent.resultGeometryPopup)!="undefined"){
- 		parent.resultGeometryPopup.destroy();
+ 	if(typeof(resultGeometryPopup)!="undefined"){
+ 		resultGeometryPopup.destroy();
  	}
- 	if(typeof(parent.wfsPopup)!="undefined"){
- 		parent.wfsPopup.destroy();
+ 	if(typeof(wfsPopup)!="undefined"){
+ 		wfsPopup.destroy();
  	}
-	
+	global_resultHighlight = new parent.Highlight(targetArray, "wfs_gazetteer_highlight", {"position":"absolute", "top":"0px", "left":"0px", "z-index":generalHighlightZIndex}, generalHighlightLineWidth);
+
 	var filterParameterCount = getNumberOfFilterParameters();
 
 	if(filterParameterCount == 0 && spatialRequestGeom == null){
@@ -1005,7 +1029,7 @@
 						}
 						else {
 							document.getElementById("res").innerHTML = '';
-							alert("No results.");
+							displayResult();
 						}
 					}
 		       		else {
@@ -1024,14 +1048,223 @@
 }
 
 function displayResult(geom){
-	if (showResultInPopup == 1) {
-		parent.displayResultGeometryList(targetArray, geom, "popup", "gazetteerWFS", global_wfsConfObj, global_selectedWfsConfId);
+	geomArray = geom;
+	if(geomArray!=null && geomArray.count()>0){
+		var contentHtml = createListOfGeometries();
 	}
-	else {
-		parent.displayResultGeometryList(targetArray, geom, "", "gazetteerWFS", global_wfsConfObj, global_selectedWfsConfId);
+	else{
+		var contentHtml = "No results.";
 	}
+
+	if(showResultInPopup==1){
+		if (typeof(resultGeometryPopup) == "undefined") {
+			resultGeometryPopup = new parent.mb_popup(searchPopupTitle,contentHtml,searchPopupWidth,searchPopupHeight,searchPopupX,searchPopupY);
+		}
+		else {
+			resultGeometryPopup.destroy();
+			resultGeometryPopup = new parent.mb_popup(searchPopupTitle,contentHtml,searchPopupWidth,searchPopupHeight,searchPopupX,searchPopupY);
+		}
+		resultGeometryPopup.show();
+		parent.$("#resultTable").tablesorter({
+     		sortList: [[0,0]],
+     		widgets: ['zebra']
+        });
+	}
+	else{
+		document.getElementById("res").innerHTML = contentHtml;
+	}
 }
 
+function createListOfGeometries(){
+	if(showResultInPopup==1){
+		var domPath = "window.frames['"+frameName+"'].";
+	}
+	else{
+		var domPath = "";
+	}
+	var listOfGeom = "<form name='resultListForm'><table class='tablesorter' id='resultTable'>\n";
+	var wfsConf = global_wfsConfObj[global_selectedWfsConfId];
+	var labelArray = [];
+	if (geomArray.count() > 0) {
+
+		if(showResultInPopup==1){
+			listOfGeom += "<thead><tr>";
+			var labelObj = getListTitle();
+			for (var k = 1 ; k < labelObj.length; k ++) {
+				listOfGeom += "<th>";
+				listOfGeom += labelObj[k];
+				listOfGeom += "</th>";
+			}
+			listOfGeom += "</tr></thead>";
+		}
+		listOfGeom += "<tbody>";
+		for (var i = 0 ; i < geomArray.count(); i ++) {
+			if (geomArray.get(i).get(-1).isComplete()) {
+				listOfGeom += "<tr>\n";
+				var resultElObj = getListValues(geomArray.get(i));
+				for (var l = 1 ; l < resultElObj.length; l ++) {
+					if(resultElObj[l]!=''){
+						listOfGeom += "<td style='cursor:pointer;\n";
+						if(showResultInPopup==1){
+							if ((i % 2) === 0) {
+								listOfGeom += "' class='even'";
+							}
+							else {
+								listOfGeom += "' class='odd'";
+							}
+						}
+						else{
+							if ((i % 2) === 0) {
+								listOfGeom += "' class='even'";
+							}
+							else {
+								listOfGeom += "' class='uneven'";
+							}
+						}
+						listOfGeom += " onmouseover=\""+domPath+"setResult('over',"+i+")\" ";
+						listOfGeom += " onmouseout=\""+domPath+"setResult('out',"+i+")\" ";
+						listOfGeom += " onclick=\""+domPath+"setResult('click',"+i+"); "+domPath+"showWfs("+i+");\" ";
+						listOfGeom += ">"+ resultElObj[l] +"</td>";
+					}
+				}
+				listOfGeom += "\t</tr>\n";
+			}
+		}
+	}
+	listOfGeom += "</tbody></table></form>\n";
+	return listOfGeom;
+}
+
+function getListTitle(){
+	var wfsConf = global_wfsConfObj[global_selectedWfsConfId];
+	var labelArray = [];
+	for (var j = 0 ; j < wfsConf.element.length ; j++) {
+		if(wfsConf.element[j].f_show == 1 && wfsConf.element[j].f_label!=''){
+			var labelPos = wfsConf.element[j].f_respos;
+			labelArray[labelPos] = wfsConf.element[j].f_label;
+		}
+	}
+	return labelArray;
+}
+
+function getListValues(geom){
+	var wfsConf = global_wfsConfObj[global_selectedWfsConfId];
+	var resultArray = [];
+	for (var i = 0 ; i < wfsConf.element.length ; i++) {
+		if (wfsConf.element[i].f_show == 1 && geom.e.getElementValueByName(wfsConf.element[i].element_name) !=false) {
+			var pos = wfsConf.element[i].f_respos;
+			if(pos>0){
+				resultArray[pos] = geom.e.getElementValueByName(wfsConf.element[i].element_name);
+			}
+		}
+	}
+	return resultArray;
+}
+
+function showWfs(geometryIndex) {
+	var wfsConf = global_wfsConfObj[global_selectedWfsConfId];
+	var wfsElement = geomArray.get(geometryIndex).e;
+	var showDetailsObj = [];
+	var details = 0;
+	for (var i = 0 ; i <wfsConf.element.length; i ++) {
+		if(wfsConf.element[i].f_show_detail == 1 && wfsElement.getElementValueByName(wfsConf.element[i].element_name)!=''){
+			var elPos = wfsConf.element[i].f_detailpos;
+			if(elPos>0){
+				var currentObj = {};
+//				showDetailsObj[elPos] = {};
+				currentObj.elPos = elPos;
+				currentObj.data = {};
+				//var elementVal = wfsElement.getElementValueByName(wfsConf.element[i].element_name);
+				//showDetailsObj[elPos][wfsConf.element[i].f_label] = elementVal;
+				if(wfsConf.element[i].f_form_element_html.indexOf("href")!=-1){
+					var newPath = wfsElement.getElementValueByName(wfsConf.element[i].element_name);
+					var setUrl = wfsConf.element[i].f_form_element_html.replace(/href\s*=\s*['|"]\s*['|"]/, "href='"+newPath+"' target='_blank'");
+					if(setUrl.match(/><\/a>/)){
+						var newLink	=	setUrl.replace(/><\/a>/, ">"+wfsElement.getElementValueByName(wfsConf.element[i].element_name)+"</a>");
+					}
+					else{
+						var newLink = setUrl;
+					}
+					if(openLinkFromSearch=='1'){
+						window.open(elementVal, elementVal,"width=500, height=400,left=100,top=100,scrollbars=yes");
+					}
+//					showDetailsObj[elPos][wfsConf.element[i].f_label] =  newLink;
+					currentObj.data[wfsConf.element[i].f_label] = newLink;
+				}
+				else{
+//					showDetailsObj[elPos][wfsConf.element[i].f_label] = wfsElement.getElementValueByName(wfsConf.element[i].element_name);
+					currentObj.data[wfsConf.element[i].f_label] = wfsElement.getElementValueByName(wfsConf.element[i].element_name);
+				}
+				showDetailsObj.push(currentObj);
+			}
+		}
+	}
+	var resultHtml = "";
+	resultHtml += "<table style='background-color:#EEEEEE;'>\n";
+
+	showDetailsObj.sort(showDetailObjSort);
+	for (var i=0; i < showDetailsObj.length; i++) {
+//		var currentDetail = showDetailsObj[elPos];
+		var currentDetail = showDetailsObj[i].data;
+		for(var key in currentDetail){
+			var currentDetailName = key;
+			var currentDetailValue = currentDetail[key];
+			resultHtml +="<tr><td>\n";
+			resultHtml += currentDetailName;
+			resultHtml +="</td>\n";
+			resultHtml += "<td>\n";
+			resultHtml += currentDetailValue;
+			resultHtml += "</td></tr>\n";
+		}
+	}
+	resultHtml += "</table>\n";
+	if(showResultInPopup==1 && showDetailsObj.length > 0){
+		if (typeof(wfsPopup) == "undefined") {
+			wfsPopup = new parent.mb_popup(detailPopupTitle,resultHtml,detailPopupWidth,detailPopupHeight,detailPopupX,detailPopupY);
+		}
+		else {
+			wfsPopup.destroy();
+			wfsPopup = new parent.mb_popup(detailPopupTitle,resultHtml,detailPopupWidth,detailPopupHeight,detailPopupX,detailPopupY);
+		}
+		wfsPopup.show();
+	}
+}
+
+function showDetailObjSort (a, b) {
+	return (parseInt(a.elPos) - parseInt(b.elPos));
+}
+
+/*
+* event -> {over || out || click}
+* geom -> commaseparated coordinates x1,y1,x2,y2 ...
+*/
+function setResult(event, index){
+	var currentGeom = geomArray.get(index);
+	if (maxHighlightedPoints > 0 && currentGeom.getTotalPointCount() > maxHighlightedPoints) {
+		currentGeom = currentGeom.getBBox4();
+	}
+	if (event == "over") {
+		global_resultHighlight.add(currentGeom, generalHighlightColor);
+		global_resultHighlight.paint();
+	}
+	else if (event == "out"){
+		global_resultHighlight.del(currentGeom, generalHighlightColor);
+		global_resultHighlight.paint();
+	}
+	else if (event == "click"){
+		global_resultHighlight.del(currentGeom, generalHighlightColor);
+		var bbox = currentGeom.getBBox();
+		var bufferFloat = parseFloat(global_wfsConfObj[global_selectedWfsConfId].g_buffer);
+		var buffer = new parent.Point(bufferFloat,bufferFloat);
+		bbox[0] = bbox[0].minus(buffer);
+		bbox[1] = bbox[1].plus(buffer);
+		parent.mb_calculateExtent(targetArray[0], bbox[0].x, bbox[0].y, bbox[1].x, bbox[1].y);
+		parent.zoom(targetArray[0], 'true', 1.0);
+		global_resultHighlight.add(currentGeom, generalHighlightColor);
+		global_resultHighlight.paint();
+	}
+	return true;
+}
 function callPick(obj){
 	dTarget = obj;
 	var dp = window.open('../tools/datepicker/datepicker.php?m=Jan_Feb_Mar_Apr_May_June_July_Aug_Sept_Oct_Nov_Dec&d=Mon_Tue_Wed_Thu_Fri_Sat_Sun&t=today','dp','left=200,top=200,width=230,height=210,toolbar=0,location=0,directories=0,status=0,menubar=0,scrollbars=0');



More information about the Mapbender_commits mailing list