util.dataforms: Allow separation of options from values in list fields

This commit is contained in:
Kim Alvefur 2016-05-27 15:44:41 +02:00
parent 01a15bfbe2
commit 99a7a645f1

View file

@ -69,10 +69,10 @@ function form_t.form(layout, data, formtype)
end end
elseif field_type == "list-single" then elseif field_type == "list-single" then
local has_default = false; local has_default = false;
for _, val in ipairs(value) do for _, val in ipairs(field.options or value) do
if type(val) == "table" then if type(val) == "table" then
form:tag("option", { label = val.label }):tag("value"):text(val.value):up():up(); 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(); form:tag("value"):text(val.value):up();
has_default = true; has_default = true;
end end
@ -80,17 +80,25 @@ function form_t.form(layout, data, formtype)
form:tag("option", { label= val }):tag("value"):text(tostring(val)):up():up(); form:tag("option", { label= val }):tag("value"):text(tostring(val)):up():up();
end end
end end
if field.options and value then
form:tag("value"):text(value):up();
end
elseif field_type == "list-multi" then 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 if type(val) == "table" then
form:tag("option", { label = val.label }):tag("value"):text(val.value):up():up(); 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(); form:tag("value"):text(val.value):up();
end end
else else
form:tag("option", { label= val }):tag("value"):text(tostring(val)):up():up(); form:tag("option", { label= val }):tag("value"):text(tostring(val)):up():up();
end end
end end
if field.options and value then
for _, val in ipairs(value) do
form:tag("value"):text(val):up();
end
end
end end
end end