From d5bb9c850870f608884f35a9022d849ebcbd6f45 Mon Sep 17 00:00:00 2001 From: miteruzo Date: Mon, 26 Oct 2026 20:57:56 +0900 Subject: [PATCH] #434 --- frontend/src/components/counts/CountsControls.tsx | 13 ++++++++----- frontend/src/pages/CountsResourcePage.tsx | 2 +- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/frontend/src/components/counts/CountsControls.tsx b/frontend/src/components/counts/CountsControls.tsx index b9bc956..29fefb5 100644 --- a/frontend/src/components/counts/CountsControls.tsx +++ b/frontend/src/components/counts/CountsControls.tsx @@ -10,7 +10,7 @@ import HelpPopover from '@/components/common/HelpPopover' import TagInput from '@/components/common/TagInput' import { Button } from '@/components/ui/button' import { countsUseLatest, fieldsForCounts, normaliseCountsParams, - selectedCountColumns } from '@/lib/counts' + selectedCountChildren, selectedCountColumns } from '@/lib/counts' import { useCountsDefinition } from '@/lib/countsDefinitions' import { useClientMotion } from '@/lib/useClientMotion' import { inputClass } from '@/lib/utils' @@ -41,9 +41,13 @@ const CountsControls = ( const nestedJSON = applied.get ('nested_json') const rowNumbers = applied.get ('row_numbers') const thumbnail = selectedCountColumns (resource, applied, definition).includes ('thumbnail') - const details = applied.get ('mode') === 'details' - const hasNested = details && fieldsForCounts (resource, definition) - .some (field => field.children != null) + const mode = draft.get ('mode') ?? 'summary' + const columns = selectedCountColumns (resource, draft, definition) + const children = selectedCountChildren (draft) + const details = mode === 'details' + const hasNested = details && fieldsForCounts (resource, definition).some (field => + columns.includes (field.key) && field.children?.some (child => + children.has (`${field.key}.${child.key}`))) useEffect (() => { setDraft (previous => { const next = new URLSearchParams (previous) @@ -65,7 +69,6 @@ const CountsControls = ( return next }) }, [order, nestedJSON, rowNumbers]) - const mode = draft.get ('mode') ?? 'summary' const history = draft.get ('definition') === 'history' const update = (key: string, value: string) => setDraft (previous => { const next = new URLSearchParams (previous) diff --git a/frontend/src/pages/CountsResourcePage.tsx b/frontend/src/pages/CountsResourcePage.tsx index ee337b4..15d4ef8 100644 --- a/frontend/src/pages/CountsResourcePage.tsx +++ b/frontend/src/pages/CountsResourcePage.tsx @@ -97,7 +97,7 @@ const CountsResourceContent = ({ resource }: { resource: CountsResource }) => { const update = (key: string, value: string) => { const next = new URLSearchParams (params) - if (value || key === 'sort') next.set (key, value) + if (value || key === 'sort' || key === 'columns') next.set (key, value) else next.delete (key) if (key === 'sort') next.delete ('page') setParams (next)