diff --git a/src/views/SearchView.vue b/src/views/SearchView.vue index 3f2e5dc..c8737ef 100644 --- a/src/views/SearchView.vue +++ b/src/views/SearchView.vue @@ -119,7 +119,14 @@
-
+ +
+ + + {{ r.file_name || 'Unknown' }} + {{ r.file_uuid }} +
+
@@ -149,8 +156,6 @@
{{ r.text_content }}
-
{{ r.file_name || '' }}
{{ r.file_uuid }}
-
{{ r.display_file_name }}
{{ r.file_uuid }}
F{{ r.start_frame }}–{{ r.end_frame }} ({{ formatTime(r.start_time) }}–{{ formatTime(r.end_time) }}) @@ -1517,6 +1522,22 @@ function playVideoAtFrame(r: any, frame: number) { playing.value = true } +function playFullFile(r: any) { + currentVideo.value = { + fileUuid: r.file_uuid, + startFrame: 0, + endFrame: 0, // 0 = play to end + title: r.file_name || 'Full Video' + } + playing.value = true +} + +function isVideoFile(r: any): boolean { + if (!r.file_name) return false + const ext = r.file_name.split('.').pop()?.toLowerCase() + return ['mp4', 'mov', 'mkv', 'avi', 'webm'].includes(ext || '') +} + function isVariantFrame(r: any, frame: number): boolean { return r.variants?.some((v: any) => v.frames.includes(frame)) } @@ -2068,6 +2089,26 @@ function openSource(src: SourceInfo) { position: relative; } .card-thumb img { width: 100%; height: 100%; object-fit: cover; } +.card-file-info { + display: flex; align-items: center; gap: 5px; + padding: 5px 8px; background: var(--card-background); + border-bottom: 1px solid var(--border-light); + cursor: pointer; transition: background .15s; +} +.card-file-info:hover { + background: rgba(var(--primary-color-rgb), 0.1); +} +.card-file-icon { + flex-shrink: 0; color: var(--primary-color); +} +.card-file-name { + font-size: 11px; font-weight: 600; color: var(--text-primary); + flex: 1; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; +} +.card-file-uuid-badge { + font-size: 8px; color: var(--muted-text); font-family: monospace; + max-width: 80px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; +} .ocr-group-badge { position: absolute; top: 6px; right: 6px; background: rgba(var(--primary-color-rgb), 0.85); color: #fff;