Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- -module(user_admin).
- -include_lib("nitrogen_core/include/wf.hrl").
- -compile(export_all).
- main() ->
- #template{file="bare.html"}.
- title() -> "User Admin Page".
- body() ->
- #panel{id=worker, body=draw_user_table()}.
- draw_user_table() ->
- Users = get_users_from_your_database(),
- draw_user_table(Users).
- draw_user_table(Users) ->
- #table{rows=[
- #tablerow{cells=[
- #tableheader{text="Name"},
- #tableheader{text="Email"}
- ]},
- [draw_user_rows(User) || User <- Users]
- ]}.
- draw_user_rows(User) ->
- #{name:=Name, email:=Email, id:=ID} = User,
- #tablerow{cells=[
- #tablecell{text=Name},
- #tablecell{text=Email},
- #tablecell{body=[
- #button{text="Edit", postback={edit_user, ID}}
- ]}
- ]}.
- draw_user_form(ID) ->
- User = get_user_from_database(ID),
- #{name:=Name, email:=Email, id:=ID} = User,
- [
- #label{text="Name"},
- #textbox{id=name, text=Name},
- #label{text="Email"},
- #textbox{id=email, type=email, text=Email},
- #button{text="Save", postback={save_user, ID}},
- #link{text="Cancel", postback=show_list}
- ].
- edit_user(ID) ->
- wf:update(worker, draw_user_form(User)).
- save_user(ID) ->
- User = wf:q_map([name, email]),
- User2 = maps:put(id, ID, User),
- save_user_to_database(User2),
- show_list().
- show_list() ->
- wf:update(worker, draw_user_table()).
- event({edit_user, ID}) ->
- edit_user(ID);
- event({save_user, ID}) ->
- save_user(ID);
- event(show_list) ->
- show_list().
Advertisement
Add Comment
Please, Sign In to add comment