# HG changeset patch # User Kim Alvefur # Date 1464356681 -7200 # Node ID 156c95bfed0b0ce84aaf36b97b801d3bb4af33f3 # Parent 5424e24cdcb174b8cf0a9a68de1793d0b5f1e303 util.dataforms: Allow separation of options from values in list fields diff -r 5424e24cdcb1 -r 156c95bfed0b util/dataforms.lua --- a/util/dataforms.lua Wed May 25 21:34:34 2016 +0200 +++ b/util/dataforms.lua Fri May 27 15:44:41 2016 +0200 @@ -69,10 +69,10 @@ end elseif field_type == "list-single" then local has_default = false; - for _, val in ipairs(value) do + for _, val in ipairs(field.options or value) do if type(val) == "table" then form:tag("option", { label = val.label }):tag("value"):text(val.value):up():up(); - if val.default and (not has_default) then + if value == val.value or field.options and val.default and (not has_default) then form:tag("value"):text(val.value):up(); has_default = true; end @@ -80,17 +80,25 @@ form:tag("option", { label= val }):tag("value"):text(tostring(val)):up():up(); end end + if field.options and value then + form:tag("value"):text(value):up(); + end elseif field_type == "list-multi" then - for _, val in ipairs(value) do + for _, val in ipairs(field.options or value) do if type(val) == "table" then form:tag("option", { label = val.label }):tag("value"):text(val.value):up():up(); - if val.default then + if not field.options and val.default then form:tag("value"):text(val.value):up(); end else form:tag("option", { label= val }):tag("value"):text(tostring(val)):up():up(); end end + if field.options and value then + for _, val in ipairs(value) do + form:tag("value"):text(val):up(); + end + end end end