fix: update Config page column labels/fields for new sheet layout incl Campus col 8

This commit is contained in:
2026-09-09 10:47:53 +10:00
parent 2a8930d77b
commit b7fc295275
+9 -8
View File
@@ -44,14 +44,15 @@ namespace Disco.Plugins.ServiceTracker.WebHandler
if (int.TryParse(F("gsColEmail"), out c)) cfg.GoogleSheet.ColEmail = c;
if (int.TryParse(F("gsColDevice"), out c)) cfg.GoogleSheet.ColDeviceName = c;
if (int.TryParse(F("gsColLocation"), out c)) cfg.GoogleSheet.ColLocation = c;
if (int.TryParse(F("gsColCampus"), out c)) cfg.GoogleSheet.ColCampus = c;
if (int.TryParse(F("gsColIssue"), out c)) cfg.GoogleSheet.ColIssue = c;
if (int.TryParse(F("gsColPriority"), out c)) cfg.GoogleSheet.ColPriority = c;
if (int.TryParse(F("gsColStatus"), out c)) cfg.GoogleSheet.ColStatus = c;
if (int.TryParse(F("gsColAssigned"), out c)) cfg.GoogleSheet.ColAssignedTo = c;
if (int.TryParse(F("gsColRequestedBy"), out c)) cfg.GoogleSheet.ColRequestedBy = c;
if (int.TryParse(F("gsColPreferredDate"), out c)) cfg.GoogleSheet.ColPreferredDate = c;
if (int.TryParse(F("gsColNotes"), out c)) cfg.GoogleSheet.ColNotes = c;
if (int.TryParse(F("gsColCompletion"), out c)) cfg.GoogleSheet.ColCompletionDate = c;
if (int.TryParse(F("gsColNotes"), out c)) cfg.GoogleSheet.ColNotes = c;
int hr; if (int.TryParse(F("gsHeaderRows"), out hr)) cfg.GoogleSheet.HeaderRows = hr;
var techs = PJL<TechEntry>(F("techsJson")); if (techs != null) cfg.Technicians = techs;
var pris = PJL<PriorityLevel>(F("prioritiesJson")); if (pris != null) cfg.Priorities = pris;
@@ -85,7 +86,6 @@ namespace Disco.Plugins.ServiceTracker.WebHandler
s.Append("<div class='lbar'>"); foreach (var l in m.Config.Locations) { int ct; m.Stats.ByLocation.TryGetValue(l.Id, out ct); if (ct > 0) s.Append("<a href='" + u + "/Dashboard?location=" + l.Id + "' class='lc' style='background:" + l.Color + ";'>" + l.Icon + " " + H(l.Name) + " <b>" + ct + "</b></a>"); } s.Append("</div>");
s.Append("<div class='ctrls'><span class='cl'>Sort:</span>"); foreach (var o in new[] { "newest|Newest", "due|Due", "priority|Priority", "age|Age", "sla|SLA", "modified|Updated" }) { var p = o.Split('|'); s.Append("<a href='" + u + "/Dashboard?sort=" + p[0] + "' class='sb" + (p[0] == m.SortBy ? " act" : "") + "'>" + p[1] + "</a>"); } if (!string.IsNullOrEmpty(m.CurrentFilter)) s.Append("<a href='" + u + "/Dashboard' class='sb clr'>&#x2716;</a>"); s.Append("</div>");
s.Append("<div class='dash-layout'><div class='tile-grid'>"); if (m.Tiles.Count == 0) s.Append("<div class='empty'>&#x2705; No open jobs</div>"); else foreach (var t in m.Tiles) s.Append(TileHtml(t, u)); s.Append("</div>");
// Sidebar panels
s.Append("<div class='sidebar'>");
s.Append(SidebarPanel("&#x1F4E6; Ready for Return", "#28A745", m.ReadyForReturn, u, true));
s.Append(SidebarPanel("&#x23F8; On Hold", "#6C757D", m.OnHold, u, false));
@@ -156,19 +156,20 @@ namespace Disco.Plugins.ServiceTracker.WebHandler
s.Append("<div class='fg'><label>Default Location</label><select name='defaultLocation' class='fc'>"); foreach (var l in cfg.Locations) s.Append("<option value='" + l.Id + "'" + (cfg.DefaultLocationId == l.Id ? " selected" : "") + ">" + l.Icon + " " + H(l.Name) + "</option>"); s.Append("</select></div></div>");
var gs = cfg.GoogleSheet ?? new GoogleSheetConfig();
s.Append("<div class='cc'><h3>&#x1F4C4; Google Sheet (NTT)</h3><div class='fg'><label><input type='checkbox' name='gsEnabled'" + (gs.Enabled ? " checked" : "") + "/> Enable</label></div><div class='fg'><label>Spreadsheet ID / Published Key</label><input name='gsSpreadsheetId' class='fc' value='" + H(gs.SpreadsheetId) + "'/></div><div class='fg'><label>Tab GID</label><input name='gsGid' class='fc' value='" + H(gs.GId) + "'/></div><div class='fg'><label>Refresh (min)</label><input type='number' name='gsRefresh' class='fc' value='" + gs.RefreshMinutes + "' min='1'/></div><div class='fg'><label>Header Rows</label><input type='number' name='gsHeaderRows' class='fc' value='" + gs.HeaderRows + "'/></div>");
s.Append("<p class='ch'>Column indices (0-based):</p><div class='col-grid'>");
s.Append("<p class='ch'>Column indices (0-based). Set to -1 to disable a column.</p><div class='col-grid'>");
s.Append("<div class='fg'><label>Date (0)</label><input type='number' name='gsColTimestamp' class='fc' value='" + gs.ColTimestamp + "'/></div>");
s.Append("<div class='fg'><label>Email (1)</label><input type='number' name='gsColEmail' class='fc' value='" + gs.ColEmail + "'/></div>");
s.Append("<div class='fg'><label>Task/Request (2)</label><input type='number' name='gsColDevice' class='fc' value='" + gs.ColDeviceName + "'/></div>");
s.Append("<div class='fg'><label>Description (3)</label><input type='number' name='gsColIssue' class='fc' value='" + gs.ColIssue + "'/></div>");
s.Append("<div class='fg'><label>Location (4)</label><input type='number' name='gsColLocation' class='fc' value='" + gs.ColLocation + "'/></div>");
s.Append("<div class='fg'><label>Location/Classroom (4)</label><input type='number' name='gsColLocation' class='fc' value='" + gs.ColLocation + "'/></div>");
s.Append("<div class='fg'><label>Requested By (5)</label><input type='number' name='gsColRequestedBy' class='fc' value='" + gs.ColRequestedBy + "'/></div>");
s.Append("<div class='fg'><label>Priority (6)</label><input type='number' name='gsColPriority' class='fc' value='" + gs.ColPriority + "'/></div>");
s.Append("<div class='fg'><label>Preferred Date (7)</label><input type='number' name='gsColPreferredDate' class='fc' value='" + gs.ColPreferredDate + "'/></div>");
s.Append("<div class='fg'><label>Assigned To (8)</label><input type='number' name='gsColAssigned' class='fc' value='" + gs.ColAssignedTo + "'/></div>");
s.Append("<div class='fg'><label>Status (9)</label><input type='number' name='gsColStatus' class='fc' value='" + gs.ColStatus + "'/></div>");
s.Append("<div class='fg'><label>Completion (10)</label><input type='number' name='gsColCompletion' class='fc' value='" + gs.ColCompletionDate + "'/></div>");
s.Append("<div class='fg'><label>Notes (11)</label><input type='number' name='gsColNotes' class='fc' value='" + gs.ColNotes + "'/></div>");
s.Append("<div class='fg'><label>Campus (8)</label><input type='number' name='gsColCampus' class='fc' value='" + gs.ColCampus + "'/></div>");
s.Append("<div class='fg'><label>Assigned To (9)</label><input type='number' name='gsColAssigned' class='fc' value='" + gs.ColAssignedTo + "'/></div>");
s.Append("<div class='fg'><label>Status (10)</label><input type='number' name='gsColStatus' class='fc' value='" + gs.ColStatus + "'/></div>");
s.Append("<div class='fg'><label>Completion (-1=none)</label><input type='number' name='gsColCompletion' class='fc' value='" + gs.ColCompletionDate + "'/></div>");
s.Append("<div class='fg'><label>Notes (13)</label><input type='number' name='gsColNotes' class='fc' value='" + gs.ColNotes + "'/></div>");
s.Append("</div><p class='ch'>Use the 2PACX-... published key. Publish as CSV.</p></div>");
s.Append("<div class='cc'><h3>&#x1F527; Technicians</h3><div id='tL'>"); foreach (var t in cfg.Technicians) { var ids = t.DiscoUserIds != null ? string.Join(", ", t.DiscoUserIds) : ""; s.Append("<div class='tech-row'><input class='fc tc-n' value='" + H(t.DisplayName) + "' placeholder='Name'/><input class='fc tc-i' value='" + H(ids) + "' placeholder='Disco IDs'/><input class='fc tc-e' value='" + H(t.Email) + "' placeholder='Email'/><button type='button' class='btn-rm' onclick='this.parentNode.remove()'>&#x2716;</button></div>"); }
s.Append("</div><button type='button' class='btn bd btn-sm' onclick='aT()'>+ Add Tech</button><textarea name='techsJson' id='tO' class='hid'></textarea></div>");