Merge pull request #1430 from eikek/time-zones

Time zones
This commit is contained in:
mergify[bot] 2022-03-01 22:33:40 +00:00 committed by GitHub
commit 0169e72f66
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
73 changed files with 680 additions and 474 deletions

View File

@ -33,7 +33,7 @@ object EmptyTrashArgs {
val taskName = Ident.unsafe("empty-trash")
val defaultSchedule = CalEvent.unsafe("*-*-1/7 03:00:00")
val defaultSchedule = CalEvent.unsafe("*-*-1/7 03:00:00 UTC")
def periodicTaskId(coll: Ident): Ident =
Ident.unsafe(s"docspell") / taskName / coll

View File

@ -6,10 +6,8 @@
package docspell.common
import java.time.LocalDateTime
import java.time.ZonedDateTime
import java.time.temporal.ChronoUnit
import java.time.{Instant, LocalDate, ZoneId}
import java.time.{Duration => _, _}
import cats.effect.Sync
@ -57,7 +55,7 @@ case class Timestamp(value: Instant) {
}
object Timestamp {
val UTC = ZoneId.of("UTC")
val UTC: ZoneId = ZoneOffset.UTC
val Epoch = Timestamp(Instant.EPOCH)

View File

@ -144,7 +144,7 @@ docspell.joex {
# When the house keeping tasks execute. Default is to run every
# week.
schedule = "Sun *-*-* 00:00:00"
schedule = "Sun *-*-* 00:00:00 UTC"
# This task removes invitation keys that have been created but not
# used. The timespan here must be greater than the `invite-time'
@ -209,8 +209,9 @@ docspell.joex {
test-run = false
# When the update check should execute. Default is to run every
# week.
schedule = "Sun *-*-* 00:00:00"
# week. You can specify a time zone identifier, like
# 'Europe/Berlin' at the end.
schedule = "Sun *-*-* 00:00:00 UTC"
# An account id in form of `collective/user` (or just `user` if
# collective and user name are the same). This user account must

View File

@ -22,6 +22,7 @@
"elm/url": "1.0.0",
"elm-explorations/markdown": "1.0.0",
"justinmimbs/date": "3.1.2",
"justinmimbs/timezone-data": "5.1.2",
"norpan/elm-html5-drag-drop": "3.1.4",
"pablohirafuji/elm-qrcode": "4.0.1",
"ryannhg/date-format": "2.3.0",

View File

@ -68,7 +68,7 @@ updateWithSub : Msg -> Model -> ( Model, Cmd Msg, Sub Msg )
updateWithSub msg model =
let
texts =
Messages.get <| App.Data.getUiLanguage model
Messages.get (App.Data.getUiLanguage model) model.uiSettings.timeZone
in
case msg of
ToggleSidebar ->
@ -566,7 +566,7 @@ updateCollSettings texts lmsg model =
let
( lm, lc, ls ) =
Page.CollectiveSettings.Update.update texts.collectiveSettings
model.flags
(modelEnv model)
lmsg
model.collSettingsModel
in
@ -648,7 +648,7 @@ initPage model_ page =
{ model_ | page = page }
texts =
Messages.get <| App.Data.getUiLanguage model
Messages.get (App.Data.getUiLanguage model) model.uiSettings.timeZone
noop =
( model, Cmd.none, Sub.none )

View File

@ -59,7 +59,7 @@ topNavUser : AuthResult -> Model -> Html Msg
topNavUser auth model =
let
texts =
Messages.get <| App.Data.getUiLanguage model
Messages.get (App.Data.getUiLanguage model) model.uiSettings.timeZone
in
nav
[ id "top-nav"
@ -161,7 +161,7 @@ mainContent : Model -> Html Msg
mainContent model =
let
texts =
Messages.get <| App.Data.getUiLanguage model
Messages.get (App.Data.getUiLanguage model) model.uiSettings.timeZone
in
div
[ id "main"
@ -227,12 +227,12 @@ langMenu : Model -> Html Msg
langMenu model =
let
texts =
Messages.get <| App.Data.getUiLanguage model
Messages.get (App.Data.getUiLanguage model) model.uiSettings.timeZone
langItem lang =
let
langMsg =
Messages.get lang
Messages.get lang model.uiSettings.timeZone
in
a
[ classList

View File

@ -18,6 +18,7 @@ import Api.Model.CalEventCheck exposing (CalEventCheck)
import Api.Model.CalEventCheckResult exposing (CalEventCheckResult)
import Data.CalEvent exposing (CalEvent)
import Data.Flags exposing (Flags)
import Data.TimeZone exposing (TimeZone)
import Data.Validated exposing (Validated(..))
import Html exposing (..)
import Html.Attributes exposing (..)
@ -109,8 +110,8 @@ isCheckError model =
False
update : Flags -> Maybe CalEvent -> Msg -> Model -> ( Model, Cmd Msg, Maybe CalEvent )
update flags mev msg model =
update : Flags -> TimeZone -> Maybe CalEvent -> Msg -> Model -> ( Model, Cmd Msg, Maybe CalEvent )
update flags tz mev msg model =
let
ev =
Maybe.withDefault model.inner mev
@ -153,7 +154,7 @@ update flags mev msg model =
( m
, Cmd.none
, if res.success then
Just event
Just { event | timeZone = tz }
else
Nothing

View File

@ -26,6 +26,7 @@ import Data.DropdownStyle as DS
import Data.Flags exposing (Flags)
import Data.ListType exposing (ListType)
import Data.TagOrder
import Data.TimeZone exposing (TimeZone)
import Data.UiSettings exposing (UiSettings)
import Html exposing (..)
import Html.Attributes exposing (..)
@ -111,8 +112,8 @@ getSettings model =
model.schedule
update : Flags -> Msg -> Model -> ( Model, Cmd Msg )
update flags msg model =
update : Flags -> TimeZone -> Msg -> Model -> ( Model, Cmd Msg )
update flags tz msg model =
case msg of
GetTagsResp (Ok tl) ->
let
@ -123,7 +124,7 @@ update flags msg model =
lm =
Comp.Dropdown.SetOptions categories
in
update flags (CategoryListMsg lm) model
update flags tz (CategoryListMsg lm) model
GetTagsResp (Err _) ->
( model, Cmd.none )
@ -133,6 +134,7 @@ update flags msg model =
( cm, cc, ce ) =
Comp.CalEventInput.update
flags
tz
model.schedule
lmsg
model.scheduleModel

View File

@ -26,6 +26,7 @@ import Comp.StringListInput
import Data.DropdownStyle as DS
import Data.Flags exposing (Flags)
import Data.Language exposing (Language)
import Data.TimeZone exposing (TimeZone)
import Data.UiSettings exposing (UiSettings)
import Html exposing (..)
import Html.Attributes exposing (..)
@ -143,8 +144,8 @@ type Msg
| PasswordMsg Comp.StringListInput.Msg
update : Flags -> Msg -> Model -> ( Model, Cmd Msg, Maybe CollectiveSettings )
update flags msg model =
update : Flags -> TimeZone -> Msg -> Model -> ( Model, Cmd Msg, Maybe CollectiveSettings )
update flags tz msg model =
case msg of
LangDropdownMsg m ->
let
@ -207,7 +208,7 @@ update flags msg model =
ClassifierSettingMsg lmsg ->
let
( cm, cc ) =
Comp.ClassifierSettingsForm.update flags lmsg model.classifierModel
Comp.ClassifierSettingsForm.update flags tz lmsg model.classifierModel
in
( { model
| classifierModel = cm
@ -219,7 +220,7 @@ update flags msg model =
EmptyTrashMsg lmsg ->
let
( cm, cc ) =
Comp.EmptyTrashForm.update flags lmsg model.emptyTrashModel
Comp.EmptyTrashForm.update flags tz lmsg model.emptyTrashModel
in
( { model
| emptyTrashModel = cm

View File

@ -29,6 +29,7 @@ import Data.CalEvent exposing (CalEvent)
import Data.DropdownStyle as DS
import Data.Flags exposing (Flags)
import Data.TagOrder
import Data.TimeZone exposing (TimeZone)
import Data.UiSettings exposing (UiSettings)
import Data.Validated exposing (Validated(..))
import Html exposing (..)
@ -237,8 +238,8 @@ withValidSettings mkcmd model =
)
update : Flags -> Msg -> Model -> ( Model, Action, Cmd Msg )
update flags msg model =
update : Flags -> TimeZone -> Msg -> Model -> ( Model, Action, Cmd Msg )
update flags tz msg model =
case msg of
ChannelMsg lm ->
let
@ -254,6 +255,7 @@ update flags msg model =
let
( cm, cc, cs ) =
Comp.CalEventInput.update flags
tz
model.schedule
lmsg
model.scheduleModel

View File

@ -20,6 +20,7 @@ import Comp.DueItemsTaskForm
import Comp.DueItemsTaskList
import Comp.MenuBar as MB
import Data.Flags exposing (Flags)
import Data.TimeZone exposing (TimeZone)
import Data.UiSettings exposing (UiSettings)
import Html exposing (..)
import Html.Attributes exposing (..)
@ -81,8 +82,8 @@ init flags =
--- Update
update : Flags -> Msg -> Model -> ( Model, Cmd Msg )
update flags msg model =
update : Flags -> TimeZone -> Msg -> Model -> ( Model, Cmd Msg )
update flags tz msg model =
case msg of
GetDataResp (Ok items) ->
( { model
@ -126,7 +127,7 @@ update flags msg model =
Just dm ->
let
( mm, action, mc ) =
Comp.DueItemsTaskForm.update flags lm dm
Comp.DueItemsTaskForm.update flags tz lm dm
( model_, cmd_ ) =
case action of

View File

@ -19,6 +19,7 @@ import Comp.CalEventInput
import Comp.IntField
import Data.CalEvent exposing (CalEvent)
import Data.Flags exposing (Flags)
import Data.TimeZone exposing (TimeZone)
import Data.UiSettings exposing (UiSettings)
import Html exposing (..)
import Html.Attributes exposing (..)
@ -81,14 +82,15 @@ getSettings model =
model.minAgeDays
update : Flags -> Msg -> Model -> ( Model, Cmd Msg )
update flags msg model =
update : Flags -> TimeZone -> Msg -> Model -> ( Model, Cmd Msg )
update flags tz msg model =
case msg of
ScheduleMsg lmsg ->
let
( cm, cc, ce ) =
Comp.CalEventInput.update
flags
tz
model.schedule
lmsg
model.scheduleModel

View File

@ -225,7 +225,7 @@ menuBar texts inav env model =
[ { icon =
foldSelected
(i [ class "fa fa-check-square dark:text-lime-400 text-lime-600" ] [])
(i [ class "fa fa-tasks" ] [])
(i [ class "fa-regular fa-plus" ] [])
, label = foldSelected texts.deselectItem texts.selectItem
, disabled = False
, attrs =
@ -316,7 +316,7 @@ menuBar texts inav env model =
]
[ foldSelected
(i [ class "fa fa-square-check" ] [])
(i [ class "fa fa-list-check" ] [])
(i [ class "fa fa-plus" ] [])
]
, MB.CustomElement <|
a

View File

@ -25,6 +25,7 @@ import Comp.MenuBar as MB
import Comp.PowerSearchInput
import Data.CalEvent exposing (CalEvent)
import Data.Flags exposing (Flags)
import Data.TimeZone exposing (TimeZone)
import Data.UiSettings exposing (UiSettings)
import Data.Validated exposing (Validated(..))
import Html exposing (..)
@ -254,13 +255,14 @@ withValidSettings mkcmd model =
}
update : Flags -> Msg -> Model -> UpdateResult
update flags msg model =
update : Flags -> TimeZone -> Msg -> Model -> UpdateResult
update flags tz msg model =
case msg of
CalEventMsg lmsg ->
let
( cm, cc, cs ) =
Comp.CalEventInput.update flags
tz
model.schedule
lmsg
model.scheduleModel

View File

@ -20,6 +20,7 @@ import Comp.MenuBar as MB
import Comp.PeriodicQueryTaskForm
import Comp.PeriodicQueryTaskList
import Data.Flags exposing (Flags)
import Data.TimeZone exposing (TimeZone)
import Data.UiSettings exposing (UiSettings)
import Html exposing (..)
import Html.Attributes exposing (..)
@ -81,8 +82,8 @@ init flags =
--- Update
update : Flags -> Msg -> Model -> ( Model, Cmd Msg, Sub Msg )
update flags msg model =
update : Flags -> TimeZone -> Msg -> Model -> ( Model, Cmd Msg, Sub Msg )
update flags tz msg model =
case msg of
GetDataResp (Ok items) ->
( { model
@ -130,7 +131,7 @@ update flags msg model =
let
--( mm, action, mc ) =
result =
Comp.PeriodicQueryTaskForm.update flags lm dm
Comp.PeriodicQueryTaskForm.update flags tz lm dm
( model_, cmd_ ) =
case result.action of

View File

@ -40,6 +40,7 @@ import Data.Flags exposing (Flags)
import Data.FolderOrder
import Data.Language exposing (Language)
import Data.TagOrder
import Data.TimeZone exposing (TimeZone)
import Data.UiSettings exposing (UiSettings)
import Data.Validated exposing (Validated(..))
import Html exposing (..)
@ -183,7 +184,7 @@ initWith flags s =
|> Maybe.withDefault []
( nm, _, nc ) =
update flags (ConnMsg (Comp.Dropdown.SetSelection imap)) im
update flags Data.TimeZone.utc (ConnMsg (Comp.Dropdown.SetSelection imap)) im
newSchedule =
Data.CalEvent.fromEvent s.schedule
@ -354,13 +355,14 @@ withValidSettings mkAction model =
)
update : Flags -> Msg -> Model -> ( Model, Action, Cmd Msg )
update flags msg model =
update : Flags -> TimeZone -> Msg -> Model -> ( Model, Action, Cmd Msg )
update flags tz msg model =
case msg of
CalEventMsg lmsg ->
let
( cm, cc, cs ) =
Comp.CalEventInput.update flags
tz
model.schedule
lmsg
model.scheduleModel
@ -585,8 +587,8 @@ update flags msg model =
( a, NoAction, b )
in
Util.Update.andThen1
[ update flags (FolderDropdownMsg opts) >> removeAction
, update flags (FolderDropdownMsg (Comp.Dropdown.SetSelection sel)) >> removeAction
[ update flags tz (FolderDropdownMsg opts) >> removeAction
, update flags tz (FolderDropdownMsg (Comp.Dropdown.SetSelection sel)) >> removeAction
]
model_
|> addNoAction

View File

@ -21,6 +21,7 @@ import Comp.MenuBar as MB
import Comp.ScanMailboxForm
import Comp.ScanMailboxList
import Data.Flags exposing (Flags)
import Data.TimeZone exposing (TimeZone)
import Data.UiSettings exposing (UiSettings)
import Html exposing (..)
import Html.Attributes exposing (..)
@ -82,8 +83,8 @@ init flags =
--- Update
update : Flags -> Msg -> Model -> ( Model, Cmd Msg )
update flags msg model =
update : Flags -> TimeZone -> Msg -> Model -> ( Model, Cmd Msg )
update flags tz msg model =
case msg of
GetDataResp (Ok res) ->
( { model
@ -127,7 +128,7 @@ update flags msg model =
Just dm ->
let
( mm, action, mc ) =
Comp.ScanMailboxForm.update flags lm dm
Comp.ScanMailboxForm.update flags tz lm dm
( model_, cmd_ ) =
case action of

View File

@ -19,6 +19,7 @@ import Api
import Api.Model.TagList exposing (TagList)
import Comp.BasicSizeField
import Comp.ColorTagger
import Comp.Dropdown
import Comp.FieldListSelect
import Comp.FixedDropdown
import Comp.IntField
@ -32,6 +33,7 @@ import Data.Flags exposing (Flags)
import Data.ItemTemplate as IT exposing (ItemTemplate)
import Data.Pdf exposing (PdfMode)
import Data.TagOrder
import Data.TimeZone exposing (TimeZone)
import Data.UiSettings exposing (ItemPattern, StoredUiSettings, UiSettings)
import Dict exposing (Dict)
import Html exposing (..)
@ -74,6 +76,7 @@ type alias Model =
, powerSearchEnabled : Bool
, uiLangModel : Comp.FixedDropdown.Model UiLanguage
, uiLang : UiLanguage
, timezoneDropdown : Comp.Dropdown.Model String
, openTabs : Set String
, defaults : UiSettings
}
@ -169,6 +172,11 @@ initModel flags storedSettings defaults =
, uiLang = settings.uiLang
, uiLangModel =
Comp.FixedDropdown.init Messages.UiLanguage.all
, timezoneDropdown =
Comp.Dropdown.makeSingleList
{ options = Data.TimeZone.listAll
, selected = Just (Data.TimeZone.toName settings.timeZone)
}
, openTabs = Set.empty
, defaults = defaults
}
@ -208,6 +216,7 @@ type Msg
| TogglePowerSearch
| UiLangMsg (Comp.FixedDropdown.Msg UiLanguage)
| PdfModeMsg (Comp.FixedDropdown.Msg PdfMode)
| TimeZoneMsg (Comp.Dropdown.Msg String)
| ToggleAllTabs
| ResetTab AkkordionTab
@ -598,6 +607,27 @@ update flags sett msg model =
in
( { nm | openTabs = model.openTabs }, Just newSettings )
TimeZoneMsg lm ->
let
( tm, tcmd ) =
Comp.Dropdown.update lm model.timezoneDropdown
tz =
if Comp.Dropdown.isDropdownChangeMsg lm then
Comp.Dropdown.getSelected tm |> List.head
else
sett.timeZone
newSett =
if sett.timeZone == tz then
Nothing
else
Just { sett | timeZone = tz }
in
( { model | timezoneDropdown = tm }, newSett )
--- View2
@ -646,8 +676,8 @@ settingFormTabs : Texts -> Flags -> StoredUiSettings -> Model -> List (Comp.Tabs
settingFormTabs texts flags _ model =
let
langCfg =
{ display = \lang -> Messages.get lang |> .label
, icon = \lang -> Just (Messages.get lang |> .flagIcon)
{ display = \lang -> Messages.get lang Data.TimeZone.utc |> .label
, icon = \lang -> Just (Messages.get lang Data.TimeZone.utc |> .flagIcon)
, style = DS.mainStyle
, selectPlaceholder = texts.basics.selectPlaceholder
}
@ -669,6 +699,9 @@ settingFormTabs texts flags _ model =
[ i [ class "fa fa-eraser mr-1" ] []
, text texts.resetLabel
]
uiSettings =
Data.UiSettings.defaults
in
[ { name = akkordionTabName GeneralTab
, title = texts.general
@ -694,6 +727,22 @@ settingFormTabs texts flags _ model =
model.uiLangModel
)
]
, div [ class "mb-4" ]
[ label [ class S.inputLabel ] [ text "Timezone" ]
, Html.map TimeZoneMsg
(Comp.Dropdown.view2
{ makeOption = \s -> { text = s, additional = "" }
, placeholder = ""
, labelColor = \_ -> \_ -> ""
, style = DS.mainStyle
}
uiSettings
model.timezoneDropdown
)
, span [ class "opacity-75 text-sm" ]
[ text "Used to format date-time values."
]
]
]
}
, { name = akkordionTabName SearchTab

View File

@ -12,6 +12,7 @@ module Data.CalEvent exposing
, makeEvent
)
import Data.TimeZone exposing (TimeZone)
import Util.Maybe
@ -22,12 +23,13 @@ type alias CalEvent =
, day : String
, hour : String
, minute : String
, timeZone : TimeZone
}
everyMonth : CalEvent
everyMonth =
CalEvent Nothing "*" "*" "01" "00" "00"
CalEvent Nothing "*" "*" "01" "00" "00" Data.TimeZone.utc
makeEvent : CalEvent -> String
@ -43,6 +45,8 @@ makeEvent ev =
++ ev.hour
++ ":"
++ ev.minute
++ " "
++ Data.TimeZone.toName ev.timeZone
in
case ev.weekday of
Just wd ->
@ -60,18 +64,40 @@ fromEvent str =
parts =
String.split " " str
foldChanges : List (CalEvent -> Maybe CalEvent) -> Maybe CalEvent
foldChanges list =
List.foldl (\fmc -> \c -> Maybe.andThen fmc c) (Just init) list
in
case parts of
wd :: date :: time :: [] ->
Maybe.andThen
(fromDate date)
(fromTime time init)
|> Maybe.map (withWeekday wd)
wd :: date :: time :: tz :: [] ->
foldChanges
[ fromWeekDays wd
, fromDate date
, fromTime time
, fromTimeZone tz
]
a :: b :: c :: [] ->
if startsWithWeekday a then
foldChanges
[ fromWeekDays a
, fromDate b
, fromTime c
]
else
foldChanges
[ fromDate a
, fromTime b
, fromTimeZone c
]
date :: time :: [] ->
Maybe.andThen
(fromDate date)
(fromTime time init)
foldChanges
[ fromDate date
, fromTime time
]
_ ->
Nothing
@ -109,6 +135,31 @@ fromTime time ev =
Nothing
fromTimeZone : String -> CalEvent -> Maybe CalEvent
fromTimeZone tzStr ev =
Data.TimeZone.get tzStr
|> Maybe.map (\tz -> { ev | timeZone = tz })
fromWeekDays : String -> CalEvent -> Maybe CalEvent
fromWeekDays str ce =
if startsWithWeekday str then
Just (withWeekday str ce)
else
Nothing
withWeekday : String -> CalEvent -> CalEvent
withWeekday wd ev =
{ ev | weekday = Util.Maybe.fromString wd }
weekDays : List String
weekDays =
[ "Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun" ]
startsWithWeekday : String -> Bool
startsWithWeekday str =
List.any (\a -> String.startsWith a str) weekDays

View File

@ -0,0 +1,47 @@
{-
Copyright 2020 Eike K. & Contributors
SPDX-License-Identifier: AGPL-3.0-or-later
-}
module Data.TimeZone exposing (TimeZone, get, listAll, toName, toZone, utc)
import Dict
import Time exposing (Zone)
import TimeZone as TZ
type TimeZone
= TimeZone ( String, Zone )
get : String -> Maybe TimeZone
get name =
case String.toLower name of
"utc" ->
Just utc
_ ->
Dict.get name TZ.zones
|> Maybe.map (\z -> TimeZone ( name, z () ))
toName : TimeZone -> String
toName (TimeZone ( name, _ )) =
name
toZone : TimeZone -> Zone
toZone (TimeZone ( _, zone )) =
zone
utc : TimeZone
utc =
TimeZone ( "UTC", Time.utc )
listAll : List String
listAll =
"UTC" :: Dict.keys TZ.zones

View File

@ -40,6 +40,7 @@ import Data.Flags exposing (Flags)
import Data.ItemArrange exposing (ItemArrange)
import Data.ItemTemplate exposing (ItemTemplate)
import Data.Pdf exposing (PdfMode)
import Data.TimeZone exposing (TimeZone)
import Data.UiTheme exposing (UiTheme)
import Dict exposing (Dict)
import Html exposing (Attribute, Html, embed, iframe)
@ -80,6 +81,7 @@ type alias StoredUiSettings =
, uiLang : Maybe String
, itemSearchShowGroups : Maybe Bool
, itemSearchArrange : Maybe String
, timeZone : Maybe String
}
@ -105,6 +107,7 @@ emptyStoredSettings =
, uiLang = Nothing
, itemSearchShowGroups = Nothing
, itemSearchArrange = Nothing
, timeZone = Nothing
}
@ -141,6 +144,7 @@ storedUiSettingsDecoder =
|> P.optional "uiLang" maybeString Nothing
|> P.optional "itemSearchShowGroups" maybeBool Nothing
|> P.optional "itemSearchArrange" maybeString Nothing
|> P.optional "timeZone" maybeString Nothing
storedUiSettingsEncode : StoredUiSettings -> Encode.Value
@ -173,6 +177,7 @@ storedUiSettingsEncode value =
, maybeEnc "uiLang" Encode.string value.uiLang
, maybeEnc "itemSearchShowGroups" Encode.bool value.itemSearchShowGroups
, maybeEnc "itemSearchArrange" Encode.string value.itemSearchArrange
, maybeEnc "timeZone" Encode.string value.timeZone
]
@ -205,6 +210,7 @@ type alias UiSettings =
, uiLang : UiLanguage
, itemSearchShowGroups : Bool
, itemSearchArrange : ItemArrange
, timeZone : TimeZone
}
@ -248,6 +254,7 @@ defaults =
, uiLang = Messages.UiLanguage.English
, itemSearchShowGroups = True
, itemSearchArrange = Data.ItemArrange.Cards
, timeZone = Data.TimeZone.utc
}
@ -306,6 +313,9 @@ merge given fallback =
, itemSearchArrange =
Maybe.andThen Data.ItemArrange.fromString given.itemSearchArrange
|> Maybe.withDefault fallback.itemSearchArrange
, timeZone =
Maybe.andThen Data.TimeZone.get given.timeZone
|> Maybe.withDefault fallback.timeZone
}
@ -344,6 +354,7 @@ convert settings =
, uiLang = Just <| Messages.toIso2 settings.uiLang
, itemSearchShowGroups = Just settings.itemSearchShowGroups
, itemSearchArrange = Data.ItemArrange.asString settings.itemSearchArrange |> Just
, timeZone = Data.TimeZone.toName settings.timeZone |> Just
}

View File

@ -12,6 +12,7 @@ module Messages exposing
, toIso2
)
import Data.TimeZone exposing (TimeZone)
import Messages.App
import Messages.Page.CollectiveSettings
import Messages.Page.Dashboard
@ -33,6 +34,7 @@ import Messages.UiLanguage exposing (UiLanguage(..))
-}
type alias Messages =
{ lang : UiLanguage
, timeZone : TimeZone
, iso2 : String
, label : String
, flagIcon : String
@ -53,21 +55,21 @@ type alias Messages =
}
get : UiLanguage -> Messages
get lang =
get : UiLanguage -> TimeZone -> Messages
get lang tz =
case lang of
English ->
gb
gb tz
German ->
de
de tz
{-| Get a ISO-3166-1 code of the given lanugage.
-}
toIso2 : UiLanguage -> String
toIso2 lang =
get lang |> .iso2
get lang Data.TimeZone.utc |> .iso2
{-| Return the UiLanguage from given iso2 code. If the iso2 code is not
@ -98,47 +100,49 @@ fromIso2 iso =
-- use two classes: flag-icon flag-icon-xx where xx is the two-letter country code
gb : Messages
gb =
gb : TimeZone -> Messages
gb tz =
{ lang = English
, timeZone = tz
, iso2 = "gb"
, label = "English"
, flagIcon = "flag-icon flag-icon-gb"
, app = Messages.App.gb
, collectiveSettings = Messages.Page.CollectiveSettings.gb
, collectiveSettings = Messages.Page.CollectiveSettings.gb tz
, login = Messages.Page.Login.gb
, register = Messages.Page.Register.gb
, newInvite = Messages.Page.NewInvite.gb
, upload = Messages.Page.Upload.gb
, itemDetail = Messages.Page.ItemDetail.gb
, queue = Messages.Page.Queue.gb
, userSettings = Messages.Page.UserSettings.gb
, manageData = Messages.Page.ManageData.gb
, search = Messages.Page.Search.gb
, share = Messages.Page.Share.gb
, shareDetail = Messages.Page.ShareDetail.gb
, dashboard = Messages.Page.Dashboard.gb
, itemDetail = Messages.Page.ItemDetail.gb tz
, queue = Messages.Page.Queue.gb tz
, userSettings = Messages.Page.UserSettings.gb tz
, manageData = Messages.Page.ManageData.gb tz
, search = Messages.Page.Search.gb tz
, share = Messages.Page.Share.gb tz
, shareDetail = Messages.Page.ShareDetail.gb tz
, dashboard = Messages.Page.Dashboard.gb tz
}
de : Messages
de =
de : TimeZone -> Messages
de tz =
{ lang = German
, timeZone = tz
, iso2 = "de"
, label = "Deutsch"
, flagIcon = "flag-icon flag-icon-de"
, app = Messages.App.de
, collectiveSettings = Messages.Page.CollectiveSettings.de
, collectiveSettings = Messages.Page.CollectiveSettings.de tz
, login = Messages.Page.Login.de
, register = Messages.Page.Register.de
, newInvite = Messages.Page.NewInvite.de
, upload = Messages.Page.Upload.de
, itemDetail = Messages.Page.ItemDetail.de
, queue = Messages.Page.Queue.de
, userSettings = Messages.Page.UserSettings.de
, manageData = Messages.Page.ManageData.de
, search = Messages.Page.Search.de
, share = Messages.Page.Share.de
, shareDetail = Messages.Page.ShareDetail.de
, dashboard = Messages.Page.Dashboard.de
, itemDetail = Messages.Page.ItemDetail.de tz
, queue = Messages.Page.Queue.de tz
, userSettings = Messages.Page.UserSettings.de tz
, manageData = Messages.Page.ManageData.de tz
, search = Messages.Page.Search.de tz
, share = Messages.Page.Share.de tz
, shareDetail = Messages.Page.ShareDetail.de tz
, dashboard = Messages.Page.Dashboard.de tz
}

View File

@ -11,6 +11,7 @@ module Messages.Comp.AttachmentMeta exposing
, gb
)
import Data.TimeZone exposing (TimeZone)
import Http
import Messages.Basics
import Messages.Comp.HttpError
@ -35,8 +36,8 @@ type alias Texts =
}
gb : Texts
gb =
gb : TimeZone -> Texts
gb tz =
{ basics = Messages.Basics.gb
, httpError = Messages.Comp.HttpError.gb
, extractedMetadata = "Extracted Meta Data"
@ -49,12 +50,12 @@ gb =
, concerningEquipment = "Concerning Equipment"
, itemDate = "Item Date"
, itemDueDate = "Item Due Date"
, formatDateShort = DF.formatDateShort Messages.UiLanguage.English
, formatDateShort = DF.formatDateShort Messages.UiLanguage.English tz
}
de : Texts
de =
de : TimeZone -> Texts
de tz =
{ basics = Messages.Basics.de
, httpError = Messages.Comp.HttpError.de
, extractedMetadata = "Extrahierte Metadaten"
@ -67,5 +68,5 @@ de =
, concerningEquipment = "Betreffende Ausstattung"
, itemDate = "Datum"
, itemDueDate = "Fälligkeitsdatum"
, formatDateShort = DF.formatDateShort Messages.UiLanguage.German
, formatDateShort = DF.formatDateShort Messages.UiLanguage.German tz
}

View File

@ -8,6 +8,7 @@
module Messages.Comp.BoxQueryView exposing (Texts, de, gb)
import Data.ItemTemplate as IT
import Data.TimeZone exposing (TimeZone)
import Http
import Messages.Basics
import Messages.Comp.HttpError
@ -27,30 +28,30 @@ type alias Texts =
}
gb : Texts
gb =
gb : TimeZone -> Texts
gb tz =
{ httpError = Messages.Comp.HttpError.gb
, errorOccurred = "Error retrieving data."
, basics = Messages.Basics.gb
, noResults = "No items found."
, templateCtx =
{ dateFormatLong = DF.formatDateLong Messages.UiLanguage.English
, dateFormatShort = DF.formatDateShort Messages.UiLanguage.English
{ dateFormatLong = DF.formatDateLong Messages.UiLanguage.English tz
, dateFormatShort = DF.formatDateShort Messages.UiLanguage.English tz
, directionLabel = Messages.Data.Direction.gb
}
, itemColumn = Messages.Data.ItemColumn.gb
}
de : Texts
de =
de : TimeZone -> Texts
de tz =
{ httpError = Messages.Comp.HttpError.de
, errorOccurred = "Fehler beim Laden der Daten."
, basics = Messages.Basics.de
, noResults = "Keine Dokumente gefunden."
, templateCtx =
{ dateFormatLong = DF.formatDateLong Messages.UiLanguage.German
, dateFormatShort = DF.formatDateShort Messages.UiLanguage.German
{ dateFormatLong = DF.formatDateLong Messages.UiLanguage.German tz
, dateFormatShort = DF.formatDateShort Messages.UiLanguage.German tz
, directionLabel = Messages.Data.Direction.de
}
, itemColumn = Messages.Data.ItemColumn.de

View File

@ -7,6 +7,7 @@
module Messages.Comp.BoxView exposing (Texts, de, gb)
import Data.TimeZone exposing (TimeZone)
import Messages.Comp.BoxQueryView
import Messages.Comp.BoxStatsView
import Messages.Comp.BoxUploadView
@ -19,17 +20,17 @@ type alias Texts =
}
gb : Texts
gb =
{ queryView = Messages.Comp.BoxQueryView.gb
gb : TimeZone -> Texts
gb tz =
{ queryView = Messages.Comp.BoxQueryView.gb tz
, statsView = Messages.Comp.BoxStatsView.gb
, uploadView = Messages.Comp.BoxUploadView.gb
}
de : Texts
de =
{ queryView = Messages.Comp.BoxQueryView.de
de : TimeZone -> Texts
de tz =
{ queryView = Messages.Comp.BoxQueryView.de tz
, statsView = Messages.Comp.BoxStatsView.de
, uploadView = Messages.Comp.BoxUploadView.de
}

View File

@ -11,6 +11,7 @@ module Messages.Comp.CalEventInput exposing
, gb
)
import Data.TimeZone exposing (TimeZone)
import Http
import Messages.Comp.HttpError
import Messages.DateFormat as DF
@ -32,8 +33,8 @@ type alias Texts =
}
gb : Texts
gb =
gb : TimeZone -> Texts
gb tz =
{ weekday = "Weekday"
, year = "Year"
, month = "Month"
@ -43,13 +44,13 @@ gb =
, error = "Error"
, schedule = "Schedule"
, next = "Next"
, formatDateTime = DF.formatDateTimeLong Messages.UiLanguage.English
, formatDateTime = DF.formatDateTimeLong Messages.UiLanguage.English tz
, httpError = Messages.Comp.HttpError.gb
}
de : Texts
de =
de : TimeZone -> Texts
de tz =
{ weekday = "Wochentag"
, year = "Jahr"
, month = "Monat"
@ -59,6 +60,6 @@ de =
, error = "Fehler"
, schedule = "Zeitplan"
, next = "Nächste Zeiten"
, formatDateTime = DF.formatDateTimeLong Messages.UiLanguage.German
, formatDateTime = DF.formatDateTimeLong Messages.UiLanguage.German tz
, httpError = Messages.Comp.HttpError.de
}

View File

@ -11,6 +11,7 @@ module Messages.Comp.ClassifierSettingsForm exposing
, gb
)
import Data.TimeZone exposing (TimeZone)
import Messages.Basics
import Messages.Comp.CalEventInput
@ -28,10 +29,10 @@ type alias Texts =
}
gb : Texts
gb =
gb : TimeZone -> Texts
gb tz =
{ basics = Messages.Basics.gb
, calEventInput = Messages.Comp.CalEventInput.gb
, calEventInput = Messages.Comp.CalEventInput.gb tz
, autoTaggingText =
"""
@ -53,10 +54,10 @@ Use an empty whitelist to disable auto tagging.
}
de : Texts
de =
de : TimeZone -> Texts
de tz =
{ basics = Messages.Basics.de
, calEventInput = Messages.Comp.CalEventInput.de
, calEventInput = Messages.Comp.CalEventInput.de tz
, autoTaggingText =
"""

View File

@ -12,6 +12,7 @@ module Messages.Comp.CollectiveSettingsForm exposing
)
import Data.Language exposing (Language)
import Data.TimeZone exposing (TimeZone)
import Http
import Messages.Basics
import Messages.Comp.ClassifierSettingsForm
@ -49,11 +50,11 @@ type alias Texts =
}
gb : Texts
gb =
gb : TimeZone -> Texts
gb tz =
{ basics = Messages.Basics.gb
, classifierSettingsForm = Messages.Comp.ClassifierSettingsForm.gb
, emptyTrashForm = Messages.Comp.EmptyTrashForm.gb
, classifierSettingsForm = Messages.Comp.ClassifierSettingsForm.gb tz
, emptyTrashForm = Messages.Comp.EmptyTrashForm.gb tz
, httpError = Messages.Comp.HttpError.gb
, save = "Save"
, saveSettings = "Save Settings"
@ -84,11 +85,11 @@ gb =
}
de : Texts
de =
de : TimeZone -> Texts
de tz =
{ basics = Messages.Basics.de
, classifierSettingsForm = Messages.Comp.ClassifierSettingsForm.de
, emptyTrashForm = Messages.Comp.EmptyTrashForm.de
, classifierSettingsForm = Messages.Comp.ClassifierSettingsForm.de tz
, emptyTrashForm = Messages.Comp.EmptyTrashForm.de tz
, httpError = Messages.Comp.HttpError.de
, save = "Speichern"
, saveSettings = "Einstellungen speichern"

View File

@ -11,6 +11,7 @@ module Messages.Comp.CustomFieldManage exposing
, gb
)
import Data.TimeZone exposing (TimeZone)
import Messages.Basics
import Messages.Comp.CustomFieldForm
import Messages.Comp.CustomFieldTable
@ -25,21 +26,21 @@ type alias Texts =
}
gb : Texts
gb =
gb : TimeZone -> Texts
gb tz =
{ basics = Messages.Basics.gb
, fieldForm = Messages.Comp.CustomFieldForm.gb
, fieldTable = Messages.Comp.CustomFieldTable.gb
, fieldTable = Messages.Comp.CustomFieldTable.gb tz
, addCustomField = "Add a new custom field"
, newCustomField = "New custom field"
}
de : Texts
de =
de : TimeZone -> Texts
de tz =
{ basics = Messages.Basics.de
, fieldForm = Messages.Comp.CustomFieldForm.de
, fieldTable = Messages.Comp.CustomFieldTable.de
, fieldTable = Messages.Comp.CustomFieldTable.de tz
, addCustomField = "Ein neues Benutzerfeld anlegen"
, newCustomField = "Neues Benutzerfeld"
}

View File

@ -11,6 +11,7 @@ module Messages.Comp.CustomFieldTable exposing
, gb
)
import Data.TimeZone exposing (TimeZone)
import Messages.Basics
import Messages.DateFormat as DF
import Messages.UiLanguage
@ -25,21 +26,21 @@ type alias Texts =
}
gb : Texts
gb =
gb : TimeZone -> Texts
gb tz =
{ basics = Messages.Basics.gb
, nameLabel = "Name/Label"
, format = "Format"
, usageCount = "#Usage"
, formatDateShort = DF.formatDateShort Messages.UiLanguage.English
, formatDateShort = DF.formatDateShort Messages.UiLanguage.English tz
}
de : Texts
de =
de : TimeZone -> Texts
de tz =
{ basics = Messages.Basics.de
, nameLabel = "Name/Label"
, format = "Format"
, usageCount = "#Nutzung"
, formatDateShort = DF.formatDateShort Messages.UiLanguage.German
, formatDateShort = DF.formatDateShort Messages.UiLanguage.German tz
}

