diff --git a/Assets/Resources/SHI/Images/bg_task_cell_18x18.png b/Assets/Resources/SHI/Images/bg_task_cell_18x18.png new file mode 100644 index 00000000..e42f577c Binary files /dev/null and b/Assets/Resources/SHI/Images/bg_task_cell_18x18.png differ diff --git a/Assets/Resources/SHI/Images/bg_task_cell_18x18.png.meta b/Assets/Resources/SHI/Images/bg_task_cell_18x18.png.meta new file mode 100644 index 00000000..e6faa190 --- /dev/null +++ b/Assets/Resources/SHI/Images/bg_task_cell_18x18.png.meta @@ -0,0 +1,143 @@ +fileFormatVersion: 2 +guid: 493746fbc3e7b294b863c3c3815af746 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 13 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + flipGreenChannel: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMipmapLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 0 + wrapV: 0 + wrapW: 0 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + swizzle: 50462976 + cookieLightType: 0 + platformSettings: + - serializedVersion: 4 + buildTarget: DefaultTexturePlatform + maxTextureSize: 32 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: WebGL + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: WindowsStoreApps + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + customData: + physicsShape: [] + bones: [] + spriteID: 5e97eb03825dee720800000000000000 + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spriteCustomMetadata: + entries: [] + nameFileIdTable: {} + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Resources/SHI/Modal/ISOP/ISOPChart.uss b/Assets/Resources/SHI/Modal/ISOP/ISOPChart.uss index d9164518..c790120e 100644 --- a/Assets/Resources/SHI/Modal/ISOP/ISOPChart.uss +++ b/Assets/Resources/SHI/Modal/ISOP/ISOPChart.uss @@ -1,3 +1,38 @@ +/* + * ISOPChart.uss - ISOP 간트 차트 스타일시트 + * + * [개요] + * 간트 차트(Gantt Chart)의 스타일을 정의합니다. + * 작업 행, 타임라인 셀, 호버 효과 등의 스타일을 포함합니다. + * + * [스타일 구조] + * 1. :root - 루트 요소 기본 설정 + * 2. #gantt-container - 간트 차트 전체 컨테이너 + * 3. .task-row - 작업 행 스타일 (호버 효과 포함) + * 4. .task-txt - 작업 레벨(L1~L8) 셀 스타일 + * + * [색상 팔레트] + * - 배경: rgb(250, 250, 250) - 밝은 회색 + * - 작업 행: rgb(136, 190, 230) - 하늘색 (테두리) + * - 레벨 셀: rgb(228, 236, 255) - 연한 파랑 (배경) + * - 호버: rgb(228, 236, 255) - 연한 파랑 + * - 텍스트: rgb(34, 34, 34) - 진한 회색 + * + * [레이아웃] + * - 작업 행 높이: 49px (40px 컨텐츠 + 테두리) + * - 레벨 셀 너비: 40px (L1~L8 각각) + * - 일 셀 너비: 18px (pixelsPerDay와 일치) + * + * [연관 파일] + * - ISOPChart.uxml : 메인 레이아웃 + * - ISOPChartRow.uxml : 작업 행 템플릿 + * - ISOPChart.cs : C# 컨트롤러 + */ + +/* =================================== + 루트 요소 기본 설정 + Flexbox 레이아웃 초기화 + =================================== */ :root { flex-grow: 1; flex-shrink: 1; @@ -6,20 +41,28 @@ overflow: hidden; } +/* =================================== + 간트 차트 메인 컨테이너 + 세로 방향 Flexbox 레이아웃 + =================================== */ #gantt-container { flex-grow: 1; flex-shrink: 1; flex-direction: column; - background-color: rgb(250, 250, 250); + background-color: rgb(250, 250, 250); /* 밝은 회색 배경 */ min-width: 0; overflow: hidden; } +/* =================================== + 작업 행 스타일 + 각 작업(Task)을 표시하는 행 + =================================== */ .task-row { flex-direction: row; height: 49px; width: 390px; - background-color: rgb(136, 190, 230); + background-color: rgb(136, 190, 230); /* 하늘색 (테두리용) */ border-top-style: solid; border-bottom-style: solid; border-left-style: solid; @@ -34,27 +77,33 @@ box-sizing: border-box; -unity-font-definition: resource('Fonts/Pretendard/Pretendard-Regular'); font-size: 10px; - color: rgb(34, 34, 34); + color: rgb(34, 34, 34); /* 진한 회색 텍스트 */ } +/* 첫 번째 행: 상단 테두리 추가 */ .task-row:first-child { border-top-width: 1px; border-top-color: rgb(136, 190, 230); } +/* 호버 상태: 연한 파란색 배경 */ .task-row:hover { background-color: rgb(228, 236, 255); } +/* =================================== + 작업 레벨 셀 스타일 + L1~L8 각 레벨의 텍스트 셀 + =================================== */ .task-txt { - width: 40px; + width: 40px; /* 고정 너비 40px */ height: 40px; flex-grow: 0; flex-shrink: 0; display: flex; align-items: center; justify-content: center; - -unity-text-align: middle-center; + -unity-text-align: middle-center; /* 텍스트 중앙 정렬 */ font-size: 10px; color: rgb(34, 34, 34); border-left-width: 0; @@ -63,7 +112,7 @@ box-sizing: border-box; -unity-font-definition: resource('Fonts/Pretendard/Pretendard-Regular'); border-top-width: 0; - border-right-width: 1px; + border-right-width: 1px; /* 오른쪽 구분선 */ border-bottom-width: 0; margin-top: 0; margin-right: 0; @@ -74,9 +123,10 @@ padding-bottom: 0; padding-left: 0; flex-direction: row; - border-right-color: rgb(255, 255, 255); + border-right-color: rgb(255, 255, 255); /* 흰색 구분선 */ } +/* 첫 번째 레벨 셀: 왼쪽 테두리 없음 */ .task-txt:first-child { border-left-width: 0; } diff --git a/Assets/Resources/SHI/Modal/ISOP/ISOPChart.uxml b/Assets/Resources/SHI/Modal/ISOP/ISOPChart.uxml index 438466ba..81026426 100644 --- a/Assets/Resources/SHI/Modal/ISOP/ISOPChart.uxml +++ b/Assets/Resources/SHI/Modal/ISOP/ISOPChart.uxml @@ -1,21 +1,77 @@ +