Skip to content

fix(signage-manager): fix display and zone selection and states - #532

Merged
MrYuion merged 3 commits into
developfrom
fix/signage-manager-displays-zones
Oct 2, 2026
Merged

MrYuion merged 3 commits into
developfrom
fix/signage-manager-displays-zones

Conversation

@MrYuion

@MrYuion MrYuion commented Oct 2, 2026 •

Copy link
Copy Markdown
Collaborator

On the displays and zones pages:

  • Deep links: a deep-linked id was fetched only once, so pressing Back to it kept the wrong item selected, and the edit and delete buttons acted on it.
  • No refresh: display create, edit and delete did not refresh the zone tabs, report or palette.
  • Lists: failed loads looked like empty lists or "End of list".
  • Zone header count: it counted every zone in the tree.
  • Duplicate request: opening a display requested template mappings twice.

Changes

  • Routing: a shared selectRoutedItem loads a routed id again after Back, and shows an error when it cannot load.
  • Refresh: the display service calls changed() after a save or removal.
  • Error states: loading and error states with Retry in the display list, zone tree and content tabs.
  • Zone count: the zone header shows the server total of signage zones; Retry also reloads that list.
  • One mappings request: one template-mappings resource for the tab badge and the schedule.
  • Cleanup: removed the as any on queryZones, and use [(ngModel)].

Testing

  • Unit tests for each fix. Each fails without its fix.
  • nx test signage-manager (987) and nx build signage-manager pass.
  • Local PlaceOS stack, with 208 displays seeded:
    • Back after a deep link, and a bad id.
    • Delete and edit refresh.
    • List and tree errors with Retry, and slow tabs.
    • The header count, and one mappings request.

Notes

  • A bad id shows "Check your connection" even when the item does not exist. This is out of scope here.

Merge order

Conflicts with #531 only in apps/signage-manager/USER_STORIES.md. Based on develop.


Changes made by Claude Opus 5.5 (1M context) in Claude Code, running in T3 Code.

🤖 Generated with Claude Code

@vercel

vercel Bot commented Oct 2, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

1 Skipped Deployment
Project Deployment Actions Updated
frontend-templates Ignored Ignored Oct 2, 2026 3:15am UTC

@greptile-apps

greptile-apps Bot commented Oct 2, 2026 •

Copy link
Copy Markdown

RetriggerConfidence Score: 5/5

[Medium risk] Fixes display and zone selection, loading states, and error handling.

The PR appears safe to merge; the previous findings are addressed and no new blocking issue was found.

Findings

  1. P2 Empty playlist tabs show errors ▶

Summary

Display and zone pages now reload routed items when navigation returns to them, refresh related views after display changes, and show loading or retry states for failed requests. The PR also corrects the zone count and shares display template mappings between views.

  • Routed selections, list and tab errors, and display updates now have clear recovery paths.
  • The zone header uses the signage-zone total, and display views share one mappings request.
  • Tests and user-story notes are updated for these behaviors.
Diagram
%%{init: {'theme': 'neutral'}}%%
flowchart LR
  Route[Display or zone route] --> Selection[Select from list or load by ID]
  Selection --> Details[Selected item]
  Details --> Tabs[Playlist and related-item tabs]
  Details --> Mappings[Shared display template mappings]
  ZoneLists[Zone list requests] --> Tree[Zone tree and Retry]
  ZoneLists --> Count[Zone header count]
Loading

Reviews (3) · Last reviewed commit: "fix(signage-manager): keep the empty pla..."

Comment thread apps/signage-manager/src/app/zones/signage-zone.service.ts
Comment thread apps/signage-manager/src/app/zones/zone-list.component.ts
Comment thread apps/signage-manager/src/app/displays/display-content.component.ts Outdated
@vercel

vercel Bot commented Oct 2, 2026

Copy link
Copy Markdown

Deployment failed for project frontend-templates with the following error:

Resource is limited - try again in 24 hours (more than 100, code: "api-deployments-free-per-day").

Learn More: https://vercel.com/placeos?upgradeToPro=build-rate-limit

Comment on lines +229 to +230
} @else if (playlists_error()) {
<load-error (retry)="reloadPlaylists()" />

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Empty playlist tabs show errors

When a display or zone has no assigned playlists, a failed request for the shared playlist list makes its tab show a load error instead of the empty state. Retry reloads that shared list, not the item's assignments. Keep an unrelated list failure from replacing the item's empty state.

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed in 5a63cf0. The tabs have no assignment request of their own. They read the playlist ids on the selected display or zone and resolve them through playlistsById() (the shared list plus per-id fetches). The shared list's loading and error states now apply only when the item has playlist ids (has_assigned_playlists), so an item with no playlists always shows its empty state. Tests: "keeps the empty state of a display/zone with no playlists while the playlist list is in loading/error". Remaining limit: per-id fetches report no error yet; that needs a signal in the playlist service (#535).

@MrYuion

MrYuion commented Oct 2, 2026

Copy link
Copy Markdown
Collaborator Author

LGTM

- Load a routed display or zone again after Back, and show an error
  when it cannot be loaded.
- Refresh other views after a display is created, edited or removed.
- Show loading and error states with Retry in the display list, zone
  tree and content tabs.
- Show the server total of signage zones in the zone header.
- Load the selected display's template mappings once.
- The signage zone count is hidden while it loads or after it fails,
  and counts toward the zone error so Retry refetches it.
- A failed zone list shows an error with Retry above the zones that
  did load.
- The display and zone playlist tabs show a load error with Retry
  instead of "no playlists".
…laylists

The playlist tabs showed the shared playlist list's loading or error
state even when the display or zone had no playlists. That state now
applies only when the item has playlist ids.
@MrYuion
MrYuion force-pushed the fix/signage-manager-displays-zones branch from 5a63cf0 to eb329d6 Compare October 2, 2026 05:44
@MrYuion
MrYuion merged commit c8a93a5 into develop Oct 2, 2026
1 of 2 checks passed
@MrYuion
MrYuion deleted the fix/signage-manager-displays-zones branch October 2, 2026 05:58
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