feat(wbs-ux): add 1-Click split ratio presets bar (3:7, 5:5, 6:4, 7:3) to SystemSettingsView
Validators (Pushes and Pull Requests) / UI & Storage Validation (push) Failing after 11s
Validators (Pushes and Pull Requests) / Database & Schema Validation (push) Successful in 12s
Validators (Pushes and Pull Requests) / Security & Secrets (push) Successful in 10s
Validators (Pushes and Pull Requests) / CI Workflow Lint (push) Failing after 9s
Validators (Pushes and Pull Requests) / Core Validators & Database Setup (push) Failing after 20s
Validators (Pushes and Pull Requests) / .NET Contracts (push) Has been skipped
Validators (Pushes and Pull Requests) / WBS & Audit Validations (push) Has been skipped
Validators (Pushes and Pull Requests) / Calibration & Performance (push) Has been skipped
Validators (Pushes and Pull Requests) / Operational Report & Decision Packet (push) Has been skipped
Validators (Pushes and Pull Requests) / Notify PR Results (push) Has been skipped
Validators (Pushes and Pull Requests) / UI & Storage Validation (push) Failing after 11s
Validators (Pushes and Pull Requests) / Database & Schema Validation (push) Successful in 12s
Validators (Pushes and Pull Requests) / Security & Secrets (push) Successful in 10s
Validators (Pushes and Pull Requests) / CI Workflow Lint (push) Failing after 9s
Validators (Pushes and Pull Requests) / Core Validators & Database Setup (push) Failing after 20s
Validators (Pushes and Pull Requests) / .NET Contracts (push) Has been skipped
Validators (Pushes and Pull Requests) / WBS & Audit Validations (push) Has been skipped
Validators (Pushes and Pull Requests) / Calibration & Performance (push) Has been skipped
Validators (Pushes and Pull Requests) / Operational Report & Decision Packet (push) Has been skipped
Validators (Pushes and Pull Requests) / Notify PR Results (push) Has been skipped
This commit is contained in:
@@ -39,10 +39,15 @@ const activeDomain = ref<'ALL' | 'OMS' | 'WMS' | 'ERP'>('ALL');
|
|||||||
const searchKeyword = ref('');
|
const searchKeyword = ref('');
|
||||||
const activeCategoryTab = ref('ALL');
|
const activeCategoryTab = ref('ALL');
|
||||||
|
|
||||||
// 2. 동적 드래그 반응형 Split Pane Resizer 상태
|
// 2. 동적 드래그 반응형 Split Pane Resizer & 1-Click 스플릿 프리셋
|
||||||
const masterPanelWidth = ref(60); // 기본 60%
|
const masterPanelWidth = ref(60); // 기본 60%
|
||||||
const isDraggingSplitter = ref(false);
|
const isDraggingSplitter = ref(false);
|
||||||
|
|
||||||
|
const setSplitRatio = (percent: number) => {
|
||||||
|
masterPanelWidth.value = percent;
|
||||||
|
showToast(`스플릿 분할 비율이 ${percent}% : ${100 - percent}% 로 조정되었습니다.`, 'success');
|
||||||
|
};
|
||||||
|
|
||||||
const startSplitterDrag = (e: MouseEvent) => {
|
const startSplitterDrag = (e: MouseEvent) => {
|
||||||
isDraggingSplitter.value = true;
|
isDraggingSplitter.value = true;
|
||||||
document.addEventListener('mousemove', onSplitterMouseMove);
|
document.addEventListener('mousemove', onSplitterMouseMove);
|
||||||
@@ -55,7 +60,7 @@ const onSplitterMouseMove = (e: MouseEvent) => {
|
|||||||
if (container) {
|
if (container) {
|
||||||
const rect = container.getBoundingClientRect();
|
const rect = container.getBoundingClientRect();
|
||||||
const newPercent = ((e.clientX - rect.left) / rect.width) * 100;
|
const newPercent = ((e.clientX - rect.left) / rect.width) * 100;
|
||||||
if (newPercent >= 25 && newPercent <= 75) {
|
if (newPercent >= 20 && newPercent <= 80) {
|
||||||
masterPanelWidth.value = Math.round(newPercent);
|
masterPanelWidth.value = Math.round(newPercent);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -339,13 +344,24 @@ onMounted(loadData);
|
|||||||
<button class="btn-apply-ax" @click="applyAiRecommendation">⚡ AI 추천값 즉시 적용</button>
|
<button class="btn-apply-ax" @click="applyAiRecommendation">⚡ AI 추천값 즉시 적용</button>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- Category Filter Tabs Bar -->
|
<!-- Category Filter Tabs Bar & 1-Click Split Ratio Presets -->
|
||||||
<div class="category-tabs-bar">
|
<div class="category-tabs-bar">
|
||||||
<button v-for="tab in ['ALL', 'BUDGET', 'FACTOR', 'RISK', 'EXECUTION', 'ACCOUNTING']" :key="tab"
|
<div class="left-category-tabs">
|
||||||
class="tab-btn" :class="{ active: activeCategoryTab === tab }"
|
<button v-for="tab in ['ALL', 'BUDGET', 'FACTOR', 'RISK', 'EXECUTION', 'ACCOUNTING']" :key="tab"
|
||||||
@click="activeCategoryTab = tab">
|
class="tab-btn" :class="{ active: activeCategoryTab === tab }"
|
||||||
{{ tab === 'ALL' ? '전체 카테고리' : tab }}
|
@click="activeCategoryTab = tab">
|
||||||
</button>
|
{{ tab === 'ALL' ? '전체 카테고리' : tab }}
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- 1-Click 스플릿 비율 프리셋 바 -->
|
||||||
|
<div class="right-split-presets">
|
||||||
|
<span class="preset-label">✂️ 스플릿 비율:</span>
|
||||||
|
<button class="preset-btn" :class="{ active: masterPanelWidth === 30 }" @click="setSplitRatio(30)">3:7</button>
|
||||||
|
<button class="preset-btn" :class="{ active: masterPanelWidth === 50 }" @click="setSplitRatio(50)">5:5</button>
|
||||||
|
<button class="preset-btn" :class="{ active: masterPanelWidth === 60 }" @click="setSplitRatio(60)">6:4 (기본)</button>
|
||||||
|
<button class="preset-btn" :class="{ active: masterPanelWidth === 70 }" @click="setSplitRatio(70)">7:3</button>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- Main Dynamic Split Section (Draggable Splitter) -->
|
<!-- Main Dynamic Split Section (Draggable Splitter) -->
|
||||||
@@ -376,7 +392,7 @@ onMounted(loadData);
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- Draggable Split Divider Bar (물리 드래그 반응형 스플릿 바) -->
|
<!-- Draggable Split Divider Bar (물리 드래그 반응형 스플릿 바) -->
|
||||||
<div class="split-divider draggable" @mousedown="startSplitterDrag" title="드래그하여 분할 비율 조절 (25% ~ 75%)">
|
<div class="split-divider draggable" @mousedown="startSplitterDrag" title="드래그하여 분할 비율 조절 (20% ~ 80%)">
|
||||||
<div class="divider-handle"></div>
|
<div class="divider-handle"></div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@@ -562,21 +578,21 @@ onMounted(loadData);
|
|||||||
<li><strong>2. WMS 도메인 모듈</strong>: D+2 현금 볼트 안전율 & 포지션 사이징 가드</li>
|
<li><strong>2. WMS 도메인 모듈</strong>: D+2 현금 볼트 안전율 & 포지션 사이징 가드</li>
|
||||||
<li><strong>3. ERP 도메인 모듈</strong>: 재무 회계 계정 맵핑 & Maker-Checker 승인 릴레이</li>
|
<li><strong>3. ERP 도메인 모듈</strong>: 재무 회계 계정 맵핑 & Maker-Checker 승인 릴레이</li>
|
||||||
<li><strong>4. AI AX 코파일럿 배너</strong>: Antigravity AI 추천값 및 1-Click 자동 적용</li>
|
<li><strong>4. AI AX 코파일럿 배너</strong>: Antigravity AI 추천값 및 1-Click 자동 적용</li>
|
||||||
<li><strong>5. 물리적 동적 스플릿 바 (Draggable Resizer)</strong>: 마우스 드래그 25%~75% 분할 조절</li>
|
<li><strong>5. 물리적 동적 스플릿 바 (Draggable Resizer)</strong>: 마우스 드래그 20%~80% 분할 조절</li>
|
||||||
<li><strong>6. Live PostgreSQL Ping 레이턴시 칩</strong>: 4ms 실시간 핑 상태</li>
|
<li><strong>6. 1-Click 스플릿 프리셋 바</strong>: 3:7 / 5:5 / 6:4 / 7:3 퀵 분할 조절 버튼</li>
|
||||||
<li><strong>7. SignalR WebSocket 소켓 칩</strong>: 라이브 소켓 연결 지표</li>
|
<li><strong>7. Live PostgreSQL Ping 레이턴시 칩</strong>: 4ms 실시간 핑 상태</li>
|
||||||
<li><strong>8. DbUp 마이그레이션 태그</strong>: DB 마이그레이션 태그 v2026.07.25</li>
|
<li><strong>8. SignalR WebSocket 소켓 칩</strong>: 라이브 소켓 연결 지표</li>
|
||||||
<li><strong>9. 실시간 파이프라인 로그 터미널 창</strong>: 엔진 트랜잭션 스트리밍</li>
|
<li><strong>9. DbUp 마이그레이션 태그</strong>: DB 마이그레이션 태그 v2026.07.25</li>
|
||||||
<li><strong>10. 비동기 배치 실행 & 진행률 바</strong>: 0~100% 모의 트랜잭션 게이지</li>
|
<li><strong>10. 실시간 파이프라인 로그 터미널 창</strong>: 엔진 트랜잭션 스트리밍</li>
|
||||||
<li><strong>11. 낙관적 락 버전 인디케이터</strong>: 동시성 충돌 방지 v1~v5</li>
|
<li><strong>11. 비동기 배치 실행 & 진행률 바</strong>: 0~100% 모의 트랜잭션 게이지</li>
|
||||||
<li><strong>12. 실시간 텔레메트리 바</strong>: CPU/RAM/DB Pool 현장감 지표</li>
|
<li><strong>12. 낙관적 락 버전 인디케이터</strong>: 동시성 충돌 방지 v1~v5</li>
|
||||||
<li><strong>13. 검색 & 핫키 툴바</strong>: F3/F4/F5/F7 더존 표준 핫키</li>
|
<li><strong>13. 실시간 텔레메트리 바</strong>: CPU/RAM/DB Pool 현장감 지표</li>
|
||||||
<li><strong>14. 카테고리 탭 바</strong>: ALL/BUDGET/FACTOR/RISK/ACCOUNTING 탭</li>
|
<li><strong>14. 검색 & 핫키 툴바</strong>: F3/F4/F5/F7 더존 표준 핫키</li>
|
||||||
<li><strong>15. AG Grid 데이터 테이블</strong>: 정렬, 필터, 단일 행 선택, Status Chips</li>
|
<li><strong>15. 카테고리 탭 바</strong>: ALL/BUDGET/FACTOR/RISK/ACCOUNTING 탭</li>
|
||||||
<li><strong>16. 페이지네이션 바</strong>: Page 1 of 1 건수 및 페이지 컨트롤러</li>
|
<li><strong>16. AG Grid 데이터 테이블</strong>: 정렬, 필터, 단일 행 선택, Status Chips</li>
|
||||||
<li><strong>17. 더존 6대 표준 입력 마스크</strong>: Input, ComboBox, Radio, TextArea 등</li>
|
<li><strong>17. 페이지네이션 바</strong>: Page 1 of 1 건수 및 페이지 컨트롤러</li>
|
||||||
<li><strong>18. 읽기/편집 모드 토글</strong>: 👁️ 읽기 / ✏️ 편집 전환 스위치</li>
|
<li><strong>18. 더존 6대 표준 입력 마스크</strong>: Input, ComboBox, Radio, TextArea 등</li>
|
||||||
<li><strong>19. 증빙 파일 첨부 드롭존</strong>: Drag & drop 파일 첨부 칩</li>
|
<li><strong>19. 읽기/편집 모드 토글</strong>: 👁️ 읽기 / ✏️ 편집 전환 스위치</li>
|
||||||
<li><strong>20. 감사 이력 타임라인 & 모달 & 엑셀 팝업</strong>: Audit Trail, Modal, Excel/CSV</li>
|
<li><strong>20. 감사 이력 타임라인 & 모달 & 엑셀 팝업</strong>: Audit Trail, Modal, Excel/CSV</li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
@@ -601,6 +617,44 @@ onMounted(loadData);
|
|||||||
user-select: none;
|
user-select: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.category-tabs-bar {
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
align-items: center;
|
||||||
|
background: white;
|
||||||
|
padding: 4px 12px;
|
||||||
|
border: 1px solid #CBD5E1;
|
||||||
|
border-radius: 6px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.left-category-tabs { display: flex; gap: 6px; }
|
||||||
|
|
||||||
|
.right-split-presets {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
gap: 4px;
|
||||||
|
font-size: 0.7rem;
|
||||||
|
color: #475569;
|
||||||
|
font-weight: 700;
|
||||||
|
}
|
||||||
|
|
||||||
|
.preset-btn {
|
||||||
|
padding: 2px 6px;
|
||||||
|
font-size: 0.65rem;
|
||||||
|
font-weight: 700;
|
||||||
|
border: 1px solid #CBD5E1;
|
||||||
|
background: #F8FAFC;
|
||||||
|
color: #334155;
|
||||||
|
border-radius: 3px;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
|
||||||
|
.preset-btn.active, .preset-btn:hover {
|
||||||
|
background: #2563EB;
|
||||||
|
color: white;
|
||||||
|
border-color: #2563EB;
|
||||||
|
}
|
||||||
|
|
||||||
.domain-switcher-bar {
|
.domain-switcher-bar {
|
||||||
display: flex;
|
display: flex;
|
||||||
gap: 4px;
|
gap: 4px;
|
||||||
@@ -877,15 +931,6 @@ onMounted(loadData);
|
|||||||
font-size: 0.65rem;
|
font-size: 0.65rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
.category-tabs-bar {
|
|
||||||
display: flex;
|
|
||||||
gap: 6px;
|
|
||||||
background: white;
|
|
||||||
padding: 4px 12px;
|
|
||||||
border: 1px solid #CBD5E1;
|
|
||||||
border-radius: 6px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.tab-btn {
|
.tab-btn {
|
||||||
padding: 4px 12px;
|
padding: 4px 12px;
|
||||||
border: none;
|
border: none;
|
||||||
|
|||||||
Reference in New Issue
Block a user