View File

@ -7,6 +7,7 @@
module Messages.Comp.DashboardView exposing (Texts, de, gb)
import Data.TimeZone exposing (TimeZone)
import Messages.Comp.BoxView
@ -15,13 +16,13 @@ type alias Texts =
}
gb : Texts
gb =
{ boxView = Messages.Comp.BoxView.gb
gb : TimeZone -> Texts
gb tz =
{ boxView = Messages.Comp.BoxView.gb tz
}
de : Texts
de =
{ boxView = Messages.Comp.BoxView.de
de : TimeZone -> Texts
de tz =
{ boxView = Messages.Comp.BoxView.de tz
}

View File

@ -11,6 +11,7 @@ module Messages.Comp.DueItemsTaskForm exposing
, gb
)
import Data.TimeZone exposing (TimeZone)
import Http
import Messages.Basics
import Messages.Comp.CalEventInput
@ -57,10 +58,10 @@ type alias Texts =
}
gb : Texts
gb =
gb : TimeZone -> Texts
gb tz =
{ basics = Messages.Basics.gb
, calEventInput = Messages.Comp.CalEventInput.gb
, calEventInput = Messages.Comp.CalEventInput.gb tz
, httpError = Messages.Comp.HttpError.gb
, channelForm = Messages.Comp.ChannelForm.gb
, tagDropdown = Messages.Comp.TagDropdown.gb
@ -98,10 +99,10 @@ gb =
}
de : Texts
de =
de : TimeZone -> Texts
de tz =
{ basics = Messages.Basics.de
, calEventInput = Messages.Comp.CalEventInput.de
, calEventInput = Messages.Comp.CalEventInput.de tz
, httpError = Messages.Comp.HttpError.de
, channelForm = Messages.Comp.ChannelForm.de
, tagDropdown = Messages.Comp.TagDropdown.de

View File

@ -11,6 +11,7 @@ module Messages.Comp.DueItemsTaskManage exposing
, gb
)
import Data.TimeZone exposing (TimeZone)
import Http
import Messages.Basics
import Messages.Comp.DueItemsTaskForm
@ -34,10 +35,10 @@ type alias Texts =
}
gb : Texts
gb =
gb : TimeZone -> Texts
gb tz =
{ basics = Messages.Basics.gb
, notificationForm = Messages.Comp.DueItemsTaskForm.gb
, notificationForm = Messages.Comp.DueItemsTaskForm.gb tz
, notificationTable = Messages.Comp.DueItemsTaskList.gb
, httpError = Messages.Comp.HttpError.gb
, channelType = Messages.Data.ChannelType.gb
@ -50,10 +51,10 @@ gb =
}
de : Texts
de =
de : TimeZone -> Texts
de tz =
{ basics = Messages.Basics.de
, notificationForm = Messages.Comp.DueItemsTaskForm.de
, notificationForm = Messages.Comp.DueItemsTaskForm.de tz
, notificationTable = Messages.Comp.DueItemsTaskList.de
, httpError = Messages.Comp.HttpError.de
, channelType = Messages.Data.ChannelType.de

View File

@ -11,6 +11,7 @@ module Messages.Comp.EmptyTrashForm exposing
, gb
)
import Data.TimeZone exposing (TimeZone)
import Messages.Basics
import Messages.Comp.CalEventInput
@ -24,20 +25,20 @@ type alias Texts =
}
gb : Texts
gb =
gb : TimeZone -> Texts
gb tz =
{ basics = Messages.Basics.gb
, calEventInput = Messages.Comp.CalEventInput.gb
, calEventInput = Messages.Comp.CalEventInput.gb tz
, schedule = "Schedule"
, minAge = "Minimum Age (Days)"
, minAgeInfo = "The minimum age in days of an items to be removed. The last-update time is used."
}
de : Texts
de =
de : TimeZone -> Texts
de tz =
{ basics = Messages.Basics.de
, calEventInput = Messages.Comp.CalEventInput.de
, calEventInput = Messages.Comp.CalEventInput.de tz
, schedule = "Zeitplan"
, minAge = "Mindestalter (Tage)"
, minAgeInfo = "Das Mindestalter (in Tagen) der Dokumente, die gelöscht werden. Es wird das Datum der letzten Veränderung verwendet."

View File

@ -11,6 +11,7 @@ module Messages.Comp.FolderManage exposing
, gb
)
import Data.TimeZone exposing (TimeZone)
import Messages.Basics
import Messages.Comp.FolderDetail
import Messages.Comp.FolderTable
@ -26,22 +27,22 @@ type alias Texts =
}
gb : Texts
gb =
gb : TimeZone -> Texts
gb tz =
{ basics = Messages.Basics.gb
, folderDetail = Messages.Comp.FolderDetail.gb
, folderTable = Messages.Comp.FolderTable.gb
, folderTable = Messages.Comp.FolderTable.gb tz
, showOwningFoldersOnly = "Show owning folders only"
, createNewFolder = "Create a new folder"
, newFolder = "New Folder"
}
de : Texts
de =
de : TimeZone -> Texts
de tz =
{ basics = Messages.Basics.de
, folderDetail = Messages.Comp.FolderDetail.de
, folderTable = Messages.Comp.FolderTable.de
, folderTable = Messages.Comp.FolderTable.de tz
, showOwningFoldersOnly = "Nur besitzende Ordner anzeigen"
, createNewFolder = "Neuen Ordner anlegen"
, newFolder = "Neuer Ordner"

View File

@ -11,6 +11,7 @@ module Messages.Comp.FolderTable exposing
, gb
)
import Data.TimeZone exposing (TimeZone)
import Messages.Basics
import Messages.DateFormat as DF
import Messages.UiLanguage
@ -24,19 +25,19 @@ type alias Texts =
}
gb : Texts
gb =
gb : TimeZone -> Texts
gb tz =
{ basics = Messages.Basics.gb
, memberCount = "#Member"
, formatDateShort = DF.formatDateShort Messages.UiLanguage.English
, formatDateShort = DF.formatDateShort Messages.UiLanguage.English tz
, owner = "Owner"
}
de : Texts
de =
de : TimeZone -> Texts
de tz =
{ basics = Messages.Basics.de
, memberCount = "#Mitglieder"
, formatDateShort = DF.formatDateShort Messages.UiLanguage.German
, formatDateShort = DF.formatDateShort Messages.UiLanguage.German tz
, owner = "Besitzer"
}

