webmcp
annotate framework/env/ui/field/select.lua @ 3:795b764629ca
Version 1.0.3
Important bugfix related to internal forwards (Bug was introduced by the restriction of views with underscore prefix in Version 1.0.2)
Important bugfix related to internal forwards (Bug was introduced by the restriction of views with underscore prefix in Version 1.0.2)
author | jbe |
---|---|
date | Thu Dec 10 12:00:00 2009 +0100 (2009-12-10) |
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 |