packages feed

jmonkey-0.1.0.0: example/Frontend/Js.hs

module Frontend.Js where

import           JMonkey                 hiding ( Id
                                                , Class
                                                )
import           Data.Gender
import           Data.Selector           hiding ( Selector )
import           Data.ToAttribute

jMonkeyJs :: JMonkey
jMonkeyJs = do
    -- Header to be fixed from the middle
    header <- select $ toAttr (Class Head)
    onScroll win $ ifel (YOffset Grater 200)
                        (add header $ toAttr (Class HeadFixed))
                        (remove header $ toAttr (Class HeadFixed))

    -- Loops automatically change classes
    d <- select $ toAttr (Class First)
    onTime Endless 3000
        $ ifel
              (Possess d $ toAttr (Class First))
              (do
                  remove d $ toAttr (Class First)
                  add d $ toAttr (Class Second)
              )
        $ ifel
              (Possess d $ toAttr (Class Second))
              (do
                  remove d $ toAttr (Class Second)
                  add d $ toAttr (Class Third)
              )
        $ ifThen
              (Possess d $ toAttr (Class Third))
              (do
                  remove d $ toAttr (Class Third)
                  add d $ toAttr (Class First)
              )

    -- People filter
    groupMan   <- select $ toAttr (Class $ Group Man)
    groupWoman <- select $ toAttr (Class $ Group Woman)
    groupTrans <- select $ toAttr (Class $ Group Trans)
    btnMan     <- select $ toAttr (Id $ Button Man)
    btnWoman   <- select $ toAttr (Id $ Button Woman)
    btnTrans   <- select $ toAttr (Id $ Button Trans)
    btnAll     <- select $ toAttr (Id ButtonAll)
    onClick btnMan $ do
        removeAdds groupMan [groupWoman, groupTrans] $ toAttr (Class Hide)
        addRemoves btnMan [btnWoman, btnTrans, btnAll] $ toAttr (Class Current)
    onClick btnWoman $ do
        removeAdds groupWoman [groupMan, groupTrans] $ toAttr (Class Hide)
        addRemoves btnWoman [btnMan, btnTrans, btnAll] $ toAttr (Class Current)
    onClick btnTrans $ do
        removeAdds groupTrans [groupMan, groupWoman] $ toAttr (Class Hide)
        addRemoves btnTrans [btnMan, btnWoman, btnAll] $ toAttr (Class Current)
    onClick btnAll $ do
        removes [groupMan, groupWoman, groupTrans] $ toAttr (Class Hide)
        addRemoves btnAll [btnMan, btnWoman, btnTrans] $ toAttr (Class Current)
  where
    removeAdds :: Target -> [Target] -> Selector -> JMonkey
    removeAdds t ts sel = do
        remove t sel
        adds ts sel
    addRemoves :: Target -> [Target] -> Selector -> JMonkey
    addRemoves t ts sel = do
        add t sel
        removes ts sel