View File

@ -12,6 +12,7 @@ module Messages.Comp.ItemCard exposing
)
import Data.Direction exposing (Direction)
import Data.TimeZone exposing (TimeZone)
import Messages.Basics
import Messages.Data.Direction
import Messages.DateFormat
@ -31,29 +32,29 @@ type alias Texts =
}
gb : Texts
gb =
gb : TimeZone -> Texts
gb tz =
{ basics = Messages.Basics.gb
, dueOn = "Due on"
, new = "New"
, openAttachmentFile = "Open attachment file"
, gotoDetail = "Go to detail view"
, cycleAttachments = "Cycle attachments"
, formatDateLong = Messages.DateFormat.formatDateLong Messages.UiLanguage.English
, formatDateShort = Messages.DateFormat.formatDateShort Messages.UiLanguage.English
, formatDateLong = Messages.DateFormat.formatDateLong Messages.UiLanguage.English tz
, formatDateShort = Messages.DateFormat.formatDateShort Messages.UiLanguage.English tz
, directionLabel = Messages.Data.Direction.gb
}
de : Texts
de =
de : TimeZone -> Texts
de tz =
{ basics = Messages.Basics.de
, dueOn = "Fällig am"
, new = "Neu"
, openAttachmentFile = "Anhang öffnen"
, gotoDetail = "Detailansicht"
, cycleAttachments = "Anhänge durchschalten"
, formatDateLong = Messages.DateFormat.formatDateLong Messages.UiLanguage.German
, formatDateShort = Messages.DateFormat.formatDateShort Messages.UiLanguage.German
, formatDateLong = Messages.DateFormat.formatDateLong Messages.UiLanguage.German tz
, formatDateShort = Messages.DateFormat.formatDateShort Messages.UiLanguage.German tz
, directionLabel = Messages.Data.Direction.de
}

