191 lines
7.2 KiB
Markdown
191 lines
7.2 KiB
Markdown
---
|
|
id: TASK-150
|
|
title: Server card history and current match entrypoints
|
|
status: done
|
|
type: frontend
|
|
team: Frontend Senior
|
|
supporting_teams: []
|
|
roadmap_item: rcon-full-data
|
|
priority: high
|
|
---
|
|
|
|
# TASK-150 - Server card history and current match entrypoints
|
|
|
|
## Goal
|
|
|
|
Add server-specific navigation buttons to the home page and make the internal
|
|
historical page accept an initial server filter through the URL.
|
|
|
|
## Background
|
|
|
|
The home page currently renders live server cards in
|
|
`frontend/assets/js/main.js`. Each server card currently has a single
|
|
"Historico" action built through `renderServerAction(server)`.
|
|
|
|
We need clearer per-server actions for the active Comunidad Hispana servers:
|
|
|
|
- Open the public current scoreboard.
|
|
- Open our internal historical page already filtered by that server.
|
|
- Open our future internal live/current match page already filtered by that
|
|
server.
|
|
|
|
Important URL correction:
|
|
|
|
The current public scoreboard URLs are the base scoreboard URLs, without
|
|
`/games`:
|
|
|
|
- `comunidad-hispana-01` -> `https://scoreboard.comunidadhll.es`
|
|
- `comunidad-hispana-02` -> `https://scoreboard.comunidadhll.es:5443`
|
|
|
|
The `/games` URLs are only for the external public historical scoreboard, if
|
|
needed later:
|
|
|
|
- `comunidad-hispana-01` -> `https://scoreboard.comunidadhll.es/games`
|
|
- `comunidad-hispana-02` -> `https://scoreboard.comunidadhll.es:5443/games`
|
|
|
|
## Constraints / DO NOT BREAK
|
|
|
|
- Do not change backend storage.
|
|
- Do not change RCON ingestion.
|
|
- Do not change scoreboard correlation logic.
|
|
- Do not depend on server #03.
|
|
- Do not expose arbitrary URLs received from API payloads.
|
|
- Do not remove existing server card live status rendering.
|
|
- Do not implement the full live match page in this task.
|
|
- Keep the change frontend-focused and minimal.
|
|
- Preserve existing responsive layout.
|
|
|
|
## Allowed Changes
|
|
|
|
- `frontend/assets/js/main.js`
|
|
- `frontend/assets/css/main.css` or equivalent home CSS file
|
|
- historical page JS/CSS/HTML files needed to support `?server=`
|
|
- optionally add a minimal placeholder `partida-actual.html` if needed to
|
|
avoid a broken link
|
|
- docs only if needed
|
|
|
|
## Implementation Requirements
|
|
|
|
1. Replace the current single "Historico" server-card action with a small
|
|
action group.
|
|
2. For each active supported server, render these actions:
|
|
- "Scoreboard público"
|
|
- "Nuestro histórico"
|
|
- "Partida actual"
|
|
3. "Scoreboard público" must open the current public scoreboard base URL:
|
|
- `comunidad-hispana-01` -> `https://scoreboard.comunidadhll.es`
|
|
- `comunidad-hispana-02` -> `https://scoreboard.comunidadhll.es:5443`
|
|
It must NOT append `/games`.
|
|
4. "Nuestro histórico" must open the internal historical page with a server
|
|
query parameter:
|
|
- `historico.html?server=comunidad-hispana-01`
|
|
- `historico.html?server=comunidad-hispana-02`
|
|
5. "Partida actual" must open:
|
|
- `partida-actual.html?server=comunidad-hispana-01`
|
|
- `partida-actual.html?server=comunidad-hispana-02`
|
|
6. Add trusted frontend mappings for supported active servers only:
|
|
- `comunidad-hispana-01`
|
|
- `comunidad-hispana-02`
|
|
Do not add server #03.
|
|
7. The server identifier should be resolved from the server payload using
|
|
`external_server_id` or another already existing stable server slug. If the
|
|
server cannot be resolved to a trusted known server, do not render
|
|
public/current-match actions for it.
|
|
8. Update the historical page initialization so that:
|
|
- `?server=comunidad-hispana-01` selects Comunidad Hispana #01 instead of
|
|
defaulting to all servers.
|
|
- `?server=comunidad-hispana-02` selects Comunidad Hispana #02 instead of
|
|
defaulting to all servers.
|
|
- unknown or missing server query values fall back to the current default
|
|
behavior.
|
|
9. If `partida-actual.html` does not exist yet, create a minimal placeholder
|
|
page that:
|
|
- reads `?server=`
|
|
- displays "Partida actual"
|
|
- displays the selected server slug/name
|
|
- explains that the live detail view will be implemented in the next task
|
|
- includes a safe link back to the home page and historical page
|
|
Do not implement live data polling yet.
|
|
10. Ensure all generated URLs are built from trusted constants, not directly
|
|
from API-provided arbitrary values.
|
|
|
|
## Files to Read First
|
|
|
|
- `AGENTS.md`
|
|
- `ai/architecture-index.md`
|
|
- `ai/repo-context.md`
|
|
- `ai/orchestrator/frontend-senior.md`
|
|
- `frontend/assets/js/main.js`
|
|
- historical page files used for the existing server filter flow
|
|
|
|
## Expected Files to Modify
|
|
|
|
- `frontend/assets/js/main.js`
|
|
- home CSS only if the new action group needs layout styling
|
|
- historical page files needed for `?server=` initialization
|
|
- `partida-actual.html` only if a placeholder is needed
|
|
|
|
## Validation
|
|
|
|
- Run `node --check` on every modified frontend JS file.
|
|
- Review `git diff --name-only` and confirm the changed files match this task.
|
|
|
|
## Manual Verification
|
|
|
|
1. Open the home page.
|
|
2. Verify Comunidad Hispana #01 card shows:
|
|
- Scoreboard público
|
|
- Nuestro histórico
|
|
- Partida actual
|
|
3. Verify Comunidad Hispana #02 card shows:
|
|
- Scoreboard público
|
|
- Nuestro histórico
|
|
- Partida actual
|
|
4. Click "Scoreboard público" for Comunidad Hispana #01 and verify it opens:
|
|
`https://scoreboard.comunidadhll.es`
|
|
5. Click "Scoreboard público" for Comunidad Hispana #02 and verify it opens:
|
|
`https://scoreboard.comunidadhll.es:5443`
|
|
6. Click "Nuestro histórico" for Comunidad Hispana #01 and verify the
|
|
historical page loads with Comunidad Hispana #01 selected.
|
|
7. Click "Nuestro histórico" for Comunidad Hispana #02 and verify the
|
|
historical page loads with Comunidad Hispana #02 selected.
|
|
8. Click "Partida actual" for both servers and verify the page opens with the
|
|
correct server query parameter.
|
|
9. Verify no server #03 action is introduced.
|
|
|
|
## Commit Message
|
|
|
|
`feat: add current match server entrypoints`
|
|
|
|
## Expected Outcome
|
|
|
|
The home page exposes clear per-server navigation actions, and the internal
|
|
historical page can open directly filtered by server.
|
|
|
|
## Outcome
|
|
|
|
- Replaced the home server-card history URL path with a trusted frontend action
|
|
catalog for active servers `comunidad-hispana-01` and
|
|
`comunidad-hispana-02` only. Payload-provided `community_history_url`
|
|
values and the previous server #03 fallback are no longer used for those
|
|
card actions.
|
|
- Added the three per-server entrypoints from trusted constants: public
|
|
scoreboard base URL, internal historical filter URL and internal current
|
|
match URL.
|
|
- Confirmed `frontend/assets/js/historico.js` already normalizes the supported
|
|
`?server=` values into the active selector and falls back to `all-servers`
|
|
for unknown or missing values, so no historical page code change was needed.
|
|
- Added a minimal `partida-actual.html` placeholder with a trusted server label
|
|
map and safe internal links for TASK-151 to upgrade.
|
|
- Validation: `node --check frontend/assets/js/main.js`.
|
|
- Scope review: `git diff --name-only` and `git status --short` were reviewed
|
|
for the task move plus frontend files. Browser click verification was not
|
|
completed because the in-app browser JavaScript control tool was not
|
|
available after tool discovery in this session.
|
|
|
|
## Change Budget
|
|
|
|
- Prefer fewer than 5 modified files.
|
|
- Prefer changes under 200 lines when feasible.
|
|
- Split the work into follow-up tasks if the scope grows.
|