fix: sync work content with selected milestone stage

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
EENE Dashboard
2026-06-05 23:15:00 +09:00
parent 4a90ea096e
commit fa1a6aa117

View File

@@ -243,9 +243,10 @@ function DetailView({ task }: { task: TaskWithRelations }) {
const selected = sortedStages.find((m) => m.id === selectedId) ?? sortedStages[0] ?? null; const selected = sortedStages.find((m) => m.id === selectedId) ?? sortedStages[0] ?? null;
const stageContents = useMemo(() => { const stageContents = useMemo(() => {
if (!selected?.description) return []; const stage = sortedStages.find((m) => m.id === selectedId);
return parseContentLines(selected.description); if (!stage?.description) return [];
}, [selected]); return parseContentLines(stage.description);
}, [sortedStages, selectedId]);
const stageDetails = useMemo( const stageDetails = useMemo(
() => (selectedId ? details.filter((d) => d.milestoneId === selectedId) : []), () => (selectedId ? details.filter((d) => d.milestoneId === selectedId) : []),
@@ -314,6 +315,7 @@ function DetailView({ task }: { task: TaskWithRelations }) {
payload, payload,
); );
milestoneId = updated.id; milestoneId = updated.id;
setSelectedId(updated.id);
} else { } else {
return; return;
} }
@@ -432,6 +434,7 @@ function DetailView({ task }: { task: TaskWithRelations }) {
onClick={() => setSelectedId(stage.id)} onClick={() => setSelectedId(stage.id)}
onContextMenu={(e) => { onContextMenu={(e) => {
e.preventDefault(); e.preventDefault();
setSelectedId(stage.id);
setCtxMenu({ x: e.clientX, y: e.clientY, stageId: stage.id }); setCtxMenu({ x: e.clientX, y: e.clientY, stageId: stage.id });
}} }}
className={`shrink-0 rounded-lg border px-3 py-2 text-left transition-colors ${ className={`shrink-0 rounded-lg border px-3 py-2 text-left transition-colors ${
@@ -462,7 +465,7 @@ function DetailView({ task }: { task: TaskWithRelations }) {
</LeftSection> </LeftSection>
<LeftSection> <LeftSection>
<PanelLabel></PanelLabel> <PanelLabel sub={selected?.title}></PanelLabel>
<ul <ul
className="min-h-0 flex-1 space-y-2 overflow-y-auto pr-1" className="min-h-0 flex-1 space-y-2 overflow-y-auto pr-1"
onContextMenu={(e) => { onContextMenu={(e) => {
@@ -476,9 +479,9 @@ function DetailView({ task }: { task: TaskWithRelations }) {
{selected ? '우클릭으로 업무내용을 수정하세요.' : '단계를 선택하세요.'} {selected ? '우클릭으로 업무내용을 수정하세요.' : '단계를 선택하세요.'}
</li> </li>
) : ( ) : (
stageContents.map((text) => ( stageContents.map((text, index) => (
<li <li
key={text} key={`${selectedId}-${index}`}
className="flex gap-2" className="flex gap-2"
onContextMenu={(e) => { onContextMenu={(e) => {
if (!selected) return; if (!selected) return;
@@ -488,7 +491,7 @@ function DetailView({ task }: { task: TaskWithRelations }) {
}} }}
> >
<span className="shrink-0 text-lg text-blue-400"></span> <span className="shrink-0 text-lg text-blue-400"></span>
<p className="min-w-0 flex-1 truncate text-2xl font-black leading-snug text-slate-800">{text}</p> <p className="min-w-0 flex-1 whitespace-pre-wrap break-words text-2xl font-black leading-snug text-slate-800">{text}</p>
</li> </li>
)) ))
)} )}
@@ -634,7 +637,10 @@ function DetailView({ task }: { task: TaskWithRelations }) {
icon: '✏️', icon: '✏️',
onClick: () => { onClick: () => {
const ms = milestones.find((m) => m.id === ctxMenu.stageId); const ms = milestones.find((m) => m.id === ctxMenu.stageId);
if (ms) setStageModal({ mode: 'edit', milestone: ms }); if (ms) {
setSelectedId(ms.id);
setStageModal({ mode: 'edit', milestone: ms });
}
}, },
}, },
{ {