View File

@ -11,6 +11,7 @@ module Messages.Comp.ItemCardList exposing
, gb
)
import Data.TimeZone exposing (TimeZone)
import Messages.Comp.ItemCard
@ -19,13 +20,13 @@ type alias Texts =
}
gb : Texts
gb =
{ itemCard = Messages.Comp.ItemCard.gb
gb : TimeZone -> Texts
gb tz =
{ itemCard = Messages.Comp.ItemCard.gb tz
}
de : Texts
de =
{ itemCard = Messages.Comp.ItemCard.de
de : TimeZone -> Texts
de tz =
{ itemCard = Messages.Comp.ItemCard.de tz
}

View File

@ -11,6 +11,7 @@ module Messages.Comp.ItemDetail exposing
, gb
)
import Data.TimeZone exposing (TimeZone)
import Http
import Messages.Comp.DetailEdit
import Messages.Comp.HttpError
@ -62,12 +63,12 @@ type alias Texts =
}
gb : Texts
gb =
gb : TimeZone -> Texts
gb tz =
{ addFilesForm = Messages.Comp.ItemDetail.AddFilesForm.gb
, itemInfoHeader = Messages.Comp.ItemDetail.ItemInfoHeader.gb
, singleAttachment = Messages.Comp.ItemDetail.SingleAttachment.gb
, sentMails = Messages.Comp.SentMails.gb
, itemInfoHeader = Messages.Comp.ItemDetail.ItemInfoHeader.gb tz
, singleAttachment = Messages.Comp.ItemDetail.SingleAttachment.gb tz
, sentMails = Messages.Comp.SentMails.gb tz
, notes = Messages.Comp.ItemDetail.Notes.gb
, itemMail = Messages.Comp.ItemMail.gb
, detailEdit = Messages.Comp.DetailEdit.gb
@ -91,7 +92,7 @@ gb =
, createdOn = "Created on"
, lastUpdateOn = "Last update on"
, sendingMailNow = "Sending e-mail"
, formatDateTime = DF.formatDateTimeLong Messages.UiLanguage.English
, formatDateTime = DF.formatDateTimeLong Messages.UiLanguage.English tz
, mailSendSuccessful = "Mail sent."
, showQrCode = "Show URL as QR code"
, close = "Close"
@ -100,12 +101,12 @@ gb =
}
de : Texts
de =
de : TimeZone -> Texts
de tz =
{ addFilesForm = Messages.Comp.ItemDetail.AddFilesForm.de
, itemInfoHeader = Messages.Comp.ItemDetail.ItemInfoHeader.de
, singleAttachment = Messages.Comp.ItemDetail.SingleAttachment.de
, sentMails = Messages.Comp.SentMails.de
, itemInfoHeader = Messages.Comp.ItemDetail.ItemInfoHeader.de tz
, singleAttachment = Messages.Comp.ItemDetail.SingleAttachment.de tz
, sentMails = Messages.Comp.SentMails.de tz
, notes = Messages.Comp.ItemDetail.Notes.de
, itemMail = Messages.Comp.ItemMail.de
, detailEdit = Messages.Comp.DetailEdit.de
@ -129,7 +130,7 @@ de =
, createdOn = "Erstellt am"
, lastUpdateOn = "Letzte Aktualisierung"
, sendingMailNow = "E-Mail wird gesendet"
, formatDateTime = DF.formatDateTimeLong Messages.UiLanguage.German
, formatDateTime = DF.formatDateTimeLong Messages.UiLanguage.German tz
, mailSendSuccessful = "E-Mail wurde versendet."
, showQrCode = "Link als QR code anzeigen"
, close = "Schließen"

View File

@ -12,6 +12,7 @@ module Messages.Comp.ItemDetail.EditForm exposing
)
import Data.Direction exposing (Direction)
import Data.TimeZone exposing (TimeZone)
import Messages.Basics
import Messages.Comp.CustomFieldMultiInput
import Messages.Comp.TagDropdown
@ -43,8 +44,8 @@ type alias Texts =
}
gb : Texts
gb =
gb : TimeZone -> Texts
gb tz =
{ basics = Messages.Basics.gb
, customFieldInput = Messages.Comp.CustomFieldMultiInput.gb
, tagDropdown = Messages.Comp.TagDropdown.gb
@ -62,13 +63,13 @@ gb =
, editEquipment = "Edit equipment"
, suggestions = "Suggestions"
, noSuggestions = "No suggestions"
, formatDate = DF.formatDateLong Messages.UiLanguage.English
, formatDate = DF.formatDateLong Messages.UiLanguage.English tz
, direction = Messages.Data.Direction.gb
}
de : Texts
de =
de : TimeZone -> Texts
de tz =
{ basics = Messages.Basics.de
, customFieldInput = Messages.Comp.CustomFieldMultiInput.de
, tagDropdown = Messages.Comp.TagDropdown.de
@ -86,6 +87,6 @@ de =
, editEquipment = "Ausstattung ändern"
, suggestions = "Vorschläge"
, noSuggestions = "Keine Vorschläge"
, formatDate = DF.formatDateLong Messages.UiLanguage.German
, formatDate = DF.formatDateLong Messages.UiLanguage.German tz
, direction = Messages.Data.Direction.de
}

