annotate framework/env/ui_deprecated/input.lua @ 216:fd0360594636
Work on request.process(...), request.default_router(...), request.router(), request.handler(...)
 | author | 
 jbe | 
 | date | 
 Mon Jan 12 03:02:26 2015 +0100 (2015-01-12) | 
 | parents | 
 9fdfb27f8e67  | 
 | children | 
  | 
 
 | rev | 
   line source | 
| 
jbe/bsw@0
 | 
     1 --
 | 
| 
jbe/bsw@0
 | 
     2 -- Creates an input field in a form
 | 
| 
jbe/bsw@0
 | 
     3 --
 | 
| 
jbe/bsw@0
 | 
     4 -- label      (string) The label of the input field
 | 
| 
jbe/bsw@0
 | 
     5 -- field      (string) The name of the record field
 | 
| 
jbe/bsw@0
 | 
     6 -- field_type (string) The type of the record field
 | 
| 
jbe/bsw@0
 | 
     7 --
 | 
| 
jbe/bsw@0
 | 
     8 -- Example:
 | 
| 
jbe/bsw@0
 | 
     9 --
 | 
| 
jbe/bsw@0
 | 
    10 --  ui_deprecated.input({
 | 
| 
jbe/bsw@0
 | 
    11 --    label = _'Comment',
 | 
| 
jbe/bsw@0
 | 
    12 --    field = 'comment', 
 | 
| 
jbe/bsw@0
 | 
    13 --    field_type = 'textarea'
 | 
| 
jbe/bsw@0
 | 
    14 --  })
 | 
| 
jbe/bsw@0
 | 
    15 --
 | 
| 
jbe/bsw@0
 | 
    16 local field_type_to_atom_class_map = {
 | 
| 
jbe/bsw@0
 | 
    17   text       = atom.string,
 | 
| 
jbe/bsw@0
 | 
    18   textarea   = atom.string,
 | 
| 
jbe/bsw@0
 | 
    19   number     = atom.number,
 | 
| 
jbe/bsw@0
 | 
    20   percentage = atom.number,
 | 
| 
jbe/bsw@0
 | 
    21 }
 | 
| 
jbe/bsw@0
 | 
    22 
 | 
| 
jbe/bsw@0
 | 
    23 function ui_deprecated.input(args)
 | 
| 
jbe/bsw@0
 | 
    24   local record = assert(slot.get_state_table(), "ui_deprecated.input was not called within a form.").form_record
 | 
| 
jbe/bsw@0
 | 
    25 
 | 
| 
jbe/bsw@0
 | 
    26   local field_type = args.field_type or "text"
 | 
| 
jbe/bsw@0
 | 
    27 
 | 
| 
jbe/bsw@0
 | 
    28   local field_func = assert(ui_deprecated.input_field[field_type], "no field helper for given type '" .. field_type .. "'")
 | 
| 
jbe/bsw@0
 | 
    29 
 | 
| 
jbe/bsw@0
 | 
    30   local html_name = args.name or args.field
 | 
| 
jbe/bsw@0
 | 
    31   local field_html
 | 
| 
jbe/bsw@0
 | 
    32 
 | 
| 
jbe/bsw@0
 | 
    33   if args.field then
 | 
| 
jbe/bsw@0
 | 
    34     local param_type = field_type_to_atom_class_map[field_type] or error('Unkown field type')
 | 
| 
jbe/bsw@0
 | 
    35     field_html = field_func{
 | 
| 
jbe/bsw@0
 | 
    36       name  = html_name, 
 | 
| 
jbe/bsw@0
 | 
    37       value = param.get(html_name, param_type) 
 | 
| 
jbe/bsw@0
 | 
    38               or record[args.field],
 | 
| 
jbe/bsw@0
 | 
    39       height = args.height,
 | 
| 
jbe/bsw@0
 | 
    40     }
 | 
| 
jbe/bsw@0
 | 
    41 
 | 
| 
jbe/bsw@0
 | 
    42   elseif args.value then
 | 
| 
jbe/bsw@0
 | 
    43     field_html = field_func{
 | 
| 
jbe/bsw@0
 | 
    44       name  = html_name, 
 | 
| 
jbe/bsw@0
 | 
    45       value = args.value,
 | 
| 
jbe/bsw@0
 | 
    46       height = args.height,
 | 
| 
jbe/bsw@0
 | 
    47     }
 | 
| 
jbe/bsw@0
 | 
    48   
 | 
| 
jbe/bsw@0
 | 
    49   else
 | 
| 
jbe/bsw@0
 | 
    50     field_html = field_func{
 | 
| 
jbe/bsw@0
 | 
    51       name  = html_name, 
 | 
| 
jbe/bsw@0
 | 
    52       value = '',
 | 
| 
jbe/bsw@0
 | 
    53       height = args.height,
 | 
| 
jbe/bsw@0
 | 
    54     }
 | 
| 
jbe/bsw@0
 | 
    55     
 | 
| 
jbe/bsw@0
 | 
    56   end
 | 
| 
jbe/bsw@0
 | 
    57   
 | 
| 
jbe/bsw@0
 | 
    58   slot.put('<div class="ui_field ui_input_', field_type, '">\n')
 | 
| 
jbe/bsw@0
 | 
    59   if args.label then
 | 
| 
jbe/bsw@0
 | 
    60     slot.put('<div class="label">', encode.html(args.label), '</div>\n')
 | 
| 
jbe/bsw@0
 | 
    61   end
 | 
| 
jbe/bsw@0
 | 
    62   slot.put('<div class="value">',
 | 
| 
jbe/bsw@0
 | 
    63         field_html,
 | 
| 
jbe/bsw@0
 | 
    64       '</div>\n',
 | 
| 
jbe/bsw@0
 | 
    65     '</div>\n'
 | 
| 
jbe/bsw@0
 | 
    66   )
 | 
| 
jbe/bsw@0
 | 
    67 end
 |