{-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE GADTs #-} {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE QuasiQuotes #-} {-# LANGUAGE RankNTypes #-} {-# LANGUAGE TemplateHaskell #-} module Hledger.Web.Widget.AddForm ( addForm , addModal ) where import Control.Monad.State.Strict (evalStateT) import Data.Bifunctor (first) import Data.Foldable (toList) import Data.List (dropWhileEnd, unfoldr) import Data.Maybe (isJust, fromMaybe) import qualified Data.Set as S import Data.Text (Text) import Data.Text.Encoding.Base64 (encodeBase64) import qualified Data.Text as T import Data.Time (Day) import Text.Blaze.Internal (Markup, preEscapedText) import Text.Megaparsec (bundleErrors, eof, parseErrorTextPretty, runParser) import Yesod import Hledger import Hledger.Web.Foundation (App, Handler, Widget) import Hledger.Web.Settings (widgetFile) import Data.Function ((&)) import Control.Arrow (right) addModal :: Route App -> Journal -> Day -> Widget addModal addR j today = do (addView, addEnctype) <- handlerToWidget $ generateFormPost (addForm j today) [whamlet|