fix(gallery): ruff C408 (dict literal) + panel auto-open on deep-link
Rewrite facets() common/plat_scope as dict literals (C408). Open the refine panel via a watch on hasRefineFilters rather than reading filter state at bar-setup time — the parent applies the URL query in its onMounted, after the bar child has set up, so the initial read was always the default (empty) state. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -431,10 +431,10 @@ class GalleryService:
|
|||||||
column predicate on ImageRecord.
|
column predicate on ImageRecord.
|
||||||
"""
|
"""
|
||||||
_require_single_filter(tag_ids, post_id, artist_id)
|
_require_single_filter(tag_ids, post_id, artist_id)
|
||||||
common = dict(
|
common = {
|
||||||
tag_ids=tag_ids, post_id=post_id,
|
"tag_ids": tag_ids, "post_id": post_id,
|
||||||
artist_id=artist_id, media_type=media_type,
|
"artist_id": artist_id, "media_type": media_type,
|
||||||
)
|
}
|
||||||
|
|
||||||
# total — the full active filter (the headline result count).
|
# total — the full active filter (the headline result count).
|
||||||
total = (await self.session.execute(
|
total = (await self.session.execute(
|
||||||
@@ -448,10 +448,10 @@ class GalleryService:
|
|||||||
# platforms — scope minus the platform selection. Inner-join
|
# platforms — scope minus the platform selection. Inner-join
|
||||||
# provenance→source and COUNT(DISTINCT image) per platform (a
|
# provenance→source and COUNT(DISTINCT image) per platform (a
|
||||||
# cross-posted image counts under each of its platforms).
|
# cross-posted image counts under each of its platforms).
|
||||||
plat_scope = dict(
|
plat_scope = {
|
||||||
common, untagged=untagged, no_artist=no_artist,
|
**common, "untagged": untagged, "no_artist": no_artist,
|
||||||
date_from=date_from, date_to=date_to,
|
"date_from": date_from, "date_to": date_to,
|
||||||
)
|
}
|
||||||
src = aliased(Source)
|
src = aliased(Source)
|
||||||
plat_stmt = (
|
plat_stmt = (
|
||||||
select(src.platform, func.count(distinct(ImageRecord.id)))
|
select(src.platform, func.count(distinct(ImageRecord.id)))
|
||||||
|
|||||||
@@ -79,7 +79,7 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup>
|
<script setup>
|
||||||
import { computed, ref } from 'vue'
|
import { computed, ref, watch } from 'vue'
|
||||||
import { useRouter } from 'vue-router'
|
import { useRouter } from 'vue-router'
|
||||||
import { useApi } from '../../composables/useApi.js'
|
import { useApi } from '../../composables/useApi.js'
|
||||||
import { cloneFilter, filterToQuery, useGalleryStore } from '../../stores/gallery.js'
|
import { cloneFilter, filterToQuery, useGalleryStore } from '../../stores/gallery.js'
|
||||||
@@ -117,9 +117,12 @@ const hasActiveFilters = computed(() =>
|
|||||||
hasRefineFilters.value
|
hasRefineFilters.value
|
||||||
)
|
)
|
||||||
|
|
||||||
// Auto-open the panel when arriving with refine filters already in the URL
|
// Auto-open the panel when refine filters are present in the URL (deep-link /
|
||||||
// (deep-link / back button) so the active facets are visible, not hidden.
|
// back button). The parent applies the query in its onMounted — after this
|
||||||
const refineOpen = ref(hasRefineFilters.value)
|
// child has set up — so watch for the transition rather than reading the
|
||||||
|
// initial (still-default) filter state.
|
||||||
|
const refineOpen = ref(false)
|
||||||
|
watch(hasRefineFilters, (v) => { if (v) refineOpen.value = true })
|
||||||
function toggleRefine() {
|
function toggleRefine() {
|
||||||
// The panel fetches facets itself on mount (and refetches on filter change);
|
// The panel fetches facets itself on mount (and refetches on filter change);
|
||||||
// opening it is enough.
|
// opening it is enough.
|
||||||
|
|||||||
Reference in New Issue
Block a user