module salix::demo::basic::All
rascal-0.34.0
salix-core-0.2.3
Usage
import salix::demo::basic::All;
Source code
http://github.com/usethesource/salix-core/src/main/rascal/salix/demo/basic/All.rsc
Dependencies
import salix::HTML;
import salix::App;
import salix::Core;
import salix::Index;
import salix::util::Debug;
import salix::Index;
import salix::demo::basic::Celsius;
import salix::demo::basic::Counter;
import salix::demo::basic::Clock;
import salix::demo::basic::Random;
alias AllModel
tuple[ salix::demo::basic::Celsius::Model celsius, salix::demo::basic::Counter::Model counter, salix::demo::basic::Random::TwiceModel random, salix::demo::basic::Clock::Model clock ]
data Msg
data Msg
= celsius(Msg msg)
| counter(Msg msg)
| random(Msg msg)
| clock(Msg msg)
;
function allDemosApp
SalixApp[AllModel] allDemosApp(str id = "root")
= makeApp(id, initAll, withIndex("All", id, viewAll), editAll
, subs = allSubs, parser = parseMsg);
function allDemosWebApp
App[AllModel] allDemosWebApp()
= webApp(
allDemosApp(),
|project://salix/src/main/rascal|
);
function initAll
AllModel initAll() = <
mapCmds(Msg::celsius, salix::demo::basic::Celsius::init),
mapCmds(Msg::counter, salix::demo::basic::Counter::init),
mapCmds(Msg::random, salix::demo::basic::Random::twiceInit),
mapCmds(Msg::clock, salix::demo::basic::Clock::init)
>;
function allSubs
list[Sub] allSubs(AllModel m)
= mapSubs(Msg::clock, m.clock, salix::demo::basic::Clock::subs);
function myDebugView
void myDebugView(DebugModel[AllModel] m) {
debugView(m, viewAll);
}
function viewAll
void viewAll(AllModel m) {
mapView(Msg::celsius, m.celsius, salix::demo::basic::Celsius::view);
mapView(Msg::counter, m.counter, salix::demo::basic::Counter::view);
mapView(Msg::random, m.random, salix::demo::basic::Random::twiceView);
mapView(Msg::clock, m.clock, salix::demo::basic::Clock::view);
}
function editAll
AllModel editAll(Msg msg, AllModel m) {
switch (msg) {
case celsius(Msg msg):
m.celsius = mapCmds(Msg::celsius, msg, m.celsius, salix::demo::basic::Celsius::update);
case counter(Msg msg):
m.counter = mapCmds(Msg::counter, msg, m.counter, salix::demo::basic::Counter::update);
case random(Msg msg):
m.random = mapCmds(Msg::random, msg, m.random, twiceUpdate);
case clock(Msg msg):
m.clock = mapCmds(Msg::clock, msg, m.clock, salix::demo::basic::Clock::update);
}
return m;
}