| Safe Haskell | Safe-Inferred |
|---|---|
| Language | GHC2021 |
Web.Hyperbole.HyperView.Types
Synopsis
- class (ViewId id, ViewAction (Action id), ConcurrencyValue (Concurrency id)) => HyperView id es where
- class ConcurrencyValue a where
- data ConcurrencyMode
- data Root (views :: [Type]) = Root
Documentation
class (ViewId id, ViewAction (Action id), ConcurrencyValue (Concurrency id)) => HyperView id es where Source #
HyperViews are interactive subsections of a Page
Create an instance with a unique view id type and a sum type describing the actions the HyperView supports. The View Id can contain context (a database id, for example)
data Message = Message1 | Message2 deriving (Generic,ViewId) instanceHyperViewMessage es where dataActionMessage = Louder Text deriving (Generic,ViewAction)update(Louder msg) = do let new = msg <> "!" pure $ messageView new
Associated Types
Outline all actions that are permitted in this HyperView
data Action Message = SetMessage Text | ClearMessage deriving (Generic, ViewAction)
type Require id :: [Type] Source #
Include any child hyperviews here. The compiler will make sure that the page knows how to handle them
type Require Messages = '[ChildView]
type Require id = '[]
type Concurrency id :: ConcurrencyMode Source #
Control how overlapping actions are handled. Drop by default
type Concurrency Autocomplete = Replace
type Concurrency id = Drop
Methods
update :: Hyperbole :> es => Action id -> Eff (Reader id : (State (ViewState id) : es)) (View id ()) Source #
Specify how the view should be updated for each Action
update (SetMessage msg) = pure $ messageView msg update ClearMessage = pure $ messageView ""
class ConcurrencyValue a where Source #
Methods
Instances
| ConcurrencyValue 'Drop Source # | |
Defined in Web.Hyperbole.HyperView.Types Methods | |
| ConcurrencyValue 'Replace Source # | |
Defined in Web.Hyperbole.HyperView.Types Methods | |
data ConcurrencyMode Source #
Constructors
| Drop | Do not send any actions that occur while one is active. Prevents double-submitting writes or expensive operations |
| Replace | Ignore the results of older actions in favor of new ones. Use for read-only views with fast-firing interactions, like autocomplete, sliders, etc |
Instances
| Generic ConcurrencyMode Source # | |
Defined in Web.Hyperbole.HyperView.Types Associated Types type Rep ConcurrencyMode :: Type -> Type # Methods from :: ConcurrencyMode -> Rep ConcurrencyMode x # to :: Rep ConcurrencyMode x -> ConcurrencyMode # | |
| FromEncoded ConcurrencyMode Source # | |
Defined in Web.Hyperbole.HyperView.Types Methods parseEncoded :: Encoded -> Either String ConcurrencyMode Source # | |
| ToEncoded ConcurrencyMode Source # | |
Defined in Web.Hyperbole.HyperView.Types Methods toEncoded :: ConcurrencyMode -> Encoded Source # | |
| ConcurrencyValue 'Drop Source # | |
Defined in Web.Hyperbole.HyperView.Types Methods | |
| ConcurrencyValue 'Replace Source # | |
Defined in Web.Hyperbole.HyperView.Types Methods | |
| type Rep ConcurrencyMode Source # | |
data Root (views :: [Type]) Source #
The top-level view returned by a Page. It carries a type-level list of every HyperView used in our Page so the compiler can check our work and wire everything together.
Constructors
| Root |
Instances
| Generic (Action (Root views)) Source # | |
| Generic (Root views) Source # | |
| ViewAction (Action (Root views)) Source # | |
| ViewId (Root views) Source # | |
| HyperView (Root views) es Source # | |
Defined in Web.Hyperbole.HyperView.Types | |
| type Rep (Action (Root views)) Source # | |
| type Rep (Root views) Source # | |
| data Action (Root views) Source # | |
Defined in Web.Hyperbole.HyperView.Types | |
| type Concurrency (Root views) Source # | |
Defined in Web.Hyperbole.HyperView.Types | |
| type Require (Root views) Source # | |
Defined in Web.Hyperbole.HyperView.Types | |
| type ViewState (Root views) Source # | |
Defined in Web.Hyperbole.HyperView.Types | |