[Commits] r2121 - in core/branches/0.7/geoext: lib/GeoExt/widgets tests/lib/GeoExt/widgets
commits at geoext.org
commits at geoext.org
Tue Apr 27 09:31:30 CEST 2010
Author: elemoine
Date: 2010-04-27 09:31:30 +0200 (Tue, 27 Apr 2010)
New Revision: 2121
Modified:
core/branches/0.7/geoext/lib/GeoExt/widgets/LayerLegend.js
core/branches/0.7/geoext/lib/GeoExt/widgets/LegendPanel.js
core/branches/0.7/geoext/tests/lib/GeoExt/widgets/LayerLegend.html
core/branches/0.7/geoext/tests/lib/GeoExt/widgets/UrlLegend.html
Log:
pull up patch for ticket 265 (closes #265)
Modified: core/branches/0.7/geoext/lib/GeoExt/widgets/LayerLegend.js
===================================================================
--- core/branches/0.7/geoext/lib/GeoExt/widgets/LayerLegend.js 2010-04-27 07:30:52 UTC (rev 2120)
+++ core/branches/0.7/geoext/lib/GeoExt/widgets/LayerLegend.js 2010-04-27 07:31:30 UTC (rev 2121)
@@ -57,8 +57,31 @@
cls: 'x-form-item x-form-item-label' +
(this.labelCls ? ' ' + this.labelCls : '')
});
+ this.layerRecord &&
+ this.layerRecord.store.on("update", this.onStoreUpdate, this);
},
+ /** private: method[onStoreUpdate]
+ * Update a the legend. Gets called when the store fires the update event.
+ * This usually means the visibility of the layer, its style or title
+ * has changed.
+ *
+ * :param store: ``Ext.data.Store`` The store in which the record was
+ * changed.
+ * :param record: ``Ext.data.Record`` The record object corresponding
+ * to the updated layer.
+ * :param operation: ``String`` The type of operation.
+ */
+ onStoreUpdate: function(store, record, operation) {
+ if(record === this.layerRecord) {
+ var layer = record.get('layer');
+ this.setVisible(layer.getVisibility() &&
+ layer.calculateInRange() && layer.displayInLayerSwitcher &&
+ !record.get('hideInLegend'));
+ this.update();
+ }
+ },
+
/** private: method[update]
* Updates the legend.
*/
@@ -87,6 +110,14 @@
}
}
return title;
+ },
+
+ /** private: method[beforeDestroy]
+ */
+ beforeDestroy: function() {
+ this.layerRecord && this.layerRecord.store &&
+ this.layerRecord.store.un("update", this.onStoreUpdate, this);
+ GeoExt.LayerLegend.superclass.beforeDestroy.apply(this, arguments);
}
});
Modified: core/branches/0.7/geoext/lib/GeoExt/widgets/LegendPanel.js
===================================================================
--- core/branches/0.7/geoext/lib/GeoExt/widgets/LegendPanel.js 2010-04-27 07:30:52 UTC (rev 2120)
+++ core/branches/0.7/geoext/lib/GeoExt/widgets/LegendPanel.js 2010-04-27 07:31:30 UTC (rev 2121)
@@ -84,7 +84,6 @@
"add": this.onStoreAdd,
"remove": this.onStoreRemove,
"clear": this.onStoreClear,
- "update": this.onStoreUpdate,
scope: this
});
}
@@ -129,27 +128,6 @@
return this.id + "-" + layer.id;
},
- /** private: method[onStoreUpdate]
- * Update a layer within the legend panel. Gets called when the store
- * fires the update event. This usually means the visibility of the layer
- * has changed.
- *
- * :param store: ``Ext.data.Store`` The store in which the record was
- * changed.
- * :param record: ``Ext.data.Record`` The record object corresponding
- * to the updated layer.
- * :param operation: ``String`` The type of operation.
- */
- onStoreUpdate: function(store, record, operation) {
- var layer = record.get('layer');
- var legend = this.items ? this.getComponent(this.getIdForLayer(layer)) : null;
- if (legend) {
- legend.setVisible(layer.getVisibility() && layer.calculateInRange() &&
- layer.displayInLayerSwitcher && !record.get('hideInLegend'));
- legend.update();
- }
- },
-
/** private: method[onStoreAdd]
* Private method called when a layer is added to the store.
*
Modified: core/branches/0.7/geoext/tests/lib/GeoExt/widgets/LayerLegend.html
===================================================================
--- core/branches/0.7/geoext/tests/lib/GeoExt/widgets/LayerLegend.html 2010-04-27 07:30:52 UTC (rev 2120)
+++ core/branches/0.7/geoext/tests/lib/GeoExt/widgets/LayerLegend.html 2010-04-27 07:31:30 UTC (rev 2121)
@@ -10,11 +10,13 @@
function test_initialize(t) {
t.plan(3);
+ var store = new GeoExt.data.LayerStore();
var Rec = GeoExt.data.LayerRecord.create();
var rec = new Rec({
layer: new OpenLayers.Layer("foo")
});
+ store.add(rec);
var legend = new GeoExt.LayerLegend({
layerRecord: rec,
renderTo: "legend"
@@ -22,11 +24,13 @@
t.ok(legend instanceof GeoExt.LayerLegend, "Instance created correctly");
t.eq(legend.items.get(0).text, "foo", "Layer text set correctly");
legend.destroy();
+ store.remove(rec);
rec = new Rec({
layer: new OpenLayers.Layer("foo"),
hideTitle: true
});
+ store.add(rec);
legend = new GeoExt.LayerLegend({
layerRecord: rec,
renderTo: "legend"
@@ -37,6 +41,7 @@
function test_update(t) {
t.plan(3);
+ var store = new GeoExt.data.LayerStore();
var Rec = GeoExt.data.LayerRecord.create([{
name: "hideTitle", type: "boolean"
@@ -44,37 +49,39 @@
var rec = new Rec({
layer: new OpenLayers.Layer("foo")
});
+ store.add(rec);
var legend = new GeoExt.LayerLegend({
layerRecord: rec,
renderTo: "legend"
});
rec.set("title", "bar");
- legend.update();
t.eq(legend.items.get(0).text, "bar", "Layer text updated correctly");
legend.destroy();
+ store.remove(rec);
rec = new Rec({
layer: new OpenLayers.Layer("foo"),
hideTitle: true
});
+ store.add(rec);
legend = new GeoExt.LayerLegend({
layerRecord: rec,
renderTo: "legend"
});
rec.set("title", "bar");
- legend.update();
t.eq(legend.items.get(0).text, "", "Layer text for record with hideTitle set to true still empty after update.")
legend.destroy();
+ store.remove(rec);
rec = new Rec({
layer: new OpenLayers.Layer("foo")
});
+ store.add(rec)
legend = new GeoExt.LayerLegend({
layerRecord: rec,
legendTitle: "bar",
renderTo: "legend"
});
- legend.update();
t.eq(legend.items.get(0).text, "bar", "legendTitle can be used to override layer name")
legend.destroy();
Modified: core/branches/0.7/geoext/tests/lib/GeoExt/widgets/UrlLegend.html
===================================================================
--- core/branches/0.7/geoext/tests/lib/GeoExt/widgets/UrlLegend.html 2010-04-27 07:30:52 UTC (rev 2120)
+++ core/branches/0.7/geoext/tests/lib/GeoExt/widgets/UrlLegend.html 2010-04-27 07:31:30 UTC (rev 2121)
@@ -10,11 +10,13 @@
function test_initialize(t) {
t.plan(1);
+ var store = new GeoExt.data.LayerStore();
var Rec = GeoExt.data.LayerRecord.create();
var rec = new Rec({
layer: new OpenLayers.Layer("foo")
});
+ store.add(rec);
var legend = new GeoExt.UrlLegend({
layerRecord: rec,
renderTo: "legend"
@@ -25,6 +27,7 @@
function test_render(t) {
t.plan(2);
+ var store = new GeoExt.data.LayerStore();
var Rec = GeoExt.data.LayerRecord.create([{
name: "legendURL"
@@ -33,6 +36,7 @@
layer: new OpenLayers.Layer("foo"),
legendURL: Ext.BLANK_IMAGE_URL+"?foo"
});
+ store.add(rec);
var legend = new GeoExt.UrlLegend({
layerRecord: rec,
renderTo: "legend"
@@ -44,6 +48,7 @@
function test_update(t) {
t.plan(1);
+ var store = new GeoExt.data.LayerStore();
var Rec = GeoExt.data.LayerRecord.create([{
name: "legendURL"
@@ -52,14 +57,14 @@
layer: new OpenLayers.Layer("foo"),
legendURL: "http://path/to/foo"
});
+ store.add(rec);
var legend = new GeoExt.UrlLegend({
layerRecord: rec,
renderTo: "legend"
});
rec.set("legendURL", Ext.BLANK_IMAGE_URL+"?foo");
- legend.update();
t.eq(legend.items.get(1).url, Ext.BLANK_IMAGE_URL+"?foo", "Legend content updated correctly");
-
+ legend.destroy();
}
function test_supports(t) {
More information about the Commits
mailing list