webmcp

annotate framework/env/ui/field/select.lua @ 44:9b93943e2e6e

Added preliminary notice for "disabled_records" in ui.field.select{...}
author jbe
date Sat Oct 16 18:02:27 2010 +0200 (2010-10-16)
parents 6e08067e66c1
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

Impressum / About Us