fix charts
All checks were successful
continuous-integration/drone/push Build is passing

This commit is contained in:
2026-01-14 11:14:46 +11:00
parent 5c34a9eacd
commit 013ae4568e
3 changed files with 31 additions and 33 deletions

View File

@@ -801,7 +801,11 @@ func writeTotalsChart(logger *slog.Logger, xlsx *excelize.File, sheetName string
if len(points) == 0 { if len(points) == 0 {
return return
} }
index := xlsx.NewSheet(sheetName) index, err := xlsx.NewSheet(sheetName)
if err != nil {
logger.Error("Error creating totals sheet", "error", err)
return
}
xlsx.SetActiveSheet(index) xlsx.SetActiveSheet(index)
headers := []string{"Label", "VmCount", "VcpuCount", "RamGB", "PresenceRatio", "Tin", "Bronze", "Silver", "Gold"} headers := []string{"Label", "VmCount", "VcpuCount", "RamGB", "PresenceRatio", "Tin", "Bronze", "Silver", "Gold"}
@@ -823,29 +827,23 @@ func writeTotalsChart(logger *slog.Logger, xlsx *excelize.File, sheetName string
} }
lastRow := len(points) + 1 lastRow := len(points) + 1
chart := fmt.Sprintf(`{ series := []excelize.ChartSeries{
"type": "line", {Name: fmt.Sprintf("%s!$B$1", sheetName), Categories: fmt.Sprintf("%s!$A$2:$A$%d", sheetName, lastRow), Values: fmt.Sprintf("%s!$B$2:$B$%d", sheetName, lastRow)},
"series": [ {Name: fmt.Sprintf("%s!$C$1", sheetName), Categories: fmt.Sprintf("%s!$A$2:$A$%d", sheetName, lastRow), Values: fmt.Sprintf("%s!$C$2:$C$%d", sheetName, lastRow)},
{"name": "%s!$B$1", "categories": "%s!$A$2:$A$%d", "values": "%s!$B$2:$B$%d"}, {Name: fmt.Sprintf("%s!$D$1", sheetName), Categories: fmt.Sprintf("%s!$A$2:$A$%d", sheetName, lastRow), Values: fmt.Sprintf("%s!$D$2:$D$%d", sheetName, lastRow)},
{"name": "%s!$C$1", "categories": "%s!$A$2:$A$%d", "values": "%s!$C$2:$C$%d"}, {Name: fmt.Sprintf("%s!$E$1", sheetName), Categories: fmt.Sprintf("%s!$A$2:$A$%d", sheetName, lastRow), Values: fmt.Sprintf("%s!$E$2:$E$%d", sheetName, lastRow)},
{"name": "%s!$D$1", "categories": "%s!$A$2:$A$%d", "values": "%s!$D$2:$D$%d"}, {Name: fmt.Sprintf("%s!$F$1", sheetName), Categories: fmt.Sprintf("%s!$A$2:$A$%d", sheetName, lastRow), Values: fmt.Sprintf("%s!$F$2:$F$%d", sheetName, lastRow)},
{"name": "%s!$E$1", "categories": "%s!$A$2:$A$%d", "values": "%s!$E$2:$E$%d"}, {Name: fmt.Sprintf("%s!$G$1", sheetName), Categories: fmt.Sprintf("%s!$A$2:$A$%d", sheetName, lastRow), Values: fmt.Sprintf("%s!$G$2:$G$%d", sheetName, lastRow)},
{"name": "%s!$F$1", "categories": "%s!$A$2:$A$%d", "values": "%s!$F$2:$F$%d"}, {Name: fmt.Sprintf("%s!$H$1", sheetName), Categories: fmt.Sprintf("%s!$A$2:$A$%d", sheetName, lastRow), Values: fmt.Sprintf("%s!$H$2:$H$%d", sheetName, lastRow)},
{"name": "%s!$G$1", "categories": "%s!$A$2:$A$%d", "values": "%s!$G$2:$G$%d"}, {Name: fmt.Sprintf("%s!$I$1", sheetName), Categories: fmt.Sprintf("%s!$A$2:$A$%d", sheetName, lastRow), Values: fmt.Sprintf("%s!$I$2:$I$%d", sheetName, lastRow)},
{"name": "%s!$H$1", "categories": "%s!$A$2:$A$%d", "values": "%s!$H$2:$H$%d"}, }
{"name": "%s!$I$1", "categories": "%s!$A$2:$A$%d", "values": "%s!$I$2:$I$%d"} chart := excelize.Chart{
], Type: excelize.Line,
"legend": {"position": "bottom"} Series: series,
}`, sheetName, sheetName, lastRow, sheetName, lastRow, Legend: excelize.ChartLegend{Position: "bottom"},
sheetName, sheetName, lastRow, sheetName, lastRow, }
sheetName, sheetName, lastRow, sheetName, lastRow,
sheetName, sheetName, lastRow, sheetName, lastRow,
sheetName, sheetName, lastRow, sheetName, lastRow,
sheetName, sheetName, lastRow, sheetName, lastRow,
sheetName, sheetName, lastRow, sheetName, lastRow,
sheetName, sheetName, lastRow, sheetName, lastRow)
if err := xlsx.AddChart(sheetName, "G2", chart); err != nil { if err := xlsx.AddChart(sheetName, "G2", &chart); err != nil {
logger.Error("Error adding totals chart", "error", err) logger.Error("Error adding totals chart", "error", err)
} }
} }

