webmcp
annotate framework/env/ui/field/select.lua @ 68:ebdc20b7048b
Lua 5.2 compatibility:
Make function load accepting strings as first argument
Make function load accepting strings as first argument
| author | jbe |
|---|---|
| date | Tue Apr 17 16:26:32 2012 +0200 (2012-04-17) |
| parents | 9b93943e2e6e |
| children | faedbc8615e0 |
| 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 |
| jbe@44 | 8 disabled_records = disabled_records -- table of record keys that should be disabled (NOTE: Preliminary. Argument name may change in future releases.) |
| 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@44 | 15 -- TODO: Find better name for "disabled_records" |
| jbe@44 | 16 |
| jbe/bsw@0 | 17 function ui.field.select(args) |
| jbe/bsw@0 | 18 ui.form_element(args, {fetch_value = true}, function(args) |
| jbe/bsw@0 | 19 local foreign_records = args.foreign_records |
| jbe/bsw@0 | 20 if type(foreign_records) == "function" then |
| jbe/bsw@0 | 21 foreign_records = foreign_records(args.record) |
| jbe/bsw@0 | 22 end |
| jbe/bsw@0 | 23 if args.readonly then |
| jbe/bsw@0 | 24 local name |
| jbe/bsw@0 | 25 for idx, record in ipairs(foreign_records) do |
| jbe/bsw@0 | 26 if record[args.foreign_id] == args.value then |
| jbe/bsw@0 | 27 name = record[args.foreign_name] |
| jbe/bsw@0 | 28 break |
| jbe/bsw@0 | 29 end |
| jbe/bsw@0 | 30 end |
| jbe/bsw@0 | 31 ui.tag{ |
| jbe/bsw@0 | 32 tag = args.tag, |
| jbe/bsw@0 | 33 attr = args.attr, |
| jbe/bsw@0 | 34 content = format.string(name, args.format_options) |
| jbe/bsw@0 | 35 } |
| jbe/bsw@0 | 36 else |
| jbe/bsw@0 | 37 local attr = table.new(args.attr) |
| jbe/bsw@0 | 38 attr.name = args.html_name |
| jbe/bsw@0 | 39 ui.tag{ |
| jbe/bsw@0 | 40 tag = "select", |
| jbe/bsw@0 | 41 attr = attr, |
| jbe/bsw@0 | 42 content = function() |
| jbe/bsw@0 | 43 if args.nil_as then |
| jbe/bsw@0 | 44 ui.tag{ |
| jbe/bsw@0 | 45 tag = "option", |
| jbe/bsw@0 | 46 attr = { value = "" }, |
| jbe/bsw@0 | 47 content = format.string( |
| jbe/bsw@0 | 48 args.nil_as, |
| jbe/bsw@0 | 49 args.format_options |
| jbe/bsw@0 | 50 ) |
| jbe/bsw@0 | 51 } |
| jbe/bsw@0 | 52 end |
| jbe/bsw@0 | 53 for idx, record in ipairs(foreign_records) do |
| jbe/bsw@0 | 54 local key = record[args.foreign_id] |
| jbe/bsw@0 | 55 ui.tag{ |
| jbe/bsw@0 | 56 tag = "option", |
| jbe/bsw@0 | 57 attr = { |
| jbe/bsw@0 | 58 value = key, |
| poelzi@30 | 59 disabled = ((args.disabled_records and args.disabled_records[key] and "1" ) or nil), |
| jbe/bsw@0 | 60 selected = ((key == args.value) and "selected" or nil) |
| jbe/bsw@0 | 61 }, |
| jbe/bsw@0 | 62 content = format.string( |
| jbe/bsw@0 | 63 record[args.foreign_name], |
| jbe/bsw@0 | 64 args.format_options |
| jbe/bsw@0 | 65 ) |
| jbe/bsw@0 | 66 } |
| jbe/bsw@0 | 67 end |
| jbe/bsw@0 | 68 end |
| jbe/bsw@0 | 69 } |
| jbe/bsw@0 | 70 end |
| jbe/bsw@0 | 71 end) |
| jbe/bsw@0 | 72 end |