fix: clarify partial unmapped map filters
This commit is contained in:
parent
76dcea237e
commit
b941d5ffed
@ -84,6 +84,7 @@ export default function LocationMapBottomSheet({
|
|||||||
const changedLayerCount = DISPLAY_CONTROLS.filter(([key]) => filters[key] !== DEFAULT_MAP_FILTERS[key]).length;
|
const changedLayerCount = DISPLAY_CONTROLS.filter(([key]) => filters[key] !== DEFAULT_MAP_FILTERS[key]).length;
|
||||||
const unmappedItemPreview = visibleUnmappedItems.slice(0, 8);
|
const unmappedItemPreview = visibleUnmappedItems.slice(0, 8);
|
||||||
const overflowUnmappedItemCount = visibleUnmappedItems.length - unmappedItemPreview.length;
|
const overflowUnmappedItemCount = visibleUnmappedItems.length - unmappedItemPreview.length;
|
||||||
|
const hiddenUnmappedItemCount = Math.max(0, unmappedItemCount - visibleUnmappedItems.length);
|
||||||
const hasHiddenUnmappedItems =
|
const hasHiddenUnmappedItems =
|
||||||
filters.showUnmapped && unmappedItemCount > 0 && visibleUnmappedItems.length === 0;
|
filters.showUnmapped && unmappedItemCount > 0 && visibleUnmappedItems.length === 0;
|
||||||
const selectedWidth = Number(selectedObject?.width) || 40;
|
const selectedWidth = Number(selectedObject?.width) || 40;
|
||||||
@ -438,6 +439,16 @@ export default function LocationMapBottomSheet({
|
|||||||
</li>
|
</li>
|
||||||
) : null}
|
) : null}
|
||||||
</ul>
|
</ul>
|
||||||
|
{hiddenUnmappedItemCount > 0 ? (
|
||||||
|
<div className="location-map-zone-hidden-note">
|
||||||
|
<p className="location-map-muted">
|
||||||
|
{hiddenUnmappedItemCount} more hidden by layer filters.
|
||||||
|
</p>
|
||||||
|
<button type="button" onClick={showUnmappedItems}>
|
||||||
|
Show All Unmapped Items
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
) : null}
|
||||||
</div>
|
</div>
|
||||||
) : hasHiddenUnmappedItems ? (
|
) : hasHiddenUnmappedItems ? (
|
||||||
<div className="location-map-unmapped-list">
|
<div className="location-map-unmapped-list">
|
||||||
|
|||||||
@ -1539,6 +1539,57 @@ test("viewer explains when unmapped items are hidden by filters", async ({ page
|
|||||||
await expect(page.getByRole("button", { name: "Layers, 3 changed" })).toBeVisible();
|
await expect(page.getByRole("button", { name: "Layers, 3 changed" })).toBeVisible();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
test("viewer marks partial unmapped counts when filters hide some items", async ({ page }) => {
|
||||||
|
await mockMapShell(page);
|
||||||
|
|
||||||
|
const mapState = {
|
||||||
|
...publishedMapState([], true),
|
||||||
|
items: [
|
||||||
|
{
|
||||||
|
id: 4110,
|
||||||
|
item_name: "visible batteries",
|
||||||
|
quantity: 1,
|
||||||
|
bought: false,
|
||||||
|
zone_id: null,
|
||||||
|
zone: null,
|
||||||
|
added_by_users: ["map-user"],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 4111,
|
||||||
|
item_name: "hidden batteries",
|
||||||
|
quantity: 1,
|
||||||
|
bought: false,
|
||||||
|
zone_id: null,
|
||||||
|
zone: null,
|
||||||
|
added_by_users: ["other-user"],
|
||||||
|
},
|
||||||
|
],
|
||||||
|
unmapped_count: 2,
|
||||||
|
};
|
||||||
|
|
||||||
|
await page.route("**/households/1/locations/10/map", async (route) => {
|
||||||
|
await route.fulfill({
|
||||||
|
status: 200,
|
||||||
|
contentType: "application/json",
|
||||||
|
body: JSON.stringify(mapState),
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
await page.goto("/stores/100/locations/10/map");
|
||||||
|
await page.getByRole("button", { name: "Layers" }).click();
|
||||||
|
await page.getByLabel("Unmapped").check();
|
||||||
|
|
||||||
|
await expect(page.getByText("visible batteries")).toBeVisible();
|
||||||
|
await expect(page.getByText("hidden batteries")).toHaveCount(0);
|
||||||
|
await expect(page.getByText("1 more hidden by layer filters.")).toBeVisible();
|
||||||
|
await expect(page.getByRole("button", { name: "Show All Unmapped Items" })).toBeVisible();
|
||||||
|
|
||||||
|
await page.getByRole("button", { name: "Show All Unmapped Items" }).click();
|
||||||
|
|
||||||
|
await expect(page.getByText("hidden batteries")).toBeVisible();
|
||||||
|
await expect(page.getByText("1 more hidden by layer filters.")).toHaveCount(0);
|
||||||
|
});
|
||||||
|
|
||||||
test("viewer explains when selected zone items are hidden by filters", async ({ page }) => {
|
test("viewer explains when selected zone items are hidden by filters", async ({ page }) => {
|
||||||
await mockMapShell(page);
|
await mockMapShell(page);
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user