element_radiogroup.erl 933 B

123456789101112131415161718192021222324252627282930313233
  1. -module(element_radiogroup).
  2. %%-author('Rusty Klophaus').
  3. -include_lib("nitro/include/nitro.hrl").
  4. -export([
  5. render_element/1
  6. ]).
  7. render_element(Record) when Record#radiogroup.show_if == false -> [<<>>];
  8. render_element(Record) ->
  9. ID = Record#radiogroup.id,
  10. Body = apply_name(ID, Record#radiogroup.body),
  11. wf_render_elements:render_element(
  12. #panel{
  13. id = ID,
  14. class = [radiogroup, Record#radiogroup.class],
  15. style = Record#radiogroup.style,
  16. body = Body
  17. }).
  18. %% TODO: This whole thing needs to be replaced with a smarter recursive search.
  19. %% As it is, it won't dive into the bodies of subelements. A recursive map (ie: nitro:map_body) would be
  20. %% ideal
  21. apply_name(Name, Terms) -> [ do_apply(Name, X) || X <- Terms ].
  22. do_apply(Name, X) when erlang:is_record(X, radio) -> X#radio{name = Name};
  23. do_apply(Name, List) when erlang:is_list(List) -> apply_name(Name, List);
  24. do_apply(_Name, X) -> X.