[Freeipa-devel] [PATCH] 255 Added Web UI support for service PAC type option: NONE

Endi Sukma Dewata edewata at redhat.com
Tue Feb 12 22:15:59 UTC 2013


On 2/12/2013 10:56 AM, Petr Vobornik wrote:
> We were discussing to NACK this approach.
>
> The implementation should be improved because of the mutually exclusive
> nature of NONE option with [MS-PAC, PAD] options.
>
> I think we should add spec definition (to Web UI only, or into server
> plugin as well) of mutex options. Something like:
>
>      mutex_groups: [[['NONE'],['MS-PAC', 'PAD']], [/*another array of
> groups*/]];
>
> basically an array of group arrays where group array would contain
> arrays of mutually exclusive option. Is it over-complicated? Would one
> array or a pair of groups be enough?
>
> That way we can disable and uncheck(should not happen, but to keep data
> consistency) checkboxes of options from other groups when user selects a
> value of some group.

If they are mutually exclusive, they probably should be separated using 
radio buttons like this:

   PAC: ( ) None
        (o) Type:
            [x] MS-PAC
            [ ] PAD

It might be better to use a composite widget of radio buttons and 
checkboxes so we can reuse the code. Probably the definition will look 
something like this:

{
     name: 'ipakrbauthzdata',
     type: 'radio',
     label: ...,
     options: [
         {
             label: ...,
             value: 'NONE'
         },
         {
             label: ...,
             type: 'checkboxes',
             options: [
                 {
                     label: ...,
                     value: 'MS-PAC'
                 },
                 {
                     label: ...,
                     value: 'PAD'
                 }
             ]
         }
     ]
}

The composite widget will handle setting the appropriate widgets when 
the value of the field on load. It will handle enabling/disabling the 
checkboxes when the radio button is selected. It will also compute the 
final value of the field from selected radio button/checkboxes on save.

> Or just dim (no disable) and uncheck. That way there would still be
> visual distinction and one don't have to uncheck all the options from
> one group when he wants to select options of mutex group.

That is also possible, but it changes the normal behavior of checkboxes, 
so probably users would have to play around with it to understand the 
grouping. They could also get confused, e.g. is dimmed checkbox disabled?

> As a separate issue, we might want to fetch the options from metadata,
> when we want to show the values and don't care about creating different
> labels.

If we use radio buttons like above, new labels are necessary to describe 
the different groups of checkboxes. For all radio buttons & checkboxes 
in general, if we don't want to use labels we probably could simplify 
the definition such that we can specify the string values directly 
(without nested object):

{
     name: 'ipakrbauthzdata',
     type: 'radio',
     options: [
         'NONE',
         {
             type: 'checkboxes',
             options: ['MS-PAC', 'PAD']
         }
     ]
}

-- 
Endi S. Dewata




More information about the Freeipa-devel mailing list