aboutsummaryrefslogtreecommitdiff
path: root/client/src/View/Payment/Form.hs
diff options
context:
space:
mode:
authorJoris2019-10-22 22:26:38 +0200
committerJoris2019-10-22 22:26:38 +0200
commit613ffccac4b3ab25c6d4c631fab757da0b35acf6 (patch)
tree13e448af89f4079bb62d7ce8b5a44b6a64515129 /client/src/View/Payment/Form.hs
parent80f09e8b3a5c856e60922a73c9161a8c5392e4d4 (diff)
downloadbudget-613ffccac4b3ab25c6d4c631fab757da0b35acf6.tar.gz
budget-613ffccac4b3ab25c6d4c631fab757da0b35acf6.tar.bz2
budget-613ffccac4b3ab25c6d4c631fab757da0b35acf6.zip
Harmonize view component code style
Diffstat (limited to 'client/src/View/Payment/Form.hs')
-rw-r--r--client/src/View/Payment/Form.hs129
1 files changed, 64 insertions, 65 deletions
diff --git a/client/src/View/Payment/Form.hs b/client/src/View/Payment/Form.hs
index 1f068fd..29768aa 100644
--- a/client/src/View/Payment/Form.hs
+++ b/client/src/View/Payment/Form.hs
@@ -1,7 +1,7 @@
module View.Payment.Form
( view
- , Input(..)
- , Output(..)
+ , In(..)
+ , Out(..)
) where
import Data.Aeson (ToJSON)
@@ -25,49 +25,48 @@ import Common.Model (Category (..), CategoryId,
SavedPayment (..))
import qualified Common.Msg as Msg
import qualified Common.Validation.Payment as PaymentValidation
-import Component (InputIn (..), InputOut (..),
- ModalFormIn (..), ModalFormOut (..),
- SelectIn (..), SelectOut (..))
-import qualified Component as Component
+import qualified Component.Input as Input
+import qualified Component.ModalForm as ModalForm
+import qualified Component.Select as Select
import qualified Util.Validation as ValidationUtil
-data Input m t a = Input
- { _input_cancel :: Event t ()
- , _input_headerLabel :: Text
- , _input_categories :: [Category]
- , _input_paymentCategories :: [PaymentCategory]
- , _input_name :: Text
- , _input_cost :: Text
- , _input_date :: Day
- , _input_category :: CategoryId
- , _input_frequency :: Frequency
- , _input_mkPayload :: Text -> Text -> Text -> CategoryId -> Frequency -> a
- , _input_ajax :: Text -> Event t a -> m (Event t (Either Text SavedPayment))
+data In m t a = In
+ { _in_cancel :: Event t ()
+ , _in_headerLabel :: Text
+ , _in_categories :: [Category]
+ , _in_paymentCategories :: [PaymentCategory]
+ , _in_name :: Text
+ , _in_cost :: Text
+ , _in_date :: Day
+ , _in_category :: CategoryId
+ , _in_frequency :: Frequency
+ , _in_mkPayload :: Text -> Text -> Text -> CategoryId -> Frequency -> a
+ , _in_ajax :: Text -> Event t a -> m (Event t (Either Text SavedPayment))
}
-data Output t = Output
+data Out t = Out
{ _output_hide :: Event t ()
, _output_addPayment :: Event t SavedPayment
}
-view :: forall t m a. (MonadWidget t m, ToJSON a) => Input m t a -> m (Output t)
+view :: forall t m a. (MonadWidget t m, ToJSON a) => In m t a -> m (Out t)
view input = do
rec
let reset = R.leftmost
- [ "" <$ _modalFormOut_cancel modalForm
- , "" <$ _modalFormOut_validate modalForm
- , "" <$ _input_cancel input
+ [ "" <$ ModalForm._out_cancel modalForm
+ , "" <$ ModalForm._out_validate modalForm
+ , "" <$ _in_cancel input
]
- modalForm <- Component.modalForm $ ModalFormIn
- { _modalFormIn_headerLabel = _input_headerLabel input
- , _modalFormIn_ajax = _input_ajax input "/api/payment"
- , _modalFormIn_form = form reset (_modalFormOut_confirm modalForm)
+ modalForm <- ModalForm.view $ ModalForm.In
+ { ModalForm._in_headerLabel = _in_headerLabel input
+ , ModalForm._in_ajax = _in_ajax input "/api/payment"
+ , ModalForm._in_form = form reset (ModalForm._out_confirm modalForm)
}
- return $ Output
- { _output_hide = _modalFormOut_hide modalForm
- , _output_addPayment = _modalFormOut_validate modalForm
+ return $ Out
+ { _output_hide = ModalForm._out_hide modalForm
+ , _output_addPayment = ModalForm._out_validate modalForm
}
where
@@ -76,63 +75,63 @@ view input = do
-> Event t ()
-> m (Dynamic t (Validation (NonEmpty Text) a))
form reset confirm = do
- name <- Component.input
- (Component.defaultInputIn
- { _inputIn_label = Msg.get Msg.Payment_Name
- , _inputIn_initialValue = _input_name input
- , _inputIn_validation = PaymentValidation.name
+ name <- Input.view
+ (Input.defaultIn
+ { Input._in_label = Msg.get Msg.Payment_Name
+ , Input._in_initialValue = _in_name input
+ , Input._in_validation = PaymentValidation.name
})
- (_input_name input <$ reset)
+ (_in_name input <$ reset)
confirm
- cost <- _inputOut_raw <$> (Component.input
- (Component.defaultInputIn
- { _inputIn_label = Msg.get Msg.Payment_Cost
- , _inputIn_initialValue = _input_cost input
- , _inputIn_validation = PaymentValidation.cost
+ cost <- Input._out_raw <$> (Input.view
+ (Input.defaultIn
+ { Input._in_label = Msg.get Msg.Payment_Cost
+ , Input._in_initialValue = _in_cost input
+ , Input._in_validation = PaymentValidation.cost
})
- (_input_cost input <$ reset)
+ (_in_cost input <$ reset)
confirm)
- let initialDate = T.pack . Calendar.showGregorian . _input_date $ input
+ let initialDate = T.pack . Calendar.showGregorian . _in_date $ input
- date <- _inputOut_raw <$> (Component.input
- (Component.defaultInputIn
- { _inputIn_label = Msg.get Msg.Payment_Date
- , _inputIn_initialValue = initialDate
- , _inputIn_inputType = "date"
- , _inputIn_hasResetButton = False
- , _inputIn_validation = PaymentValidation.date
+ date <- Input._out_raw <$> (Input.view
+ (Input.defaultIn
+ { Input._in_label = Msg.get Msg.Payment_Date
+ , Input._in_initialValue = initialDate
+ , Input._in_inputType = "date"
+ , Input._in_hasResetButton = False
+ , Input._in_validation = PaymentValidation.date
})
(initialDate <$ reset)
confirm)
let setCategory =
R.fmapMaybe id . R.updated $
- R.ffor (_inputOut_raw name) $ \name ->
- findCategory name (_input_paymentCategories input)
-
- category <- _selectOut_value <$> (Component.select $ SelectIn
- { _selectIn_label = Msg.get Msg.Payment_Category
- , _selectIn_initialValue = _input_category input
- , _selectIn_value = setCategory
- , _selectIn_values = R.constDyn categories
- , _selectIn_reset = _input_category input <$ reset
- , _selectIn_isValid = PaymentValidation.category (map _category_id $ _input_categories input)
- , _selectIn_validate = confirm
+ R.ffor (Input._out_raw name) $ \name ->
+ findCategory name (_in_paymentCategories input)
+
+ category <- Select._out_value <$> (Select.view $ Select.In
+ { Select._in_label = Msg.get Msg.Payment_Category
+ , Select._in_initialValue = _in_category input
+ , Select._in_value = setCategory
+ , Select._in_values = R.constDyn categories
+ , Select._in_reset = _in_category input <$ reset
+ , Select._in_isValid = PaymentValidation.category (map _category_id $ _in_categories input)
+ , Select._in_validate = confirm
})
return $ do
- n <- _inputOut_value name
+ n <- Input._out_value name
c <- cost
d <- date
cat <- category
- return ((_input_mkPayload input)
+ return ((_in_mkPayload input)
<$> ValidationUtil.nelError n
<*> V.Success c
<*> V.Success d
<*> ValidationUtil.nelError cat
- <*> V.Success (_input_frequency input))
+ <*> V.Success (_in_frequency input))
frequencies =
M.fromList
@@ -140,7 +139,7 @@ view input = do
, (Monthly, Msg.get Msg.Payment_MonthlyMale)
]
- categories = M.fromList . flip map (_input_categories input) $ \c ->
+ categories = M.fromList . flip map (_in_categories input) $ \c ->
(_category_id c, _category_name c)
findCategory :: Text -> [PaymentCategory] -> Maybe CategoryId