aboutsummaryrefslogtreecommitdiff
path: root/client/src/View/Income/Table.hs
diff options
context:
space:
mode:
Diffstat (limited to 'client/src/View/Income/Table.hs')
-rw-r--r--client/src/View/Income/Table.hs32
1 files changed, 22 insertions, 10 deletions
diff --git a/client/src/View/Income/Table.hs b/client/src/View/Income/Table.hs
index 9cb705f..358cb17 100644
--- a/client/src/View/Income/Table.hs
+++ b/client/src/View/Income/Table.hs
@@ -1,12 +1,13 @@
module View.Income.Table
( view
, In(..)
+ , Out(..)
) where
import qualified Data.List as L
import qualified Data.Maybe as Maybe
import Data.Text (Text)
-import Reflex.Dom (Dynamic, MonadWidget)
+import Reflex.Dom (Dynamic, Event, MonadWidget)
import qualified Reflex.Dom as R
import Common.Model (Currency, Income (..), User (..))
@@ -15,6 +16,7 @@ import qualified Common.Msg as Msg
import qualified Common.View.Format as Format
import qualified Component.Table as Table
+import qualified View.Income.Add as Add
import View.Income.Init (Init (..))
data In t = In
@@ -23,18 +25,28 @@ data In t = In
, _in_incomes :: Dynamic t [Income]
}
-view :: forall t m. MonadWidget t m => In t -> m ()
+data Out t = Out
+ { _out_addIncome :: Event t Income
+ }
+
+view :: forall t m. MonadWidget t m => In t -> m (Out t)
view input = do
- Table.view $ Table.In
- { Table._in_headerLabel = headerLabel
- , Table._in_rows = R.ffor (_in_incomes input) $ reverse . L.sortOn _income_date
- , Table._in_cell = cell (_in_init input) (_in_currency input)
- , Table._in_perPage = 7
- , Table._in_resetPage = R.never
- }
+ table <- Table.view $ Table.In
+ { Table._in_headerLabel = headerLabel
+ , Table._in_rows = R.ffor (_in_incomes input) $ reverse . L.sortOn _income_date
+ , Table._in_cell = cell (_in_init input) (_in_currency input)
+ , Table._in_perPage = 7
+ , Table._in_resetPage = R.never
+ , Table._in_cloneModal = \income ->
+ Add.view $ Add.In
+ { Add._in_income = Just <$> income
+ }
+ }
- return ()
+ return $ Out
+ { _out_addIncome = Table._out_add table
+ }
data Header
= UserHeader