Hard coding it into a function which is widely used by ItemRenderers does not 
seem like a good idea or very PAYG.

Id suggest creating ItemRenderers which have this behavior.

If there’s some way to inject the behavior into existing functions that would 
be fine too, but I can’t think off hand of a good way of doing that.

> On Jun 7, 2022, at 11:48 PM, Hugo Ferreira <hferreira...@gmail.com> wrote:
> 
> Method getLabelFromData from getLabelFromData.as
> 
> I just added a new if block that seek for "[" and thread the keys.
> If it's OK, I can commit, otherwise I ask what's the best alternative
> solution to achive the same result.
> 
>    public function getLabelFromData(obj:Object,data:Object):String
>    {
>        // slightly more code, but we bail early if it's a string which is
> often
>        if (data is String) return "" + data;
>        if(!data) return "";
>        if(data is ILabeledData) return (data as ILabeledData).label;
> 
>        if (obj is IHasLabelField &&
>            (obj as IHasLabelField).labelField &&
>            (obj as IHasLabelField).labelField.indexOf("[") > -1)
>        {
>            var result:String = (obj as IHasLabelField).labelField;
>            for each (var item:String in result.split("["))
>            {
>                if (item.indexOf("]") > -1)
>                {
>                    var field:String = item.split("]")[0];
>                    result = result.replace("[" + field + "]", data[field]);
>                }
>            }
>            return result;
>        }
> 
>        if (obj is IHasLabelField &&
>            (obj as IHasLabelField).labelField &&
>            data[(obj as IHasLabelField).labelField] != null)
>        {
>            return "" + data[(obj as IHasLabelField).labelField];
>        }
> 
>        if (obj is IHasDataField &&
>            (obj as IHasDataField).dataField &&
>            data[(obj as IHasDataField).dataField] != null)
>        {
>            return "" + data[(obj as IHasDataField).dataField];
>        }
> 
>        var label:String = data["label"];
>        if(label != null){
>            return label;
>        }
>        return "" + data;
> 
>    }
> 
> Maria Jose Esteve <mjest...@iest.com> escreveu no dia terça, 7/06/2022 à(s)
> 21:44:
> 
>> Hugo, could it be seen? Maybe a branch or a PR?
>> 
>> Hiedra
>> 
>> -----Mensaje original-----
>> De: Hugo Ferreira <hferreira...@gmail.com>
>> Enviado el: martes, 7 de junio de 2022 21:58
>> Para: Apache Royale Development <dev@royale.apache.org>
>> Asunto: Proposal for labelField with expression support
>> 
>> Hi,
>> 
>> In Flex "world" one can use labelField and labelFunction.
>> Here in Royale we have only labelField (at least I didn't see so far
>> support for labelFunction), however I'm not a big fan of labelFunction
>> anyway.
>> 
>> I always wanted support for something in between of labelField and
>> labelFunction (labelFunction with multiple fields and fixed strings) and I
>> implement it on my side.
>> 
>> Ex:
>> model:
>> public class User
>> {
>> public var Code:String;
>> public var Name:String;
>> }
>> 
>> With this model, one can use Code (user code) or Name but not the combined
>> fields.
>> 
>> With a little adition I can now do something like this: labelField="[Code]
>> - [Name]" and at runtime every field delimited by [] it's replaced for his
>> value, allowing multiple fields and complex expressions.
>> 
>> Can I commit this or there is a reason to not do so ?
>> 
>> Thank you,
>> Hugo.
>> 

Reply via email to