diff --git a/src/views/AlbumDetailView.vue b/src/views/AlbumDetailView.vue index 37de590..3612beb 100644 --- a/src/views/AlbumDetailView.vue +++ b/src/views/AlbumDetailView.vue @@ -9,7 +9,6 @@ import Skeleton from 'primevue/skeleton' import Button from 'primevue/button' import ConfirmDialog from 'primevue/confirmdialog' import { useConfirm } from 'primevue/useconfirm' -import Image from 'primevue/image' import Dialog from 'primevue/dialog' const route = useRoute() @@ -129,6 +128,14 @@ const removeGeneration = (gen) => { } }) } + +// --- Image Preview --- +const isImagePreviewVisible = ref(false) +const previewImage = ref(null) +const openImagePreview = (url) => { + previewImage.value = { url } + isImagePreviewVisible.value = true +} + + +
+ +
+
+ diff --git a/src/views/FlexibleGenerationView.vue b/src/views/FlexibleGenerationView.vue index c0d083f..a51c994 100644 --- a/src/views/FlexibleGenerationView.vue +++ b/src/views/FlexibleGenerationView.vue @@ -54,6 +54,7 @@ const historyFirst = ref(0) const isSettingsVisible = ref(false) const isSubmitting = ref(false) const activeOverlayId = ref(null) // For mobile tap-to-show overlay +const filterCharacter = ref(null) // Character filter for gallery // Options const qualityOptions = ref([ @@ -120,6 +121,14 @@ watch([prompt, selectedCharacter, selectedAssets, quality, aspectRatio, sendToTe saveSettings() }, { deep: true }) +// Watcher for character filter — reload history when filter changes +watch(filterCharacter, async () => { + historyGenerations.value = [] + historyTotal.value = 0 + historyFirst.value = 0 + await refreshHistory() +}) + // --- Data Loading --- const loadData = async () => { @@ -127,7 +136,7 @@ const loadData = async () => { const [charsRes, assetsRes, historyRes] = await Promise.all([ dataService.getCharacters(), // Assuming this exists and returns list dataService.getAssets(100, 0, 'all'), // Load a batch of assets - aiService.getGenerations(historyRows.value, historyFirst.value) + aiService.getGenerations(historyRows.value, historyFirst.value, filterCharacter.value?.id) ]) // Characters @@ -197,7 +206,7 @@ const loadData = async () => { const refreshHistory = async () => { try { - const response = await aiService.getGenerations(historyRows.value, 0) + const response = await aiService.getGenerations(historyRows.value, 0, filterCharacter.value?.id) if (response && response.generations) { // Update existing items and add new ones at the top const newGenerations = [] @@ -352,7 +361,7 @@ const loadMoreHistory = async () => { try { const nextOffset = historyGenerations.value.length - const response = await aiService.getGenerations(historyRows.value, nextOffset) + const response = await aiService.getGenerations(historyRows.value, nextOffset, filterCharacter.value?.id) if (response && response.generations) { const newGenerations = response.generations.filter(gen => @@ -602,6 +611,32 @@ const confirmAddToAlbum = async () => { History
+ + + +
@@ -801,7 +837,8 @@ const confirmAddToAlbum = async () => {
Select Assets + class="text-slate-400 text-sm py-0.5">Select + Assets