add edit page

This commit is contained in:
Alexander Foremny
2024-06-05 10:41:02 +02:00
parent d5f3f2333a
commit a7a4dd0112
7 changed files with 111 additions and 6 deletions

View File

@@ -11,6 +11,7 @@ import Data.Bifunctor
import Data.Default
import Data.Function
import Miso
import Page.EditValue qualified as EditValue
import Page.ListCollection qualified as ListCollection
import Route (Route)
import Route qualified as Route
@@ -18,26 +19,35 @@ import Route qualified as Route
data Page
= Home
| ListCollection ListCollection.Model
| EditValue EditValue.Model
deriving (Show, Eq)
data Action
= HandleListCollection ListCollection.Action
| HandleEditValue EditValue.Action
deriving (Show, Eq)
instance Default Page where
def = Home
data Action
= HandleListCollection ListCollection.Action
deriving (Show, Eq)
initialPage :: Route -> JSM (Either String Page)
initialPage Route.Home = pure (Right Home)
initialPage (Route.ListCollection c) =
fmap ListCollection <$> ListCollection.initialModel c
initialPage (Route.EditValue c f) =
fmap EditValue <$> EditValue.initialModel c f
updatePage :: Action -> Page -> Effect Action Page
updatePage (HandleListCollection action) (ListCollection m) =
ListCollection.updateModel action m
& bimap HandleListCollection ListCollection
updatePage (HandleListCollection _) p = noEff p
updatePage (HandleEditValue action) (EditValue m) =
EditValue.updateModel action m
& bimap HandleEditValue EditValue
updatePage (HandleEditValue _) p = noEff p
viewPage :: Page -> View Action
viewPage Home = text "home"
viewPage (ListCollection m) = HandleListCollection <$> ListCollection.viewModel m
viewPage (EditValue m) = HandleEditValue <$> EditValue.viewModel m