-
+
-
- Partida ${escapeDynamicHtml(item?.match_id || "sin id")}
-${escapeDynamicHtml(mapName)}
-
- ${escapeDynamicHtml(formatDynamicScore(item?.result))}
-
+
+
- ${escapeDynamicHtml(mapName)}
-
-
-
-
+
Servidor
${escapeDynamicHtml(serverName)}Cierre
${escapeDynamicHtml(formatDynamicTimestamp(closedAt))}Jugadores
${escapeDynamicHtml(formatDynamicNumber(item?.player_count))}Marcador
${escapeDynamicHtml(formatDynamicScore(item?.result))}
+
+
+
+
+
+
+
+
+
+
`;
}
+ function formatDynamicResultLabel(result) {
+ const winner = String(result?.winner || "").toLowerCase();
+ if (winner === "allies" || winner === "allied") {
+ return "Victoria aliada";
+ }
+ if (winner === "axis") {
+ return "Victoria axis";
+ }
+ return "Empate";
+ }
+
+ function buildDynamicInternalMatchDetailUrl(item) {
+ const serverSlug = item?.server?.slug;
+ const matchId = item?.internal_detail_match_id || item?.match_id;
+ if (!serverSlug || matchId === undefined || matchId === null) {
+ return "";
+ }
+ return `./historico-partida.html?server=${encodeURIComponent(String(serverSlug))}&match=${encodeURIComponent(String(matchId))}`;
+ }
+
+ function normalizeDynamicExternalMatchUrl(value) {
+ if (typeof value !== "string" || !value.trim()) {
+ return "";
+ }
+ try {
+ const url = new URL(value.trim());
+ return ["http:", "https:"].includes(url.protocol) ? url.href : "";
+ } catch (error) {
+ return "";
+ }
+ }
+
function buildDynamicRecentMeta(data, items) {
const newest = items[0]?.closed_at || items[0]?.ended_at || items[0]?.started_at;
const source = data.selected_source || data.source || "rcon";
Servidor
+ ${escapeDynamicHtml(serverName)} +Cierre
+ ${escapeDynamicHtml(formatDynamicTimestamp(closedAt))} +Jugadores
+ ${escapeDynamicHtml(formatDynamicNumber(item?.player_count))} +Marcador
+ ${escapeDynamicHtml(formatDynamicScore(item?.result))} +
+ ${actions}
+
+