-module(testcities2). -include_lib("nitro/include/nitro.hrl"). -include_lib("n4u/include/wf.hrl"). %% example work with postgresql (with pool) -export([ main/0, event/1 ]). main() -> Tr = hm:get_tr_mod(), % get i18n module by lang Body = #dtl{file = "testcities", app = n2o_sample, bindings=[ {cities, Tr:tr(testcities, cities) }, {cities_show, Tr:tr(testcities, cities_show) }, {cities_add, Tr:tr(testcities, cities_add) }, {city_name, Tr:tr(testcities, city_name) }, {city_pop, Tr:tr(testcities, city_pop) }, {city_add, Tr:tr(testcities, city_add) } ]}, #dtl{file = "layout", app = n2o_sample, bindings=[ {page_title, Tr:tr(testcities, page_title) }, {page_css, <<"">>}, {page_body, wf:render(Body)}, {page_js, <<"">>} ]}. event(init) -> ?MODULE:event({client, {sitiesshow}}); %[]; event({client, {sitiesshow}}) -> Data = pq:get_all_cities(), InnerHtml = hg:generate_cities_list(Data), wf:wire(wf:f("var parent = qi('cities');" "parent.innerHTML='~s';" "window.getting_data=false;" "qi('citiesshow').disabled=false;", [unicode:characters_to_binary(InnerHtml, utf8)])); %% add one city and show all -- example with transaction event({client, {cityadd, Name, Pop}}) -> pgm:transaction(fun(Worker) -> %%epgsql:squery(Mpid, "BEGIN"), %% when transaction without pool {ok, R1} = pq:add_city_t(Worker, Name, Pop), hm:assert_int(R1), {ok, _Columns, Data} = pq:get_all_cities_t(Worker), %%hm:assert_int(R2) InnerHtml = hg:generate_cities_list(Data), wf:wire(wf:f("var parent = qi('cities');" "parent.innerHTML='~s';" "window.getting_data=false;" "qi('citiesshow').disabled=false;", [unicode:characters_to_binary(InnerHtml, utf8)])), ok %% commit pg-transaction - when transaction without pool %%epgsql:squery(Mpid, "COMMIT"), %% rollback pg-transaction - when transaction without pool %%epgsql:squery(Mpid, "ROLLBACK"), %%io:format("~p~n",[epgsql:get_cmd_status(Mpid)]), %%{ok,commit} or {ok, rollback} end); event(Event) -> wf:info(?MODULE, "Event: ~p", [Event]), ok.