From a05942b7ed6eed8de94b39674afc554717e8b818 Mon Sep 17 00:00:00 2001 From: soukainna Date: Mon, 6 Mar 2023 10:24:43 +0100 Subject: [PATCH] add logic to display stats --- renderer/administration.go | 60 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) diff --git a/renderer/administration.go b/renderer/administration.go index 41aee36..45c4618 100644 --- a/renderer/administration.go +++ b/renderer/administration.go @@ -1,9 +1,12 @@ package renderer import ( + "encoding/json" + "html/template" "net/http" 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" ) @@ -41,3 +44,60 @@ func (renderer *Renderer) AdministrationGroupDisplay(w http.ResponseWriter, r *h 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) +}