[Commits] r2148 - in core/trunk/geoext: lib/GeoExt/data tests/lib/GeoExt/data
commits at geoext.org
commits at geoext.org
Thu Apr 29 16:30:17 CEST 2010
Author: pgiraud
Date: 2010-04-29 16:30:17 +0200 (Thu, 29 Apr 2010)
New Revision: 2148
Modified:
core/trunk/geoext/lib/GeoExt/data/AttributeReader.js
core/trunk/geoext/lib/GeoExt/data/AttributeStore.js
core/trunk/geoext/tests/lib/GeoExt/data/AttributeReader.html
core/trunk/geoext/tests/lib/GeoExt/data/AttributeStore.html
Log:
Revert "make AttributeReader and AttributeStore work with a feature, patches from elemoine and me, r=elemoine,me (Closes #254)"
This reverts commit e4895415910f56464528fa7f642f7443fde64c59.
Modified: core/trunk/geoext/lib/GeoExt/data/AttributeReader.js
===================================================================
--- core/trunk/geoext/lib/GeoExt/data/AttributeReader.js 2010-04-29 14:15:37 UTC (rev 2147)
+++ core/trunk/geoext/lib/GeoExt/data/AttributeReader.js 2010-04-29 14:30:17 UTC (rev 2148)
@@ -29,9 +29,6 @@
* an ``OpenLayers.Format.WFSDescribeFeatureType`` parser.
* * ignore - ``Object`` Properties of the ignore object should be field names.
* Values are either arrays or regular expressions.
- * * feature - ``OpenLayers.Feature.Vector`` A vector feature. If provided
- * records created by the reader will include a field named "value"
- * referencing the attribute value as set in the feature.
*/
GeoExt.data.AttributeReader = function(meta, recordType) {
meta = meta || {};
@@ -41,9 +38,6 @@
GeoExt.data.AttributeReader.superclass.constructor.call(
this, meta, recordType || meta.fields
);
- if(meta.feature) {
- this.recordType.prototype.fields.add(new Ext.data.Field("value"));
- }
};
Ext.extend(GeoExt.data.AttributeReader, Ext.data.DataReader, {
@@ -83,11 +77,10 @@
// only works with one featureType in the doc
attributes = this.meta.format.read(data).featureTypes[0].properties;
}
- var feature = this.meta.feature;
var recordType = this.recordType;
var fields = recordType.prototype.fields;
var numFields = fields.length;
- var attr, values, name, record, ignore, value, records = [];
+ var attr, values, name, record, ignore, matches, value, records = [];
for(var i=0, len=attributes.length; i<len; ++i) {
ignore = false;
attr = attributes[i];
@@ -95,21 +88,20 @@
for(var j=0; j<numFields; ++j) {
name = fields.items[j].name;
value = attr[name];
- if(this.ignoreAttribute(name, value)) {
- ignore = true;
- break;
- }
- values[name] = value;
- }
- if(feature) {
- value = feature.attributes[values["name"]];
- if(value !== undefined) {
- if(this.ignoreAttribute("value", value)) {
- ignore = true;
- } else {
- values["value"] = value;
+ if(this.meta.ignore && this.meta.ignore[name]) {
+ matches = this.meta.ignore[name];
+ if(typeof matches == "string") {
+ ignore = (matches === value);
+ } else if(matches instanceof Array) {
+ ignore = (matches.indexOf(value) > -1);
+ } else if(matches instanceof RegExp) {
+ ignore = (matches.test(value));
}
+ if(ignore) {
+ break;
+ }
}
+ values[name] = attr[name];
}
if(!ignore) {
records[records.length] = new recordType(values);
@@ -121,26 +113,7 @@
records: records,
totalRecords: records.length
};
- },
- /** private: method[ignoreAttribute]
- * :arg name: ``String`` The field name.
- * :arg value: ``String`` The field value.
- *
- * :return: ``Boolean`` true if the attribute should be ignored.
- */
- ignoreAttribute: function(name, value) {
- var ignore = false;
- if(this.meta.ignore && this.meta.ignore[name]) {
- var matches = this.meta.ignore[name];
- if(typeof matches == "string") {
- ignore = (matches === value);
- } else if(matches instanceof Array) {
- ignore = (matches.indexOf(value) > -1);
- } else if(matches instanceof RegExp) {
- ignore = (matches.test(value));
- }
- }
- return ignore;
}
+
});
Modified: core/trunk/geoext/lib/GeoExt/data/AttributeStore.js
===================================================================
--- core/trunk/geoext/lib/GeoExt/data/AttributeStore.js 2010-04-29 14:15:37 UTC (rev 2147)
+++ core/trunk/geoext/lib/GeoExt/data/AttributeStore.js 2010-04-29 14:30:17 UTC (rev 2148)
@@ -1,6 +1,6 @@
/**
* Copyright (c) 2008-2010 The Open Source Geospatial Foundation
- *
+ *
* Published under the BSD license.
* See http://svn.geoext.org/core/trunk/geoext/license.txt for the full text
* of the license.
@@ -52,98 +52,13 @@
)
})
);
- if(this.feature) {
- this.bind(this.feature);
- }
- },
-
- /** private: method[bind]
- * :param feature: ``OpenLayers.Feature.Vector``
- */
- bind: function(feature) {
- this.on({
- "update": this.onUpdate,
- "load": this.onLoad,
- "add": this.onAdd,
- scope: this
- });
- },
-
- /** private: method[onUpdate]
- * :param store: ``Ext.data.Store``
- * :param record: ``Ext.data.Record``
- * :param operation: ``String``
- *
- * Handler for store update event.
- */
- onUpdate: function(store, record, operation) {
- this.updateFeature([record]);
- },
-
- /** private: method[onLoad]
- * :param store: ``Ext.data.Store``
- * :param records: ``Array(Ext.data.Record)``
- * :param options: ``Object``
- *
- * Handler for store load event
- */
- onLoad: function(store, records, options) {
- // if options.add is true an "add" event was already
- // triggered, and onAdd already did the work of
- // adding the features to the layer.
- if(!options || options.add !== true) {
- this.updateFeature(records);
- }
- },
-
- /** private: method[onAdd]
- * :param store: ``Ext.data.Store``
- * :param records: ``Array(Ext.data.Record)``
- * :param index: ``Number``
- *
- * Handler for store add event
- */
- onAdd: function(store, records, index) {
- this.updateFeature(records);
- },
-
- /** private: method[updateFeature]
- * :param records: ``Array(Ext.data.Record)``
- *
- * Update feature from records.
- */
- 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++) {
- 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);
- }
- }
- }
- }
}
-
};
};
/** api: constructor
* .. class:: AttributeStore(config)
- *
+ *
* Small helper class to make creating stores for remotely-loaded attributes
* data easier. AttributeStore is pre-configured with a built-in
* ``Ext.data.HttpProxy`` and :class:`GeoExt.data.AttributeReader`. The
@@ -166,16 +81,6 @@
* ``Ext.data.Record.create``, or a record constructor created using
* ``Ext.data.Record.create``. Defaults to ``["name", "type", "restriction"]``.
*/
-
-/** api: config[feature]
- * ``OpenLayers.Feature.Vector``
- * A vector feature. If provided, and if the reader is a
- * :class:`GeoExt.data.AttributeReader` (the default), then records
- * of this store will include a field named "value" referencing the
- * corresponding attribute value in the feature. And if the "value"
- * field of a record is updated the update will propagate to the
- * corresponding feature attribute. Optional.
- */
GeoExt.data.AttributeStore = Ext.extend(
Ext.data.Store,
GeoExt.data.AttributeStoreMixin()
Modified: core/trunk/geoext/tests/lib/GeoExt/data/AttributeReader.html
===================================================================
--- core/trunk/geoext/tests/lib/GeoExt/data/AttributeReader.html 2010-04-29 14:15:37 UTC (rev 2147)
+++ core/trunk/geoext/tests/lib/GeoExt/data/AttributeReader.html 2010-04-29 14:30:17 UTC (rev 2148)
@@ -32,38 +32,6 @@
t.eq(record.get("restriction").maxLength, "2", "[3] correct attribute restriction");
}
- function test_read_feature(t) {
- t.plan(3);
-
- // set up
-
- var feature, reader, records, record;
-
- feature = new OpenLayers.Feature.Vector(null, {
- "STATE_FIPS": "foo"
- });
-
- // test
-
- reader = new GeoExt.data.AttributeReader({
- feature: feature
- }, ["name", "type"]);
- records = reader.read({responseXML : doc});
- record = records.records[2];
- t.eq(record.get("value"), "foo", "[1] correct attribute value");
- record = records.records[1];
- t.eq(record.get("value"), undefined, "[2] correct attribute value");
-
- // test with a reader whose record type doesn't include
- // a field named "name"
- reader = new GeoExt.data.AttributeReader({
- feature: feature
- }, ["type"]);
- records = reader.read({responseXML : doc});
- record = records.records[2];
- t.eq(record.get("value"), undefined, "[3] correct attribute value");
- }
-
function test_ignoreString(t) {
t.plan(1);
Modified: core/trunk/geoext/tests/lib/GeoExt/data/AttributeStore.html
===================================================================
--- core/trunk/geoext/tests/lib/GeoExt/data/AttributeStore.html 2010-04-29 14:15:37 UTC (rev 2147)
+++ core/trunk/geoext/tests/lib/GeoExt/data/AttributeStore.html 2010-04-29 14:30:17 UTC (rev 2148)
@@ -38,159 +38,6 @@
"ctor creates an Ext.data.GroupingStore");
}
- function test_feature(t) {
- t.plan(34);
-
- // set up
-
- var layer, feature, data, store, record
- var onLoadLog, onAddLog;
- var onBeforefeaturemodifiedLog, onFeaturemodifiedLog;
-
- layer = new OpenLayers.Layer.Vector("vector", {
- eventListeners: {
- "beforefeaturemodified": function(e) {
- onBeforefeaturemodifiedLog.push({feature: e.feature});
- },
- "featuremodified": function(e) {
- onFeaturemodifiedLog.push({feature: e.feature});
- }
- }
- });
-
- feature = new OpenLayers.Feature.Vector(null, {
- "foo0": "bar0",
- "foo1": "bar1",
- "foo2": "bar2",
- "foo3": "bar3",
- "foo4": null,
- "foo5": undefined
- });
- layer.addFeatures(feature);
-
- data = [{
- "name": "foo0"
- }, {
- "name": "foo1"
- }];
-
- store = new GeoExt.data.AttributeStore({
- feature: feature,
- onLoad: function(store, records, index) {
- onLoadLog.push({records: records});
- GeoExt.data.AttributeStore.prototype.onLoad.apply(this, arguments);
- },
- onAdd: function(store, records, index) {
- onAddLog.push({records: records});
- GeoExt.data.AttributeStore.prototype.onAdd.apply(this, arguments);
- }
- });
-
- // test
-
- t.ok(store.feature === feature,
- "feature is set in the store");
- t.ok(store.reader.meta.feature === feature,
- "feature is set in the reader's meta property");
-
- onLoadLog = [], onBeforefeaturemodifiedLog = [], onFeaturemodifiedLog = [];
- store.loadData(data);
- record = store.getAt(0);
- t.eq(onLoadLog.length, 1,
- "onLoad called once on loadData");
- t.eq(onLoadLog[0].records.length, 2,
- "onLoad receiced expected number of records");
- t.eq(onBeforefeaturemodifiedLog.length, 0,
- "beforefeaturemodified not triggered");
- t.eq(onFeaturemodifiedLog.length, 0,
- "featuremodified not triggered");
- t.eq(record.get("name"), "foo0",
- "[0] record name is correct");
- t.eq(record.get("value"), "bar0",
- "[0] record value is correct");
- record = store.getAt(1);
- t.eq(record.get("name"), "foo1",
- "[1] record name is correct");
- t.eq(record.get("value"), "bar1",
- "[1] record value is correct");
-
- onBeforefeaturemodifiedLog = [], onFeaturemodifiedLog = [];
- record = store.getAt(0);
- record.set("value", "bar00");
- t.eq(onBeforefeaturemodifiedLog.length, 1,
- "beforefeaturemodified triggered once");
- t.eq(onFeaturemodifiedLog.length, 1,
- "featuremodified triggered once");
- t.eq(feature.attributes.foo0, "bar00",
- "feature attribute foo0 updated");
- t.eq(feature.attributes.foo1, "bar1",
- "feature attribute foo1 not updated");
-
- onAddLog = [];
- store.loadData([{"name": "foo2"}], true);
- t.eq(onAddLog.length, 1,
- "onAdd called once on loadData");
- t.eq(onAddLog[0].records.length, 1,
- "onAdd received expected number of records");
- record = store.getAt(2);
- t.eq(record.get("name"), "foo2",
- "[2] record name is correct");
- t.eq(record.get("value"), "bar2",
- "[2] record value is correct");
-
- // attribute with value in feature (should be kept)
- onBeforefeaturemodifiedLog = [], onFeaturemodifiedLog = [];
- store.loadData([{"name": "foo3", "value": "bar30"}], true);
- t.eq(onBeforefeaturemodifiedLog.length, 0,
- "beforefeaturemodified not triggered");
- t.eq(onFeaturemodifiedLog.length, 0,
- "featuremodified not triggered");
- record = store.getAt(3);
- t.eq(record.get("value"), "bar3",
- "record value is correct, read from feature");
- t.eq(feature.attributes.foo3, "bar3",
- "feature attribute foo3 not updated, initial value kept");
-
- // attribute with null value in feature (should be kept)
- store.loadData([{"name": "foo4", "value": "bar4"}], true);
- t.eq(onBeforefeaturemodifiedLog.length, 0,
- "beforefeaturemodified not triggered");
- t.eq(onFeaturemodifiedLog.length, 0,
- "featuremodified not triggered");
- record = store.getAt(4);
- t.ok(record.get("value") === null,
- "record value is correct, read from feature");
- t.ok(feature.attributes.foo4 === null,
- "feature attribute foo4 not updated, initial value kept");
-
- // attribute with undefined value in feature (should be overridden)
- store.loadData([{"name": "foo5", "value": "bar5"}], true);
- t.eq(onBeforefeaturemodifiedLog.length, 1,
- "beforefeaturemodified triggered");
- t.eq(onFeaturemodifiedLog.length, 1,
- "featuremodified triggered");
- record = store.getAt(5);
- t.eq(record.get("value"), "bar5",
- "record value is correct, read from data");
- t.eq(feature.attributes.foo5, "bar5",
- "feature attribute foo5 updated");
-
- // attribute missing in feature
- onBeforefeaturemodifiedLog = [], onFeaturemodifiedLog = [];
- store.loadData([{"name": "foo6", "value": "bar6"}], true);
- t.eq(onBeforefeaturemodifiedLog.length, 1,
- "beforefeaturemodified triggered");
- t.eq(onFeaturemodifiedLog.length, 1,
- "featuremodified triggered");
- record = store.getAt(6);
- t.eq(record.get("value"), "bar6",
- "record value is correct, read from data");
- t.eq(feature.attributes.foo6, "bar6",
- "feature attribute foo6 added, with correct value");
-
- // tear down
- }
-
</script>
<body>
<div id="map"></div>
More information about the Commits
mailing list