aboutsummaryrefslogtreecommitdiff
path: root/client/src/View/Payment/Edit.hs
diff options
context:
space:
mode:
authorJoris2019-08-11 22:40:09 +0200
committerJoris2019-08-11 22:40:09 +0200
commit2d79ab0e0a11f55255fc21a5dfab1598d3beeba3 (patch)
tree80ab3cd98cebfb9694f66aa7718f6bc5d1c83d22 /client/src/View/Payment/Edit.hs
parentc542424b7b41c78a170763f6996c12f56b359860 (diff)
downloadbudget-2d79ab0e0a11f55255fc21a5dfab1598d3beeba3.tar.gz
budget-2d79ab0e0a11f55255fc21a5dfab1598d3beeba3.tar.bz2
budget-2d79ab0e0a11f55255fc21a5dfab1598d3beeba3.zip
Add payment clone
Diffstat (limited to 'client/src/View/Payment/Edit.hs')
-rw-r--r--client/src/View/Payment/Edit.hs55
1 files changed, 55 insertions, 0 deletions
diff --git a/client/src/View/Payment/Edit.hs b/client/src/View/Payment/Edit.hs
new file mode 100644
index 0000000..5020e57
--- /dev/null
+++ b/client/src/View/Payment/Edit.hs
@@ -0,0 +1,55 @@
+module View.Payment.Edit
+ ( Input(..)
+ , view
+ ) where
+
+import qualified Control.Monad as Monad
+import qualified Data.Text as T
+import Reflex.Dom (Dynamic, Event, MonadWidget)
+import qualified Reflex.Dom as R
+
+import Common.Model (Category (..), CategoryId,
+ EditPayment (..), Frequency (..),
+ Payment (..), PaymentCategory (..),
+ SavedPayment (..))
+import qualified Common.Msg as Msg
+import qualified Common.Validation.Payment as PaymentValidation
+import qualified Component.Modal as Modal
+import qualified Util.Reflex as ReflexUtil
+import qualified View.Payment.Form as Form
+
+data Input t = Input
+ { _input_show :: Event t ()
+ , _input_categories :: [Category]
+ , _input_paymentCategories :: Dynamic t [PaymentCategory]
+ , _input_payment :: Dynamic t Payment
+ , _input_category :: Dynamic t CategoryId
+ }
+
+view :: forall t m. MonadWidget t m => Input t -> Modal.Content t m SavedPayment
+view input cancel = do
+
+ formOutput <- R.dyn $ do
+ paymentCategories <- _input_paymentCategories input
+ payment <- _input_payment input
+ category <- _input_category input
+ return . Form.view $ Form.Input
+ { Form._input_cancel = cancel
+ , Form._input_headerLabel = Msg.get Msg.Payment_EditLong
+ , Form._input_categories = _input_categories input
+ , Form._input_paymentCategories = paymentCategories
+ , Form._input_name = _payment_name payment
+ , Form._input_cost = T.pack . show . _payment_cost $ payment
+ , Form._input_date = _payment_date payment
+ , Form._input_category = category
+ , Form._input_frequency = _payment_frequency payment
+ , Form._input_mkPayload = EditPayment (_payment_id payment)
+ }
+
+ hide <- ReflexUtil.flatten (Form._output_hide <$> formOutput)
+ editPayment <- ReflexUtil.flatten (Form._output_addPayment <$> formOutput)
+
+ return $
+ ( hide
+ , editPayment
+ )