View File

@ -11,6 +11,7 @@ module Messages.Comp.ItemDetail.ItemInfoHeader exposing
, gb
)
import Data.TimeZone exposing (TimeZone)
import Messages.Basics
import Messages.DateFormat as DF
import Messages.UiLanguage
@ -26,23 +27,23 @@ type alias Texts =
}
gb : Texts
gb =
gb : TimeZone -> Texts
gb tz =
{ basics = Messages.Basics.gb
, itemDate = "Item Date"
, dueDate = "Due Date"
, source = "Source"
, new = "New"
, formatDate = DF.formatDateLong Messages.UiLanguage.English
, formatDate = DF.formatDateLong Messages.UiLanguage.English tz
}
de : Texts
de =
de : TimeZone -> Texts
de tz =
{ basics = Messages.Basics.de
, itemDate = "Datum"
, dueDate = "Fälligkeitsdatum"
, source = "Quelle"
, new = "Neu"
, formatDate = DF.formatDateLong Messages.UiLanguage.German
, formatDate = DF.formatDateLong Messages.UiLanguage.German tz
}

View File

@ -11,6 +11,7 @@ module Messages.Comp.ItemDetail.SingleAttachment exposing
, gb
)
import Data.TimeZone exposing (TimeZone)
import Messages.Comp.AttachmentMeta
import Messages.Comp.ItemDetail.ConfirmModal
@ -35,9 +36,9 @@ type alias Texts =
}
gb : Texts
gb =
{ attachmentMeta = Messages.Comp.AttachmentMeta.gb
gb : TimeZone -> Texts
gb tz =
{ attachmentMeta = Messages.Comp.AttachmentMeta.gb tz
, confirmModal = Messages.Comp.ItemDetail.ConfirmModal.gb
, noName = "No name"
, openFileInNewTab = "Open file in new tab"
@ -56,9 +57,9 @@ gb =
}
de : Texts
de =
{ attachmentMeta = Messages.Comp.AttachmentMeta.de
de : TimeZone -> Texts
de tz =
{ attachmentMeta = Messages.Comp.AttachmentMeta.de tz
, confirmModal = Messages.Comp.ItemDetail.ConfirmModal.de
, noName = "Kein Name"
, openFileInNewTab = "Anhang im neuen Tab öffnen"

View File

@ -11,6 +11,7 @@ module Messages.Comp.ItemMerge exposing
, gb
)
import Data.TimeZone exposing (TimeZone)
import Http
import Messages.Basics
import Messages.Comp.HttpError
@ -35,15 +36,15 @@ type alias Texts =
}
gb : Texts
gb =
gb : TimeZone -> Texts
gb tz =
{ basics = Messages.Basics.gb
, httpError = Messages.Comp.HttpError.gb
, title = "Merge Items"
, infoText = "When merging items the first item in the list acts as the target. Every other items metadata is copied into the target item. If the property is a single value (like correspondent), it is only set if not already present. Tags, custom fields and attachments are added. The items can be reordered using drag&drop."
, deleteWarn = "Note that all items but the first one is deleted after a successful merge!"
, formatDateLong = Messages.DateFormat.formatDateLong Messages.UiLanguage.English
, formatDateShort = Messages.DateFormat.formatDateShort Messages.UiLanguage.English
, formatDateLong = Messages.DateFormat.formatDateLong Messages.UiLanguage.English tz
, formatDateShort = Messages.DateFormat.formatDateShort Messages.UiLanguage.English tz
, submitMerge = "Merge"
, submitMergeTitle = "Merge the documents now"
, cancelMerge = "Cancel"
@ -53,15 +54,15 @@ gb =
}
de : Texts
de =
de : TimeZone -> Texts
de tz =
{ basics = Messages.Basics.de
, httpError = Messages.Comp.HttpError.de
, title = "Dokumente zusammenführen"
, infoText = "Beim Zusammenführen der Dokumente, wird das erste in der Liste als Zieldokument verwendet. Die Metadaten der anderen Dokumente werden der Reihe nach auf des Zieldokument geschrieben. Metadaten die nur einen Wert haben, werden nur gesetzt falls noch kein Wert existiert. Tags, Benutzerfelder und Anhänge werden zu dem Zieldokument hinzugefügt. Die Einträge können mit Drag&Drop umgeordnet werden."
, deleteWarn = "Bitte beachte, dass nach erfolgreicher Zusammenführung alle anderen Dokumente gelöscht werden!"
, formatDateLong = Messages.DateFormat.formatDateLong Messages.UiLanguage.German
, formatDateShort = Messages.DateFormat.formatDateShort Messages.UiLanguage.German
, formatDateLong = Messages.DateFormat.formatDateLong Messages.UiLanguage.German tz
, formatDateShort = Messages.DateFormat.formatDateShort Messages.UiLanguage.German tz
, submitMerge = "Zusammenführen"
, submitMergeTitle = "Dokumente jetzt zusammenführen"
, cancelMerge = "Abbrechen"

View File

@ -11,6 +11,7 @@ module Messages.Comp.OtpSetup exposing
, gb
)
import Data.TimeZone exposing (TimeZone)
import Http
import Messages.Comp.HttpError
import Messages.DateFormat
@ -43,10 +44,10 @@ type alias Texts =
}
gb : Texts
gb =
gb : TimeZone -> Texts
gb tz =
{ httpError = Messages.Comp.HttpError.gb
, formatDateShort = Messages.DateFormat.formatDateShort Messages.UiLanguage.English
, formatDateShort = Messages.DateFormat.formatDateShort Messages.UiLanguage.English tz
, errorTitle = "Error"
, stateErrorInfoText = "There was a problem determining the current state of your two factor authentication scheme:"
, errorGeneratingQR = "Error generating QR Code"
@ -70,10 +71,10 @@ gb =
}
de : Texts
de =
de : TimeZone -> Texts
de tz =
{ httpError = Messages.Comp.HttpError.de
, formatDateShort = Messages.DateFormat.formatDateShort Messages.UiLanguage.German
, formatDateShort = Messages.DateFormat.formatDateShort Messages.UiLanguage.German tz
, errorTitle = "Fehler"
, stateErrorInfoText = "Es gab ein Problem, den Status der Zwei-Faktor-Authentifizierung zu ermittlen:"
, errorGeneratingQR = "Fehler beim Generieren des QR-Code"

View File

@ -11,6 +11,7 @@ module Messages.Comp.PeriodicQueryTaskForm exposing
, gb
)
import Data.TimeZone exposing (TimeZone)
import Http
import Messages.Basics
import Messages.Comp.BookmarkDropdown
@ -49,10 +50,10 @@ type alias Texts =
}
gb : Texts
gb =
gb : TimeZone -> Texts
gb tz =
{ basics = Messages.Basics.gb
, calEventInput = Messages.Comp.CalEventInput.gb
, calEventInput = Messages.Comp.CalEventInput.gb tz
, channelForm = Messages.Comp.ChannelForm.gb
, httpError = Messages.Comp.HttpError.gb
, bookmarkDropdown = Messages.Comp.BookmarkDropdown.gb
@ -83,10 +84,10 @@ gb =
}
de : Texts
de =
de : TimeZone -> Texts
de tz =
{ basics = Messages.Basics.de
, calEventInput = Messages.Comp.CalEventInput.de
, calEventInput = Messages.Comp.CalEventInput.de tz
, channelForm = Messages.Comp.ChannelForm.de
, httpError = Messages.Comp.HttpError.de
, bookmarkDropdown = Messages.Comp.BookmarkDropdown.de

View File

@ -11,6 +11,7 @@ module Messages.Comp.PeriodicQueryTaskManage exposing
, gb
)
import Data.TimeZone exposing (TimeZone)
import Http
import Messages.Basics
import Messages.Comp.HttpError
@ -38,10 +39,10 @@ type alias Texts =
}
gb : Texts
gb =
gb : TimeZone -> Texts
gb tz =
{ basics = Messages.Basics.gb
, notificationForm = Messages.Comp.PeriodicQueryTaskForm.gb
, notificationForm = Messages.Comp.PeriodicQueryTaskForm.gb tz
, notificationTable = Messages.Comp.PeriodicQueryTaskList.gb
, httpError = Messages.Comp.HttpError.gb
, channelType = Messages.Data.ChannelType.gb
@ -58,10 +59,10 @@ gb =
}
de : Texts
de =
de : TimeZone -> Texts
de tz =
{ basics = Messages.Basics.de
, notificationForm = Messages.Comp.PeriodicQueryTaskForm.de
, notificationForm = Messages.Comp.PeriodicQueryTaskForm.de tz
, notificationTable = Messages.Comp.PeriodicQueryTaskList.de
, httpError = Messages.Comp.HttpError.de
, channelType = Messages.Data.ChannelType.de

View File

@ -11,6 +11,7 @@ module Messages.Comp.PublishItems exposing
, gb
)
import Data.TimeZone exposing (TimeZone)
import Http
import Messages.Basics
import Messages.Comp.HttpError
@ -43,17 +44,17 @@ type alias Texts =
}
gb : Texts
gb =
gb : TimeZone -> Texts
gb tz =
{ basics = Messages.Basics.gb
, httpError = Messages.Comp.HttpError.gb
, shareForm = Messages.Comp.ShareForm.gb
, shareView = Messages.Comp.ShareView.gb
, shareView = Messages.Comp.ShareView.gb tz
, shareMail = Messages.Comp.ShareMail.gb
, title = "Publish Items"
, infoText = "Publishing items creates a cryptic link, which can be used by everyone to see the selected documents. This link cannot be guessed, but is public! It exists for a certain amount of time and can be further protected using a password."
, formatDateLong = Messages.DateFormat.formatDateLong Messages.UiLanguage.English
, formatDateShort = Messages.DateFormat.formatDateShort Messages.UiLanguage.English
, formatDateLong = Messages.DateFormat.formatDateLong Messages.UiLanguage.English tz
, formatDateShort = Messages.DateFormat.formatDateShort Messages.UiLanguage.English tz
, submitPublish = "Publish"
, submitPublishTitle = "Publish the documents now"
, cancelPublish = "Cancel"
@ -66,17 +67,17 @@ gb =
}
de : Texts
de =
de : TimeZone -> Texts
de tz =
{ basics = Messages.Basics.de
, httpError = Messages.Comp.HttpError.de
, shareForm = Messages.Comp.ShareForm.de
, shareView = Messages.Comp.ShareView.de
, shareView = Messages.Comp.ShareView.de tz
, shareMail = Messages.Comp.ShareMail.de
, title = "Dokumente publizieren"
, infoText = "Beim Publizieren der Dokumente wird ein kryptischer Link erzeugt, mit welchem jeder die dahinter publizierten Dokumente einsehen kann. Dieser Link kann nicht erraten werden, ist aber öffentlich. Er ist zeitlich begrenzt und kann zusätzlich mit einem Passwort geschützt werden."
, formatDateLong = Messages.DateFormat.formatDateLong Messages.UiLanguage.German
, formatDateShort = Messages.DateFormat.formatDateShort Messages.UiLanguage.German
, formatDateLong = Messages.DateFormat.formatDateLong Messages.UiLanguage.German tz
, formatDateShort = Messages.DateFormat.formatDateShort Messages.UiLanguage.German tz
, submitPublish = "Publizieren"
, submitPublishTitle = "Dokumente jetzt publizieren"
, cancelPublish = "Abbrechen"

View File

@ -11,6 +11,7 @@ module Messages.Comp.ScanMailboxForm exposing
, gb
)
import Data.TimeZone exposing (TimeZone)
import Http
import Messages.Basics
import Messages.Comp.CalEventInput
@ -80,10 +81,10 @@ type alias Texts =
}
gb : Texts
gb =
gb : TimeZone -> Texts
gb tz =
{ basics = Messages.Basics.gb
, calEventInput = Messages.Comp.CalEventInput.gb
, calEventInput = Messages.Comp.CalEventInput.gb tz
, httpError = Messages.Comp.HttpError.gb
, tagDropdown = Messages.Comp.TagDropdown.gb
, reallyDeleteTask = "Really delete this scan mailbox task?"
@ -165,10 +166,10 @@ gb =
}
de : Texts
de =
de : TimeZone -> Texts
de tz =
{ basics = Messages.Basics.de
, calEventInput = Messages.Comp.CalEventInput.de
, calEventInput = Messages.Comp.CalEventInput.de tz
, httpError = Messages.Comp.HttpError.de
, tagDropdown = Messages.Comp.TagDropdown.de
, reallyDeleteTask = "Den Auftrag wirklich löschen?"

View File

@ -11,6 +11,7 @@ module Messages.Comp.ScanMailboxManage exposing
, gb
)
import Data.TimeZone exposing (TimeZone)
import Http
import Messages.Basics
import Messages.Comp.HttpError
@ -32,10 +33,10 @@ type alias Texts =
}
gb : Texts
gb =
gb : TimeZone -> Texts
gb tb =
{ basics = Messages.Basics.gb
, form = Messages.Comp.ScanMailboxForm.gb
, form = Messages.Comp.ScanMailboxForm.gb tb
, table = Messages.Comp.ScanMailboxTable.gb
, httpError = Messages.Comp.HttpError.gb
, newTask = "New Task"
@ -47,10 +48,10 @@ gb =
}
de : Texts
de =
de : TimeZone -> Texts
de tz =
{ basics = Messages.Basics.de
, form = Messages.Comp.ScanMailboxForm.de
, form = Messages.Comp.ScanMailboxForm.de tz
, table = Messages.Comp.ScanMailboxTable.de
, httpError = Messages.Comp.HttpError.de
, newTask = "Neuer Auftrag"

View File

@ -11,6 +11,7 @@ module Messages.Comp.SentMails exposing
, gb
)
import Data.TimeZone exposing (TimeZone)
import Messages.DateFormat as DF
import Messages.UiLanguage
@ -26,25 +27,25 @@ type alias Texts =
}
gb : Texts
gb =
gb : TimeZone -> Texts
gb tz =
{ from = "From"
, date = "Date"
, recipients = "Recipients"
, subject = "Subject"
, sent = "Sent"
, sender = "Sender"
, formatDateTime = DF.formatDateTimeLong Messages.UiLanguage.English
, formatDateTime = DF.formatDateTimeLong Messages.UiLanguage.English tz
}
de : Texts
de =
de : TimeZone -> Texts
de tz =
{ from = "Von"
, date = "Datum"
, recipients = "Empfänger"
, subject = "Betreff"
, sent = "Gesendet"
, sender = "Absender"
, formatDateTime = DF.formatDateTimeLong Messages.UiLanguage.German
, formatDateTime = DF.formatDateTimeLong Messages.UiLanguage.German tz
}

