Skip to content

Commit 8184c0e

Browse files
feat: Revamp Game Server configuration UI by consolidating legacy settings and enhancing feature toggles
1 parent 7b7c251 commit 8184c0e

3 files changed

Lines changed: 118 additions & 101 deletions

File tree

src/XtremeIdiots.Portal.Web/Views/GameServers/ConfigurationSections/_GeneralConfiguration.cshtml

Lines changed: 97 additions & 67 deletions
Original file line numberDiff line numberDiff line change
@@ -28,76 +28,106 @@
2828
<input asp-for="GameServer.QueryPort" class="form-control" />
2929
<span asp-validation-for="GameServer.QueryPort" class="text-danger"></span>
3030
</div>
31+
</div>
32+
</div>
3133

32-
<hr />
33-
<h6 class="text-muted">Legacy Toggles</h6>
34-
35-
<div class="form-check mb-3">
36-
<label class="form-check-label">
37-
<input class="form-check-input feature-toggle" asp-for="GameServer.PortalServerListEnabled" />
38-
@Html.DisplayNameFor(m => m.GameServer.PortalServerListEnabled)
39-
<span class="badge bg-warning text-dark">Legacy</span>
40-
</label>
41-
</div>
42-
<div class="form-check mb-3">
43-
<label class="form-check-label">
44-
<input class="form-check-input feature-toggle" asp-for="GameServer.LiveTrackingEnabled" />
45-
@Html.DisplayNameFor(m => m.GameServer.LiveTrackingEnabled)
46-
<span class="badge bg-warning text-dark">Legacy</span>
47-
</label>
48-
</div>
49-
<div class="form-check mb-3">
50-
<label class="form-check-label">
51-
<input class="form-check-input feature-toggle" asp-for="GameServer.BannerServerListEnabled" />
52-
@Html.DisplayNameFor(m => m.GameServer.BannerServerListEnabled)
53-
<span class="badge bg-warning text-dark">Legacy</span>
54-
</label>
55-
</div>
56-
<div class="form-check mb-3">
57-
<label class="form-check-label">
58-
<input class="form-check-input feature-toggle" asp-for="GameServer.BotEnabled" />
59-
@Html.DisplayNameFor(m => m.GameServer.BotEnabled)
60-
<span class="badge bg-warning text-dark">Legacy</span>
61-
</label>
34+
<div class="ibox">
35+
<div class="ibox-title">
36+
Features
37+
</div>
38+
<div class="ibox-content">
39+
<div class="row">
40+
<div class="col-md-4 col-sm-6 mb-3">
41+
<div class="form-check form-switch">
42+
<input class="form-check-input feature-toggle" asp-for="GameServer.FtpEnabled"
43+
data-toggle-tab="ftp-tab-btn" />
44+
<label class="form-check-label" asp-for="GameServer.FtpEnabled">
45+
<i class="fa-solid fa-folder-open text-muted me-1"></i> @Html.DisplayNameFor(m => m.GameServer.FtpEnabled)
46+
</label>
47+
</div>
48+
</div>
49+
<div class="col-md-4 col-sm-6 mb-3">
50+
<div class="form-check form-switch">
51+
<input class="form-check-input feature-toggle" asp-for="GameServer.RconEnabled"
52+
data-toggle-tab="rcon-tab-btn" />
53+
<label class="form-check-label" asp-for="GameServer.RconEnabled">
54+
<i class="fa-solid fa-terminal text-muted me-1"></i> @Html.DisplayNameFor(m => m.GameServer.RconEnabled)
55+
</label>
56+
</div>
57+
</div>
58+
<div class="col-md-4 col-sm-6 mb-3">
59+
<div class="form-check form-switch">
60+
<input class="form-check-input feature-toggle" asp-for="GameServer.AgentEnabled"
61+
data-toggle-tab="agent-tab-btn" />
62+
<label class="form-check-label" asp-for="GameServer.AgentEnabled">
63+
<i class="fa-solid fa-robot text-muted me-1"></i> @Html.DisplayNameFor(m => m.GameServer.AgentEnabled)
64+
</label>
65+
</div>
66+
</div>
67+
<div class="col-md-4 col-sm-6 mb-3">
68+
<div class="form-check form-switch">
69+
<input class="form-check-input feature-toggle" asp-for="GameServer.BanFileSyncEnabled"
70+
data-toggle-tab="banfilesync-tab-btn" />
71+
<label class="form-check-label" asp-for="GameServer.BanFileSyncEnabled">
72+
<i class="fa-solid fa-ban text-muted me-1"></i> @Html.DisplayNameFor(m => m.GameServer.BanFileSyncEnabled)
73+
</label>
74+
</div>
75+
</div>
76+
<div class="col-md-4 col-sm-6 mb-3">
77+
<div class="form-check form-switch">
78+
<input class="form-check-input feature-toggle" asp-for="GameServer.ServerListEnabled"
79+
data-toggle-tab="serverlist-tab-btn" />
80+
<label class="form-check-label" asp-for="GameServer.ServerListEnabled">
81+
<i class="fa-solid fa-list text-muted me-1"></i> @Html.DisplayNameFor(m => m.GameServer.ServerListEnabled)
82+
</label>
83+
</div>
84+
</div>
6285
</div>
86+
</div>
87+
</div>
6388

