webmcp
annotate framework/env/ui/field/select.lua @ 36:5380305a3d51
allow multiple arguments to trace.debug
you can now write trace.debug("bla", 2, ...)
you can now write trace.debug("bla", 2, ...)
| author | Daniel Poelzleithner <poelzi@poelzi.org> |
|---|---|
| date | Sat Oct 09 00:57:26 2010 +0200 (2010-10-09) |
| parents | 6e08067e66c1 |
| children | 9b93943e2e6e |
| 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{...} |
| poelzi@30 | 4 foreign_records = foreign_records, -- list of records to be chosen from, or function returning such a list |
| poelzi@30 | 5 foreign_id = foreign_id, -- name of id field in foreign records |
| poelzi@30 | 6 foreign_name = foreign_name, -- name of field to be used as name in foreign records |
| poelzi@30 | 7 format_options = format_options -- format options for format.string |
| poelzi@30 | 8 disabled_records = disabled_list -- table of record keys that should be disabled |
| jbe/bsw@0 | 9 } |
| jbe/bsw@0 | 10 |
| jbe/bsw@0 | 11 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 | 12 |
| jbe/bsw@0 | 13 --]]-- |
| jbe/bsw@0 | 14 |
| jbe/bsw@0 | 15 function ui.field.select(args) |
| jbe/bsw@0 | 16 ui.form_element(args, {fetch_value = true}, function(args) |
| jbe/bsw@0 | 17 local foreign_records = args.foreign_records |
| jbe/bsw@0 | 18 if type(foreign_records) == "function" then |
| jbe/bsw@0 | 19 foreign_records = foreign_records(args.record) |
| jbe/bsw@0 | 20 end |
| jbe/bsw@0 | 21 if args.readonly then |
| jbe/bsw@0 | 22 local name |
| jbe/bsw@0 | 23 for idx, record in ipairs(foreign_records) do |
| jbe/bsw@0 | 24 if record[args.foreign_id] == args.value then |
| jbe/bsw@0 | 25 name = record[args.foreign_name] |
| jbe/bsw@0 | 26 break |
| jbe/bsw@0 | 27 end |
| jbe/bsw@0 | 28 end |
| jbe/bsw@0 | 29 ui.tag{ |
| jbe/bsw@0 | 30 tag = args.tag, |
| jbe/bsw@0 | 31 attr = args.attr, |
| jbe/bsw@0 | 32 content = format.string(name, args.format_options) |
| jbe/bsw@0 | 33 } |
| jbe/bsw@0 | 34 else |
| jbe/bsw@0 | 35 local attr = table.new(args.attr) |
| jbe/bsw@0 | 36 attr.name = args.html_name |
| jbe/bsw@0 | 37 ui.tag{ |
| jbe/bsw@0 | 38 tag = "select", |
| jbe/bsw@0 | 39 attr = attr, |
| jbe/bsw@0 | 40 content = function() |
| jbe/bsw@0 | 41 if args.nil_as then |
| jbe/bsw@0 | 42 ui.tag{ |
| jbe/bsw@0 | 43 tag = "option", |
| jbe/bsw@0 | 44 attr = { value = "" }, |
| jbe/bsw@0 | 45 content = format.string( |
| jbe/bsw@0 | 46 args.nil_as, |
| jbe/bsw@0 | 47 args.format_options |
| jbe/bsw@0 | 48 ) |
| jbe/bsw@0 | 49 } |
| jbe/bsw@0 | 50 end |
| jbe/bsw@0 | 51 for idx, record in ipairs(foreign_records) do |
| jbe/bsw@0 | 52 local key = record[args.foreign_id] |
| jbe/bsw@0 | 53 ui.tag{ |
| jbe/bsw@0 | 54 tag = "option", |
| jbe/bsw@0 | 55 attr = { |
| jbe/bsw@0 | 56 value = key, |
| poelzi@30 | 57 disabled = ((args.disabled_records and args.disabled_records[key] and "1" ) or nil), |
| jbe/bsw@0 | 58 selected = ((key == args.value) and "selected" or nil) |
| jbe/bsw@0 | 59 }, |
| jbe/bsw@0 | 60 content = format.string( |
| jbe/bsw@0 | 61 record[args.foreign_name], |
| jbe/bsw@0 | 62 args.format_options |
| jbe/bsw@0 | 63 ) |
| jbe/bsw@0 | 64 } |
| jbe/bsw@0 | 65 end |
| jbe/bsw@0 | 66 end |
| jbe/bsw@0 | 67 } |
| jbe/bsw@0 | 68 end |
| jbe/bsw@0 | 69 end) |
| jbe/bsw@0 | 70 end |