[Mapbender-commits] r1122 - trunk/mapbender/http/javascripts

svn_mapbender at osgeo.org svn_mapbender at osgeo.org
Tue Feb 13 11:30:16 EST 2007


Author: christoph
Date: 2007-02-13 11:30:16 -0500 (Tue, 13 Feb 2007)
New Revision: 1122

Modified:
   trunk/mapbender/http/javascripts/mod_digitize_tab.php
Log:
bugfixes
* Fehlermeldung beim L?\195?\182schen ?\195?\188ber Button in der Liste (wfsWindow kein Objekt)
* Linien haben keinen transaktionalen wfs. Ist es m?\195?\182glich, den Speichern Butten auszublenden?
* Digi-Workspace l?\195?\182schen und FeaturInfo abfragen l?\195?\164uft auf Fehler
* neu digitalisierte Obj sind in der Liste ohne fid... update l?\195?\164uft nicht 

Modified: trunk/mapbender/http/javascripts/mod_digitize_tab.php
===================================================================
--- trunk/mapbender/http/javascripts/mod_digitize_tab.php	2007-02-13 16:29:00 UTC (rev 1121)
+++ trunk/mapbender/http/javascripts/mod_digitize_tab.php	2007-02-13 16:30:16 UTC (rev 1122)
@@ -79,7 +79,7 @@
 var button_clear = "clear";
 var button_combine = "combine";
 
-const featureTypeElementFormId = "featureTypeElementForm";
+var featureTypeElementFormId = "featureTypeElementForm";
 
 try {if(mod_digitize_elName){}}catch(e) {mod_digitize_elName = "digitize";}
 
@@ -460,6 +460,9 @@
 		executeDigitizePreFunctions();
 	}
 	else if (obj.id == button_point || obj.id == button_line || obj.id == button_polygon || obj.id == button_clear || obj.id == button_combine){
+		var el = parent.frames[mod_digitize_target].document;
+		el.onmousemove = mod_digitize_go;
+
 		mod_digitizeEvent = obj.id;
 		executeDigitizePreFunctions();
 		obj.title = obj.title_on;
@@ -491,8 +494,6 @@
 			parent.mb_disableThisButton(button_combine);
 		}
 		if (mod_digitizeEvent == button_point || mod_digitizeEvent == button_line || mod_digitizeEvent == button_polygon || mod_digitizeEvent == button_insert ) {s.store(d);}
-		var el = parent.frames[mod_digitize_target].document;
-		el.onmousemove = mod_digitize_go;
 	}
 }
 
@@ -504,7 +505,9 @@
 		executeDigitizeSubFunctions();
 	}
 	else if (obj.id == button_clear) {
+		mod_digitize_timeout();
 		executeDigitizeSubFunctions();
+		var el = parent.frames[mod_digitize_target].document;
 	}
 }
 // --- button handling (end) ----------------------------------------------------------------------------------------------
@@ -646,22 +649,24 @@
 			if (nonTransactionalEditable || isTransactional(d.get(i))) {
 	
 				listOfGeom += "\t<tr>\n\t\t<td>\n";
-				listOfGeom += "\t\t\t<img src = '"+buttonDig_imgdir+buttonDig_wfs_src+"' title='"+buttonDig_wfs_title+"' onclick='showWfs("+i+")'>\n";
+				if (wfsExistsForGeom(d.get(i), wfsConf)) {
+					listOfGeom += "\t\t\t<img src = '"+buttonDig_imgdir+buttonDig_wfs_src+"' title='"+buttonDig_wfs_title[selectedLanguage]+"' onclick='showWfs("+i+")'>\n";
+				}
 				listOfGeom += "\t\t</td>\n\t\t<td>\n";
-				listOfGeom += "\t\t\t<img src = '"+buttonDig_imgdir+buttonDig_remove_src+"' title='"+buttonDig_remove_title+"' onclick='parent.mb_disableThisButton(mod_digitizeEvent);d.del("+i+");executeDigitizeSubFunctions();'>\n";
+				listOfGeom += "\t\t\t<img src = '"+buttonDig_imgdir+buttonDig_remove_src+"' title='"+buttonDig_remove_title[selectedLanguage]+"' onclick='parent.mb_disableThisButton(mod_digitizeEvent);d.del("+i+");executeDigitizeSubFunctions();'>\n";
 				listOfGeom += "\t\t</td>\n\t\t<td>\n";
 	
 				if (isValidWfsConfIndex(wfsConf, d.get(i).wfs_conf)) {
-					listOfGeom += "\t\t\t<img src = '"+buttonDig_imgdir+buttonDig_removeDb_src+"' title='"+buttonDig_removeDb_title+"' onclick=\"var deltrans = confirm('"+messageConfirmDeleteGeomFromDb[selectedLanguage]+"');if (deltrans) dbGeom('delete', "+i+")\">\n";
+					listOfGeom += "\t\t\t<img src = '"+buttonDig_imgdir+buttonDig_removeDb_src+"' title='"+buttonDig_removeDb_title[selectedLanguage]+"' onclick=\"var deltrans = confirm('"+messageConfirmDeleteGeomFromDb[selectedLanguage]+"');if (deltrans) dbGeom('delete', "+i+")\">\n";
 				}
 				listOfGeom += "\t\t</td>\n\t\t<td style = 'color:blue;font-size:12px'>\n";
 				listOfGeom += "\t\t\t<div onmouseover='parent.mb_wfs_perform(\"over\",d.get("+i+"));' ";
 				listOfGeom += " onmouseout='parent.mb_wfs_perform(\"out\",d.get("+i+"))' ";
 				listOfGeom += " onclick='parent.mb_wfs_perform(\"click\",d.get("+i+"));' ";
 				var geomName = getName(d.get(i)); 
-				if (d.get(i).geomType == parent.geomType.polygon) {geomName += " (polygon)";}
-				else if (d.get(i).geomType == parent.geomType.line) {geomName += " (line)";}
-				else if (d.get(i).geomType == parent.geomType.point) {geomName += " (point)";}
+				if (d.get(i).geomType == parent.geomType.polygon) {geomName += " ("+messageDescriptionPolygon[selectedLanguage]+")";}
+				else if (d.get(i).geomType == parent.geomType.line) {geomName += " ("+messageDescriptionLine[selectedLanguage]+")";}
+				else if (d.get(i).geomType == parent.geomType.point) {geomName += " ("+messageDescriptionPoint[selectedLanguage]+")";}
 				
 				listOfGeom += ">" + geomName +"</div>\t\t</td>\n\t</tr>\n";
 			}
