-module (web_samples_freerunner). -include ("wf.inc"). -compile(export_all). main() -> #template { file="./wwwroot/freerunner.html", bindings=[ {'Group', learn}, {'Item', samples} ]}. body() -> Body = [ #panel { class="h1-logo", body = [#image { image="/images/hackable1.gif"} ] }, #label { id=clock, text="10:14"}, #label { id=mylabel, text="" } ], wf:comet(fun() -> clock_update(clock) end), wf:render(Body). panel() -> Body = [ #panel { id=settings, class="panel-settings", body = [ #table { id=panel_page1, rows=[ #tablerow { cells=[ #tablecell { body=[#image {id=itemDial, image="/images/dial-call-64x64.png" }], class="panel-item" }, #tablecell { body=[#image { image="/images/envoi-sms-64x64.png" }], class="panel-item", id=buttonSimpleapp }, #tablecell { body=[#image { image="/images/message-64x64.png" }], class="panel-item" }, #tablecell { body=[#image { image="/images/connect-bearstech-64x64.png" }], class="panel-item" } ]}, #tablerow { cells=[ #tablecell { body=[#image {id=itemDial, image="/images/dial-call-64x64.png" }], class="panel-item" }, #tablecell { body=[#image { image="/images/envoi-sms-64x64.png" }], class="panel-item" }, #tablecell { body=[#image { image="/images/message-64x64.png" }], class="panel-item" }, #tablecell { body=[#image { image="/images/connect-bearstech-64x64.png" }], class="panel-item" } ]}, #tablerow { cells=[ #tablecell { body=[#image {id=itemDial, image="/images/dial-call-64x64.png" }], class="panel-item" }, #tablecell { body=[#image { image="/images/envoi-sms-64x64.png" }], class="panel-item" }, #tablecell { body=[#image { image="/images/message-64x64.png" }], class="panel-item" }, #tablecell { body=[#image { image="/images/connect-bearstech-64x64.png" }], class="panel-item" } ]}, #tablerow { cells=[ #tablecell { body=[#image {id=itemDial, image="/images/dial-call-64x64.png" }], class="panel-item" }, #tablecell { body=[#image { image="/images/envoi-sms-64x64.png" }], class="panel-item" }, #tablecell { body=[#image { image="/images/message-64x64.png" }], class="panel-item" }, #tablecell { body=[#image { image="/images/connect-bearstech-64x64.png" }], class="panel-item" } ]}, #tablerow { cells=[ #tablecell { body=[#image {id=itemDial, image="/images/dial-call-64x64.png" }], class="panel-item" }, #tablecell { body=[#image { image="/images/envoi-sms-64x64.png" }], class="panel-item" }, #tablecell { body=[#image { image="/images/message-64x64.png" }], class="panel-item" }, #tablecell { id=buttonPage1, body=[#image { image="/images/right-64x64.png" }], class="panel-item" } ]} ]}, #table { id=panel_page2, rows=[ #tablerow { cells=[ #tablecell { body=[#image {id=itemDial, image="/images/dial-call-64x64.png" }], class="panel-item" }, #tablecell { body=[#image { image="/images/envoi-sms-64x64.png" }], class="panel-item" }, #tablecell { body=[#image { image="/images/message-64x64.png" }], class="panel-item" }, #tablecell { id=buttonPage2, body=[#image { image="/images/right-64x64.png" }], class="panel-item" } ]} ]}, #table { id=panel_page3, rows=[ #tablerow { cells=[ #tablecell { body=[#image {id=itemDial, image="/images/dial-call-64x64.png" }], class="panel-item" }, #tablecell { body=[#image { image="/images/dial-call-64x64.png" }], class="panel-item" }, #tablecell { body=[#image { image="/images/message-64x64.png" }], class="panel-item" }, #tablecell { id=buttonPage3, body=[#image { image="/images/right-64x64.png" }], class="panel-item" } ]} ]} ] }, #panel { id=buttonsettings, class="button-settings" } ], wf:wire(buttonsettings, #event {target=settings, type=click, actions = #toggle{} }), %% panel 1 wf:wire(buttonPage1, #event {target=panel_page1, type=click, actions = #hide{} }), wf:wire(buttonPage1, #event {target=panel_page2, type=click, actions = #show{} }), %% panel 2 wf:wire(buttonPage2, #event {target=panel_page2, type=click, actions = #hide{} }), wf:wire(buttonPage2, #event {target=panel_page3, type=click, actions = #show{} }), %% panel 3 wf:wire(buttonPage3, #event {target=panel_page3, type=click, actions = #hide{} }), wf:wire(buttonPage3, #event {target=panel_page1, type=click, actions = #show{} }), wf:wire(itemDial, #event { type=click, postback={clicked, itemDial} }), % simpleapp wf:wire(buttonSimpleapp, #event {target=simpleApp, type=click, actions = #toggle{} }), wf:wire(buttonSimpleapp, #event {target=settings, type=click, actions = #toggle{} }), wf:render(Body). simpleapp()-> #panel { id=simpleApp, class="simple-app", body=[ #label { class="simple-app-title", text="simple app" }, #p{}, #inplace_textbox { class="inplace-label", text="freerunner" }, #p{}, #button { text="rocks" }, #p{}, #button { text="rocks" }, #p{}, #button { text="with erlang" } ]}. clock_update(Clock)-> {_Date, {Hour, Min, _Sec}} = erlang:localtime(), Value = io_lib:format("~2.10.0B:~2.10.0B", [Hour, Min]), wf:update(Clock, lists:flatten(Value)), wf:comet_flush(), timer:sleep(1000*60), clock_update(Clock). event({clicked, itemDial})-> spawn(fun() -> os:cmd("openmoko-dialer") end), wf:update(mylabel, "launching dialer"); event(EventInfo) -> wf:wire(#alert { text=wf:f("~p", [EventInfo]) }), ok. inplace_textbox_event(_Tag, Value) -> Value.