espial/purs/src/Main.purs

76 lines
2.7 KiB
Text
Raw Normal View History

2019-01-31 02:54:47 +00:00
module Main where
import Prelude
import App (logout)
import Component.AccountSettings (usetting)
2019-01-31 02:54:47 +00:00
import Component.Add (addbmark)
import Component.BList (blist)
import Component.NList (nlist)
import Component.NNote (nnote)
import Component.TagCloud (tagcloudcomponent)
2019-01-31 02:54:47 +00:00
import Data.Foldable (traverse_)
import Effect (Effect)
import Effect.Aff (Aff, launchAff)
import Effect.Class (liftEffect)
import Halogen.Aff as HA
import Halogen.VDom.Driver (runUI)
import Model (AccountSettings, Bookmark, Note, TagCloudMode, tagCloudModeToF)
2019-03-14 16:11:12 +00:00
import Web.DOM.Element (setAttribute)
2019-01-31 02:54:47 +00:00
import Web.DOM.ParentNode (QuerySelector(..))
import Web.Event.Event (Event, preventDefault)
import Web.HTML.HTMLElement (toElement)
foreign import _mainImpl :: Effect Unit
2019-01-31 02:54:47 +00:00
main :: Effect Unit
main = _mainImpl
2019-01-31 02:54:47 +00:00
logoutE :: Event -> Effect Unit
logoutE e = void <<< launchAff <<< logout =<< preventDefault e
renderBookmarks :: String -> Array Bookmark -> Effect Unit
renderBookmarks renderElSelector bmarks = do
HA.runHalogenAff do
HA.selectElement (QuerySelector renderElSelector) >>= traverse_ \el -> do
void $ runUI (blist bmarks) unit el
2019-03-14 16:11:12 +00:00
viewRendered
2019-01-31 02:54:47 +00:00
renderTagCloud :: String -> TagCloudMode -> Effect Unit
renderTagCloud renderElSelector tagCloudMode = do
HA.runHalogenAff do
HA.selectElement (QuerySelector renderElSelector) >>= traverse_ \el -> do
void $ runUI (tagcloudcomponent (tagCloudModeToF tagCloudMode)) unit el
2019-01-31 02:54:47 +00:00
renderAddForm :: String -> Bookmark -> Effect Unit
renderAddForm renderElSelector bmark = do
HA.runHalogenAff do
HA.selectElement (QuerySelector renderElSelector) >>= traverse_ \el -> do
2019-03-14 16:11:12 +00:00
void $ runUI (addbmark bmark) unit el
viewRendered
2019-01-31 02:54:47 +00:00
renderNotes :: String -> Array Note -> Effect Unit
renderNotes renderElSelector notes = do
HA.runHalogenAff do
HA.selectElement (QuerySelector renderElSelector) >>= traverse_ \el -> do
void $ runUI (nlist notes) unit el
2019-03-14 16:11:12 +00:00
viewRendered
2019-01-31 02:54:47 +00:00
renderNote :: String -> Note -> Effect Unit
renderNote renderElSelector note = do
HA.runHalogenAff do
HA.selectElement (QuerySelector renderElSelector) >>= traverse_ \el -> do
void $ runUI (nnote note) unit el
2019-03-14 16:11:12 +00:00
viewRendered
2019-01-31 02:54:47 +00:00
renderAccountSettings :: String -> AccountSettings -> Effect Unit
renderAccountSettings renderElSelector accountSettings = do
HA.runHalogenAff do
HA.selectElement (QuerySelector renderElSelector) >>= traverse_ \el -> do
void $ runUI (usetting accountSettings) unit el
2019-03-14 16:11:12 +00:00
viewRendered
2019-01-31 02:54:47 +00:00
2019-03-14 16:11:12 +00:00
viewRendered :: Aff Unit
viewRendered = HA.selectElement (QuerySelector "#content") >>= traverse_ \el ->
liftEffect $ setAttribute "view-rendered" "" (toElement el)