Administration, organizations access rights and véhicles booking

This commit is contained in:
2022-08-12 14:53:54 +02:00
parent 7225d027c9
commit 0bb915059d
34 changed files with 1839 additions and 245 deletions

View File

@@ -1,7 +1,9 @@
package renderer
import (
"encoding/json"
"fmt"
"html/template"
"time"
)
@@ -47,6 +49,11 @@ func GenderISO5218(d any) string {
return ""
}
func JSON(v any) template.JS {
result, _ := json.Marshal(v)
return template.JS(result)
}
func Dict(v ...interface{}) map[string]interface{} {
dict := map[string]interface{}{}
lenv := len(v)

View File

@@ -49,6 +49,7 @@ func (renderer *Renderer) Render(name string, w http.ResponseWriter, r *http.Req
"timeFrom": TimeFrom,
"genderISO5218": GenderISO5218,
"dict": Dict,
"json": JSON,
},
)
t = template.Must(t.ParseFiles(prefixed_files...))
@@ -70,6 +71,7 @@ func (renderer *Renderer) RenderNoLayout(name string, w http.ResponseWriter, r *
"timeFrom": TimeFrom,
"genderISO5218": GenderISO5218,
"dict": Dict,
"json": JSON,
},
)
@@ -144,13 +146,13 @@ func NewState(r *http.Request, themeConfig *viper.Viper, menuState string) Rende
Title: "Déplacements",
Link: "/app/journeys/",
Active: menuState == "journeys",
Icon: "hero:outline/user-group",
Icon: "hero:outline/map",
})
}
if modules["vehicles"].(bool) {
ls.MenuItems = append(ls.MenuItems, MenuItem{
Title: "Véhicules",
Title: "Véhicules partagés",
Link: "/app/vehicles/",
Active: menuState == "vehicles",
Icon: "hero:outline/user-group",
@@ -162,7 +164,7 @@ func NewState(r *http.Request, themeConfig *viper.Viper, menuState string) Rende
Title: "Gestion des véhicules",
Link: "/app/vehicles-management/",
Active: menuState == "vehicles_management",
Icon: "hero:outline/user-group",
Icon: "hero:outline/briefcase",
})
}
@@ -171,7 +173,7 @@ func NewState(r *http.Request, themeConfig *viper.Viper, menuState string) Rende
Title: "Dispositifs",
Link: "/app/events/",
Active: menuState == "events",
Icon: "hero:outline/user-group",
Icon: "hero:outline/calendar",
})
}

View File

@@ -4,16 +4,52 @@ import "net/http"
const vehiclesmanagementMenu = "vehicles_management"
func (renderer *Renderer) VehiclesManagementOverview(w http.ResponseWriter, r *http.Request) {
func (renderer *Renderer) VehiclesManagementOverview(w http.ResponseWriter, r *http.Request, vehicles []any) {
files := renderer.ThemeConfig.GetStringSlice("views.vehicles_management.overview.files")
state := NewState(r, renderer.ThemeConfig, vehiclesmanagementMenu)
state.ViewState = map[string]any{
"vehicles": vehicles,
}
renderer.Render("fleet", w, r, files, state)
renderer.Render("fleet overview", w, r, files, state)
}
func (renderer *Renderer) VehiclesFleetAdd(w http.ResponseWriter, r *http.Request) {
files := renderer.ThemeConfig.GetStringSlice("views.vehicles_management.fleet_add.files")
state := NewState(r, renderer.ThemeConfig, vehiclesmanagementMenu)
renderer.Render("fleet", w, r, files, state)
renderer.Render("fleet add vehicle", w, r, files, state)
}
func (renderer *Renderer) VehiclesFleetDisplay(w http.ResponseWriter, r *http.Request, vehicle any) {
files := renderer.ThemeConfig.GetStringSlice("views.vehicles_management.fleet_display.files")
state := NewState(r, renderer.ThemeConfig, vehiclesmanagementMenu)
state.ViewState = map[string]any{
"vehicle": vehicle,
}
renderer.Render("fleet display vehicle", w, r, files, state)
}
func (renderer *Renderer) VehiclesFleetUpdate(w http.ResponseWriter, r *http.Request, vehicle any) {
files := renderer.ThemeConfig.GetStringSlice("views.vehicles_management.fleet_update.files")
state := NewState(r, renderer.ThemeConfig, vehiclesmanagementMenu)
state.ViewState = map[string]any{
"vehicle": vehicle,
}
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) {
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,
}
renderer.Render("vehicles search", w, r, files, state)
}

40
renderer/vehicles.go Normal file
View File

@@ -0,0 +1,40 @@
package renderer
import "net/http"
const vehiclesMenu = "vehicles"
func (renderer *Renderer) VehiclesSearch(w http.ResponseWriter, r *http.Request, beneficiaries []any, searched bool, vehicles []any, beneficiary any, startdate any, enddate any) {
files := renderer.ThemeConfig.GetStringSlice("views.vehicles.search.files")
state := NewState(r, renderer.ThemeConfig, vehiclesMenu)
viewstate := map[string]any{
"beneficiaries": beneficiaries,
"searched": searched,
}
if searched {
viewstate["search"] = map[string]any{
"startdate": startdate,
"enddate": enddate,
"vehicles": vehicles,
"beneficiary": beneficiary,
}
}
state.ViewState = viewstate
renderer.Render("vehicles search", w, r, files, state)
}
func (renderer *Renderer) VehicleBookingDisplay(w http.ResponseWriter, r *http.Request, booking any, vehicle any, beneficiary any, group any) {
files := renderer.ThemeConfig.GetStringSlice("views.vehicles.booking_display.files")
state := NewState(r, renderer.ThemeConfig, vehiclesMenu)
state.ViewState = map[string]any{
"booking": booking,
"vehicle": vehicle,
"beneficiary": beneficiary,
"group": group,
}
renderer.Render("vehicles search", w, r, files, state)
}