From c3af0d51e4356c22da180f2b9dde734be64f0342 Mon Sep 17 00:00:00 2001 From: Claude Date: Mon, 13 Apr 2026 21:04:01 -0500 Subject: [PATCH] fix: inline card in matrix_body - EJS include not in scope with layout:false --- .../src/views/admin/servers/_matrix_body.ejs | 384 +++++++++++++++++- 1 file changed, 382 insertions(+), 2 deletions(-) diff --git a/services/arbiter-3.0/src/views/admin/servers/_matrix_body.ejs b/services/arbiter-3.0/src/views/admin/servers/_matrix_body.ejs index 79dc542..5e8a953 100644 --- a/services/arbiter-3.0/src/views/admin/servers/_matrix_body.ejs +++ b/services/arbiter-3.0/src/views/admin/servers/_matrix_body.ejs @@ -5,7 +5,197 @@
<% txServers.forEach(function(server) { %> - <%- include('_server_card', { server: server }) %> + <% + const isOnline = server.log.is_online; + const hasError = !!server.log.last_error; + const config = server.config; + const shortName = config ? config.short_name : null; + const locked = config ? config.short_name_locked : false; + const discordComplete = server.discord?.complete; + const unconfigured = server.discord?.unconfigured; + const nodeBadge = server.node === 'TX1' ? '🔥 TX1' : '❄️ NC1'; + + let borderClass = 'border-gray-200 dark:border-gray-700'; + if (isOnline && !hasError) borderClass = 'border-green-500 shadow-[0_0_10px_rgba(34,197,94,0.2)]'; + if (hasError) borderClass = 'border-red-500 shadow-[0_0_10px_rgba(239,68,68,0.2)]'; +%> + +
+ + +
+
+

<%= server.name %>

+ <%= nodeBadge %> +
+ + + <%= isOnline ? 'Online' : 'Offline' %> + +
+ + +
+ <% if (locked) { %> + + 🔒 <%= shortName %> + + <% } else { %> +
+ + + <% if (shortName) { %> + + <% } %> +
+

⚠️ Once locked, this cannot be changed

+ <% } %> +
+ + +
+
+ Whitelist + + <%= server.whitelistEnabled ? '✅ Enabled' : '🔓 Disabled' %> + +
+
+ Last Sync + + <%= server.log.last_successful_sync ? new Date(server.log.last_successful_sync).toLocaleString() : 'Never' %> + +
+
+ + +
+ Subdomain + <% if (config && config.subdomain) { %> +
+ 🌐 <%= config.subdomain %>.firefrostgaming.com + <%= config.server_ip || '' %>:<%= config.server_port || 25565 %> +
+ <% } else if (config && config.server_ip) { %> +
+ 🌐 No subdomain + <%= config.server_ip %>:<%= config.server_port || 25565 %> +
+
+ + +
+ <% } else { %> + No server config + <% } %> +
+ + +
+ Discord Channels + <% if (unconfigured) { %> + Set short name to enable channel detection + <% } else if (discordComplete) { %> + ✅ All 5 channels configured + <% } else if (server.discord?.found?.length > 0 || server.discord?.missing?.length > 0) { %> +
+ <% if (server.discord.found.length > 0) { %> +
✅ <%= server.discord.found.join(', ') %>
+ <% } %> + <% if (server.discord.missing.length > 0) { %> +
❌ Missing: <%= server.discord.missing.join(', ') %>
+ <% } %> +
+ <% } %> +
+ + <% if (hasError) { %> +
+ Error: <%= server.log.last_error %> +
+ <% } %> + + +
+ + + + + <% if (locked && !discordComplete) { %> + + <% } %> + + <% if (locked && server.discord?.found?.length > 0) { %> + + <% } %> + + +
+ + + +
+
+
+ <% }) %> <% if (txServers.length === 0) { %>

No servers found.

<% } %>
@@ -16,7 +206,197 @@
<% ncServers.forEach(function(server) { %> - <%- include('_server_card', { server: server }) %> + <% + const isOnline = server.log.is_online; + const hasError = !!server.log.last_error; + const config = server.config; + const shortName = config ? config.short_name : null; + const locked = config ? config.short_name_locked : false; + const discordComplete = server.discord?.complete; + const unconfigured = server.discord?.unconfigured; + const nodeBadge = server.node === 'TX1' ? '🔥 TX1' : '❄️ NC1'; + + let borderClass = 'border-gray-200 dark:border-gray-700'; + if (isOnline && !hasError) borderClass = 'border-green-500 shadow-[0_0_10px_rgba(34,197,94,0.2)]'; + if (hasError) borderClass = 'border-red-500 shadow-[0_0_10px_rgba(239,68,68,0.2)]'; +%> + +
+ + +
+
+

<%= server.name %>

+ <%= nodeBadge %> +
+ + + <%= isOnline ? 'Online' : 'Offline' %> + +
+ + +
+ <% if (locked) { %> + + 🔒 <%= shortName %> + + <% } else { %> +
+ + + <% if (shortName) { %> + + <% } %> +
+

⚠️ Once locked, this cannot be changed

+ <% } %> +
+ + +
+
+ Whitelist + + <%= server.whitelistEnabled ? '✅ Enabled' : '🔓 Disabled' %> + +
+
+ Last Sync + + <%= server.log.last_successful_sync ? new Date(server.log.last_successful_sync).toLocaleString() : 'Never' %> + +
+
+ + +
+ Subdomain + <% if (config && config.subdomain) { %> +
+ 🌐 <%= config.subdomain %>.firefrostgaming.com + <%= config.server_ip || '' %>:<%= config.server_port || 25565 %> +
+ <% } else if (config && config.server_ip) { %> +
+ 🌐 No subdomain + <%= config.server_ip %>:<%= config.server_port || 25565 %> +
+
+ + +
+ <% } else { %> + No server config + <% } %> +
+ + +
+ Discord Channels + <% if (unconfigured) { %> + Set short name to enable channel detection + <% } else if (discordComplete) { %> + ✅ All 5 channels configured + <% } else if (server.discord?.found?.length > 0 || server.discord?.missing?.length > 0) { %> +
+ <% if (server.discord.found.length > 0) { %> +
✅ <%= server.discord.found.join(', ') %>
+ <% } %> + <% if (server.discord.missing.length > 0) { %> +
❌ Missing: <%= server.discord.missing.join(', ') %>
+ <% } %> +
+ <% } %> +
+ + <% if (hasError) { %> +
+ Error: <%= server.log.last_error %> +
+ <% } %> + + +
+ + + + + <% if (locked && !discordComplete) { %> + + <% } %> + + <% if (locked && server.discord?.found?.length > 0) { %> + + <% } %> + + +
+ + + +
+
+
+ <% }) %> <% if (ncServers.length === 0) { %>

No servers found.

<% } %>