[Users] GeoExt.LegendPanel and TYPE RASTER

Eric Lemoine eric.lemoine at camptocamp.com
Sun Jun 13 08:23:16 CEST 2010


On Saturday, June 12, 2010, Richard LEHAUT <richard.lehaut at crpf.fr> wrote:
>
>
>
>
>
>
>
> Eric Lemoine a écrit :
>
>   On Friday, June 11, 2010, Richard LEHAUT <richard.lehaut at crpf.fr> <richard.lehaut at crpf.fr> wrote:
>
>
>     Eric Lemoine a écrit :
>
> Hi
>
> I'm not sure I understand your question. Why don't you use "Ortho",
> "Calvados 2001", and "Channel 2006" as the names of your OpenLayers
> layers? The legend panel will use these names as the labels.
>
> Cheers,
>
>
>
> Hi,
>
> There is a single layer openlayer, it's Ortho.
> 2001 Calvados, Orne, 2008, is information I want displayed under the layer name. To be more precise, it's  the date of shooting aerial photography. The information at this time is recorded anywhere.
>
> I hope this is clearer.
>
>
>
> Yes, sorry I didn't understand you the first time.
>
> So I guess you'd like to use HTML (e.g. Ortho.<br>2001 Calvados.) in
> the layer's name and have GeoExt render this HTML for the layer
> labels.
>
> I haven't actually tested that myself, but looking at the code I think
> it won't work. This is because GeoExt.LayerLegend uses the "text"
> property as opposed to the "html" property when it creates
> Ext.form.Label objects. See [*]. I'm curious to know if we could use
> "html" instead of "text" in GeoExt.
>
> Cheers,
>
> [*] <http://trac.geoext.org/browser/core/trunk/geoext/lib/GeoExt/widgets/LayerLegend.js#L54>
>
>
>
> Hi
>
> I got the desired result, Following your instructions and this post
> (*). To test, I wrote the caption in red.
> What do you think of this method? There is two méthods modified,
> initComponent and Update
>
> (*)
> https://www.extjs.com/forum/showthread.php?72648-How-to-set-html-of-label
> Thank you for your help
> Richard LEHAUT
>
> Code
>     /** private: method[initComponent]
>     initComponent: function() {
>         GeoExt.LayerLegend.superclass.initComponent.call(this);
>         this.autoEl = {};
>         this.add({
>             xtype: "label",
>             text: this.getLayerTitle(this.layerRecord),
>             cls: 'x-form-item x-form-item-label' +
>                 (this.labelCls ? ' ' + this.labelCls : '')
>         });
>     },
>     CORRECTION INTERPRETATION HTML DU TITLE
>      */
>
>     initComponent: function() {
>         GeoExt.LayerLegend.superclass.initComponent.call(this);
>         this.autoEl = {};
>         var label = new Ext.form.Label({
>             text: 'Hello',
>             cls: 'x-form-item x-form-item-label' +
>                 (this.labelCls ? ' ' + this.labelCls : '')
>         });
>         label.setText('<span style="color:
> red;">'+this.getLayerTitle(this.layerRecord)+'</span>', false);
>         this.add(label);
>     },
>
>     /** private: method[update]
>      *  Updates the legend.
>     update: function() {
>         var title = '<span style="color:
> red;">'+this.getLayerTitle(this.layerRecord)+'</span>'
>         if (this.items.get(0).text !== title) {
>             // we need to update the title
>             this.items.get(0).setText(title, false);
>         }
>     },
>     CORRECTION INTERPRETATION HTML DU TITLE
>      */
>     update: function() {
>         var title = '<span style="color:
> red;">'+this.getLayerTitle(this.layerRecord)+'</span>'
>         if (this.items.get(0).text !== title) {
>             // we need to update the title
>             this.items.get(0).setText(title, false);
>         }
>     },


Hmm... so setText can receive HTML strings. Then, I don't see why the
"text" property could not. What if you leave the GeoExt code
unmodified and use HTML in the layer name?

new OpenLayers.Layer.WMS('<span style="color:red;">Ortho</span>', ...);

Cheers,

-- 
Eric Lemoine

Camptocamp France SAS
Savoie Technolac, BP 352
73377 Le Bourget du Lac, Cedex

Tel : 00 33 4 79 44 44 96
Mail : eric.lemoine at camptocamp.com
http://www.camptocamp.com


More information about the Users mailing list