feat: change Manual time entry to work with hours instead of start and end time
according to add hours as well the logic was changed to accept ours for manual entries instead of start and end time. This allows to add negative numbers as well, which are added to working time.
This commit is contained in:
parent
c07019e3eb
commit
84def05c50
4 changed files with 84 additions and 135 deletions
|
|
@ -220,8 +220,7 @@ type alias YearlyHoursSummary =
|
|||
type alias AdminManualEntry =
|
||||
{ selectedUserId : Maybe Int
|
||||
, date : String
|
||||
, startTime : String
|
||||
, endTime : String
|
||||
, hours : String
|
||||
, entryType : String
|
||||
}
|
||||
|
||||
|
|
@ -293,7 +292,7 @@ init flags =
|
|||
, userPasswordInput = ""
|
||||
, isProcessing = False
|
||||
, mobileMenuOpen = False
|
||||
, adminManualEntryForm = AdminManualEntry Nothing "" "" "" "lesson"
|
||||
, adminManualEntryForm = AdminManualEntry Nothing "" "" "manual"
|
||||
, schoolYears = []
|
||||
, newSchoolYear = NewSchoolYear "" "" ""
|
||||
, activeSchoolYear = Nothing
|
||||
|
|
@ -412,8 +411,7 @@ type Msg
|
|||
| CloseMobileMenu
|
||||
| SelectUserForManualEntry Int
|
||||
| UpdateManualEntryDate String
|
||||
| UpdateManualEntryStartTime String
|
||||
| UpdateManualEntryEndTime String
|
||||
| UpdateManualEntryHours String
|
||||
| UpdateManualEntryType String
|
||||
| SaveAdminTimeEntry
|
||||
| AdminTimeEntrySaved (Result Http.Error ())
|
||||
|
|
@ -1437,19 +1435,12 @@ update msg model =
|
|||
in
|
||||
( { model | adminManualEntryForm = { form | date = date } }, Cmd.none )
|
||||
|
||||
UpdateManualEntryStartTime time ->
|
||||
UpdateManualEntryHours hours ->
|
||||
let
|
||||
form =
|
||||
model.adminManualEntryForm
|
||||
in
|
||||
( { model | adminManualEntryForm = { form | startTime = time } }, Cmd.none )
|
||||
|
||||
UpdateManualEntryEndTime time ->
|
||||
let
|
||||
form =
|
||||
model.adminManualEntryForm
|
||||
in
|
||||
( { model | adminManualEntryForm = { form | endTime = time } }, Cmd.none )
|
||||
( { model | adminManualEntryForm = { form | hours = hours } }, Cmd.none )
|
||||
|
||||
UpdateManualEntryType entryType ->
|
||||
let
|
||||
|
|
@ -1470,7 +1461,7 @@ update msg model =
|
|||
case model.token of
|
||||
Just token ->
|
||||
( { model
|
||||
| adminManualEntryForm = AdminManualEntry Nothing "" "" "" "lesson"
|
||||
| adminManualEntryForm = AdminManualEntry Nothing "" "" "manual"
|
||||
, error = Nothing
|
||||
, isProcessing = False
|
||||
}
|
||||
|
|
@ -1997,6 +1988,14 @@ calculateHours startTime endTime =
|
|||
if end > start then
|
||||
end - start
|
||||
|
||||
else if endTime == "manual" then
|
||||
case String.toFloat startTime of
|
||||
Just time ->
|
||||
time
|
||||
|
||||
Nothing ->
|
||||
0
|
||||
|
||||
else
|
||||
0
|
||||
|
||||
|
|
@ -2661,23 +2660,28 @@ viewYearlyHourRow summary =
|
|||
viewAdminManualEntryForm : Model -> Html Msg
|
||||
viewAdminManualEntryForm model =
|
||||
div [ class "box has-background-info-light" ]
|
||||
[ h3 [ class "subtitle" ] [ text "Neuer Zeiteintrag" ]
|
||||
[ h3 [ class "subtitle" ] [ text "Manuelle Stundeneintragung" ]
|
||||
, p [ class "help mb-3" ]
|
||||
[ text "Positive Werte = Abzug, Negative Werte = Hinzurechnung" ]
|
||||
, div [ class "columns" ]
|
||||
[ div [ class "column" ]
|
||||
[ div [ class "column is-4" ]
|
||||
[ div [ class "field" ]
|
||||
[ label [ class "label" ] [ text "Mitarbeiter" ]
|
||||
, div [ class "control" ]
|
||||
[ div [ class "select is-fullwidth" ]
|
||||
[ select [ onInput (SelectUserForManualEntry << Maybe.withDefault 0 << String.toInt) ]
|
||||
(option [] [ text "-- Wählen --" ]
|
||||
:: List.map (\user -> option [ value (String.fromInt user.id) ] [ text user.username ])
|
||||
(List.filter (\u -> not u.isAdmin) model.users)
|
||||
(option [ value "" ] [ text "-- Wählen --" ]
|
||||
:: List.map
|
||||
(\u ->
|
||||
option [ value (String.fromInt u.id), selected (model.adminManualEntryForm.selectedUserId == Just u.id) ] [ text u.username ]
|
||||
)
|
||||
model.users
|
||||
)
|
||||
]
|
||||
]
|
||||
]
|
||||
]
|
||||
, div [ class "column" ]
|
||||
, div [ class "column is-4" ]
|
||||
[ div [ class "field" ]
|
||||
[ label [ class "label" ] [ text "Datum" ]
|
||||
, div [ class "control" ]
|
||||
|
|
@ -2691,47 +2695,22 @@ viewAdminManualEntryForm model =
|
|||
]
|
||||
]
|
||||
]
|
||||
]
|
||||
, div [ class "columns" ]
|
||||
[ div [ class "column" ]
|
||||
, div [ class "column is-4" ]
|
||||
[ div [ class "field" ]
|
||||
[ label [ class "label" ] [ text "Startzeit" ]
|
||||
[ label [ class "label" ] [ text "Stunden (z.B. 2.5 oder -1.0)" ]
|
||||
, div [ class "control" ]
|
||||
[ input
|
||||
[ class "input"
|
||||
, type_ "time"
|
||||
, value model.adminManualEntryForm.startTime
|
||||
, onInput UpdateManualEntryStartTime
|
||||
, type_ "number"
|
||||
, step "0.5"
|
||||
, placeholder "z.B. 2.5 oder -1.0"
|
||||
, value model.adminManualEntryForm.hours
|
||||
, onInput UpdateManualEntryHours
|
||||
]
|
||||
[]
|
||||
]
|
||||
]
|
||||
]
|
||||
, div [ class "column" ]
|
||||
[ div [ class "field" ]
|
||||
[ label [ class "label" ] [ text "Endzeit" ]
|
||||
, div [ class "control" ]
|
||||
[ input
|
||||
[ class "input"
|
||||
, type_ "time"
|
||||
, value model.adminManualEntryForm.endTime
|
||||
, onInput UpdateManualEntryEndTime
|
||||
]
|
||||
[]
|
||||
]
|
||||
]
|
||||
]
|
||||
, div [ class "column" ]
|
||||
[ div [ class "field" ]
|
||||
[ label [ class "label" ] [ text "Typ" ]
|
||||
, div [ class "control" ]
|
||||
[ div [ class "select is-fullwidth" ]
|
||||
[ select [ onInput UpdateManualEntryType, value model.adminManualEntryForm.entryType ]
|
||||
[ option [ value "lesson" ] [ text "Unterricht" ]
|
||||
, option [ value "break" ] [ text "Pause" ]
|
||||
]
|
||||
]
|
||||
]
|
||||
, p [ class "help" ]
|
||||
[ text "Positiv: Wird abgezogen | Negativ: Wird hinzugerechnet" ]
|
||||
]
|
||||
]
|
||||
]
|
||||
|
|
@ -2743,7 +2722,7 @@ viewAdminManualEntryForm model =
|
|||
, disabled
|
||||
(case model.adminManualEntryForm.selectedUserId of
|
||||
Just _ ->
|
||||
model.isProcessing
|
||||
model.isProcessing || String.isEmpty model.adminManualEntryForm.hours
|
||||
|
||||
Nothing ->
|
||||
True
|
||||
|
|
@ -4012,9 +3991,8 @@ createAdminTimeEntry token entry =
|
|||
Encode.object
|
||||
[ ( "user_id", Encode.int userId )
|
||||
, ( "date", Encode.string entry.date )
|
||||
, ( "start_time", Encode.string entry.startTime )
|
||||
, ( "end_time", Encode.string entry.endTime )
|
||||
, ( "type", Encode.string entry.entryType )
|
||||
, ( "hours", Encode.float (String.toFloat entry.hours |> Maybe.withDefault 0) )
|
||||
, ( "type", Encode.string "manual" )
|
||||
]
|
||||
, expect = Http.expectWhatever AdminTimeEntrySaved
|
||||
, timeout = Nothing
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue