mirror of
https://github.com/TheAnachronism/docspell.git
synced 2025-06-21 18:08:25 +00:00
Improve form
This commit is contained in:
107
modules/webapp/src/main/elm/Data/CalEvent.elm
Normal file
107
modules/webapp/src/main/elm/Data/CalEvent.elm
Normal file
@ -0,0 +1,107 @@
|
||||
module Data.CalEvent exposing
|
||||
( CalEvent
|
||||
, everyMonth
|
||||
, fromEvent
|
||||
, makeEvent
|
||||
)
|
||||
|
||||
import Util.Maybe
|
||||
|
||||
|
||||
type alias CalEvent =
|
||||
{ weekday : Maybe String
|
||||
, year : String
|
||||
, month : String
|
||||
, day : String
|
||||
, hour : String
|
||||
, minute : String
|
||||
}
|
||||
|
||||
|
||||
everyMonth : CalEvent
|
||||
everyMonth =
|
||||
CalEvent Nothing "*" "*" "01" "00" "00"
|
||||
|
||||
|
||||
makeEvent : CalEvent -> String
|
||||
makeEvent ev =
|
||||
let
|
||||
datetime =
|
||||
ev.year
|
||||
++ "-"
|
||||
++ ev.month
|
||||
++ "-"
|
||||
++ ev.day
|
||||
++ " "
|
||||
++ ev.hour
|
||||
++ ":"
|
||||
++ ev.minute
|
||||
in
|
||||
case ev.weekday of
|
||||
Just wd ->
|
||||
wd ++ " " ++ datetime
|
||||
|
||||
Nothing ->
|
||||
datetime
|
||||
|
||||
|
||||
fromEvent : String -> Maybe CalEvent
|
||||
fromEvent str =
|
||||
let
|
||||
init =
|
||||
everyMonth
|
||||
|
||||
parts =
|
||||
String.split " " str
|
||||
in
|
||||
case parts of
|
||||
wd :: date :: time :: [] ->
|
||||
Maybe.andThen
|
||||
(fromDate date)
|
||||
(fromTime time init)
|
||||
|> Maybe.map (withWeekday wd)
|
||||
|
||||
date :: time :: [] ->
|
||||
Maybe.andThen
|
||||
(fromDate date)
|
||||
(fromTime time init)
|
||||
|
||||
_ ->
|
||||
Nothing
|
||||
|
||||
|
||||
fromDate : String -> CalEvent -> Maybe CalEvent
|
||||
fromDate date ev =
|
||||
let
|
||||
parts =
|
||||
String.split "-" date
|
||||
in
|
||||
case parts of
|
||||
y :: m :: d :: [] ->
|
||||
Just
|
||||
{ ev
|
||||
| year = y
|
||||
, month = m
|
||||
, day = d
|
||||
}
|
||||
|
||||
_ ->
|
||||
Nothing
|
||||
|
||||
|
||||
fromTime : String -> CalEvent -> Maybe CalEvent
|
||||
fromTime time ev =
|
||||
case String.split ":" time of
|
||||
h :: m :: _ :: [] ->
|
||||
Just { ev | hour = h, minute = m }
|
||||
|
||||
h :: m :: [] ->
|
||||
Just { ev | hour = h, minute = m }
|
||||
|
||||
_ ->
|
||||
Nothing
|
||||
|
||||
|
||||
withWeekday : String -> CalEvent -> CalEvent
|
||||
withWeekday wd ev =
|
||||
{ ev | weekday = Util.Maybe.fromString wd }
|
20
modules/webapp/src/main/elm/Data/Validated.elm
Normal file
20
modules/webapp/src/main/elm/Data/Validated.elm
Normal file
@ -0,0 +1,20 @@
|
||||
module Data.Validated exposing (Validated(..), value)
|
||||
|
||||
|
||||
type Validated a
|
||||
= Valid a
|
||||
| Invalid a
|
||||
| Unknown a
|
||||
|
||||
|
||||
value : Validated a -> a
|
||||
value va =
|
||||
case va of
|
||||
Valid a ->
|
||||
a
|
||||
|
||||
Invalid a ->
|
||||
a
|
||||
|
||||
Unknown a ->
|
||||
a
|
Reference in New Issue
Block a user