Replace the hardcoded trade-hub list on the compare-by-location page (gemory #17) with a location search/picker backed by mammon's GET /universe/locations/search (mammon SDE location-search issue, later extended with ESI structures).
Proposed design
A search-as-you-type location input (mirror the existing MarketTypeInput / searchTypes pattern in src/market/type/), calling the new /universe/locations/search op after regen.
Let the user pick N locations to compare; show name + system/region for disambiguation.
Feed the picked marketLocationIds into #17's per-location appraisal calls.
Keep a few default hubs (Jita, Amarr, …) as quick-add chips, but sourced by id from the search rather than a frontend constant — resolves the region-id vs station-id mismatch noted in #17.
When ESI structures land (mammon side), surface the access flag (public / needs character access) so private structures the user can't price are handled gracefully.
Acceptance criteria
A location search input returns matches from /universe/locations/search.
User can select multiple locations; selections drive the compare page's appraisal calls by marketLocationId.
Default hubs are id-correct (from search, not a hardcoded region id).
npm run build passes.
Depends on
mammon location-search endpoint + the client regen (gemory #15) + the compare page (gemory #17).
## Summary
Replace the hardcoded trade-hub list on the compare-by-location page (gemory #17) with a **location search/picker** backed by mammon's `GET /universe/locations/search` (mammon SDE location-search issue, later extended with ESI structures).
## Proposed design
- A search-as-you-type location input (mirror the existing `MarketTypeInput` / `searchTypes` pattern in `src/market/type/`), calling the new `/universe/locations/search` op after regen.
- Let the user pick **N locations** to compare; show name + system/region for disambiguation.
- Feed the picked `marketLocationId`s into #17's per-location appraisal calls.
- Keep a few default hubs (Jita, Amarr, …) as quick-add chips, but sourced by id from the search rather than a frontend constant — resolves the region-id vs station-id mismatch noted in #17.
- When ESI structures land (mammon side), surface the access flag (public / needs character access) so private structures the user can't price are handled gracefully.
## Acceptance criteria
- [x] A location search input returns matches from `/universe/locations/search`.
- [x] User can select multiple locations; selections drive the compare page's appraisal calls by `marketLocationId`.
- [x] Default hubs are id-correct (from search, not a hardcoded region id).
- [x] `npm run build` passes.
## Depends on
mammon location-search endpoint + the client regen (gemory #15) + the compare page (gemory #17).
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Summary
Replace the hardcoded trade-hub list on the compare-by-location page (gemory #17) with a location search/picker backed by mammon's
GET /universe/locations/search(mammon SDE location-search issue, later extended with ESI structures).Proposed design
MarketTypeInput/searchTypespattern insrc/market/type/), calling the new/universe/locations/searchop after regen.marketLocationIds into #17's per-location appraisal calls.Acceptance criteria
/universe/locations/search.marketLocationId.npm run buildpasses.Depends on
mammon location-search endpoint + the client regen (gemory #15) + the compare page (gemory #17).