View File

@ -11,6 +11,7 @@ module Messages.Comp.ShareManage exposing
, gb
)
import Data.TimeZone exposing (TimeZone)
import Http
import Messages.Basics
import Messages.Comp.HttpError
@ -44,13 +45,13 @@ type alias Texts =
}
gb : Texts
gb =
gb : TimeZone -> Texts
gb tz =
{ basics = Messages.Basics.gb
, httpError = Messages.Comp.HttpError.gb
, shareTable = Messages.Comp.ShareTable.gb
, shareTable = Messages.Comp.ShareTable.gb tz
, shareForm = Messages.Comp.ShareForm.gb
, shareView = Messages.Comp.ShareView.gb
, shareView = Messages.Comp.ShareView.gb tz
, shareMail = Messages.Comp.ShareMail.gb
, newShare = "New share"
, copyToClipboard = "Copy to clipboard"
@ -69,12 +70,12 @@ gb =
}
de : Texts
de =
de : TimeZone -> Texts
de tz =
{ basics = Messages.Basics.de
, shareTable = Messages.Comp.ShareTable.de
, shareTable = Messages.Comp.ShareTable.de tz
, shareForm = Messages.Comp.ShareForm.de
, shareView = Messages.Comp.ShareView.de
, shareView = Messages.Comp.ShareView.de tz
, httpError = Messages.Comp.HttpError.de
, shareMail = Messages.Comp.ShareMail.de
, newShare = "Neue Freigabe"

View File

@ -11,6 +11,7 @@ module Messages.Comp.ShareTable exposing
, gb
)
import Data.TimeZone exposing (TimeZone)
import Messages.Basics
import Messages.DateFormat as DF
import Messages.UiLanguage
@ -25,20 +26,20 @@ type alias Texts =
}
gb : Texts
gb =
gb : TimeZone -> Texts
gb tz =
{ basics = Messages.Basics.gb
, formatDateTime = DF.formatDateTimeLong Messages.UiLanguage.English
, formatDateTime = DF.formatDateTimeLong Messages.UiLanguage.English tz
, active = "Active"
, publishUntil = "Publish Until"
, user = "User"
}
de : Texts
de =
de : TimeZone -> Texts
de tz =
{ basics = Messages.Basics.de
, formatDateTime = DF.formatDateTimeLong Messages.UiLanguage.German
, formatDateTime = DF.formatDateTimeLong Messages.UiLanguage.German tz
, active = "Aktiv"
, publishUntil = "Publiziert bis"
, user = "Benutzer"

View File

@ -11,6 +11,7 @@ module Messages.Comp.ShareView exposing
, gb
)
import Data.TimeZone exposing (TimeZone)
import Messages.Basics
import Messages.DateFormat as DF
import Messages.UiLanguage
@ -32,10 +33,10 @@ type alias Texts =
}
gb : Texts
gb =
gb : TimeZone -> Texts
gb tz =
{ basics = Messages.Basics.gb
, date = DF.formatDateLong Messages.UiLanguage.English
, date = DF.formatDateLong Messages.UiLanguage.English tz
, qrCodeError = "Error generating QR Code."
, expiredInfo = "This share has expired."
, disabledInfo = "This share is disabled."
@ -49,10 +50,10 @@ gb =
}
de : Texts
de =
de : TimeZone -> Texts
de tz =
{ basics = Messages.Basics.de
, date = DF.formatDateLong Messages.UiLanguage.German
, date = DF.formatDateLong Messages.UiLanguage.German tz
, qrCodeError = "Fehler beim Erzeugen des QR-Codes."
, expiredInfo = "Diese Freigabe ist abgelaufen."
, disabledInfo = "Diese Freigae ist nicht aktiv."

View File

@ -11,6 +11,7 @@ module Messages.Comp.UserManage exposing
, gb
)
import Data.TimeZone exposing (TimeZone)
import Http
import Messages.Basics
import Messages.Comp.HttpError
@ -38,9 +39,9 @@ type alias Texts =
}
gb : Texts
gb =
{ userTable = Messages.Comp.UserTable.gb
gb : TimeZone -> Texts
gb tz =
{ userTable = Messages.Comp.UserTable.gb tz
, userForm = Messages.Comp.UserForm.gb
, basics = Messages.Basics.gb
, httpError = Messages.Comp.HttpError.gb
@ -59,9 +60,9 @@ gb =
}
de : Texts
de =
{ userTable = Messages.Comp.UserTable.de
de : TimeZone -> Texts
de tz =
{ userTable = Messages.Comp.UserTable.de tz
, userForm = Messages.Comp.UserForm.de
, basics = Messages.Basics.de
, httpError = Messages.Comp.HttpError.de

View File

@ -11,6 +11,7 @@ module Messages.Comp.UserTable exposing
, gb
)
import Data.TimeZone exposing (TimeZone)
import Messages.Basics
import Messages.DateFormat as DF
import Messages.UiLanguage
@ -28,8 +29,8 @@ type alias Texts =
}
gb : Texts
gb =
gb : TimeZone -> Texts
gb tz =
{ basics = Messages.Basics.gb
, login = "Login"
, state = "State"
@ -37,12 +38,12 @@ gb =
, email = "E-Mail"
, logins = "Logins"
, lastLogin = "Last Login"
, formatDateTime = DF.formatDateTimeLong Messages.UiLanguage.English
, formatDateTime = DF.formatDateTimeLong Messages.UiLanguage.English tz
}
de : Texts
de =
de : TimeZone -> Texts
de tz =
{ basics = Messages.Basics.de
, login = "Benutzername"
, state = "Status"
@ -50,5 +51,5 @@ de =
, email = "E-Mail"
, logins = "Anmeldungen"
, lastLogin = "Letzte Anmeldung"
, formatDateTime = DF.formatDateTimeLong Messages.UiLanguage.German
, formatDateTime = DF.formatDateTimeLong Messages.UiLanguage.German tz
}

View File

@ -11,8 +11,10 @@ module Messages.DateFormat exposing
, formatDateShort
, formatDateTimeLong
, formatDateTimeShort
, formatIsoDateTimeUtc
)
import Data.TimeZone exposing (TimeZone)
import DateFormat exposing (Token)
import DateFormat.Language as DL
import Messages.UiLanguage exposing (UiLanguage(..))
@ -20,6 +22,7 @@ import Time
exposing
( Month(..)
, Weekday(..)
, Zone
)
@ -42,8 +45,8 @@ get lang =
de
format : UiLanguage -> (DateTimeMsg -> List Token) -> Int -> String
format lang pattern millis =
format : UiLanguage -> TimeZone -> (DateTimeMsg -> List Token) -> Int -> String
format lang zone pattern millis =
let
msg =
get lang
@ -51,27 +54,50 @@ format lang pattern millis =
fmt =
DateFormat.formatWithLanguage msg.lang (pattern msg)
in
fmt Time.utc (Time.millisToPosix millis)
fmt (Data.TimeZone.toZone zone) (Time.millisToPosix millis)
formatDateTimeLong : UiLanguage -> Int -> String
formatDateTimeLong lang millis =
format lang .dateTimeLong millis
formatDateTimeLong : UiLanguage -> TimeZone -> Int -> String
formatDateTimeLong lang zone millis =
format lang zone .dateTimeLong millis
formatDateLong : UiLanguage -> Int -> String
formatDateLong lang millis =
format lang .dateLong millis
formatDateLong : UiLanguage -> TimeZone -> Int -> String
formatDateLong lang zone millis =
format lang zone .dateLong millis
formatDateShort : UiLanguage -> Int -> String
formatDateShort lang millis =
format lang .dateShort millis
formatDateShort : UiLanguage -> TimeZone -> Int -> String
formatDateShort lang zone millis =
format lang zone .dateShort millis
formatDateTimeShort : UiLanguage -> Int -> String
formatDateTimeShort lang millis =
format lang .dateTimeShort millis
formatDateTimeShort : UiLanguage -> TimeZone -> Int -> String
formatDateTimeShort lang zone millis =
format lang zone .dateTimeShort millis
isoDateTimeFormatter : List Token
isoDateTimeFormatter =
[ DateFormat.yearNumber
, DateFormat.text "-"
, DateFormat.monthFixed
, DateFormat.text "-"
, DateFormat.dayOfMonthFixed
, DateFormat.text "T"
, DateFormat.hourMilitaryNumber
, DateFormat.text ":"
, DateFormat.minuteFixed
, DateFormat.text ":"
, DateFormat.secondFixed
, DateFormat.text "Z"
]
formatIsoDateTimeUtc : Int -> String
formatIsoDateTimeUtc millis =
Time.millisToPosix millis
|> DateFormat.format isoDateTimeFormatter Time.utc

View File

