applied

On Fri, Feb 09, 2018 at 08:28:34AM +0100, Thomas Lamprecht wrote:
> allow to access sub elements of configuration items for binding.
> 
> E.g., if the following configuration is present:
> 
> foo: {
>     bar: true
> }
> 
> one could do:
> 
> xtype: 'displayfield',
> cbind {
>     value: '{foo.bar}'
> }
> [...]
> 
> This mirrors the abillity of ExtJS's 'bind', which can do this also.
> Simple implementation mirroring the surrounding code.
> 
> Signed-off-by: Thomas Lamprecht <t.lampre...@proxmox.com>
> ---
> 
> changes v1 -> v2:
> * fix regex to allow even and uneven dot counts with only one letter between
> 
> 
>  mixin/CBind.js | 13 +++++++++++++
>  1 file changed, 13 insertions(+)
> 
> diff --git a/mixin/CBind.js b/mixin/CBind.js
> index 48bc7f4..ecf30e2 100644
> --- a/mixin/CBind.js
> +++ b/mixin/CBind.js
> @@ -41,6 +41,19 @@ Ext.define('Proxmox.Mixin.CBind', {
>                   if (match[1]) cvalue = !cvalue;
>                   obj[prop] = cvalue;
>                   found = true;
> +             } else if (match = 
> /^\{(!)?([a-z_][a-z0-9_]*(\.[a-z_][a-z0-9_]*)+)\}$/i.exec(cdata)) {
> +                 var keys = match[2].split('.');
> +                 var cvalue = getConfigValue(keys.shift());
> +                 keys.forEach(function(k) {
> +                     if (k in cvalue) {
> +                         cvalue = cvalue[k];
> +                     } else {
> +                         throw "unable to get cbind data for '" + match[2] + 
> "'";
> +                     }
> +                 });
> +                 if (match[1]) cvalue = !cvalue;
> +                 obj[prop] = cvalue;
> +                 found = true;
>               } else {
>                   obj[prop] = cdata.replace(/{([a-z_][a-z0-9_]*)\}/ig, 
> function(match, cname) {
>                       var cvalue = getConfigValue(cname);
> -- 
> 2.14.2

_______________________________________________
pve-devel mailing list
pve-devel@pve.proxmox.com
https://pve.proxmox.com/cgi-bin/mailman/listinfo/pve-devel

Reply via email to