webmcp
annotate framework/env/ui/field/select.lua @ 14:a29c8ffb3f82
New function ui.filters{...}
Also changed version information to "1.0.8"
Also changed version information to "1.0.8"
author | jbe/bsw |
---|---|
date | Sat Feb 20 21:00:58 2010 +0100 (2010-02-20) |
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 |