[OpenLayers-Commits] r4796 - in sandbox/timandseb/wfsv: examples lib/OpenLayers/Control
commits at openlayers.org
commits at openlayers.org
Wed Oct 3 16:55:23 EDT 2007
Author: sbenthall
Date: 2007-10-03 16:55:22 -0400 (Wed, 03 Oct 2007)
New Revision: 4796
Modified:
sandbox/timandseb/wfsv/examples/wfs-v.html
sandbox/timandseb/wfsv/lib/OpenLayers/Control/ModifyFeature.js
sandbox/timandseb/wfsv/lib/OpenLayers/Control/SelectFeature.js
Log:
Delete now works
Modified: sandbox/timandseb/wfsv/examples/wfs-v.html
===================================================================
--- sandbox/timandseb/wfsv/examples/wfs-v.html 2007-10-03 20:42:35 UTC (rev 4795)
+++ sandbox/timandseb/wfsv/examples/wfs-v.html 2007-10-03 20:55:22 UTC (rev 4796)
@@ -133,7 +133,15 @@
} else {
OpenLayers.ProxyHost = "proxy.cgi?url=";
}
+/* local
+ var wfsUrl = "http://localhost:8080/geoserver/wfsv",
+ wmsUrl = "http://localhost:8080/geoserver/wms",
+ wms = {},
+ map, panel;
+*/
+
+/* Original */
var wfsUrl = "http://geo.openplans.org/geoserver/wfsv",
wmsUrl = "http://geo.openplans.org/geoserver/wms",
wms = {},
@@ -285,8 +293,8 @@
view.appendChild(table);
var deleteb = document.createElement('button')
- deleteb.innerHTML = "*Delete"
- deleteb.onclick = function () { OpenLayers.Console.log("No delete functionality yet.");}
+ deleteb.innerHTML = "Delete"
+ deleteb.onclick = function () { deleteFeature(feature);}
view.appendChild(deleteb);
var edit = document.createElement("button")
edit.onclick = function () {onModificationEnd(feature); onModificationStart(feature);}
@@ -302,8 +310,73 @@
addPopup(feature,view)
}
+
+
+ /*
+ * Deletes feature--called from the delete button on the feature's View popup.
+ *
+ * There are a number of design decisions made in this code, including:
+ * - automatically "saving" after a delete (i.e., making a server request)
+ * - choosing to maintain the client and server feature data in parallel,
+ * rather than updating the server and reloading the features from it
+ */
+ function deleteFeature(feature){
+
+ /* Request user confirmation; continue only if confirmed */
+
+ if(!confirm("Are you sure you want to delete this feature?")){
+ return;
+ }
+
+ /* Remove popup */
+
+ //slight code re-use here. Refactoring TODO: figure out what needs to be abstracted out of onModificationEnd
+ if(feature.popup){
+ map.removePopup(feature.popup);
+ feature.popup.destroy();
+ feature.popup = null;
+ }
+ /* Remove feature, client-side */
+ panel.vectorLayer.removeFeatures([feature])
+
+ /* Remove feature, server side */
+
+ var delFeature = xml.createElementNS(wfsns, "wfs:Transaction");
+ delFeature.setAttribute("version", "1.0.0");
+ delFeature.setAttribute("service", "WFSV");
+ delFeature.setAttribute("handle","Deleting " + feature.fid);
+ //delFeature.setAttribute("srsName", map.projection); // Shoudl be srsName? <-- Not sure how to do this right because map.projection is not a string. Need to see how this is parsed in OpenLayers.Util.getParameterString
+ //delFeature.setAttribute("outputFormat", "GML2");
+ var deleteElt = xml.createElementNS(wfsns, "wfs:Delete");
+ deleteElt.setAttribute("typeName", panel.featureType);
+ var filterProp = xml.createElementNS(ogcns, "ogc:Filter");
+ var featureProp = xml.createElementNS(ogcns, "ogc:FeatureId");
+ featureProp.setAttribute("fid", feature.fid);
+ filterProp.appendChild(featureProp);
+ deleteElt.appendChild(filterProp);
+ delFeature.appendChild(deleteElt);
+
+ var data = xml.write(delFeature);
+
+ var url = wfsUrl;
+ if(OpenLayers.ProxyHost && OpenLayers.String.startsWith(url, "http")) {
+ url = OpenLayers.ProxyHost + escape(url);
+ }
+
+ new OpenLayers.Ajax.Request(url,
+ {method: 'post',
+ postBody: data,
+ onComplete: function(){OpenLayers.Console.log("Delete successful")},
+ onFailure: function(request) {
+ OpenLayers.Console.error(request.responseText);
+ }
+ });
+
+
+ }
+
var xml = new OpenLayers.Format.XML();
@@ -368,7 +441,7 @@
};
new OpenLayers.Ajax.Request(url,
- {method: 'post',
+ {method: 'post', // TODO Should this be 'get'?
postBody: data,
onComplete: xxyzzy,
onFailure: function(request) {
@@ -491,36 +564,13 @@
save.innerHTML = "Save"
tabedit.appendChild(save);
+
- // var element = document.getElementById("output");
- // element.style.display = "none";
- // element.innerHTML = "";
- // element.appendChild(form);
- // element.style.display = "block";
-
-
-
- /*
- * select-feature-popup.htm cod
- */
-
- //permaform = form
-
- //OpenLayers.Console.log(form)
-
addPopup(feature,tabedit, true)
- /*
- var element = document.getElementById("popup-output");
- element.style.display = "none";
- element.innerHTML = "";
- element.appendChild(form);
- element.style.display = "block";
- */
-
}
- //var permaform;
+
@@ -596,13 +646,13 @@
var query = xml.createElementNS(wfsns, "wfs:Query");
query.setAttribute("typeName", "topp:changesets");
- //begin new code to alter request
+ /* begin new code to alter request
var filterProp = xml.createElementNS(ogcns, "ogc:Filter");
var featureProp = xml.createElementNS(ogcns, "ogc:FeatureId");
featureProp.setAttribute("fid", "archsites.121");
filterProp.appendChild(featureProp);
query.appendChild(filterProp);
- //end new code
+ /* end new code */
Modified: sandbox/timandseb/wfsv/lib/OpenLayers/Control/ModifyFeature.js
===================================================================
--- sandbox/timandseb/wfsv/lib/OpenLayers/Control/ModifyFeature.js 2007-10-03 20:42:35 UTC (rev 4795)
+++ sandbox/timandseb/wfsv/lib/OpenLayers/Control/ModifyFeature.js 2007-10-03 20:55:22 UTC (rev 4796)
@@ -146,7 +146,7 @@
var control = this;
// configure the select control
- OpenLayers.Console.log("onModificationStart : " + this.onModificationStart)
+
var selectOptions = {
hover:true,
geometryTypes: this.geometryTypes,
Modified: sandbox/timandseb/wfsv/lib/OpenLayers/Control/SelectFeature.js
===================================================================
--- sandbox/timandseb/wfsv/lib/OpenLayers/Control/SelectFeature.js 2007-10-03 20:42:35 UTC (rev 4795)
+++ sandbox/timandseb/wfsv/lib/OpenLayers/Control/SelectFeature.js 2007-10-03 20:55:22 UTC (rev 4796)
@@ -88,7 +88,7 @@
over: this.overFeature,
out: this.outFeature
}, this.callbacks);
- OpenLayers.Console.log("onClick : " + this.onClick)
+
var handlerOptions = {geometryTypes: this.geometryTypes};
this.handler = new OpenLayers.Handler.Feature(this, layer,
this.callbacks,
More information about the Commits
mailing list