[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