aboutsummaryrefslogtreecommitdiff
path: root/src/client/elm/Page.elm
diff options
context:
space:
mode:
Diffstat (limited to 'src/client/elm/Page.elm')
-rw-r--r--src/client/elm/Page.elm29
1 files changed, 20 insertions, 9 deletions
diff --git a/src/client/elm/Page.elm b/src/client/elm/Page.elm
index 7cfbbc7..39232e0 100644
--- a/src/client/elm/Page.elm
+++ b/src/client/elm/Page.elm
@@ -1,32 +1,43 @@
module Page exposing
( Page(..)
, toHash
- , fromHash
+ , fromLocation
)
-import Navigation
-import UrlParser exposing (..)
+import Navigation exposing (Location)
+import UrlParser exposing (Parser, (</>), s)
import String
type Page =
Home
| Income
+ | Categories
| Statistics
+ | NotFound
toHash : Page -> String
toHash page =
case page of
Home -> "#"
Income -> "#income"
+ Categories -> "#categories"
Statistics -> "#statistics"
+ NotFound -> "#notFound"
-fromHash : Navigation.Location -> Result String Page
-fromHash location = UrlParser.parse identity pageParser (String.dropLeft 1 location.hash)
+fromLocation : Location -> Page
+fromLocation location =
+ if location.hash == ""
+ then
+ Home
+ else
+ case UrlParser.parseHash pageParser location of
+ Just page -> page
+ Nothing -> NotFound
pageParser : Parser (Page -> a) a
pageParser =
- oneOf
- [ format Home (s "")
- , format Income (s "income")
- , format Statistics (s "statistics")
+ UrlParser.oneOf
+ [ UrlParser.map Income (s "income")
+ , UrlParser.map Categories (s "categories")
+ , UrlParser.map Statistics (s "statistics")
]