aboutsummaryrefslogtreecommitdiff
path: root/client/src/View/Payment/Table.hs
diff options
context:
space:
mode:
Diffstat (limited to 'client/src/View/Payment/Table.hs')
-rw-r--r--client/src/View/Payment/Table.hs145
1 files changed, 0 insertions, 145 deletions
diff --git a/client/src/View/Payment/Table.hs b/client/src/View/Payment/Table.hs
deleted file mode 100644
index 66065af..0000000
--- a/client/src/View/Payment/Table.hs
+++ /dev/null
@@ -1,145 +0,0 @@
-module View.Payment.Table
- ( view
- , In(..)
- , Out(..)
- ) where
-
-import qualified Data.List as L
-import qualified Data.Map as M
-import qualified Data.Maybe as Maybe
-import Data.Text (Text)
-import qualified Data.Text as T
-import Reflex.Dom (Dynamic, Event, MonadWidget)
-import qualified Reflex.Dom as R
-
-import Common.Model (Category (..), Currency,
- Frequency (..), Payment (..),
- User (..), UserId)
-import qualified Common.Model as CM
-import qualified Common.Msg as Msg
-import qualified Common.View.Format as Format
-
-import qualified Component.ConfirmDialog as ConfirmDialog
-import qualified Component.Table as Table
-import qualified Component.Tag as Tag
-import qualified Util.Ajax as Ajax
-import qualified Util.Either as EitherUtil
-import qualified View.Payment.Form as Form
-
-data In t = In
- { _in_users :: [User]
- , _in_currentUser :: UserId
- , _in_categories :: [Category]
- , _in_currency :: Currency
- , _in_payments :: [Payment]
- , _in_frequency :: Frequency
- }
-
-data Out t = Out
- { _out_add :: Event t ()
- , _out_edit :: Event t ()
- , _out_delete :: Event t ()
- }
-
-view :: forall t m. MonadWidget t m => In t -> m (Out t)
-view input = do
-
- table <- Table.view $ Table.In
- { Table._in_headerLabel = headerLabel (_in_frequency input)
- , Table._in_rows = _in_payments input
- , Table._in_cell =
- cell
- (_in_users input)
- (_in_categories input)
- (_in_frequency input)
- (_in_currency input)
- , Table._in_cloneModal = \payment ->
- Form.view $ Form.In
- { Form._in_categories = _in_categories input
- , Form._in_operation = Form.Clone payment
- , Form._in_frequency = _in_frequency input
- }
- , Table._in_editModal = \payment ->
- Form.view $ Form.In
- { Form._in_categories = _in_categories input
- , Form._in_operation = Form.Edit payment
- , Form._in_frequency = _in_frequency input
- }
- , Table._in_deleteModal = \payment ->
- ConfirmDialog.view $ ConfirmDialog.In
- { ConfirmDialog._in_header = Msg.get Msg.Payment_DeleteConfirm
- , ConfirmDialog._in_confirm = \e -> do
- res <- Ajax.delete
- (R.constDyn $ T.concat ["/api/payment/", T.pack . show $ _payment_id payment])
- e
- return $ () <$ R.fmapMaybe EitherUtil.eitherToMaybe res
- }
- , Table._in_canEdit = (== (_in_currentUser input)) . _payment_user
- , Table._in_canDelete = (== (_in_currentUser input)) . _payment_user
- }
-
- return $ Out
- { _out_add = Table._out_add table
- , _out_edit = Table._out_edit table
- , _out_delete = Table._out_delete table
- }
-
-data Header
- = NameHeader
- | CostHeader
- | UserHeader
- | CategoryHeader
- | DateHeader
- deriving (Eq, Show, Bounded, Enum)
-
-headerLabel :: Frequency -> Header -> Text
-headerLabel _ NameHeader = Msg.get Msg.Payment_Name
-headerLabel _ CostHeader = Msg.get Msg.Payment_Cost
-headerLabel _ UserHeader = Msg.get Msg.Payment_User
-headerLabel _ CategoryHeader = Msg.get Msg.Payment_Category
-headerLabel Punctual DateHeader = Msg.get Msg.Payment_Date
-headerLabel Monthly DateHeader = ""
-
-cell
- :: forall t m. MonadWidget t m
- => [User]
- -> [Category]
- -> Frequency
- -> Currency
- -> Header
- -> Payment
- -> m ()
-cell users categories frequency currency header payment =
- case header of
- NameHeader ->
- R.text $ _payment_name payment
-
- CostHeader ->
- R.divClass (if amount < 0 then "g-Payment__Refund" else "") $
- R.text $ Format.price currency amount
- where amount = _payment_cost payment
-
- UserHeader ->
- R.text . Maybe.fromMaybe "" . fmap _user_name $ CM.findUser (_payment_user payment) users
-
- CategoryHeader ->
- let
- category =
- L.find ((== (_payment_category payment)) . _category_id) categories
- in
- Maybe.fromMaybe R.blank . flip fmap category $ \c ->
- Tag.view $ Tag.In
- { Tag._in_text = _category_name c
- , Tag._in_color = _category_color c
- }
-
- DateHeader ->
- if frequency == Punctual then
- do
- R.elClass "span" "shortDate" $
- R.text . Format.shortDay . _payment_date $ payment
-
- R.elClass "span" "longDate" $
- R.text . Format.longDay . _payment_date $ payment
- else
- R.blank