@ -11,6 +11,7 @@ module Messages.Page.CollectiveSettings exposing
, gb
)
import Data.TimeZone exposing (TimeZone)
import Http
import Messages.Basics
import Messages.Comp.CollectiveSettingsForm
@ -39,13 +40,13 @@ type alias Texts =
}
gb : Texts
gb =
gb : TimeZone -> Texts
gb tz =
{ basics = Messages.Basics.gb
, userManage = Messages.Comp.UserManage.gb
, collectiveSettingsForm = Messages.Comp.CollectiveSettingsForm.gb
, userManage = Messages.Comp.UserManage.gb tz
, collectiveSettingsForm = Messages.Comp.CollectiveSettingsForm.gb tz
, sourceManage = Messages.Comp.SourceManage.gb
, shareManage = Messages.Comp.ShareManage.gb
, shareManage = Messages.Comp.ShareManage.gb tz
, httpError = Messages.Comp.HttpError.gb
, collectiveSettings = "Collective Settings"
, insights = "Insights"
@ -59,13 +60,13 @@ gb =
}
de : Texts
de =
de : TimeZone -> Texts
de tz =
{ basics = Messages.Basics.de
, userManage = Messages.Comp.UserManage.de
, collectiveSettingsForm = Messages.Comp.CollectiveSettingsForm.de
, userManage = Messages.Comp.UserManage.de tz
, collectiveSettingsForm = Messages.Comp.CollectiveSettingsForm.de tz
, sourceManage = Messages.Comp.SourceManage.de
, shareManage = Messages.Comp.ShareManage.de
, shareManage = Messages.Comp.ShareManage.de tz
, httpError = Messages.Comp.HttpError.de
, collectiveSettings = "Kollektiveinstellungen"
, insights = "Statistiken"

View File

@ -7,6 +7,7 @@
module Messages.Page.Dashboard exposing (Texts, de, gb)
import Data.TimeZone exposing (TimeZone)
import Messages.Basics
import Messages.Comp.BookmarkChooser
import Messages.Comp.DashboardManage
@ -55,21 +56,21 @@ type alias Texts =
}
gb : Texts
gb =
gb : TimeZone -> Texts
gb tz =
{ basics = Messages.Basics.gb
, bookmarkChooser = Messages.Comp.BookmarkChooser.gb
, notificationHookManage = Messages.Comp.NotificationHookManage.gb
, periodicQueryManage = Messages.Comp.PeriodicQueryTaskManage.gb
, periodicQueryManage = Messages.Comp.PeriodicQueryTaskManage.gb tz
, sourceManage = Messages.Comp.SourceManage.gb
, shareManage = Messages.Comp.ShareManage.gb
, shareManage = Messages.Comp.ShareManage.gb tz
, organizationManage = Messages.Comp.OrgManage.gb
, personManage = Messages.Comp.PersonManage.gb
, equipManage = Messages.Comp.EquipmentManage.gb
, tagManage = Messages.Comp.TagManage.gb
, folderManage = Messages.Comp.FolderManage.gb
, folderManage = Messages.Comp.FolderManage.gb tz
, uploadForm = Messages.Comp.UploadForm.gb
, dashboard = Messages.Comp.DashboardView.gb
, dashboard = Messages.Comp.DashboardView.gb tz
, dashboardManage = Messages.Comp.DashboardManage.gb
, defaultDashboard = Messages.Page.DefaultDashboard.gb
, accountScope = Messages.Data.AccountScope.gb
@ -86,21 +87,21 @@ gb =
}
de : Texts
de =
de : TimeZone -> Texts
de tz =
{ basics = Messages.Basics.de
, bookmarkChooser = Messages.Comp.BookmarkChooser.de
, notificationHookManage = Messages.Comp.NotificationHookManage.de
, periodicQueryManage = Messages.Comp.PeriodicQueryTaskManage.de
, periodicQueryManage = Messages.Comp.PeriodicQueryTaskManage.de tz
, sourceManage = Messages.Comp.SourceManage.de
, shareManage = Messages.Comp.ShareManage.de
, shareManage = Messages.Comp.ShareManage.de tz
, organizationManage = Messages.Comp.OrgManage.de
, personManage = Messages.Comp.PersonManage.de
, equipManage = Messages.Comp.EquipmentManage.de
, tagManage = Messages.Comp.TagManage.de
, folderManage = Messages.Comp.FolderManage.de
, folderManage = Messages.Comp.FolderManage.de tz
, uploadForm = Messages.Comp.UploadForm.de
, dashboard = Messages.Comp.DashboardView.de
, dashboard = Messages.Comp.DashboardView.de tz
, dashboardManage = Messages.Comp.DashboardManage.de
, defaultDashboard = Messages.Page.DefaultDashboard.de
, accountScope = Messages.Data.AccountScope.de

View File

@ -11,6 +11,7 @@ module Messages.Page.ItemDetail exposing
, gb
)
import Data.TimeZone exposing (TimeZone)
import Messages.Comp.ItemDetail
import Messages.Comp.ItemDetail.EditForm
@ -23,19 +24,19 @@ type alias Texts =
}
gb : Texts
gb =
{ itemDetail = Messages.Comp.ItemDetail.gb
, editForm = Messages.Comp.ItemDetail.EditForm.gb
gb : TimeZone -> Texts
gb tz =
{ itemDetail = Messages.Comp.ItemDetail.gb tz
, editForm = Messages.Comp.ItemDetail.EditForm.gb tz
, editMetadata = "Edit Metadata"
, collapseExpand = "Collapse/Expand"
}
de : Texts
de =
{ itemDetail = Messages.Comp.ItemDetail.de
, editForm = Messages.Comp.ItemDetail.EditForm.de
de : TimeZone -> Texts
de tz =
{ itemDetail = Messages.Comp.ItemDetail.de tz
, editForm = Messages.Comp.ItemDetail.EditForm.de tz
, editMetadata = "Metadaten ändern"
, collapseExpand = "Aus-/Einklappen"
}

View File

@ -11,6 +11,7 @@ module Messages.Page.ManageData exposing
, gb
)
import Data.TimeZone exposing (TimeZone)
import Messages.Basics
import Messages.Comp.BookmarkManage
import Messages.Comp.CustomFieldManage
@ -35,30 +36,30 @@ type alias Texts =
}
gb : Texts
gb =
gb : TimeZone -> Texts
gb tz =
{ basics = Messages.Basics.gb
, tagManage = Messages.Comp.TagManage.gb
, equipmentManage = Messages.Comp.EquipmentManage.gb
, orgManage = Messages.Comp.OrgManage.gb
, personManage = Messages.Comp.PersonManage.gb
, folderManage = Messages.Comp.FolderManage.gb
, customFieldManage = Messages.Comp.CustomFieldManage.gb
, folderManage = Messages.Comp.FolderManage.gb tz
, customFieldManage = Messages.Comp.CustomFieldManage.gb tz
, bookmarkManage = Messages.Comp.BookmarkManage.gb
, manageData = "Manage Data"
, bookmarks = "Bookmarks"
}
de : Texts
de =
de : TimeZone -> Texts
de tz =
{ basics = Messages.Basics.de
, tagManage = Messages.Comp.TagManage.de
, equipmentManage = Messages.Comp.EquipmentManage.de
, orgManage = Messages.Comp.OrgManage.de
, personManage = Messages.Comp.PersonManage.de
, folderManage = Messages.Comp.FolderManage.de
, customFieldManage = Messages.Comp.CustomFieldManage.de
, folderManage = Messages.Comp.FolderManage.de tz
, customFieldManage = Messages.Comp.CustomFieldManage.de tz
, bookmarkManage = Messages.Comp.BookmarkManage.de
, manageData = "Daten verwalten"
, bookmarks = "Bookmarks"

View File

@ -11,6 +11,7 @@ module Messages.Page.Queue exposing
, gb
)
import Data.TimeZone exposing (TimeZone)
import Http
import Messages.Basics
import Messages.Comp.HttpError
@ -44,8 +45,8 @@ type alias Texts =
}
gb : Texts
gb =
gb : TimeZone -> Texts
gb tz =
{ basics = Messages.Basics.gb
, httpError = Messages.Comp.HttpError.gb
, currentlyRunning = "Currently Running"
@ -66,13 +67,13 @@ gb =
, retries = "Retries"
, changePriority = "Change priority of this job"
, prio = "Prio"
, formatDateTime = DF.formatDateTimeLong Messages.UiLanguage.English
, formatDateTime = DF.formatDateTimeLong Messages.UiLanguage.English tz
, sidebarTitle = "Processing"
}
de : Texts
de =
de : TimeZone -> Texts
de tz =
{ basics = Messages.Basics.de
, httpError = Messages.Comp.HttpError.de
, currentlyRunning = "Wird ausgeführt"
@ -93,6 +94,6 @@ de =
, retries = "Versuche"
, changePriority = "Priorität des Jobs ändern"
, prio = "Prio"
, formatDateTime = DF.formatDateTimeLong Messages.UiLanguage.German
, formatDateTime = DF.formatDateTimeLong Messages.UiLanguage.German tz
, sidebarTitle = "Verarbeitung"
}

View File

