Files
XRLib/Assets/Resources/SHI/Modal/NW/NWChart.uss
logonkhi 6ae48ff30e UIToolkit 스타일 및 입력 컴포넌트 추가
- 기본 스타일을 위한 UTKDefaultStyle.uss파일을 생성했습니다.
- UIToolkit 설정 구성을 위한 UTKSettings.asset 파일을 추가했습니다.
- 포괄적인 색상 정의를 포함하는 다크 및 라이트 테마 스타일(UTKThemeDark.uss, UTKThemeLight.uss)을 도입했습니다.
- 테마에 독립적인 레이아웃 및 크기 변수를 위한 UTKVariables.uss를 구현했습니다.
- 스타일 및 이벤트 처리를 통해 열거형 선택을 위한 사용자 지정 드롭다운 컴포넌트(UTKEnumDropDown)를 개발했습니다.
- 사용자 지정 스타일 및 이벤트 관리를 통해 각각 이중 입력 필드와 긴 입력 필드를 위한 UTKDoubleField 및 UTKLongField 컴포넌트를 생성했습니다.
2026-01-09 18:42:17 +09:00

247 lines
6.7 KiB
Plaintext

/*
* NWChart.uss - NW 네트워크 다이어그램 스타일시트
*
* [개요]
* 네트워크 다이어그램(Network Diagram)의 스타일을 정의합니다.
* 노드, 연결선, 타임라인 헤더 등의 스타일을 포함합니다.
*
* [스타일 구조]
* 1. 레이아웃 기본 설정
* - :root, .nw-container, .header-container, .header, .header-timeline
* 2. 네트워크 캔버스
* - .network-canvas, .grid-layer, .lines-layer, .nodes-layer
* 3. 노드 스타일
* - .nw-node (기본), .nw-node-end (종료), .nw-node-critical (크리티컬)
* - .nw-node-completed (완료), .nw-node-dragging (드래그 중)
* 4. 연결선 스타일
* - .connection-line, .connection-arrow
* 5. 버튼 스타일
* - .expand-btn
*
* [색상 팔레트]
* - 배경: rgb(245, 245, 245) - 밝은 회색
* - 기본 노드: rgb(51, 153, 230) - 파란색
* - 종료 노드: rgb(230, 204, 51) - 노란색
* - 크리티컬 노드: rgb(230, 80, 80) - 빨간색
* - 완료 노드: rgb(80, 180, 80) - 초록색
* - 연결선: rgb(80, 80, 80) - 진한 회색
*
* [노드 상태]
* - 기본: 파란색 배경, 호버 시 밝아짐
* - 드래그 중: 1.1배 확대, 흰색 테두리, cursor: move
* - 종료/크리티컬/완료: 각각 다른 색상
*
* [연관 파일]
* - NWChart.uxml : UI 레이아웃
* - NWChart.cs : C# 컨트롤러 (노드 생성, 연결선 렌더링)
*/
/* ===================================
루트 요소 기본 설정
Flexbox 레이아웃 초기화
=================================== */
:root {
flex-grow: 1;
flex-shrink: 1;
flex-basis: 0;
min-width: 0;
overflow: hidden;
}
/* ===================================
네트워크 다이어그램 메인 컨테이너
세로 방향 Flexbox 레이아웃
=================================== */
.nw-container {
flex-grow: 1;
flex-shrink: 1;
flex-direction: column;
background-color: rgb(245, 245, 245); /* 밝은 회색 배경 */
min-width: 0;
overflow: hidden;
height: 100%;
}
/* ===================================
헤더 영역 스타일
타임라인 헤더를 담는 컨테이너
=================================== */
.header-container {
flex-grow: 0;
height: 56px; /* 2단 헤더 높이 (36 + 18 + 2px 테두리) */
min-height: 56px;
flex-shrink: 0;
overflow: hidden;
}
.header {
flex-grow: 0;
height: 56px;
flex-direction: row;
min-height: 56px;
flex-shrink: 0;
position: relative;
}
.header-timeline {
flex-grow: 0;
flex-shrink: 0;
background-color: rgb(240, 240, 240); /* 밝은 회색 배경 */
height: 56px;
border-bottom-width: 1px;
border-bottom-color: rgb(141, 141, 141);
}
/* 타임라인 행 (월, 일) */
.timeline-row {
flex-grow: 0;
height: 18px; /* 기본 높이 (일 레이어) */
flex-shrink: 0;
flex-direction: row;
border-bottom-width: 1px;
border-bottom-color: rgb(255, 255, 255);
}
/* ===================================
스크롤 영역 스타일
=================================== */
.content-scroll {
flex-grow: 1;
}
/* ===================================
네트워크 캔버스 스타일
노드와 연결선이 그려지는 영역
=================================== */
.network-canvas {
flex-grow: 0;
flex-shrink: 0;
position: relative; /* 자식 요소의 절대 위치 기준 */
background-image: resource('SHI/Images/bg_task_cell_18x18'); /* 그리드 배경 */
background-repeat: repeat repeat;
background-size: 18px 18px; /* 일 단위 그리드 */
}
/* 그리드 레이어 (가장 아래) */
.grid-layer {
position: absolute;
top: 0;
left: 0;
}
/* 연결선 레이어 (중간) */
.lines-layer {
position: absolute;
top: 0;
left: 0;
}
/* 노드 레이어 (최상단) */
.nodes-layer {
position: absolute;
top: 0;
left: 0;
}
/* ===================================
확장 버튼 스타일
전체 화면으로 확장하는 버튼
=================================== */
.expand-btn {
position: absolute;
top: 20px;
left: 10px;
width: 36px;
height: 36px;
margin: 0;
padding: 0;
border-width: 0;
background-color: rgba(255, 255, 255, 0); /* 투명 배경 */
background-image: resource('SHI/Images/btn_expand_36');
}
/* ===================================
노드 스타일
네트워크 다이어그램의 작업 노드
=================================== */
.nw-node {
background-color: rgb(51, 153, 230); /* 파란색 (기본) */
border-radius: 4px; /* 둥근 모서리 */
border-width: 1px;
border-color: rgba(51, 51, 51, 0.5); /* 반투명 회색 테두리 */
justify-content: center;
align-items: center;
cursor: resource('UIToolkit/Images/cursor_point_white_32') 14 5; /* 클릭 가능 커서 */
transition-duration: 0.15s; /* 호버 애니메이션 */
}
/* 노드 호버 상태 */
.nw-node:hover {
background-color: rgb(71, 173, 250); /* 밝은 파란색 */
}
/* 노드 드래그 중 상태 */
.nw-node-dragging {
scale: 1.1; /* 10% 확대 */
border-width: 2px;
border-color: rgb(255, 255, 255); /* 흰색 테두리 */
cursor: move; /* 이동 커서 */
}
/* 노드 라벨 스타일 */
.nw-node-label {
-unity-text-align: middle-center;
font-size: 9px;
color: rgb(255, 255, 255); /* 흰색 텍스트 */
-unity-font-style: bold;
margin: 0;
padding: 2px;
overflow: hidden;
text-overflow: ellipsis; /* 긴 텍스트 말줄임 */
white-space: nowrap;
-unity-font-definition: resource('Fonts/Pretendard/Pretendard-Bold');
}
/* ===================================
연결선 스타일
노드 간 의존성을 표시하는 선
=================================== */
.connection-line {
background-color: rgb(80, 80, 80); /* 진한 회색 */
}
.connection-arrow {
background-color: transparent; /* 화살표 머리 (투명) */
}
/* ===================================
노드 상태별 색상
=================================== */
/* 종료 노드 (노란색) */
.nw-node-end {
background-color: rgb(230, 204, 51);
}
.nw-node-end:hover {
background-color: rgb(250, 224, 71);
}
/* 크리티컬 노드 (빨간색) - 일정이 촉박한 작업 */
.nw-node-critical {
background-color: rgb(230, 80, 80);
}
.nw-node-critical:hover {
background-color: rgb(250, 100, 100);
}
/* 완료 노드 (초록색) */
.nw-node-completed {
background-color: rgb(80, 180, 80);
}
.nw-node-completed:hover {
background-color: rgb(100, 200, 100);
}