64-
<hr />
65-
<h6 class="text-muted">Integration Toggles</h6>
66-
67-
<div class="form-check mb-3">
68-
<label class="form-check-label">
69-
<input class="form-check-input feature-toggle" asp-for="GameServer.FtpEnabled"
70-
data-toggle-tab="ftp-tab-btn" />
71-
@Html.DisplayNameFor(m => m.GameServer.FtpEnabled)
72-
</label>
73-
</div>
74-
<div class="form-check mb-3">
75-
<label class="form-check-label">
76-
<input class="form-check-input feature-toggle" asp-for="GameServer.RconEnabled"
77-
data-toggle-tab="rcon-tab-btn" />
78-
@Html.DisplayNameFor(m => m.GameServer.RconEnabled)
79-
</label>
80-
</div>
81-
<div class="form-check mb-3">
82-
<label class="form-check-label">
83-
<input class="form-check-input feature-toggle" asp-for="GameServer.AgentEnabled"
84-
data-toggle-tab="agent-tab-btn" />
85-
@Html.DisplayNameFor(m => m.GameServer.AgentEnabled)
86-
</label>
87-
</div>
88-
<div class="form-check mb-3">
89-
<label class="form-check-label">
90-
<input class="form-check-input feature-toggle" asp-for="GameServer.BanFileSyncEnabled"
91-
data-toggle-tab="banfilesync-tab-btn" />
92-
@Html.DisplayNameFor(m => m.GameServer.BanFileSyncEnabled)
93-
</label>
94-
</div>
95-
<div class="form-check mb-3">
96-
<label class="form-check-label">
97-
<input class="form-check-input feature-toggle" asp-for="GameServer.ServerListEnabled"
98-
data-toggle-tab="serverlist-tab-btn" />
99-
@Html.DisplayNameFor(m => m.GameServer.ServerListEnabled)
100-
</label>
89+
<div class="ibox">
90+
<div class="ibox-title collapsed" data-bs-toggle="collapse" data-bs-target="#legacyTogglesBody" role="button" style="cursor: pointer;">
91+
<span class="text-muted"><i class="fa-solid fa-chevron-right me-1 collapse-icon"></i> Legacy Settings</span>
92+
<span class="badge bg-warning text-dark ms-2">Deprecated</span>
93+
</div>
94+
<div class="collapse" id="legacyTogglesBody">
95+
<div class="ibox-content">
96+
<small class="text-muted d-block mb-3">These settings are being phased out and will be removed in a future release.</small>
97+
<div class="row">
98+
<div class="col-md-4 col-sm-6 mb-2">
99+
<div class="form-check form-switch">
100+
<input class="form-check-input feature-toggle" asp-for="GameServer.PortalServerListEnabled" />
101+
<label class="form-check-label" asp-for="GameServer.PortalServerListEnabled">
102+
@Html.DisplayNameFor(m => m.GameServer.PortalServerListEnabled)
103+
</label>
104+
</div>
105+
</div>
106+
<div class="col-md-4 col-sm-6 mb-2">
107+
<div class="form-check form-switch">
108+
<input class="form-check-input feature-toggle" asp-for="GameServer.LiveTrackingEnabled" />
109+
<label class="form-check-label" asp-for="GameServer.LiveTrackingEnabled">
110+
@Html.DisplayNameFor(m => m.GameServer.LiveTrackingEnabled)
111+
</label>
112+
</div>
113+
</div>
114+
<div class="col-md-4 col-sm-6 mb-2">
115+
<div class="form-check form-switch">
116+
<input class="form-check-input feature-toggle" asp-for="GameServer.BannerServerListEnabled" />
117+
<label class="form-check-label" asp-for="GameServer.BannerServerListEnabled">
118+
@Html.DisplayNameFor(m => m.GameServer.BannerServerListEnabled)
119+
</label>
120+
</div>
121+
</div>
122+
<div class="col-md-4 col-sm-6 mb-2">
123+
<div class="form-check form-switch">
124+
<input class="form-check-input feature-toggle" asp-for="GameServer.BotEnabled" />
125+
<label class="form-check-label" asp-for="GameServer.BotEnabled">
126+
@Html.DisplayNameFor(m => m.GameServer.BotEnabled)
127+
</label>
128+
</div>
129+
</div>
130+
</div>
101131
</div>
102132
</div>
103133
</div>

