Release 5 december 2022 - Agenda and Fleets fixes
This commit is contained in:
@@ -8,11 +8,14 @@ import (
|
||||
|
||||
const administrationMenu = "administration"
|
||||
|
||||
func (renderer *Renderer) Administration(w http.ResponseWriter, r *http.Request, groups any) {
|
||||
func (renderer *Renderer) Administration(w http.ResponseWriter, r *http.Request, accounts any, beneficiaries any, groups any, bookings any) {
|
||||
files := renderer.ThemeConfig.GetStringSlice("views.administration.home.files")
|
||||
state := NewState(r, renderer.ThemeConfig, administrationMenu)
|
||||
state.ViewState = map[string]any{
|
||||
"groups": groups,
|
||||
"accounts": accounts,
|
||||
"beneficiaries": beneficiaries,
|
||||
"bookings": bookings,
|
||||
"groups": groups,
|
||||
}
|
||||
|
||||
renderer.Render("administration", w, r, files, state)
|
||||
|
||||
@@ -52,7 +52,7 @@ type BeneficiariesDisplayState struct {
|
||||
Beneficiary any
|
||||
}
|
||||
|
||||
func (renderer *Renderer) BeneficiaryDisplay(w http.ResponseWriter, r *http.Request, beneficiary any, bookings []any, beneficiaries_file_types []string, file_types_map map[string]string, documents any) {
|
||||
func (renderer *Renderer) BeneficiaryDisplay(w http.ResponseWriter, r *http.Request, beneficiary any, bookings []any, organizations []any, beneficiaries_file_types []string, file_types_map map[string]string, documents any) {
|
||||
files := renderer.ThemeConfig.GetStringSlice("views.beneficiaries.display.files")
|
||||
state := NewState(r, renderer.ThemeConfig, beneficiariesMenu)
|
||||
state.ViewState = map[string]any{
|
||||
@@ -61,6 +61,7 @@ func (renderer *Renderer) BeneficiaryDisplay(w http.ResponseWriter, r *http.Requ
|
||||
"beneficiaries_file_types": beneficiaries_file_types,
|
||||
"file_types_map": file_types_map,
|
||||
"documents": documents,
|
||||
"organizations": organizations,
|
||||
}
|
||||
|
||||
renderer.Render("beneficiaries_display", w, r, files, state)
|
||||
|
||||
@@ -23,6 +23,17 @@ func TimeFrom(d any) *time.Time {
|
||||
return nil
|
||||
}
|
||||
|
||||
func TimeFormat(d any, f string) string {
|
||||
date := TimeFrom(d)
|
||||
if date == nil {
|
||||
return ""
|
||||
}
|
||||
if date.Before(time.Now().Add(-24 * 365 * 30 * time.Hour)) {
|
||||
return ""
|
||||
}
|
||||
return date.Format(f)
|
||||
}
|
||||
|
||||
func GenderISO5218(d any) string {
|
||||
if date, ok := d.(string); ok {
|
||||
switch date {
|
||||
|
||||
@@ -9,6 +9,7 @@ import (
|
||||
"git.coopgo.io/coopgo-apps/parcoursmob/utils/identification"
|
||||
"git.coopgo.io/coopgo-platform/emailing"
|
||||
"git.coopgo.io/coopgo-platform/groups-management/storage"
|
||||
"github.com/coreos/go-oidc"
|
||||
"github.com/spf13/viper"
|
||||
)
|
||||
|
||||
@@ -35,6 +36,7 @@ func NewRenderer(global *viper.Viper, templates_dir string) *Renderer {
|
||||
}
|
||||
|
||||
func (renderer *Renderer) Render(name string, w http.ResponseWriter, r *http.Request, files []string, state RenderState) {
|
||||
|
||||
genericFiles := renderer.ThemeConfig.GetStringSlice("views.generic.files")
|
||||
|
||||
prefixed_files := []string{}
|
||||
@@ -49,6 +51,7 @@ func (renderer *Renderer) Render(name string, w http.ResponseWriter, r *http.Req
|
||||
t := template.New(name).Funcs(
|
||||
template.FuncMap{
|
||||
"timeFrom": TimeFrom,
|
||||
"timeFormat": TimeFormat,
|
||||
"genderISO5218": GenderISO5218,
|
||||
"dict": Dict,
|
||||
"json": JSON,
|
||||
@@ -66,6 +69,7 @@ func (renderer *Renderer) Render(name string, w http.ResponseWriter, r *http.Req
|
||||
}
|
||||
|
||||
func (renderer *Renderer) RenderNoLayout(name string, w http.ResponseWriter, r *http.Request, files []string, state RenderState) {
|
||||
|
||||
prefixed_files := []string{}
|
||||
for _, f := range files {
|
||||
prefixed_files = append(prefixed_files, renderer.templateFile(f))
|
||||
@@ -75,6 +79,7 @@ func (renderer *Renderer) RenderNoLayout(name string, w http.ResponseWriter, r *
|
||||
t := template.New(name).Funcs(
|
||||
template.FuncMap{
|
||||
"timeFrom": TimeFrom,
|
||||
"timeFormat": TimeFormat,
|
||||
"genderISO5218": GenderISO5218,
|
||||
"dict": Dict,
|
||||
"json": JSON,
|
||||
@@ -97,14 +102,34 @@ func (r *Renderer) templateFile(file string) string {
|
||||
type RenderState struct {
|
||||
icons.IconSet
|
||||
LayoutState
|
||||
Group any
|
||||
Roles any
|
||||
ViewState any // This is a state specific to a given view
|
||||
UserID string
|
||||
UserClaims map[string]any
|
||||
Group storage.Group
|
||||
Roles any
|
||||
ViewState any // This is a state specific to a given view
|
||||
}
|
||||
|
||||
func NewState(r *http.Request, themeConfig *viper.Viper, menuState string) RenderState {
|
||||
iconset := themeConfig.GetStringMapString("icons.svg")
|
||||
|
||||
// Get State elements from Request
|
||||
var userid string
|
||||
var claims map[string]any
|
||||
|
||||
u := r.Context().Value(identification.IdtokenKey)
|
||||
if u != nil {
|
||||
if current_user_token, ok := u.(*oidc.IDToken); ok {
|
||||
userid = current_user_token.Subject
|
||||
}
|
||||
|
||||
c := r.Context().Value(identification.ClaimsKey)
|
||||
if c != nil {
|
||||
if current_user_claims, ok := c.(map[string]any); ok {
|
||||
claims = current_user_claims
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
g := r.Context().Value(identification.GroupKey)
|
||||
if g == nil {
|
||||
@@ -187,7 +212,6 @@ func NewState(r *http.Request, themeConfig *viper.Viper, menuState string) Rende
|
||||
})
|
||||
}
|
||||
|
||||
/*************************** my code ******************************/
|
||||
if modules["support"] != nil && modules["support"].(bool) {
|
||||
ls.MenuItems = append(ls.MenuItems, MenuItem{
|
||||
Title: "Support",
|
||||
@@ -197,7 +221,6 @@ func NewState(r *http.Request, themeConfig *viper.Viper, menuState string) Rende
|
||||
})
|
||||
|
||||
}
|
||||
/*************************** my code ******************************/
|
||||
|
||||
if modules["directory"] != nil && modules["directory"].(bool) {
|
||||
ls.MenuItems = append(ls.MenuItems, MenuItem{
|
||||
@@ -212,6 +235,8 @@ func NewState(r *http.Request, themeConfig *viper.Viper, menuState string) Rende
|
||||
IconSet: icons.NewIconSet(iconset),
|
||||
Group: group,
|
||||
Roles: roles,
|
||||
UserID: userid,
|
||||
UserClaims: claims,
|
||||
LayoutState: ls,
|
||||
}
|
||||
}
|
||||
|
||||
@@ -63,16 +63,17 @@ func (renderer *Renderer) VehiclesFleetUpdate(w http.ResponseWriter, r *http.Req
|
||||
renderer.Render("fleet display vehicle", w, r, files, state)
|
||||
}
|
||||
|
||||
func (renderer *Renderer) VehicleManagementBookingDisplay(w http.ResponseWriter, r *http.Request, booking any, vehicle any, beneficiary any, group any, documents []filestorage.FileInfo, file_types_map map[string]string) {
|
||||
func (renderer *Renderer) VehicleManagementBookingDisplay(w http.ResponseWriter, r *http.Request, booking any, vehicle any, beneficiary any, group any, documents []filestorage.FileInfo, file_types_map map[string]string, alternative_vehicles []any) {
|
||||
files := renderer.ThemeConfig.GetStringSlice("views.vehicles_management.booking_display.files")
|
||||
state := NewState(r, renderer.ThemeConfig, vehiclesmanagementMenu)
|
||||
state.ViewState = map[string]any{
|
||||
"booking": booking,
|
||||
"vehicle": vehicle,
|
||||
"beneficiary": beneficiary,
|
||||
"group": group,
|
||||
"documents": documents,
|
||||
"file_types_map": file_types_map,
|
||||
"booking": booking,
|
||||
"vehicle": vehicle,
|
||||
"beneficiary": beneficiary,
|
||||
"group": group,
|
||||
"documents": documents,
|
||||
"file_types_map": file_types_map,
|
||||
"alternative_vehicles": alternative_vehicles,
|
||||
}
|
||||
|
||||
renderer.Render("vehicles search", w, r, files, state)
|
||||
|
||||
@@ -4,6 +4,7 @@ import (
|
||||
"net/http"
|
||||
|
||||
filestorage "git.coopgo.io/coopgo-apps/parcoursmob/utils/storage"
|
||||
"git.coopgo.io/coopgo-platform/fleets/storage"
|
||||
mobilityaccountsstorage "git.coopgo.io/coopgo-platform/mobility-accounts/storage"
|
||||
)
|
||||
|
||||
@@ -66,7 +67,7 @@ func (renderer *Renderer) VehicleBookingDisplay(w http.ResponseWriter, r *http.R
|
||||
renderer.Render("vehicles search", w, r, files, state)
|
||||
}
|
||||
|
||||
func (renderer *Renderer) VehicleBookingsList(w http.ResponseWriter, r *http.Request, bookings []any) {
|
||||
func (renderer *Renderer) VehicleBookingsList(w http.ResponseWriter, r *http.Request, bookings []storage.Booking) {
|
||||
files := renderer.ThemeConfig.GetStringSlice("views.vehicles.bookings_list.files")
|
||||
state := NewState(r, renderer.ThemeConfig, vehiclesMenu)
|
||||
state.ViewState = map[string]any{
|
||||
|
||||
Reference in New Issue
Block a user