Search, Paging, and "As of" Date #10
|
@ -61,7 +61,6 @@ with
|
|||
| LongDate -> "L"
|
||||
|
||||
|
||||
[<AutoOpen>]
|
||||
module Converters =
|
||||
open Microsoft.EntityFrameworkCore.Storage.ValueConversion
|
||||
open Microsoft.FSharp.Linq.RuntimeHelpers
|
||||
|
@ -325,7 +324,7 @@ and [<CLIMutable; NoComparison; NoEquality>] ListPreferences =
|
|||
|> ignore)
|
||||
|> ignore
|
||||
mb.Model.FindEntityType(typeof<ListPreferences>).FindProperty("asOfDateDisplay")
|
||||
.SetValueConverter(AsOfDateDisplayConverter ())
|
||||
.SetValueConverter(Converters.AsOfDateDisplayConverter ())
|
||||
|
||||
|
||||
/// A member of a small group
|
||||
|
|
|
@ -798,10 +798,25 @@
|
|||
<data name="Search" xml:space="preserve">
|
||||
<value>Buscar</value>
|
||||
</data>
|
||||
<data name="Display a full “as of” date" xml:space="preserve">
|
||||
<value>Mostrar una fecha “como de” completa</value>
|
||||
</data>
|
||||
<data name="Display a short “as of” date" xml:space="preserve">
|
||||
<value>Mostrar una fecha “como de” corta</value>
|
||||
</data>
|
||||
<data name="Do not display the “as of” date" xml:space="preserve">
|
||||
<value>No se muestran la fecha “como de”</value>
|
||||
</data>
|
||||
<data name="Page Size" xml:space="preserve">
|
||||
<value>Tamaño de Página</value>
|
||||
</data>
|
||||
<data name="Prayer Request" xml:space="preserve">
|
||||
<value>Petición de Oración</value>
|
||||
</data>
|
||||
<data name="Search Results" xml:space="preserve">
|
||||
<value>Resultados de la Búsqueda</value>
|
||||
</data>
|
||||
<data name="“As of” Date Display" xml:space="preserve">
|
||||
<value>Visualización de la Fecha “Como de”</value>
|
||||
</data>
|
||||
</root>
|
|
@ -284,7 +284,7 @@ let members (mbrs : Member list) (emailTyps : Map<string, LocalizedString>) ctx
|
|||
let overview m vi =
|
||||
let s = I18N.localizer.Force ()
|
||||
let linkSpacer = rawText " "
|
||||
let typs = ReferenceList.requestTypeList s |> Map.ofList
|
||||
let typs = ReferenceList.requestTypeList s |> dict
|
||||
article [ _class "pt-overview" ] [
|
||||
section [] [
|
||||
header [ _role "heading" ] [
|
||||
|
@ -350,7 +350,7 @@ let preferences (m : EditPreferences) (tzs : TimeZone list) ctx vi =
|
|||
use sw = new StringWriter ()
|
||||
let raw = rawLocText sw
|
||||
[ form [ _action "/small-group/preferences/save"; _method "post"; _class "pt-center-columns" ] [
|
||||
style [ _scoped ] [ rawText "#expireDays, #daysToKeepNew, #longTermUpdateWeeks, #headingFontSize, #listFontSize { width: 3rem; } #emailFromAddress { width: 20rem; } #listFonts { width: 40rem; } @media screen and (max-width: 40rem) { #listFonts { width: 100%; } }" ]
|
||||
style [ _scoped ] [ rawText "#expireDays, #daysToKeepNew, #longTermUpdateWeeks, #headingFontSize, #listFontSize, #pageSize { width: 3rem; } #emailFromAddress { width: 20rem; } #listFonts { width: 40rem; } @media screen and (max-width: 40rem) { #listFonts { width: 100%; } }" ]
|
||||
csrfToken ctx
|
||||
fieldset [] [
|
||||
legend [] [ strong [] [ icon "date_range"; rawText " "; locStr s.["Dates"] ] ]
|
||||
|
@ -479,7 +479,7 @@ let preferences (m : EditPreferences) (tzs : TimeZone list) ctx vi =
|
|||
legend [] [ strong [] [ icon "settings"; rawText " "; locStr s.["Other Settings"] ] ]
|
||||
div [ _class "pt-field-row" ] [
|
||||
div [ _class "pt-field" ] [
|
||||
label [ _for "TimeZone" ] [ locStr s.["Time Zone"] ]
|
||||
label [ _for "timeZone" ] [ locStr s.["Time Zone"] ]
|
||||
seq {
|
||||
yield "", selectDefault s.["Select"].Value
|
||||
yield! tzs |> List.map (fun tz -> tz.timeZoneId, (TimeZones.name tz.timeZoneId s).Value)
|
||||
|
@ -511,6 +511,19 @@ let preferences (m : EditPreferences) (tzs : TimeZone list) ctx vi =
|
|||
_value (match m.groupPassword with Some x -> x | None -> "") ]
|
||||
]
|
||||
]
|
||||
div [ _class "pt-field-row" ] [
|
||||
div [ _class "pt-field" ] [
|
||||
label [ _for "pageSize" ] [ locStr s.["Page Size"] ]
|
||||
input [ _type "number"; _name "pageSize"; _id "pageSize"; _min "10"; _max "255"; _required
|
||||
_value (string m.pageSize) ]
|
||||
]
|
||||
div [ _class "pt-field" ] [
|
||||
label [ _for "asOfDate" ] [ locStr s.["“As of” Date Display"] ]
|
||||
ReferenceList.asOfDateList s
|
||||
|> List.map (fun (code, desc) -> code, desc.Value)
|
||||
|> selectList "asOfDate" m.asOfDate [ _required ]
|
||||
]
|
||||
]
|
||||
div [ _class "pt-field-row" ] [ submit [] "save" s.["Save Preferences"] ]
|
||||
]
|
||||
]
|
||||
|
|
|
@ -10,6 +10,13 @@ open System
|
|||
/// Helper module to return localized reference lists
|
||||
module ReferenceList =
|
||||
|
||||
/// A localized list of the AsOfDateDisplay DU cases
|
||||
let asOfDateList (s : IStringLocalizer) =
|
||||
[ NoDisplay.toCode (), s.["Do not display the “as of” date"]
|
||||
ShortDate.toCode (), s.["Display a short “as of” date"]
|
||||
LongDate.toCode (), s.["Display a full “as of” date"]
|
||||
]
|
||||
|
||||
/// A list of e-mail type options
|
||||
let emailTypeList def (s : IStringLocalizer) =
|
||||
// Localize the default type
|
||||
|
@ -27,12 +34,10 @@ module ReferenceList =
|
|||
|
||||
/// A list of expiration options
|
||||
let expirationList (s : IStringLocalizer) includeExpireNow =
|
||||
seq {
|
||||
yield "N", s.["Expire Normally"]
|
||||
[ yield "N", s.["Expire Normally"]
|
||||
yield "Y", s.["Request Never Expires"]
|
||||
match includeExpireNow with true -> yield "X", s.["Expire Immediately"] | false -> ()
|
||||
}
|
||||
|> List.ofSeq
|
||||
]
|
||||
|
||||
/// A list of request types
|
||||
let requestTypeList (s : IStringLocalizer) =
|
||||
|
@ -273,6 +278,10 @@ type EditPreferences =
|
|||
listVisibility : int
|
||||
/// The small group password
|
||||
groupPassword : string option
|
||||
/// The page size for search / inactive requests
|
||||
pageSize : int
|
||||
/// How the as-of date should be displayed
|
||||
asOfDate : string
|
||||
}
|
||||
with
|
||||
static member fromPreferences (prefs : ListPreferences) =
|
||||
|
@ -293,6 +302,8 @@ with
|
|||
listFontSize = prefs.textFontSize
|
||||
timeZone = prefs.timeZoneId
|
||||
groupPassword = Some prefs.groupPassword
|
||||
pageSize = prefs.pageSize
|
||||
asOfDate = prefs.asOfDateDisplay.toCode ()
|
||||
listVisibility =
|
||||
match true with
|
||||
| _ when prefs.isPublic -> RequestVisibility.``public``
|
||||
|
@ -323,6 +334,8 @@ with
|
|||
timeZoneId = this.timeZone
|
||||
isPublic = isPublic
|
||||
groupPassword = grpPw
|
||||
pageSize = this.pageSize
|
||||
asOfDateDisplay = AsOfDateDisplay.fromCode this.asOfDate
|
||||
}
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user