- 프로젝트 표의 진행도(%) 열 삭제 — 워크플로 배지가 같은 것을 보여 줌. 상태 문자열로 따로 세던 서버 계산도 제거(배지는 `project_workflow_stages` 표가 근거라 둘이 어긋났음) - 시스템 로그 표 = 이메일 · 동작 · 대상 · 일시. 「관리」 문구를 돌려 쓰던 것을 가르고, 대상(resource_type·id)을 새로 보이며, 일시는 날짜/시각 두 줄(아랫줄 작은 글씨라 행 높이 불변) - 표 안 관리 버튼을 한 줄로 — 작은 버튼 + 줄바꿈 금지, 폭이 모자라면 표가 가로 스크롤 (프로젝트 행 높이 105px → 61px, 사용자 행 55px) - 기본정보는 로그인 본인 화면 — 이메일 라벨을 「팀원 이메일」에서 「이메일」로 바꾸고 본인 서명 칸을 사용자 수정 모달과 같은 부품으로 추가 - 제목·여백을 공용 템플릿(`createGeneralLayout`)으로 통일, 역할 배지는 제목 줄 오른쪽 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
69 lines
2.4 KiB
TypeScript
69 lines
2.4 KiB
TypeScript
import { createButton } from "@ui/ui_template_elements";
|
|
import { table, text } from "@ui/ui_template_general_blocks";
|
|
import { createStepBar } from "@ui/ui_template_workflow_layout";
|
|
import { workflowSteps } from "../A00_Common/b_page_scaffold";
|
|
import { goToWorkflowStage, WORKFLOW_STEP_ROUTES } from "../A00_Common/b_workflow_nav";
|
|
import type { DashboardUser, ProjectItem } from "./B01_Dashboard_Api_Fetch";
|
|
import { canDeleteProject, canEditProject } from "./B01_Dashboard_UI_Helper";
|
|
import { openDeleteProjectModal, openEditProjectModal } from "./B01_Dashboard_UI_Modals";
|
|
import { DASHBOARD_VISIBLE_ROWS, formatDate, L } from "./B01_Dashboard_UI_Common";
|
|
|
|
export function projectTable(projects: ProjectItem[], currentUser: DashboardUser): HTMLElement {
|
|
return table(
|
|
[
|
|
L("B01_Dashboard_Table_Project"),
|
|
L("B01_Dashboard_Table_Region"),
|
|
// 진행도(%) 열은 없앴다 (2026-09-06 사용자 지시) — 워크플로 배지가 같은 것을 보여 준다.
|
|
L("B01_Dashboard_Table_Workflow"),
|
|
L("B01_Dashboard_Table_Updated"),
|
|
L("B01_Dashboard_Table_Action"),
|
|
],
|
|
projects.map((project) => {
|
|
const actCell = document.createElement("div");
|
|
actCell.className = "b01-dashboard__actions";
|
|
|
|
if (canEditProject(currentUser, project)) {
|
|
actCell.append(
|
|
createButton({
|
|
label: L("Common_Btn_Edit"),
|
|
variant: "ghost",
|
|
onClick: () => openEditProjectModal(currentUser, project),
|
|
}),
|
|
);
|
|
}
|
|
if (canDeleteProject(currentUser)) {
|
|
actCell.append(
|
|
createButton({
|
|
label: L("Common_Btn_Delete"),
|
|
variant: "danger",
|
|
onClick: () => openDeleteProjectModal(currentUser, project),
|
|
}),
|
|
);
|
|
}
|
|
|
|
return [
|
|
text(project.name),
|
|
text(project.region),
|
|
workflow(project),
|
|
text(formatDate(project.updated_at)),
|
|
actCell,
|
|
];
|
|
}),
|
|
DASHBOARD_VISIBLE_ROWS,
|
|
);
|
|
}
|
|
|
|
export function workflow(project: ProjectItem): HTMLElement {
|
|
return createStepBar(
|
|
workflowSteps(),
|
|
project.workflow_state?.current_stage ?? project.workflow_stage,
|
|
{
|
|
stages: project.workflow_state?.stages,
|
|
currentStage: project.workflow_state?.current_stage,
|
|
routes: WORKFLOW_STEP_ROUTES,
|
|
compact: true,
|
|
onStepClick: (stepIndex) => goToWorkflowStage(project.id, WORKFLOW_STEP_ROUTES[stepIndex]),
|
|
},
|
|
);
|
|
}
|