@ -11,6 +11,7 @@ module Messages.Page.Search exposing
, gb
)
import Data.TimeZone exposing (TimeZone)
import Messages.Basics
import Messages.Comp.BookmarkQueryManage
import Messages.Comp.ItemCardList
@ -61,14 +62,14 @@ type alias Texts =
}
gb : Texts
gb =
gb : TimeZone -> Texts
gb tz =
{ basics = Messages.Basics.gb
, itemCardList = Messages.Comp.ItemCardList.gb
, itemCardList = Messages.Comp.ItemCardList.gb tz
, searchStatsView = Messages.Comp.SearchStatsView.gb
, sideMenu = Messages.Page.SearchSideMenu.gb
, itemMerge = Messages.Comp.ItemMerge.gb
, publishItems = Messages.Comp.PublishItems.gb
, itemMerge = Messages.Comp.ItemMerge.gb tz
, publishItems = Messages.Comp.PublishItems.gb tz
, bookmarkManage = Messages.Comp.BookmarkQueryManage.gb
, contentSearch = "Content search"
, searchInNames = "Search in names"
@ -103,14 +104,14 @@ gb =
}
de : Texts
de =
de : TimeZone -> Texts
de tz =
{ basics = Messages.Basics.de
, itemCardList = Messages.Comp.ItemCardList.de
, itemCardList = Messages.Comp.ItemCardList.de tz
, searchStatsView = Messages.Comp.SearchStatsView.de
, sideMenu = Messages.Page.SearchSideMenu.de
, itemMerge = Messages.Comp.ItemMerge.de
, publishItems = Messages.Comp.PublishItems.de
, itemMerge = Messages.Comp.ItemMerge.de tz
, publishItems = Messages.Comp.PublishItems.de tz
, bookmarkManage = Messages.Comp.BookmarkQueryManage.de
, contentSearch = "Volltextsuche"
, searchInNames = "Suche in Namen"

View File

@ -7,6 +7,7 @@
module Messages.Page.Share exposing (..)
import Data.TimeZone exposing (TimeZone)
import Http
import Messages.Basics
import Messages.Comp.HttpError
@ -32,11 +33,11 @@ type alias Texts =
}
gb : Texts
gb =
gb : TimeZone -> Texts
gb tz =
{ searchMenu = Messages.Comp.SearchMenu.gb
, basics = Messages.Basics.gb
, itemCardList = Messages.Comp.ItemCardList.gb
, itemCardList = Messages.Comp.ItemCardList.gb tz
, passwordForm = Messages.Comp.SharePasswordForm.gb
, authFailed = "This share does not exist."
, httpError = Messages.Comp.HttpError.gb
@ -50,11 +51,11 @@ gb =
}
de : Texts
de =
de : TimeZone -> Texts
de tz =
{ searchMenu = Messages.Comp.SearchMenu.de
, basics = Messages.Basics.de
, itemCardList = Messages.Comp.ItemCardList.de
, itemCardList = Messages.Comp.ItemCardList.de tz
, passwordForm = Messages.Comp.SharePasswordForm.de
, authFailed = "Diese Freigabe existiert nicht."
, httpError = Messages.Comp.HttpError.de

View File

@ -8,6 +8,7 @@
module Messages.Page.ShareDetail exposing (..)
import Data.Fields exposing (Field)
import Data.TimeZone exposing (TimeZone)
import Http
import Messages.Basics
import Messages.Comp.HttpError
@ -31,13 +32,13 @@ type alias Texts =
}
gb : Texts
gb =
gb : TimeZone -> Texts
gb tz =
{ passwordForm = Messages.Comp.SharePasswordForm.gb
, basics = Messages.Basics.gb
, field = Messages.Data.Fields.gb
, formatDateLong = Messages.DateFormat.formatDateLong English
, formatDateShort = Messages.DateFormat.formatDateShort English
, formatDateLong = Messages.DateFormat.formatDateLong English tz
, formatDateShort = Messages.DateFormat.formatDateShort English tz
, authFailed = "This share does not exist."
, httpError = Messages.Comp.HttpError.gb
, tagsAndFields = "Tags & Fields"
@ -46,13 +47,13 @@ gb =
}
de : Texts
de =
de : TimeZone -> Texts
de tz =
{ passwordForm = Messages.Comp.SharePasswordForm.de
, basics = Messages.Basics.de
, field = Messages.Data.Fields.de
, formatDateLong = Messages.DateFormat.formatDateLong German
, formatDateShort = Messages.DateFormat.formatDateShort German
, formatDateLong = Messages.DateFormat.formatDateLong German tz
, formatDateShort = Messages.DateFormat.formatDateShort German tz
, authFailed = "Diese Freigabe existiert nicht."
, httpError = Messages.Comp.HttpError.de
, tagsAndFields = "Tags & Felder"

View File

@ -11,6 +11,7 @@ module Messages.Page.UserSettings exposing
, gb
)
import Data.TimeZone exposing (TimeZone)
import Messages.Basics
import Messages.Comp.ChangePasswordForm
import Messages.Comp.DueItemsTaskManage
@ -58,19 +59,19 @@ type alias Texts =
}
gb : Texts
gb =
gb : TimeZone -> Texts
gb tz =
{ basics = Messages.Basics.gb
, changePasswordForm = Messages.Comp.ChangePasswordForm.gb
, uiSettingsManage = Messages.Comp.UiSettingsManage.gb
, emailSettingsManage = Messages.Comp.EmailSettingsManage.gb
, imapSettingsManage = Messages.Comp.ImapSettingsManage.gb
, notificationManage = Messages.Comp.DueItemsTaskManage.gb
, scanMailboxManage = Messages.Comp.ScanMailboxManage.gb
, notificationManage = Messages.Comp.DueItemsTaskManage.gb tz
, scanMailboxManage = Messages.Comp.ScanMailboxManage.gb tz
, notificationHookManage = Messages.Comp.NotificationHookManage.gb
, periodicQueryTask = Messages.Comp.PeriodicQueryTaskManage.gb
, periodicQueryTask = Messages.Comp.PeriodicQueryTaskManage.gb tz
, channelManage = Messages.Comp.NotificationChannelManage.gb
, otpSetup = Messages.Comp.OtpSetup.gb
, otpSetup = Messages.Comp.OtpSetup.gb tz
, userSettings = "User Settings"
, uiSettings = "UI Settings"
, notifications = "Notifications"
@ -121,19 +122,19 @@ must be created before.
}
de : Texts
de =
de : TimeZone -> Texts
de tz =
{ basics = Messages.Basics.de
, changePasswordForm = Messages.Comp.ChangePasswordForm.de
, uiSettingsManage = Messages.Comp.UiSettingsManage.de
, emailSettingsManage = Messages.Comp.EmailSettingsManage.de
, imapSettingsManage = Messages.Comp.ImapSettingsManage.de
, notificationManage = Messages.Comp.DueItemsTaskManage.de
, scanMailboxManage = Messages.Comp.ScanMailboxManage.de
, notificationManage = Messages.Comp.DueItemsTaskManage.de tz
, scanMailboxManage = Messages.Comp.ScanMailboxManage.de tz
, notificationHookManage = Messages.Comp.NotificationHookManage.de
, periodicQueryTask = Messages.Comp.PeriodicQueryTaskManage.de
, periodicQueryTask = Messages.Comp.PeriodicQueryTaskManage.de tz
, channelManage = Messages.Comp.NotificationChannelManage.de
, otpSetup = Messages.Comp.OtpSetup.de
, otpSetup = Messages.Comp.OtpSetup.de tz
, userSettings = "Benutzereinstellung"
, uiSettings = "Oberfläche"
, notifications = "Benachrichtigungen"

View File

@ -12,13 +12,14 @@ import Comp.CollectiveSettingsForm
import Comp.ShareManage
import Comp.SourceManage
import Comp.UserManage
import Data.Flags exposing (Flags)
import Data.Environment as Env
import Data.Flags
import Messages.Page.CollectiveSettings exposing (Texts)
import Page.CollectiveSettings.Data exposing (..)
update : Texts -> Flags -> Msg -> Model -> ( Model, Cmd Msg, Sub Msg )
update texts flags msg model =
update : Texts -> Env.Update -> Msg -> Model -> ( Model, Cmd Msg, Sub Msg )
update texts env msg model =
case msg of
SetTab t ->
let
@ -27,45 +28,45 @@ update texts flags msg model =
in
case t of
SourceTab ->
update texts flags (SourceMsg Comp.SourceManage.LoadSources) m
update texts env (SourceMsg Comp.SourceManage.LoadSources) m
UserTab ->
update texts flags (UserMsg Comp.UserManage.LoadUsers) m
update texts env (UserMsg Comp.UserManage.LoadUsers) m
InsightsTab ->
update texts flags Init m
update texts env Init m
SettingsTab ->
update texts flags Init m
update texts env Init m
ShareTab ->
update texts flags (ShareMsg Comp.ShareManage.loadShares) m
update texts env (ShareMsg Comp.ShareManage.loadShares) m
SourceMsg m ->
let
( m2, c2 ) =
Comp.SourceManage.update flags m model.sourceModel
Comp.SourceManage.update env.flags m model.sourceModel
in
( { model | sourceModel = m2 }, Cmd.map SourceMsg c2, Sub.none )
ShareMsg lm ->
let
( sm, sc, ss ) =
Comp.ShareManage.update texts.shareManage flags lm model.shareModel
Comp.ShareManage.update texts.shareManage env.flags lm model.shareModel
in
( { model | shareModel = sm }, Cmd.map ShareMsg sc, Sub.map ShareMsg ss )
UserMsg m ->
let
( m2, c2 ) =
Comp.UserManage.update flags m model.userModel
Comp.UserManage.update env.flags m model.userModel
in
( { model | userModel = m2 }, Cmd.map UserMsg c2, Sub.none )
SettingsFormMsg m ->
let
( m2, c2, msett ) =
Comp.CollectiveSettingsForm.update flags m model.settingsModel
Comp.CollectiveSettingsForm.update env.flags env.settings.timeZone m model.settingsModel
cmd =
case msett of
@ -73,7 +74,7 @@ update texts flags msg model =
Cmd.none
Just sett ->
Api.setCollectiveSettings flags sett SubmitResp
Api.setCollectiveSettings env.flags sett SubmitResp
in
( { model | settingsModel = m2, formState = InitialState }
, Cmd.batch [ cmd, Cmd.map SettingsFormMsg c2 ]
@ -83,8 +84,8 @@ update texts flags msg model =
Init ->
( { model | formState = InitialState }
, Cmd.batch
[ Api.getInsights flags GetInsightsResp
, Api.getCollectiveSettings flags CollectiveSettingsResp
[ Api.getInsights env.flags GetInsightsResp
, Api.getCollectiveSettings env.flags CollectiveSettingsResp
]
, Sub.none
)
@ -98,7 +99,7 @@ update texts flags msg model =
CollectiveSettingsResp (Ok data) ->
let
( cm, cc ) =
Comp.CollectiveSettingsForm.init flags data
Comp.CollectiveSettingsForm.init env.flags data
in
( { model | settingsModel = cm }
, Cmd.map SettingsFormMsg cc

View File

@ -41,7 +41,7 @@ getDefaultDashboard flags settings =
Data.UiSettings.getUiLanguage flags settings Messages.UiLanguage.English
texts =
Messages.get lang
Messages.get lang settings.timeZone
in
value texts.dashboard.defaultDashboard

View File

@ -270,7 +270,7 @@ update texts settings navKey flags msg model =
PeriodicQuery pqm ->
let
( pqm_, pqc, pqs ) =
Comp.PeriodicQueryTaskManage.update flags lm pqm
Comp.PeriodicQueryTaskManage.update flags settings.timeZone lm pqm
in
( { model | content = PeriodicQuery pqm_ }
, Cmd.map PeriodicQueryMsg pqc

View File

@ -20,7 +20,6 @@ import Html.Events exposing (onClick)
import Messages.Page.Queue exposing (Texts)
import Page.Queue.Data exposing (..)
import Styles as S
import Util.Time exposing (formatIsoDateTime)
viewSidebar : Texts -> Bool -> Flags -> UiSettings -> Model -> Html Msg
@ -91,7 +90,7 @@ viewSidebar texts visible _ _ model =
viewContent : Texts -> Flags -> UiSettings -> Model -> Html Msg
viewContent texts _ _ model =
viewContent texts _ settings model =
let
gridStyle =
"grid gap-4 grid-cols-1 md:grid-cols-2"
@ -109,7 +108,7 @@ viewContent texts _ _ model =
]
[ case model.showLog of
Just job ->
renderJobLog job
renderJobLog texts settings job
Nothing ->
span [ class "hidden" ] []
@ -120,7 +119,7 @@ viewContent texts _ _ model =
else
div [ class "flex flex-col space-y-2" ]
(List.map (renderProgressCard texts model) model.state.progress)
(List.map (renderProgressCard texts settings model) model.state.progress)
QueueAll ->
if List.isEmpty model.state.completed && List.isEmpty model.state.completed then
@ -187,8 +186,8 @@ filterJobDetails list state =
List.filter isState list
renderJobLog : JobDetail -> Html Msg
renderJobLog job =
renderJobLog : Texts -> UiSettings -> JobDetail -> Html Msg
renderJobLog texts settings job =
div
[ class " absolute top-12 left-0 w-full h-full-12 z-40 flex flex-col items-center px-4 py-2 "
, class "bg-white bg-opacity-80 dark:bg-black dark:bg-slate-900 dark:bg-opacity-90"
@ -209,13 +208,13 @@ renderJobLog job =
]
]
, div [ class styleJobLog ]
(List.map renderLogLine job.logs)
(List.map (renderLogLine texts settings) job.logs)
]
]
renderProgressCard : Texts -> Model -> JobDetail -> Html Msg
renderProgressCard texts model job =
renderProgressCard : Texts -> UiSettings -> Model -> JobDetail -> Html Msg
renderProgressCard texts settings model job =
div [ class (S.box ++ "px-2 flex flex-col") ]
[ Comp.Progress.topAttachedIndicating job.progress
, Html.map (DimmerMsg job)
@ -248,7 +247,7 @@ renderProgressCard texts model job =
]
, div [ class "py-2", id "joblog" ]
[ div [ class styleJobLog ]
(List.map renderLogLine job.logs)
(List.map (renderLogLine texts settings) job.logs)
]
, div [ class "py-2 flex flex-row justify-end" ]
[ button [ class S.secondaryButton, onClick (RequestCancelJob job) ]
@ -263,8 +262,8 @@ styleJobLog =
"bg-gray-900 text-xs leading-5 px-2 py-1 font-mono text-gray-100 overflow-auto max-h-96 rounded"
renderLogLine : JobLogEvent -> Html Msg
renderLogLine log =
renderLogLine : Texts -> UiSettings -> JobLogEvent -> Html Msg
renderLogLine texts settings log =
let
lineStyle =
case String.toLower log.level of
@ -284,7 +283,7 @@ renderLogLine log =
""
in
span [ class lineStyle ]
[ formatIsoDateTime log.time |> text
[ texts.formatDateTime log.time |> text
, text ": "
, text log.message
, br [] []

View File

@ -161,7 +161,7 @@ update flags settings msg model =
NotificationMsg lm ->
let
( m2, c2 ) =
Comp.DueItemsTaskManage.update flags lm model.notificationModel
Comp.DueItemsTaskManage.update flags settings.timeZone lm model.notificationModel
in
{ model = { model | notificationModel = m2 }
, cmd = Cmd.map NotificationMsg c2
@ -172,7 +172,7 @@ update flags settings msg model =
ScanMailboxMsg lm ->
let
( m2, c2 ) =
Comp.ScanMailboxManage.update flags lm model.scanMailboxModel
Comp.ScanMailboxManage.update flags settings.timeZone lm model.scanMailboxModel
in
{ model = { model | scanMailboxModel = m2 }
, cmd = Cmd.map ScanMailboxMsg c2
@ -227,7 +227,7 @@ update flags settings msg model =
PeriodicQueryMsg lm ->
let
( pqm, pqc, pqs ) =
Comp.PeriodicQueryTaskManage.update flags lm model.periodicQueryModel
Comp.PeriodicQueryTaskManage.update flags settings.timeZone lm model.periodicQueryModel
in
{ model = { model | periodicQueryModel = pqm }
, cmd = Cmd.map PeriodicQueryMsg pqc

View File

@ -1,39 +0,0 @@
{-
Copyright 2020 Eike K. & Contributors
SPDX-License-Identifier: AGPL-3.0-or-later
-}
module Util.Time exposing (formatIsoDateTime)
import DateFormat
import Time exposing (Posix, Zone, utc)
isoDateTimeFormatter : Zone -> Posix -> String
isoDateTimeFormatter =
DateFormat.format
[ DateFormat.yearNumber
, DateFormat.text "-"
, DateFormat.monthFixed
, DateFormat.text "-"
, DateFormat.dayOfMonthFixed
, DateFormat.text "T"
, DateFormat.hourMilitaryNumber
, DateFormat.text ":"
, DateFormat.minuteFixed
, DateFormat.text ":"
, DateFormat.secondFixed
]
timeZone : Zone
timeZone =
utc
formatIsoDateTime : Int -> String
formatIsoDateTime millis =
Time.millisToPosix millis
|> isoDateTimeFormatter timeZone

View File

@ -48,7 +48,7 @@ let
wakeup-period = "10 minutes";
};
house-keeping = {
schedule = "Sun *-*-* 00:00:00";
schedule = "Sun *-*-* 00:00:00 UTC";
cleanup-invites = {
enabled = true;
older-than = "30 days";
@ -70,7 +70,7 @@ let
update-check = {
enabled = false;
test-run = false;
schedule = "Sun *-*-* 00:00:00";
schedule = "Sun *-*-* 00:00:00 UTC";
sender-account = "";
smtp-id = "";
recipients = [];

View File

@ -114,7 +114,7 @@ docspell.joex {
retry-delay = "10 seconds"
}
house-keeping {
schedule = "*-*-* 01:00:00"
schedule = "*-*-* 01:00:00 UTC"
cleanup-invites = {
older-than = "10 days"
}