annotate framework/env/ui/field/select.lua @ 16:944642a3e488
New set_cookie functions; Added inline documentation; Make set_allowed_json_request_slots work in interactive shell
 | author | 
 jbe/bsw | 
 | date | 
 Thu Mar 25 17:37:03 2010 +0100 (2010-03-25) | 
 | parents | 
 9fdfb27f8e67  | 
 | children | 
 6e08067e66c1  | 
 
 | rev | 
   line source | 
| 
jbe/bsw@0
 | 
     1 --[[--
 | 
| 
jbe/bsw@0
 | 
     2 ui.field.select{
 | 
| 
jbe/bsw@0
 | 
     3   ...                                 -- generic ui.field.* arguments, as described for ui.autofield{...}
 | 
| 
jbe/bsw@0
 | 
     4   foreign_records = foreign_records,  -- list of records to be chosen from, or function returning such a list
 | 
| 
jbe/bsw@0
 | 
     5   foreign_id      = foreign_id,       -- name of id field in foreign records
 | 
| 
jbe/bsw@0
 | 
     6   foreign_name    = foreign_name,     -- name of field to be used as name in foreign records
 | 
| 
jbe/bsw@0
 | 
     7   format_options  = format_options    -- format options for format.string
 | 
| 
jbe/bsw@0
 | 
     8 }
 | 
| 
jbe/bsw@0
 | 
     9 
 | 
| 
jbe/bsw@0
 | 
    10 This function inserts a select field in the active slot. For description of the generic field helper arguments, see help for ui.autofield{...}.
 | 
| 
jbe/bsw@0
 | 
    11 
 | 
| 
jbe/bsw@0
 | 
    12 --]]--
 | 
| 
jbe/bsw@0
 | 
    13 
 | 
| 
jbe/bsw@0
 | 
    14 function ui.field.select(args)
 | 
| 
jbe/bsw@0
 | 
    15   ui.form_element(args, {fetch_value = true}, function(args)
 | 
| 
jbe/bsw@0
 | 
    16     local foreign_records = args.foreign_records
 | 
| 
jbe/bsw@0
 | 
    17     if type(foreign_records) == "function" then
 | 
| 
jbe/bsw@0
 | 
    18       foreign_records = foreign_records(args.record)
 | 
| 
jbe/bsw@0
 | 
    19     end
 | 
| 
jbe/bsw@0
 | 
    20     if args.readonly then
 | 
| 
jbe/bsw@0
 | 
    21       local name
 | 
| 
jbe/bsw@0
 | 
    22       for idx, record in ipairs(foreign_records) do
 | 
| 
jbe/bsw@0
 | 
    23         if record[args.foreign_id] == args.value then
 | 
| 
jbe/bsw@0
 | 
    24           name = record[args.foreign_name]
 | 
| 
jbe/bsw@0
 | 
    25           break
 | 
| 
jbe/bsw@0
 | 
    26         end
 | 
| 
jbe/bsw@0
 | 
    27       end
 | 
| 
jbe/bsw@0
 | 
    28       ui.tag{
 | 
| 
jbe/bsw@0
 | 
    29         tag     = args.tag,
 | 
| 
jbe/bsw@0
 | 
    30         attr    = args.attr, 
 | 
| 
jbe/bsw@0
 | 
    31         content = format.string(name, args.format_options)
 | 
| 
jbe/bsw@0
 | 
    32       }
 | 
| 
jbe/bsw@0
 | 
    33     else
 | 
| 
jbe/bsw@0
 | 
    34       local attr = table.new(args.attr)
 | 
| 
jbe/bsw@0
 | 
    35       attr.name  = args.html_name
 | 
| 
jbe/bsw@0
 | 
    36       ui.tag{
 | 
| 
jbe/bsw@0
 | 
    37         tag     = "select",
 | 
| 
jbe/bsw@0
 | 
    38         attr    = attr,
 | 
| 
jbe/bsw@0
 | 
    39         content = function()
 | 
| 
jbe/bsw@0
 | 
    40           if args.nil_as then
 | 
| 
jbe/bsw@0
 | 
    41             ui.tag{
 | 
| 
jbe/bsw@0
 | 
    42               tag     = "option",
 | 
| 
jbe/bsw@0
 | 
    43               attr    = { value = "" },
 | 
| 
jbe/bsw@0
 | 
    44               content = format.string(
 | 
| 
jbe/bsw@0
 | 
    45                 args.nil_as,
 | 
| 
jbe/bsw@0
 | 
    46                 args.format_options
 | 
| 
jbe/bsw@0
 | 
    47               )
 | 
| 
jbe/bsw@0
 | 
    48             }
 | 
| 
jbe/bsw@0
 | 
    49           end
 | 
| 
jbe/bsw@0
 | 
    50           for idx, record in ipairs(foreign_records) do
 | 
| 
jbe/bsw@0
 | 
    51             local key = record[args.foreign_id]
 | 
| 
jbe/bsw@0
 | 
    52             ui.tag{
 | 
| 
jbe/bsw@0
 | 
    53               tag     = "option",
 | 
| 
jbe/bsw@0
 | 
    54               attr    = {
 | 
| 
jbe/bsw@0
 | 
    55                 value    = key,
 | 
| 
jbe/bsw@0
 | 
    56                 selected = ((key == args.value) and "selected" or nil)
 | 
| 
jbe/bsw@0
 | 
    57               },
 | 
| 
jbe/bsw@0
 | 
    58               content = format.string(
 | 
| 
jbe/bsw@0
 | 
    59                 record[args.foreign_name],
 | 
| 
jbe/bsw@0
 | 
    60                 args.format_options
 | 
| 
jbe/bsw@0
 | 
    61               )
 | 
| 
jbe/bsw@0
 | 
    62             }
 | 
| 
jbe/bsw@0
 | 
    63           end
 | 
| 
jbe/bsw@0
 | 
    64         end
 | 
| 
jbe/bsw@0
 | 
    65       }
 | 
| 
jbe/bsw@0
 | 
    66     end
 | 
| 
jbe/bsw@0
 | 
    67   end)
 | 
| 
jbe/bsw@0
 | 
    68 end
 |