Collapse cron directory tree by default on open.

Owner folders and job run lists stay closed until clicked; selecting a job still expands its path.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
oliver 2026-09-08 21:08:22 +08:00
parent 819feed310
commit 51deaf037b

View file

@ -826,7 +826,7 @@ body>.dsh-ct-main{position:fixed;top:0;right:0;bottom:0;left:var(--dsh-ct-sideba
})
return ordered.map((group) => {
const folderId = `owner:${group.key}`
const open = expanded[folderId] !== false || !!needle
const open = expanded[folderId] === true || !!needle
const containsCurrent = group.jobs.some((job) => (
(selection?.type === 'job' && selection.jobId === job.id)
|| (selection?.type === 'run' && selection.jobId === job.id)
@ -1311,19 +1311,15 @@ body>.dsh-ct-main{position:fixed;top:0;right:0;bottom:0;left:var(--dsh-ct-sideba
useEffect(() => {
if (!cronMode || skipAutoSelect.current) return
if (selection.type === 'run') {
if (selection.jobId) setExpanded((prev) => ({ ...prev, [selection.jobId]: true }))
return
}
if (selection.type === 'run') return
if (jobs.length === 0) return
if (selection.type === 'job' && selection.jobId && jobs.some((job) => job.id === selection.jobId)) {
setExpanded((prev) => ({ ...prev, [selection.jobId]: true }))
return
}
const job = jobs[0]
setSelection({ type: 'job', jobId: job.id })
setForm(jobToForm(job))
setExpanded((prev) => ({ ...prev, [job.id]: true }))
// Keep the directory tree collapsed on first open; expand only on explicit click.
}, [cronMode, jobs])
useEffect(() => {
@ -1344,10 +1340,16 @@ body>.dsh-ct-main{position:fixed;top:0;right:0;bottom:0;left:var(--dsh-ct-sideba
})
}, [cronMode, selection.type, catalog.current, presets.current])
function expandJobPath(jobId) {
const job = jobs.find((row) => row.id === jobId)
const owner = `owner:${String(job?.ownerEmpNo || '__unassigned__')}`
setExpanded((prev) => ({ ...prev, [jobId]: true, [owner]: true }))
}
function selectJob(jobId) {
const job = jobs.find((row) => row.id === jobId)
setSelection({ type: 'job', jobId })
setExpanded((prev) => ({ ...prev, [jobId]: true }))
expandJobPath(jobId)
if (job) setForm(jobToForm(job))
}
@ -1361,7 +1363,7 @@ body>.dsh-ct-main{position:fixed;top:0;right:0;bottom:0;left:var(--dsh-ct-sideba
async function selectRun(jobId, run) {
setSelection({ type: 'run', jobId, runId: run.id })
setExpanded((prev) => ({ ...prev, [jobId]: true }))
expandJobPath(jobId)
setError('')
if (!run.sessionId) {
setError('这次运行没有可打开的会话')