mirror of
https://github.com/hansjone/dsh-ops-cron.git
synced 2026-10-08 22:00:46 +08:00
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:
parent
819feed310
commit
51deaf037b
1 changed files with 11 additions and 9 deletions
|
|
@ -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('这次运行没有可打开的会话')
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue