webmcp
annotate framework/env/ui/field/select.lua @ 2:72860d232f32
Version 1.0.2
Fixed bug with explicit garbage collection (requests > 256kB caused an error)
Views prefixed with an underscore can't be called externally
ui.paginate now displays the last page, if the selected page number is too high.
Fixed bug with explicit garbage collection (requests > 256kB caused an error)
Views prefixed with an underscore can't be called externally
ui.paginate now displays the last page, if the selected page number is too high.
author | jbe/bsw |
---|---|
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 |