@@ -798,6 +803,48 @@
 // --- wfs window form check (end) -----------------------------------------------------------------------------------------
 // -----------------------------------------------------------------------------------------------------------
 
+function getAvailableWfsForGeom(geom, wfsConf) {
+	var wfsConfIndices = [];
+	
+	for (var attr in wfsConf) {
+		var isTrans = (wfsConf[attr]['wfs_transaction'] != "");
+		if (!isTrans) {
+			continue;
+		}
+		if (isValidWfsConfIndex(wfsConf, parseInt(geom.wfs_conf))) {
+			
+			if (parseInt(geom.wfs_conf) == parseInt(attr)) {
+				wfsConfIndices.push(attr);
+			}
+		}
+		else {
+			for (var elementIndex = 0; elementIndex < wfsConf[attr]['element'].length ; elementIndex++) {
+				var isGeomColumn = (parseInt(wfsConf[attr]['element'][elementIndex]['f_geom']) == 1); 
+				if (isGeomColumn) {
+					var isMultiPolygon = (geom.geomType == parent.geomType.polygon && wfsConf[attr]['element'][elementIndex]['element_type'] == 'MultiPolygonPropertyType');
+					var isPolygon = (geom.geomType == parent.geomType.polygon && geom.count() == 1 && wfsConf[attr]['element'][elementIndex]['element_type'] == 'PolygonPropertyType');
+					var isMultiLine = (geom.geomType == parent.geomType.line && wfsConf[attr]['element'][elementIndex]['element_type'] == 'MultiLineStringPropertyType');
+					var isLine = (geom.geomType == parent.geomType.line && geom.count() == 1 && wfsConf[attr]['element'][elementIndex]['element_type'] == 'LineStringPropertyType');
+					var isPoint = (geom.geomType == parent.geomType.point && wfsConf[attr]['element'][elementIndex]['element_type'] == 'PointPropertyType');
+//					alert(isMultiPolygon + " " + isPolygon + " " + isMultiLine + " " + isLine + " " + isPoint);
+					if (isMultiPolygon || isPolygon || isMultiLine || isLine || isPoint || wfsConf[attr]['element'][elementIndex]['element_type'] == 'GeometryAssociationType') {
+						
+						wfsConfIndices.push(attr);
+					}
+				}
+			}
+		}	
+	}
+	return wfsConfIndices;
+}
+function wfsExistsForGeom(geom, wfsConf) {
+	wfsConfIndices = getAvailableWfsForGeom(geom, wfsConf);
+//	alert(wfsConfIndices.join(","));
+	if (wfsConfIndices.length > 0) {
+		return true;
+	}
+	return false;
+}
 
 
 //
@@ -824,48 +871,21 @@
 	onChangeText += "window.opener.setWfsWindowStyle(this.value);";
 	
 	str += "\t<select name='wfs' size='" + wfsConf.length + "'";
-	str += " onChange=\"alert(this.value);"+ onChangeText +"\"";
+	str += " onChange=\""+ onChangeText +"\"";
 	str += ">\n\t\t";
 
