feat(project): 내업무 트리·벨 애니메이션·타임라인 그룹·리스트 정렬/리사이즈·검정 탭
- 홈 '내 업무': 프로젝트별 그룹 트리, 업무 아래 날짜 기간 작은 글씨 - 알림 벨: 미읽음 있으면 종 흔들림 애니메이션 + 숫자 배지(기존) - 타임라인: 프로젝트 전체 기간을 연한 색 배경으로 칠하고(그룹 행) 그 안에 업무 막대 표시 → 업무명에 프로젝트명 불필요 - 리스트: 컬럼 헤더 클릭 정렬(오름/내림 아이콘), 컬럼 너비 드래그 조절+ localStorage 저장, 헤더 글씨 크고 굵게 - 상단 뷰 탭 선택 시 검은 배경 흰 글씨 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -321,6 +321,21 @@ async def index(request: Request) -> HTMLResponse:
|
||||
)
|
||||
tree = _build_tree(projects)
|
||||
my_tasks = st.list_tasks(assignee_email=user["email"], limit=500)
|
||||
# 내 업무를 프로젝트별로 묶어 트리로 표시
|
||||
my_groups: dict[int, dict[str, Any]] = {}
|
||||
for t in my_tasks:
|
||||
pid = t.get("project_id")
|
||||
g = my_groups.get(pid)
|
||||
if g is None:
|
||||
g = {
|
||||
"id": pid,
|
||||
"name": t.get("project_name") or "프로젝트",
|
||||
"color": t.get("project_color") or "#4573d2",
|
||||
"tasks": [],
|
||||
}
|
||||
my_groups[pid] = g
|
||||
g["tasks"].append(t)
|
||||
my_projects = list(my_groups.values())
|
||||
return render_template(
|
||||
request,
|
||||
"project/index.html",
|
||||
@@ -331,7 +346,7 @@ async def index(request: Request) -> HTMLResponse:
|
||||
"page_title": "프로젝트 관리",
|
||||
"page_subtitle": "달력·타임라인·보드로 프로젝트를 관리하세요.",
|
||||
"tree": tree,
|
||||
"my_tasks": my_tasks,
|
||||
"my_projects": my_projects,
|
||||
"today": today_kst().isoformat(),
|
||||
},
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user