auto-save 2026-05-12 19:58 (+1, ~4)

This commit is contained in:
2026-05-12 19:59:15 +08:00
parent c481da407d
commit 375494eede
5 changed files with 163 additions and 41 deletions

View File

@@ -16,6 +16,7 @@ import { ThemeToggle } from "@/components/theme-toggle"
import { Dashboard } from "@/components/dashboard"
import { addManualFrame, analyzeJob, createJob, getJob, uploadJob, type Job } from "@/lib/api"
import { FrameLightbox } from "@/components/lightbox"
import { VideoLightbox } from "@/components/video-lightbox"
const NODE_TYPES = {
input: InputNode,
@@ -61,6 +62,7 @@ export default function Home() {
const [analyzing, setAnalyzing] = useState(false)
const [selectedFrames, setSelectedFrames] = useState<Set<number>>(new Set())
const [expandedFrame, setExpandedFrame] = useState<number | null>(null)
const [videoLightboxOpen, setVideoLightboxOpen] = useState(false)
const pollRef = useRef<ReturnType<typeof setInterval> | null>(null)
const handleSubmit = useCallback(async (url: string) => {
@@ -181,6 +183,7 @@ export default function Home() {
onToggleFrame: handleToggleFrame,
onExpandFrame: setExpandedFrame,
onAddManualFrame: handleAddManualFrame,
onOpenVideoLightbox: () => setVideoLightboxOpen(true),
}), [job, submitting, analyzing, selectedFrames, handleSubmit, handleUpload, handleAnalyze, handleToggleFrame, handleAddManualFrame])
// 用 useNodesState 让 ReactFlow 自己管位置(避免轮询时重置 drag
@@ -275,6 +278,14 @@ export default function Home() {
onToggleSelect={handleToggleFrame}
/>
)}
{/* Video lightbox — InputNode 缩略图点击进入 */}
<VideoLightbox
jobId={job?.id ?? null}
open={videoLightboxOpen}
onClose={() => setVideoLightboxOpen(false)}
onAddFrame={handleAddManualFrame}
/>
</main>
</>
)