From 7322f67ae04443b71abb91c5c135292911baea7f Mon Sep 17 00:00:00 2001 From: XIAOZHUOWU <77263323+XIAOZHUOWU@users.noreply.github.com> Date: Mon, 9 Dec 2024 16:07:39 +0800 Subject: [PATCH] feat: add model, adapter and enforcer to the dashboard page chart (#3413) * [feature] Add more data (Model, Adapter, Enforcer) to the dashboard page chart #3379 * feat: add model, adapter, enforcer to dashboard --- object/get-dashboard.go | 56 +++++++++++++++++++++++++++++++++++++- web/src/basic/Dashboard.js | 6 ++++ 2 files changed, 61 insertions(+), 1 deletion(-) diff --git a/object/get-dashboard.go b/object/get-dashboard.go index 52a4cad8..9dddd8ee 100644 --- a/object/get-dashboard.go +++ b/object/get-dashboard.go @@ -31,6 +31,9 @@ type Dashboard struct { CertCounts []int `json:"certCounts"` PermissionCounts []int `json:"permissionCounts"` TransactionCounts []int `json:"transactionCounts"` + ModelCounts []int `json:"modelCounts"` + AdapterCounts []int `json:"adapterCounts"` + EnforcerCounts []int `json:"enforcerCounts"` } func GetDashboard(owner string) (*Dashboard, error) { @@ -50,6 +53,9 @@ func GetDashboard(owner string) (*Dashboard, error) { CertCounts: make([]int, 31), PermissionCounts: make([]int, 31), TransactionCounts: make([]int, 31), + ModelCounts: make([]int, 31), + AdapterCounts: make([]int, 31), + EnforcerCounts: make([]int, 31), } organizations := []Organization{} @@ -63,9 +69,12 @@ func GetDashboard(owner string) (*Dashboard, error) { certs := []Cert{} permissions := []Permission{} transactions := []Transaction{} + models := []Model{} + adapters := []Adapter{} + enforcers := []Enforcer{} var wg sync.WaitGroup - wg.Add(11) + wg.Add(14) go func() { defer wg.Done() if err := ormer.Engine.Find(&organizations, &Organization{Owner: owner}); err != nil { @@ -148,6 +157,27 @@ func GetDashboard(owner string) (*Dashboard, error) { panic(err) } }() + + go func() { + defer wg.Done() + if err := ormer.Engine.Find(&models, &Model{Owner: owner}); err != nil { + panic(err) + } + }() + + go func() { + defer wg.Done() + if err := ormer.Engine.Find(&adapters, &Adapter{Owner: owner}); err != nil { + panic(err) + } + }() + + go func() { + defer wg.Done() + if err := ormer.Engine.Find(&enforcers, &Enforcer{Owner: owner}); err != nil { + panic(err) + } + }() wg.Wait() nowTime := time.Now() @@ -164,6 +194,9 @@ func GetDashboard(owner string) (*Dashboard, error) { dashboard.CertCounts[30-i] = countCreatedBefore(certs, cutTime) dashboard.PermissionCounts[30-i] = countCreatedBefore(permissions, cutTime) dashboard.TransactionCounts[30-i] = countCreatedBefore(transactions, cutTime) + dashboard.ModelCounts[30-i] = countCreatedBefore(models, cutTime) + dashboard.AdapterCounts[30-i] = countCreatedBefore(adapters, cutTime) + dashboard.EnforcerCounts[30-i] = countCreatedBefore(enforcers, cutTime) } return dashboard, nil } @@ -248,6 +281,27 @@ func countCreatedBefore(objects interface{}, before time.Time) int { count++ } } + case []Model: + for _, m := range obj { + createdTime, _ := time.Parse("2006-01-02T15:04:05-07:00", m.CreatedTime) + if createdTime.Before(before) { + count++ + } + } + case []Adapter: + for _, a := range obj { + createdTime, _ := time.Parse("2006-01-02T15:04:05-07:00", a.CreatedTime) + if createdTime.Before(before) { + count++ + } + } + case []Enforcer: + for _, e := range obj { + createdTime, _ := time.Parse("2006-01-02T15:04:05-07:00", e.CreatedTime) + if createdTime.Before(before) { + count++ + } + } } return count } diff --git a/web/src/basic/Dashboard.js b/web/src/basic/Dashboard.js index 1f77509e..a169adbc 100644 --- a/web/src/basic/Dashboard.js +++ b/web/src/basic/Dashboard.js @@ -141,6 +141,9 @@ const Dashboard = (props) => { i18next.t("general:Certs"), i18next.t("general:Permissions"), i18next.t("general:Transactions"), + i18next.t("general:Models"), + i18next.t("general:Adapters"), + i18next.t("general:Enforcers"), ], top: "10%"}, grid: {left: "3%", right: "4%", bottom: "0", top: "25%", containLabel: true}, xAxis: {type: "category", boundaryGap: false, data: dateArray}, @@ -157,6 +160,9 @@ const Dashboard = (props) => { {name: i18next.t("general:Certs"), type: "line", data: dashboardData.certCounts}, {name: i18next.t("general:Permissions"), type: "line", data: dashboardData.permissionCounts}, {name: i18next.t("general:Transactions"), type: "line", data: dashboardData.transactionCounts}, + {name: i18next.t("general:Models"), type: "line", data: dashboardData.modelCounts}, + {name: i18next.t("general:Adapters"), type: "line", data: dashboardData.adapterCounts}, + {name: i18next.t("general:Enforcers"), type: "line", data: dashboardData.enforcerCounts}, ], }; myChart.setOption(option);