feat(project): 보드 4x2 그리드 + 세션추가 버튼 고정, 내 업무 패널 300px 고정
- .pj-board 를 flex 가로스크롤에서 4열(좁아지면 3/2/1열) 그리드로 변경, 세션이 많아지면 보드 영역 안에서만 세로 스크롤. "+ 세션 추가" 버튼을 보드 밖 pj-board-toolbar 로 옮겨 스크롤과 무관하게 항상 보이게 함. - 홈/프로젝트 상세 화면의 "내 업무" 패널 가로폭을 300px로 고정(그리드 트랙 + width 모두 지정). Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
+19
-17
@@ -1085,10 +1085,27 @@
|
||||
// 완료토글·삭제·추가·드래그 재정렬).
|
||||
// scope==="all" → 여러 프로젝트를 세션 '이름' 기준으로 합쳐 보여준다(기존
|
||||
// 동작 그대로 — 세션 하나를 특정할 수 없어 관리 컨트롤은 없다).
|
||||
// "+ 세션 추가" 버튼은 보드(스크롤 영역) 밖 고정 위치에 있어 세션이
|
||||
// 늘어나 스크롤이 생겨도 항상 보인다 — 한 번만 wiring, 표시 여부만 매
|
||||
// 렌더마다 토글.
|
||||
const boardAddStageBtn = el("pj-board-addstage");
|
||||
if (boardAddStageBtn) {
|
||||
boardAddStageBtn.addEventListener("click", async function () {
|
||||
const name = prompt("새 세션 이름");
|
||||
if (!name || !name.trim()) return;
|
||||
try {
|
||||
await api("POST", "/project/api/projects/" + projectId + "/stages", { name: name.trim() });
|
||||
await reloadStagesForCurrentProject();
|
||||
renderBoard();
|
||||
} catch (e) { alert("추가 실패: " + e.message); }
|
||||
});
|
||||
}
|
||||
|
||||
function renderBoard() {
|
||||
const board = el("pj-board");
|
||||
board.innerHTML = "";
|
||||
const vis = visibleTasks();
|
||||
if (boardAddStageBtn) boardAddStageBtn.hidden = !(viewScope === "project" && canManage);
|
||||
if (viewScope === "project") renderBoardByStage(board, vis);
|
||||
else renderBoardByName(board, vis);
|
||||
}
|
||||
@@ -1153,8 +1170,8 @@
|
||||
if (!list.length && !vis.length) {
|
||||
const empty = document.createElement("div");
|
||||
empty.className = "pj-empty";
|
||||
empty.style.flex = "1 1 auto";
|
||||
empty.textContent = "세션이 없습니다. 아래 \"+ 세션 추가\"로 만들어 보세요.";
|
||||
empty.style.gridColumn = "1 / -1";
|
||||
empty.textContent = "세션이 없습니다. 위 \"+ 세션 추가\"로 만들어 보세요.";
|
||||
board.appendChild(empty);
|
||||
}
|
||||
list.forEach(function (s) {
|
||||
@@ -1202,21 +1219,6 @@
|
||||
board.appendChild(col);
|
||||
}
|
||||
|
||||
if (canManage) {
|
||||
const addCol = document.createElement("div");
|
||||
addCol.className = "pj-col pj-col-add";
|
||||
addCol.innerHTML = '<button type="button" class="pj-add-stage">+ 세션 추가</button>';
|
||||
addCol.querySelector(".pj-add-stage").addEventListener("click", async function () {
|
||||
const name = prompt("새 세션 이름");
|
||||
if (!name || !name.trim()) return;
|
||||
try {
|
||||
await api("POST", "/project/api/projects/" + projectId + "/stages", { name: name.trim() });
|
||||
await reloadStagesForCurrentProject();
|
||||
renderBoard();
|
||||
} catch (e) { alert("추가 실패: " + e.message); }
|
||||
});
|
||||
board.appendChild(addCol);
|
||||
}
|
||||
}
|
||||
|
||||
async function reloadStagesForCurrentProject() {
|
||||
|
||||
Reference in New Issue
Block a user