@@ -13,15 +13,29 @@ data ElmTest = ElmTest
13-- embedding an external elm file (note: no spaces!)
13-- embedding an external elm file (note: no spaces!)
14mousePage = [elmFile|elm_source/mouse.elm|]
14mousePage = [elmFile|elm_source/mouse.elm|]
16+rootPage = [elmFile|elm_source/index.elm|]
18+clockPage = [elmFile|elm_source/clock.elm|]
16−-- embedding elm code in our Haskell file
20+-- embedding elm code inside Haskell using the QuasiQuoter:
17−rootPage = [elm|
21+shapesPage = [elm|
18−main = plainText "Welcome!"
22+square = rect 200 200 (150,150)
23+circle = oval 140 140 (150,150)
24+pentagon = ngon 5 60 (150,150)
26+main = collage 300 300
27+ [ outlined black square
28+ , filled green pentagon
29+ , customOutline [8,4] blue circle
21-- our Yesod App
33-- our Yesod App
22mkYesod "ElmTest" [parseRoutes|
34mkYesod "ElmTest" [parseRoutes|
23/ RootR GET
35/ RootR GET
24/mouse MouseR GET
36/mouse MouseR GET
27-- generateWidget is called with the result of an Elm QuasiQuoter (which is just a
41-- generateWidget is called with the result of an Elm QuasiQuoter (which is just a
@@ -31,11 +45,24 @@ getMouseR = defaultLayout $ do
31 setTitle "Mouse position demo"
45 setTitle "Mouse position demo"
32 generateWidget mousePage
46 generateWidget mousePage
48+getClockR :: Handler RepHtml
49+getClockR = defaultLayout $ do
51+ generateWidget clockPage
53+getShapesR :: Handler RepHtml
54+getShapesR = defaultLayout $ do
55+ setTitle "Simple shapes"
56+ generateWidget shapesPage
34getRootR :: Handler RepHtml
58getRootR :: Handler RepHtml
35getRootR = defaultLayout $ do
59getRootR = defaultLayout $ do
36 setTitle "Welcome!"
60 setTitle "Welcome!"
37 generateWidget rootPage
61 generateWidget rootPage
64+-- Our Yesod instance contains the default layout, which inserts the elm-min.js
65+-- file in the site's <head> tag.
39instance Yesod ElmTest where
66instance Yesod ElmTest where
40 jsLoader _ = BottomOfHeadBlocking
67 jsLoader _ = BottomOfHeadBlocking
41 defaultLayout widget = do
68 defaultLayout widget = do