2019-01-31 02:54:47 +00:00
|
|
|
module Main where
|
|
|
|
|
|
|
|
import Prelude
|
|
|
|
|
|
|
|
import App (logout)
|
|
|
|
import Component.Add (addbmark)
|
|
|
|
import Component.BList (blist)
|
|
|
|
import Component.NList (nlist)
|
|
|
|
import Component.NNote (nnote)
|
|
|
|
import Component.AccountSettings (usetting)
|
|
|
|
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 (Bookmark, Note, AccountSettings)
|
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)
|
|
|
|
|
2019-02-01 04:31:06 +00:00
|
|
|
foreign import _mainImpl :: Effect Unit
|
|
|
|
|
2019-01-31 02:54:47 +00:00
|
|
|
main :: Effect Unit
|
2019-02-01 04:31:06 +00:00
|
|
|
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
|
|
|
|
|
|
|
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)
|