diff --git a/common/pages.go b/common/pages.go index 782e55ac..d468281c 100644 --- a/common/pages.go +++ b/common/pages.go @@ -351,9 +351,14 @@ type GridElement struct { Note string } +type DashGrids struct { + Grid1 []GridElement + Grid2 []GridElement +} + type PanelDashboardPage struct { *BasePanelPage - GridItems []GridElement + Grids DashGrids } type PanelSetting struct { @@ -622,6 +627,8 @@ type DebugPageDatabase struct { ViewsLangs int ViewsReferrers int ViewsSystems int + PostChunks int + TopicChunks int } type DebugPageDisk struct { diff --git a/common/template_init.go b/common/template_init.go index fe37aa39..4a018778 100644 --- a/common/template_init.go +++ b/common/template_init.go @@ -349,6 +349,8 @@ func compileTemplates(wg *sync.WaitGroup, c *tmpl.CTemplateSet, themeName string basePage := &BasePanelPage{header, PanelStats{}, "dashboard", ReportForumID} tmpls.AddStd("panel", "common.Panel", Panel{basePage, "panel_dashboard_right", "", "panel_dashboard", inter}) + ges := []GridElement{GridElement{"","", "", 1, "grid_istat", "", "", ""}} + tmpls.AddStd("panel_dashboard", "common.DashGrids", DashGrids{ges,ges}) //tmpls.AddStd("panel_analytics", "common.PanelAnalytics", Panel{basePage, "panel_dashboard_right","panel_dashboard", inter}) var writeTemplate = func(name string, content interface{}) { diff --git a/common/templates/templates.go b/common/templates/templates.go index 1e6bf87e..5692ea81 100644 --- a/common/templates/templates.go +++ b/common/templates/templates.go @@ -401,6 +401,10 @@ func (c *CTemplateSet) compile(name string, content string, expects string, expe c.importMap[langPkg] = langPkg } + // TODO: Simplify this logic by doing some reordering? + if c.lang == "normal" { + c.importMap["net/http"] = "net/http" + } var importList string for _, item := range c.importMap { importList += "import \"" + item + "\"\n" diff --git a/langs/english.json b/langs/english.json index ee98a84f..411086fd 100644 --- a/langs/english.json +++ b/langs/english.json @@ -762,6 +762,8 @@ "panel_dashboard_ram_desc":"The global RAM usage of this server", "panel_dashboard_memused":"Mem: %.1f%s", "panel_dashboard_memused_desc":"The amount of memory likely being used by this instance", + "panel_dashboard_disk":"Disk: %.1f%s", + "panel_dashboard_disk_desc":"The amount of disk space being used by this instance", "panel_dashboard_online": "%d%s online", "panel_dashboard_online_desc":"The number of people who are currently online", "panel_dashboard_guests_online":"%d%s guests online", diff --git a/routes/panel/dashboard.go b/routes/panel/dashboard.go index 1cbca906..3124177d 100644 --- a/routes/panel/dashboard.go +++ b/routes/panel/dashboard.go @@ -172,6 +172,10 @@ func Dashboard(w http.ResponseWriter, r *http.Request, user c.User) c.RouteError return c.InternalError(intErr, w, r) } + var grid1 = []GE{} + var addElem1 = func(id string, href string, body string, order int, class string, back string, textColour string, tooltip string) { + grid1 = append(grid1, GE{id,href,body,order,class,back,textColour,tooltip}) + } var gridElements = []GE{} var addElem = func(id string, href string, body string, order int, class string, back string, textColour string, tooltip string) { gridElements = append(gridElements, GE{id,href,body,order,class,back,textColour,tooltip}) @@ -179,12 +183,19 @@ func Dashboard(w http.ResponseWriter, r *http.Request, user c.User) c.RouteError // TODO: Implement a check for new versions of Gosora // TODO: Localise this - //addElem("dash-version", "", "v" + version.String(), 0, "grid_istat stat_green", "", "", "Gosora is up-to-date :)") - addElem("dash-version", "","v" + c.SoftwareVersion.String(), 0, "grid_istat", "", "", "") + //addElem1("dash-version", "", "v" + version.String(), 0, "grid_istat stat_green", "", "", "Gosora is up-to-date :)") + addElem1("dash-version", "","v" + c.SoftwareVersion.String(), 0, "grid_istat", "", "", "") - addElem("dash-cpu","", p.GetTmplPhrasef("panel_dashboard_cpu",cpustr), 1, "grid_istat " + cpuColour, "", "", p.GetTmplPhrase("panel_dashboard_cpu_desc")) - addElem("dash-ram","", p.GetTmplPhrasef("panel_dashboard_ram",ramstr), 2, "grid_istat " + ramColour, "", "", p.GetTmplPhrase("panel_dashboard_ram_desc")) - addElem("dash-memused","/panel/analytics/memory/", p.GetTmplPhrasef("panel_dashboard_memused",memCount, memUnit), 2, "grid_istat", "", "", p.GetTmplPhrase("panel_dashboard_memused_desc")) + addElem1("dash-cpu","", p.GetTmplPhrasef("panel_dashboard_cpu",cpustr), 1, "grid_istat " + cpuColour, "", "", p.GetTmplPhrase("panel_dashboard_cpu_desc")) + addElem1("dash-ram","", p.GetTmplPhrasef("panel_dashboard_ram",ramstr), 2, "grid_istat " + ramColour, "", "", p.GetTmplPhrase("panel_dashboard_ram_desc")) + addElem1("dash-memused","/panel/analytics/memory/", p.GetTmplPhrasef("panel_dashboard_memused",memCount, memUnit), 2, "grid_istat", "", "", p.GetTmplPhrase("panel_dashboard_memused_desc")) + + dirSize, err := c.DirSize(".") + if err != nil { + return c.InternalError(err,w,r) + } + dirFloat, unit := c.ConvertByteUnit(float64(dirSize)) + addElem1("dash-disk","", p.GetTmplPhrasef("panel_dashboard_disk",dirFloat, unit), 2, "grid_istat", "", "", p.GetTmplPhrase("panel_dashboard_disk_desc")) if c.EnableWebsockets { uonline := c.WsHub.UserCount() @@ -220,5 +231,5 @@ func Dashboard(w http.ResponseWriter, r *http.Request, user c.User) c.RouteError addElem("dash-postsperuser","", "?? posts / user / week", 14, "grid_stat stat_disabled", "", "", p.GetTmplPhrase("panel_dashboard_coming_soon") /*"The average number of posts made by each active user over the past week"*/) } - return renderTemplate("panel", w, r, basePage.Header, c.Panel{basePage, "panel_dashboard_right","","panel_dashboard", gridElements}) + return renderTemplate("panel", w, r, basePage.Header, c.Panel{basePage, "panel_dashboard_right","","panel_dashboard", c.DashGrids{grid1,gridElements}}) } diff --git a/routes/panel/debug.go b/routes/panel/debug.go index 08dfc2c0..47f52c21 100644 --- a/routes/panel/debug.go +++ b/routes/panel/debug.go @@ -62,46 +62,57 @@ func Debug(w http.ResponseWriter, r *http.Request, user c.User) c.RouteError { debugCache := c.DebugPageCache{tlen, ulen, rlen, tcap, ucap, rcap, topicListThawed} + var count = func(tbl string) (int, error) { + return qgen.NewAcc().Count(tbl).Total() + } // TODO: Implement a LikeStore and call Count on that instead - likes, err := qgen.NewAcc().Count("likes").Total() + likes, err := count("likes") if err != nil { return c.InternalError(err,w,r) } // TODO: Call Count on an attachment store - attachs, err := qgen.NewAcc().Count("attachments").Total() + attachs, err := count("attachments") if err != nil { return c.InternalError(err,w,r) } // TODO: Implement a PollStore and call Count on that instead - polls, err := qgen.NewAcc().Count("polls").Total() + polls, err := count("polls") if err != nil { return c.InternalError(err,w,r) } - views, err := qgen.NewAcc().Count("viewchunks").Total() + views, err := count("viewchunks") if err != nil { return c.InternalError(err,w,r) } - viewsAgents, err := qgen.NewAcc().Count("viewchunks_agents").Total() + viewsAgents, err := count("viewchunks_agents") if err != nil { return c.InternalError(err,w,r) } - viewsForums, err := qgen.NewAcc().Count("viewchunks_forums").Total() + viewsForums, err := count("viewchunks_forums") if err != nil { return c.InternalError(err,w,r) } - viewsLangs, err := qgen.NewAcc().Count("viewchunks_langs").Total() + viewsLangs, err := count("viewchunks_langs") if err != nil { return c.InternalError(err,w,r) } - viewsReferrers, err := qgen.NewAcc().Count("viewchunks_referrers").Total() + viewsReferrers, err := count("viewchunks_referrers") if err != nil { return c.InternalError(err,w,r) } - viewsSystems, err := qgen.NewAcc().Count("viewchunks_systems").Total() + viewsSystems, err := count("viewchunks_systems") if err != nil { return c.InternalError(err,w,r) } - debugDatabase := c.DebugPageDatabase{c.Topics.Count(),c.Users.Count(),c.Rstore.Count(),c.Prstore.Count(),c.Activity.Count(),likes,attachs,polls,views,viewsAgents,viewsForums,viewsLangs,viewsReferrers,viewsSystems} + postChunks, err := count("postchunks") + if err != nil { + return c.InternalError(err,w,r) + } + topicChunks, err := count("topicchunks") + if err != nil { + return c.InternalError(err,w,r) + } + debugDatabase := c.DebugPageDatabase{c.Topics.Count(),c.Users.Count(),c.Rstore.Count(),c.Prstore.Count(),c.Activity.Count(),likes,attachs,polls,views,viewsAgents,viewsForums,viewsLangs,viewsReferrers,viewsSystems,postChunks,topicChunks} staticSize, err := c.DirSize("./public/") if err != nil { diff --git a/templates/panel_dashboard.html b/templates/panel_dashboard.html index af4b5c24..c034337a 100644 --- a/templates/panel_dashboard.html +++ b/templates/panel_dashboard.html @@ -1,8 +1,15 @@