Skip to content

feat(web-ui): add per-file detail panel to Shared Files page - #463

Merged
ngosang merged 1 commit into
amule-org:masterfrom
ngosang:feature/web11
Jul 13, 2026
Merged

feat(web-ui): add per-file detail panel to Shared Files page#463
ngosang merged 1 commit into
amule-org:masterfrom
ngosang:feature/web11

Conversation

@ngosang

@ngosang ngosang commented Jul 13, 2026

Copy link
Copy Markdown
Member

Clicking a shared file in the table opens a detail panel in the lower half of the page, separated from the table by a draggable splitter, re-fetching live from GET /shared/{hash} while open. On phones it opens as a full-screen drill-down sheet, mirroring the Downloads detail panel.

Shared scaffolding:

  • Extract the splitter + bottom-panel structure into a reusable SplitDetail component consumed by both Downloads and Shared Files.
  • Move the detail-panel helpers (magnetLink, copyText, Section, and the stat-row builder statRow) into the common components.js module; download-detail.js now only exports DownloadDetail. The 'session / total' counter formatter twin() moves to format.js so the shared table and detail panel share one copy.
  • Rename the split/detail CSS classes that both pages share so they no longer carry the download-only dl- prefix (dl-view -> split-view, dl-detail* -> detail-, etc.); the download-only pieces- graph classes are untouched.

Shared detail panel, organised in three sections with mobile-readable labels (the per-field tooltips are not reachable on touch):

  • Sharing: Size, Uploaded / Requests / Accepted (each '(session / total)'), Share ratio, Complete sources. The latter is formatted like the desktop column (SharedFilesCtrl.cpp): '< N', 'N', or 'N - N' for the estimate range.
  • Activity: Priority, Clients on queue, File type.
  • Identity: Hash, Path, Parts.
  • Copy ED2K / Copy magnet buttons; Media and Comment sections shown when present. Shared files have no progress.parts, so there is no pieces graph.

Adds the en/es i18n strings, reusing downloads_detail_* keys where the text matches.

Clicking a shared file in the table opens a detail panel in the lower half of
the page, separated from the table by a draggable splitter, re-fetching live
from GET /shared/{hash} while open. On phones it opens as a full-screen
drill-down sheet, mirroring the Downloads detail panel.

Shared scaffolding:
- Extract the splitter + bottom-panel structure into a reusable SplitDetail
  component consumed by both Downloads and Shared Files.
- Move the detail-panel helpers (magnetLink, copyText, Section, and the stat-row
  builder statRow) into the common components.js module; download-detail.js now
  only exports DownloadDetail. The 'session / total' counter formatter twin()
  moves to format.js so the shared table and detail panel share one copy.
- Rename the split/detail CSS classes that both pages share so they no longer
  carry the download-only dl- prefix (dl-view -> split-view, dl-detail* ->
  detail-*, etc.); the download-only pieces-* graph classes are untouched.

Shared detail panel, organised in three sections with mobile-readable labels
(the per-field tooltips are not reachable on touch):
- Sharing: Size, Uploaded / Requests / Accepted (each '(session / total)'),
  Share ratio, Complete sources. The latter is formatted like the desktop
  column (SharedFilesCtrl.cpp): '< N', 'N', or 'N - N' for the estimate range.
- Activity: Priority, Clients on queue, File type.
- Identity: Hash, Path, Parts.
- Copy ED2K / Copy magnet buttons; Media and Comment sections shown when present.
Shared files have no progress.parts, so there is no pieces graph.

Adds the en/es i18n strings, reusing downloads_detail_* keys where the text
matches.
@ngosang
ngosang merged commit 2c78967 into amule-org:master Jul 13, 2026
13 checks passed
@ngosang
ngosang deleted the feature/web11 branch July 13, 2026 09:43
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant