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 @@

{{lang "panel_dashboard_head"}}

-
-
-{{range .}} +
{{flush}} +
+{{range .Grid1}} +
+ {{if .Href}}{{.Body}}{{else}}{{.Body}}{{end}} +
+{{end}} +
{{flush}} +
+{{range .Grid2}}
{{if .Href}}{{.Body}}{{else}}{{.Body}}{{end}}
diff --git a/templates/panel_debug.html b/templates/panel_debug.html index 2b2333f8..ea73af57 100644 --- a/templates/panel_debug.html +++ b/templates/panel_debug.html @@ -1,6 +1,6 @@

{{lang "panel_debug_head"}}

-
+
{{flush}}
{{lang "panel_debug_uptime_label"}}
{{lang "panel_debug_go_version_label"}}
@@ -137,6 +137,15 @@
{{.Database.ViewsLangs}}
{{.Database.ViewsReferrers}}
{{.Database.ViewsSystems}}
+ + +
Post Analytics
+
Topic Analytics
+
???
+ +
{{.Database.PostChunks}}
+
{{.Database.TopicChunks}}
+
?

Disk

diff --git a/themes/cosora/public/panel.css b/themes/cosora/public/panel.css index 3ff42a26..fabf5524 100644 --- a/themes/cosora/public/panel.css +++ b/themes/cosora/public/panel.css @@ -109,6 +109,9 @@ #dash-postsperday:before, #dash-topicsperday:before { content: "\f27b"; } +.grid2 { + margin-top: 16px; +} #panel_debug .grid_stat:not(.grid_stat_head) { margin-bottom: 8px; } diff --git a/themes/nox/public/panel.css b/themes/nox/public/panel.css index 36e7eae8..87ec37ba 100644 --- a/themes/nox/public/panel.css +++ b/themes/nox/public/panel.css @@ -122,6 +122,9 @@ .stat_red { background-color: rgb(88,68,68); } +.grid2 { + margin-top: 12px; +} .panel_buttons, .panel_floater { margin-left: auto; diff --git a/themes/shadow/public/panel.css b/themes/shadow/public/panel.css index 6d447dcb..961de724 100644 --- a/themes/shadow/public/panel.css +++ b/themes/shadow/public/panel.css @@ -57,6 +57,9 @@ display: block; font-size: 15px; } +.grid2 { + margin-top: 6px; +} #panel_forums .rowitem { display: flex; @@ -70,7 +73,6 @@ float: none; margin-left: 0px; } - #panel_users .ban_button:before { content: "|"; margin-right: 4px; diff --git a/themes/tempra_simple/public/main.css b/themes/tempra_simple/public/main.css index 68189dfd..26d7a75e 100644 --- a/themes/tempra_simple/public/main.css +++ b/themes/tempra_simple/public/main.css @@ -217,6 +217,10 @@ main > *:last-child { width: 100%; overflow: hidden; } +.grid_item a { + text-decoration: none; + color: black; +} .grid_stat, .grid_istat { text-align: center; padding-top: 12px; @@ -224,9 +228,9 @@ main > *:last-child { font-size: 16px; } -.grid_istat { +/*.grid_istat { margin-bottom: 5px; -} +}*/ .stat_green { background-color: lightgreen; border-color: lightgreen; @@ -243,6 +247,9 @@ main > *:last-child { background-color: lightgray; border-color: lightgray; } +.grid2 { + margin-top: 16px; +} .rowhead .rowitem, .colstack_head .rowitem { background-color: rgb(252,252,252);