[Commits] r2171 - core/trunk/geoext/lib/GeoExt/data

commits at geoext.org commits at geoext.org
Tue May 11 12:51:28 CEST 2010


Author: pgiraud
Date: 2010-05-11 12:51:28 +0200 (Tue, 11 May 2010)
New Revision: 2171

Modified:
   core/trunk/geoext/lib/GeoExt/data/AttributeStore.js
Log:
avoid several (re)drawFeature calls when modifying several attributes in a feature at once, r=elemoine,fredj, (Closes #274)

Modified: core/trunk/geoext/lib/GeoExt/data/AttributeStore.js
===================================================================
--- core/trunk/geoext/lib/GeoExt/data/AttributeStore.js	2010-05-11 08:03:51 UTC (rev 2170)
+++ core/trunk/geoext/lib/GeoExt/data/AttributeStore.js	2010-05-11 10:51:28 UTC (rev 2171)
@@ -118,28 +118,29 @@
          */
         updateFeature: function(records) {
             var feature = this.feature, layer = feature.layer;
-            var record, name, value, oldValue, cont;
-            for(var i=0,len=records.length; i<len; i++) {
+            var i, len, record, name, value, oldValue, dirty;
+            for(i=0,len=records.length; i<len; i++) {
                 record = records[i];
                 name = record.get("name");
                 value = record.get("value");
                 oldValue = feature.attributes[name];
                 if(oldValue !== value) {
-                    cont = true;
-                    if(layer && layer.events) {
-                        cont = layer.events.triggerEvent(
-                            "beforefeaturemodified", {feature: feature});
-                    }
-                    if(cont !== false) {
-                        feature.attributes[name] = value;
-                        if(layer && layer.events) {
-                            layer.events.triggerEvent(
-                                "featuremodified", {feature: feature});
-                            layer.drawFeature(feature);
-                        }
-                    }
+                    dirty = true;
                 }
             }
+            if(dirty && layer && layer.events &&
+                        layer.events.triggerEvent("beforefeaturemodified",
+                            {feature: feature}) !== false) {
+                for(i=0,len=records.length; i<len; i++) {
+                    record = records[i];
+                    name = record.get("name");
+                    value = record.get("value");
+                    feature.attributes[name] = value;
+                }
+                layer.events.triggerEvent(
+                    "featuremodified", {feature: feature});
+                layer.drawFeature(feature);
+            }
         }
 
     };



More information about the Commits mailing list