-	for (var attr in wfsConf) {
-		var isTrans = (wfsConf[attr]['wfs_transaction'] != "");
-		if (!isTrans) {
-			continue;
+	var wfsConfIndices = getAvailableWfsForGeom(d.get(geometryIndex), wfsConf);
+//	alert(wfsConfIndices.join(","));
+	var selected = false;
+	for (var i = 0; i < wfsConfIndices.length ; i++) {
+		str += "<option value='" + wfsConfIndices[i] + "'";
+		if (!selected) {
+			str += " selected";
+			selected = true;
+			defaultIndex = parseInt(wfsConfIndices[i]);
 		}
-		if (isValidWfsConfIndex(wfsConf, parseInt(d.get(geometryIndex).wfs_conf))) {
-			
-			if (parseInt(d.get(geometryIndex).wfs_conf) == parseInt(attr)) {
-				str += "<option value='" + attr + "'";
-				str += " selected";
-				defaultIndex = parseInt(attr);
-				str += ">" + wfsConf[attr]['wfs_conf_abstract'];
-				str += "</option>\n\t\t";
-			}
-		}
-		else {
-			var selected = false;
-			for (var elementIndex = 0; elementIndex < wfsConf[attr]['element'].length ; elementIndex++) {
-				var isGeomColumn = (parseInt(wfsConf[attr]['element'][elementIndex]['f_geom']) == 1); 
-				if (isGeomColumn) {
-					var isMultiPolygon = (d.get(geometryIndex).geomType == parent.geomType.polygon && wfsConf[attr]['element'][elementIndex]['element_type'] == 'MultiPolygonPropertyType');
-					var isPolygon = (d.get(geometryIndex).geomType == parent.geomType.polygon && d.get(geometryIndex).count() == 1 && wfsConf[attr]['element'][elementIndex]['element_type'] == 'PolygonPropertyType');
-					var isMultiLine = (d.get(geometryIndex).geomType == parent.geomType.line && wfsConf[attr]['element'][elementIndex]['element_type'] == 'MultiLineStringPropertyType');
-					var isLine = (d.get(geometryIndex).geomType == parent.geomType.line && d.get(geometryIndex).count() == 1 && wfsConf[attr]['element'][elementIndex]['element_type'] == 'LineStringPropertyType');
-					var isPoint = (d.get(geometryIndex).geomType == parent.geomType.point && wfsConf[attr]['element'][elementIndex]['element_type'] == 'PointPropertyType');
-//					alert(isMultiPolygon + " " + isPolygon + " " + isMultiLine + " " + isLine + " " + isPoint);
-					if (isMultiPolygon || isPolygon || isMultiLine || isLine || isPoint || wfsConf[attr]['element'][elementIndex]['element_type'] == 'GeometryAssociationType') {
-						str += "<option value='" + attr + "'";
-						if (!selected) {
-							str += " selected";
-							selected = true;
-							defaultIndex = parseInt(attr);
-						}
-						str += ">" + wfsConf[attr]['wfs_conf_abstract'];
-						str += "</option>\n\t\t";
-					}
-				}
-			}
-		}	
+		str += ">" + wfsConf[wfsConfIndices[i]]['wfs_conf_abstract'];
+		str += "</option>\n\t\t";
 	}
 
 	
@@ -1058,15 +1078,20 @@
 		else {
 			fid = d.get(m).e.getElementValueByName('fid');
 		}
-
 		str = parent.get_wfs_str(myconf, d, m, type, fid);
-		parent.mb_ajax_post("../extensions/geom2wfst.php", {'filter':str,'url':myconf['wfs_transaction']}, function(response,status){
-			wfsSubWrite(m, type, status, response);
+		parent.mb_ajax_post("../extensions/geom2wfst.php", {'filter':str,'url':myconf['wfs_transaction']}, function(json,status){
+			var result = eval('('+json+')');
+			var response = result.response;
+			var fid = result.fid;
+			wfsSubWrite(m, type, status, response, fid);
 		});
 	}
 }
 
-function wfsSubWrite(m, type, status, response) {
+function wfsSubWrite(m, type, status, response, fid) {
+	if (type == 'save' && fid) {
+		d.get(m).e.setElement("fid", fid);
+	}
 	parent.mb_execWfsWriteSubFunctions();
 
 	if (type == 'delete') {
@@ -1081,8 +1106,13 @@
 	else {
 		var wfsWriteMessage = messageErrorWfsWrite[selectedLanguage];
 	} 
-	wfsWindow.alert(wfsWriteMessage);
-	wfsWindow.close();
+	if (typeof(wfsWindow) != 'undefined' && !wfsWindow.closed) {
+		wfsWindow.alert(wfsWriteMessage);
+		wfsWindow.close();
+	}
+	else {
+		alert(wfsWriteMessage);
+	}
 }
 // --- wfs window (begin) -----------------------------------------------------------------------------------------
 // -----------------------------------------------------------------------------------------------------------



More information about the Mapbender_commits mailing list