mirror of
https://github.com/byteverse/colonnade.git
synced 2026-04-24 08:57:47 +02:00
testing out traversable functions
This commit is contained in:
parent
31c423ad1a
commit
76cb112361
@ -13,6 +13,7 @@ module Reflex.Dom.Colonnade
|
|||||||
, basic
|
, basic
|
||||||
, static
|
, static
|
||||||
, capped
|
, capped
|
||||||
|
, cappedTraversing
|
||||||
, dynamic
|
, dynamic
|
||||||
, dynamicCapped
|
, dynamicCapped
|
||||||
-- * Cell Functions
|
-- * Cell Functions
|
||||||
@ -30,6 +31,7 @@ import qualified Data.Text.Lazy as LT
|
|||||||
import qualified Data.Text.Lazy.Builder as LT
|
import qualified Data.Text.Lazy.Builder as LT
|
||||||
import qualified Data.Map.Strict as M
|
import qualified Data.Map.Strict as M
|
||||||
import Data.Foldable (Foldable(..),for_)
|
import Data.Foldable (Foldable(..),for_)
|
||||||
|
import Data.Traversable (for)
|
||||||
import Data.Semigroup (Semigroup(..))
|
import Data.Semigroup (Semigroup(..))
|
||||||
import Control.Applicative (liftA2)
|
import Control.Applicative (liftA2)
|
||||||
import Reflex.Dom
|
import Reflex.Dom
|
||||||
@ -148,6 +150,34 @@ capped tableAttrs headAttrs bodyAttrs trAttrs fascia cornice collection =
|
|||||||
b <- body bodyAttrs trAttrs (E.discard cornice) collection
|
b <- body bodyAttrs trAttrs (E.discard cornice) collection
|
||||||
return (h `mappend` b)
|
return (h `mappend` b)
|
||||||
|
|
||||||
|
bodyTraversing :: (DomBuilder t m, PostBuild t m, Traversable f, Monoid e)
|
||||||
|
=> M.Map T.Text T.Text
|
||||||
|
-> (a -> M.Map T.Text T.Text)
|
||||||
|
-> Colonnade p a (Cell t m e)
|
||||||
|
-> f a
|
||||||
|
-> m (f e)
|
||||||
|
bodyTraversing bodyAttrs trAttrs colonnade collection =
|
||||||
|
elAttr "tbody" bodyAttrs . for collection $ \a ->
|
||||||
|
elAttr "tr" (trAttrs a) .
|
||||||
|
unWrappedApplicative $
|
||||||
|
E.rowMonoidal colonnade (WrappedApplicative . elFromCell "td") a
|
||||||
|
|
||||||
|
cappedTraversing ::
|
||||||
|
(DomBuilder t m, PostBuild t m, MonadHold t m, Traversable f, Monoid e)
|
||||||
|
=> M.Map T.Text T.Text -- ^ @\<table\>@ tag attributes
|
||||||
|
-> M.Map T.Text T.Text -- ^ @\<thead\>@ tag attributes
|
||||||
|
-> M.Map T.Text T.Text -- ^ @\<tbody\>@ tag attributes
|
||||||
|
-> (a -> M.Map T.Text T.Text) -- ^ @\<tr\>@ tag attributes
|
||||||
|
-> Fascia p (M.Map T.Text T.Text) -- ^ Attributes for @\<tr\>@ elements in the @\<thead\>@
|
||||||
|
-> Cornice p a (Cell t m e) -- ^ Data encoding strategy
|
||||||
|
-> f a -- ^ Collection of data
|
||||||
|
-> m (f e)
|
||||||
|
cappedTraversing tableAttrs headAttrs bodyAttrs trAttrs fascia cornice collection =
|
||||||
|
elAttr "table" tableAttrs $ do
|
||||||
|
_ <- encodeCorniceHead headAttrs fascia (E.annotate cornice)
|
||||||
|
b <- bodyTraversing bodyAttrs trAttrs (E.discard cornice) collection
|
||||||
|
return b
|
||||||
|
|
||||||
dynamicBody :: (DomBuilder t m, PostBuild t m, Foldable f, Semigroup e, Monoid e)
|
dynamicBody :: (DomBuilder t m, PostBuild t m, Foldable f, Semigroup e, Monoid e)
|
||||||
=> Dynamic t (M.Map T.Text T.Text)
|
=> Dynamic t (M.Map T.Text T.Text)
|
||||||
-> (a -> M.Map T.Text T.Text)
|
-> (a -> M.Map T.Text T.Text)
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user