add logic to display stats

This commit is contained in:
soukainna 2023-03-06 10:24:43 +01:00
parent 1b2902c632
commit a05942b7ed
1 changed files with 60 additions and 0 deletions

View File

@ -1,9 +1,12 @@
package renderer package renderer
import ( import (
"encoding/json"
"html/template"
"net/http" "net/http"
agendastorage "git.coopgo.io/coopgo-platform/agenda/storage" agendastorage "git.coopgo.io/coopgo-platform/agenda/storage"
fleetsstorage "git.coopgo.io/coopgo-platform/fleets/storage"
mobilityaccountsstorage "git.coopgo.io/coopgo-platform/mobility-accounts/storage" mobilityaccountsstorage "git.coopgo.io/coopgo-platform/mobility-accounts/storage"
) )
@ -41,3 +44,60 @@ func (renderer *Renderer) AdministrationGroupDisplay(w http.ResponseWriter, r *h
renderer.Render("administration", w, r, files, state) renderer.Render("administration", w, r, files, state)
} }
/////////////////////////////////////////////////////////////////////
type BeneficiariesState struct {
Count int `json:"count"`
CacheId string `json:"cache_id"`
Beneficiaries []mobilityaccountsstorage.Account `json:"beneficiaries"`
}
func (s BeneficiariesState) JSON() template.JS {
result, _ := json.Marshal(s)
return template.JS(result)
}
func (s BeneficiariesState) JSONWithLimits(a int, b int) template.JS {
if b < len(s.Beneficiaries) {
s.Beneficiaries = s.Beneficiaries[a:b]
}
return s.JSON()
}
/////////////////////////////////stats
func (renderer *Renderer) AdminStatBeneficaires(w http.ResponseWriter, r *http.Request, Beneficiaries []mobilityaccountsstorage.Account, cacheid string) {
files := renderer.ThemeConfig.GetStringSlice("views.administration.beneficaires_list.files")
state := NewState(r, renderer.ThemeConfig, administrationMenu)
state.ViewState = BeneficiariesState{
Count: len(Beneficiaries),
CacheId: cacheid,
Beneficiaries: Beneficiaries,
}
renderer.Render("beneficiaries_State", w, r, files, state)
}
func (renderer *Renderer) AdminStatEvents(w http.ResponseWriter, r *http.Request, events []agendastorage.Event, groups map[string]any) {
files := renderer.ThemeConfig.GetStringSlice("views.administration.events_list.files")
state := NewState(r, renderer.ThemeConfig, administrationMenu)
state.ViewState = map[string]any{
"events": events,
"groups": groups,
}
renderer.Render("beneficiaries_State", w, r, files, state)
}
func (renderer *Renderer) AdminStatVehicles(w http.ResponseWriter, r *http.Request, vehicles []fleetsstorage.Vehicle, bookings []fleetsstorage.Booking, admingroups map[string]any) {
files := renderer.ThemeConfig.GetStringSlice("views.administration.vehicles_list.files")
state := NewState(r, renderer.ThemeConfig, administrationMenu)
state.ViewState = map[string]any{
"vehicles": vehicles,
"bookings": bookings,
"admingroups": admingroups,
}
renderer.Render("vehicles_state", w, r, files, state)
}