src/XtremeIdiots.Portal.Web/Views/GameServers/Edit.cshtml

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -149,5 +149,17 @@
149149
}
150150
});
151151
});
152+
153+
// Rotate chevron icon on legacy settings collapse
154+
var legacyToggle = document.querySelector('[data-bs-target="#legacyTogglesBody"]');
155+
if (legacyToggle) {
156+
legacyToggle.addEventListener('click', function () {
157+
var icon = this.querySelector('.collapse-icon');
158+
if (icon) {
159+
icon.classList.toggle('fa-chevron-right');
160+
icon.classList.toggle('fa-chevron-down');
161+
}
162+
});
163+
}
152164
</script>
153165
}

src/XtremeIdiots.Portal.Web/Views/GameServers/Index.cshtml

Lines changed: 9 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -40,32 +40,19 @@
4040
<th scope="col">
4141
@Html.DisplayNameFor(model => model.Hostname)
4242
</th>
43-
<th>
44-
@Html.DisplayNameFor(model => model.LiveTrackingEnabled)
45-
</th>
46-
<th>
47-
@Html.DisplayNameFor(model => model.PortalServerListEnabled)
48-
</th>
49-
<th>
50-
@Html.DisplayNameFor(model => model.BannerServerListEnabled)
51-
</th>
52-
<th>
53-
@Html.DisplayNameFor(model => model.BotEnabled)
54-
<span class="badge bg-warning text-dark">Legacy</span>
55-
</th>
56-
<th>
57-
@Html.DisplayNameFor(model => model.AgentEnabled)
58-
</th>
59-
<th>
43+
<th scope="col">
6044
@Html.DisplayNameFor(model => model.FtpEnabled)
6145
</th>
62-
<th>
46+
<th scope="col">
6347
@Html.DisplayNameFor(model => model.RconEnabled)
6448
</th>
65-
<th>
49+
<th scope="col">
50+
@Html.DisplayNameFor(model => model.AgentEnabled)
51+
</th>
52+
<th scope="col">
6653
@Html.DisplayNameFor(model => model.BanFileSyncEnabled)
6754
</th>
68-
<th>
55+
<th scope="col">
6956
@Html.DisplayNameFor(model => model.ServerListEnabled)
7057
</th>
7158
<th></th>
@@ -88,26 +75,14 @@
8875
<server-host host="@item.Hostname" port="@item.QueryPort"></server-host>
8976
</td>
9077
<td>
91-
@Html.DisplayFor(modelItem => item.LiveTrackingEnabled)
92-
</td>
93-
<td>
94-
@Html.DisplayFor(modelItem => item.PortalServerListEnabled)
95-
</td>
96-
<td>
97-
@Html.DisplayFor(modelItem => item.BannerServerListEnabled)
78+
@Html.DisplayFor(modelItem => item.FtpEnabled)
9879
</td>
9980
<td>
100-
@Html.DisplayFor(modelItem => item.BotEnabled)
81+
@Html.DisplayFor(modelItem => item.RconEnabled)
10182
</td>
10283
<td>
10384
@Html.DisplayFor(modelItem => item.AgentEnabled)
10485
</td>
105-
<td>
106-
@Html.DisplayFor(modelItem => item.FtpEnabled)
107-
</td>
108-
<td>
109-
@Html.DisplayFor(modelItem => item.RconEnabled)
110-
</td>
11186
<td>
11287
@Html.DisplayFor(modelItem => item.BanFileSyncEnabled)
11388
</td>

0 commit comments

Comments
 (0)