feat(ui): F8-10 — tables planets / ship-groups / fleets, ship-classes delete guard (#53)
Lights up three previously-stubbed table active views and tightens the
existing one:
- table-planets: 4 kind checkboxes (own / foreign / uninhabited /
unknown) + race dropdown that filters the foreign slice; row click
selects + centres the planet on the map.
- table-ship-groups: local + foreign groups in one grid, owner
checkboxes, planet dropdown (destination OR origin), class
dropdown; on-planet click focuses the destination planet, in-space
click focuses the ship group itself (camera follows interpolated
position).
- table-fleets: own fleets only with the shared planet dropdown;
on-planet click focuses the planet, in-space click centres the
camera on the interpolated fleet position without altering the
selection (no fleet variant in Selected).
- table-ship-classes: per-row Delete is disabled with a count tooltip
while at least one local ship group references the class. The
engine refuses the removal anyway; the UI pre-empts the surface.
Wires the click → map flow through a transient `SelectionStore.focus`
/ `focusPoint` channel that `map.svelte` consumes once on mount —
in-memory only, so an F5 does not re-centre.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
@@ -1,16 +1,17 @@
|
||||
<!--
|
||||
Active-view router for the per-entity tables. Phase 17 lights up
|
||||
the ship-classes table; Phase 21 lights up the sciences table;
|
||||
Phase 22 lights up the races table; the remaining slugs (planets,
|
||||
ship-groups, fleets) keep the Phase 10 stub copy until their
|
||||
respective phases land. The wrapper preserves
|
||||
Active-view router for the per-entity tables. Phase 17 lit up
|
||||
ship-classes; Phase 21 sciences; Phase 22 races; F8-10 lights up
|
||||
planets, ship-groups, and fleets. The wrapper preserves
|
||||
`data-testid="active-view-table"` and `data-entity={entity}` for
|
||||
every branch (each leaf component mirrors them) so the navigation
|
||||
e2e specs (`game-shell.spec.ts`, `view-menu`) keep matching.
|
||||
-->
|
||||
<script lang="ts">
|
||||
import { i18n, type TranslationKey } from "$lib/i18n/index.svelte";
|
||||
import TablePlanets from "./table-planets.svelte";
|
||||
import TableShipClasses from "./table-ship-classes.svelte";
|
||||
import TableShipGroups from "./table-ship-groups.svelte";
|
||||
import TableFleets from "./table-fleets.svelte";
|
||||
import TableSciences from "./table-sciences.svelte";
|
||||
import TableRaces from "./table-races.svelte";
|
||||
|
||||
@@ -23,8 +24,14 @@ e2e specs (`game-shell.spec.ts`, `view-menu`) keep matching.
|
||||
}
|
||||
</script>
|
||||
|
||||
{#if entity === "ship-classes"}
|
||||
{#if entity === "planets"}
|
||||
<TablePlanets />
|
||||
{:else if entity === "ship-classes"}
|
||||
<TableShipClasses />
|
||||
{:else if entity === "ship-groups"}
|
||||
<TableShipGroups />
|
||||
{:else if entity === "fleets"}
|
||||
<TableFleets />
|
||||
{:else if entity === "sciences"}
|
||||
<TableSciences />
|
||||
{:else if entity === "races"}
|
||||
|
||||
Reference in New Issue
Block a user