From e817dd75d58d819bee88327dec8fc86f766fdbea Mon Sep 17 00:00:00 2001 From: king Date: Thu, 25 Jun 2026 17:13:00 +0900 Subject: [PATCH] =?UTF-8?q?feat(project):=20=EB=A6=AC=EC=8A=A4=ED=8A=B8=20?= =?UTF-8?q?=ED=96=89=20=EB=B0=B0=EA=B2=BD=EC=97=90=20=ED=94=84=EB=A1=9C?= =?UTF-8?q?=EC=A0=9D=ED=8A=B8=20=EC=83=89=20=EC=97=B0=ED=95=98=EA=B2=8C=20?= =?UTF-8?q?+=20=ED=83=80=EC=9E=84=EB=9D=BC=EC=9D=B8=20=ED=99=95=EB=8C=80?= =?UTF-8?q?=EA=B5=AC=EA=B0=84=20=EA=B8=B0=EC=96=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 리스트: 각 행 배경을 프로젝트 색 8%로 칠함 - 타임라인: 보던 확대/이동 구간을 localStorage(pj_tl_window)에 저장, 재렌더·탭전환 시 복원(초기화 방지) Co-Authored-By: Claude Opus 4.8 --- .../project/templates/project/index.html | 4 ++-- .../project/templates/project/project.html | 4 ++-- app/static/project.js | 20 +++++++++++++++++++ 3 files changed, 24 insertions(+), 4 deletions(-) diff --git a/app/modules/project/templates/project/index.html b/app/modules/project/templates/project/index.html index ad5961d..6e76848 100644 --- a/app/modules/project/templates/project/index.html +++ b/app/modules/project/templates/project/index.html @@ -1,7 +1,7 @@ {% extends "erp_base.html" %} {% block head_extra %} - + {% endblock %} @@ -167,5 +167,5 @@ - + {% endblock %} diff --git a/app/modules/project/templates/project/project.html b/app/modules/project/templates/project/project.html index 5377190..a167a31 100644 --- a/app/modules/project/templates/project/project.html +++ b/app/modules/project/templates/project/project.html @@ -1,7 +1,7 @@ {% extends "erp_base.html" %} {% block head_extra %} - + @@ -290,5 +290,5 @@ - + {% endblock %} diff --git a/app/static/project.js b/app/static/project.js index ff1f9bb..8d3ff83 100644 --- a/app/static/project.js +++ b/app/static/project.js @@ -548,6 +548,23 @@ const t = tasks.find(function (x) { return x.id === props.items[0]; }); if (t) openTaskModal(t); }); + + // 확대/이동(보던 구간) 기억 — 저장된 창이 있으면 복원, 사용자가 바꾸면 저장. + const saved = loadTLWindow(); + if (saved) timeline.setWindow(new Date(saved.start), new Date(saved.end), { animation: false }); + timeline.on("rangechanged", function (p) { saveTLWindow(p.start, p.end); }); + } + function loadTLWindow() { + try { + const r = JSON.parse(localStorage.getItem("pj_tl_window") || "null"); + return (r && r.start && r.end) ? r : null; + } catch (_) { return null; } + } + function saveTLWindow(s, e) { + try { + localStorage.setItem("pj_tl_window", + JSON.stringify({ start: new Date(s).toISOString(), end: new Date(e).toISOString() })); + } catch (_) {} } // ── 보드 (칸반) — 전체 프로젝트를 단계 '이름' 기준 컬럼으로 묶음 ── @@ -703,6 +720,9 @@ rows.forEach(function (t) { const tr = document.createElement("tr"); if (t.completed_at) tr.className = "is-done"; + // 행 배경 = 프로젝트 색 연하게(10%) + const pc = t.project_color || "#4573d2"; + tr.style.background = pc + "14"; tr.innerHTML = LIST_COLS.map(function (c) { return "" + escapeHtml(String(c.text(t))) + ""; }).join("");