| 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 |