View File

@@ -1,15 +1,11 @@
package handler package handler
import ( import (
"context"
"log/slog" "log/slog"
"net/http"
"vctp/db" "vctp/db"
"vctp/internal/secrets" "vctp/internal/secrets"
"vctp/internal/settings" "vctp/internal/settings"
"vctp/internal/vcenter" "vctp/internal/vcenter"
"github.com/a-h/templ"
) )
// Handler handles requests. // Handler handles requests.
@@ -24,6 +20,7 @@ type Handler struct {
Settings *settings.Settings Settings *settings.Settings
} }
/*
func (h *Handler) html(ctx context.Context, w http.ResponseWriter, status int, t templ.Component) { func (h *Handler) html(ctx context.Context, w http.ResponseWriter, status int, t templ.Component) {
w.Header().Set("Content-Type", "text/html; charset=utf-8") w.Header().Set("Content-Type", "text/html; charset=utf-8")
w.WriteHeader(status) w.WriteHeader(status)
@@ -32,3 +29,4 @@ func (h *Handler) html(ctx context.Context, w http.ResponseWriter, status int, t
h.Logger.Error("Failed to render component", "error", err) h.Logger.Error("Failed to render component", "error", err)
} }
} }
*/

View File

@@ -116,22 +116,23 @@ func (h *Handler) VmModifyEvent(w http.ResponseWriter, r *http.Request) {
params.UpdateType = "reconfigure" params.UpdateType = "reconfigure"
} }
case "config.managedBy": // This changes when a VM becomes a placeholder or vice versa case "config.managedBy": // This changes when a VM becomes a placeholder or vice versa
if change["newValue"] == "(extensionKey = \"com.vmware.vcDr\", type = \"placeholderVm\")" { switch change["newValue"] {
case "(extensionKey = \"com.vmware.vcDr\", type = \"placeholderVm\")":
params.PlaceholderChange = sql.NullString{String: "placeholderVm", Valid: true} params.PlaceholderChange = sql.NullString{String: "placeholderVm", Valid: true}
h.Logger.Debug("placeholderVm") h.Logger.Debug("placeholderVm")
changeFound = true changeFound = true
params.UpdateType = "srm" params.UpdateType = "srm"
} else if change["newValue"] == "<unset>" { case "<unset>":
params.PlaceholderChange = sql.NullString{String: "Vm", Valid: true} params.PlaceholderChange = sql.NullString{String: "Vm", Valid: true}
h.Logger.Debug("vm") h.Logger.Debug("vm")
changeFound = true changeFound = true
params.UpdateType = "srm" params.UpdateType = "srm"
} else if change["newValue"] == "testVm" { case "testVm":
h.Logger.Debug("testVm") h.Logger.Debug("testVm")
params.PlaceholderChange = sql.NullString{String: "testVm", Valid: true} params.PlaceholderChange = sql.NullString{String: "testVm", Valid: true}
changeFound = true changeFound = true
params.UpdateType = "srm" params.UpdateType = "srm"
} else { default:
h.Logger.Error("Unexpected value for managedBy configuration", "new_value", change["newValue"]) h.Logger.Error("Unexpected value for managedBy configuration", "new_value", change["newValue"])
} }
@@ -145,12 +146,13 @@ func (h *Handler) VmModifyEvent(w http.ResponseWriter, r *http.Request) {
// TODO - track when this happens, maybe need a new database column? // TODO - track when this happens, maybe need a new database column?
case "config.managedBy.type": case "config.managedBy.type":
h.Logger.Debug("config.managedBy.type") h.Logger.Debug("config.managedBy.type")
if change["newValue"] == "testVm" { switch change["newValue"] {
case "testVm":
h.Logger.Debug("testVm") h.Logger.Debug("testVm")
params.PlaceholderChange = sql.NullString{String: "testVm", Valid: true} params.PlaceholderChange = sql.NullString{String: "testVm", Valid: true}
changeFound = true changeFound = true
params.UpdateType = "srm" params.UpdateType = "srm"
} else if change["newValue"] == "\\\"placeholderVm\\\"" { case "\\\"placeholderVm\\\"":
h.Logger.Debug("placeholderVm") h.Logger.Debug("placeholderVm")
params.PlaceholderChange = sql.NullString{String: "placeholderVm", Valid: true} params.PlaceholderChange = sql.NullString{String: "placeholderVm", Valid: true}
changeFound = true changeFound = true