UI 수정:화면 수정

This commit is contained in:
2025-12-11 20:07:19 +09:00
parent b906ec1851
commit 7d15c9be7c
26 changed files with 2629 additions and 557 deletions

View File

@@ -56,6 +56,7 @@ interface CowWithGenes extends Cow {
cowShortNo?: string // 개체 요약번호
cowReproType?: string // 번식 타입
anlysDt?: string // 분석일자
unavailableReason?: string // 분석불가 사유 (부불일치, 모불일치, 모이력제부재 등)
}
function MyCowContent() {
@@ -266,7 +267,7 @@ function MyCowContent() {
// response는 { items: RankingResultItem[], total, criteriaType, timestamp } 형식
// items의 각 요소는 { entity, rank, sortValue, grade, details } 형식
interface RankingItem {
entity: Cow & { genes?: Record<string, number>; calvingCount?: number; bcs?: number; inseminationCount?: number; inbreedingPercent?: number; sireKpn?: string; anlysDt?: string };
entity: Cow & { genes?: Record<string, number>; calvingCount?: number; bcs?: number; inseminationCount?: number; inbreedingPercent?: number; sireKpn?: string; anlysDt?: string; unavailableReason?: string };
rank: number;
sortValue: number;
grade: string;
@@ -351,6 +352,8 @@ function MyCowContent() {
sireKpn: item.entity.sireKpn ?? null,
// 분석일자
anlysDt: item.entity.anlysDt ?? null,
// 분석불가 사유
unavailableReason: item.entity.unavailableReason ?? null,
//====================================================================================================================
// 형질 데이터 (백엔드에서 계산됨, 형질명 → 표준화육종가 매핑)
// 백엔드 응답: { traitName: string, traitVal: number, traitEbv: number, traitPercentile: number }
@@ -982,7 +985,11 @@ function MyCowContent() {
year: '2-digit',
month: '2-digit',
day: '2-digit'
}) : '-'}
}) : (
<span className={cow.unavailableReason ? 'text-red-500 font-medium' : 'text-slate-400'}>
{cow.unavailableReason || '미분석'}
</span>
)}
</td>
<td className="cow-table-cell border-r-2 border-r-gray-300 !py-2 !px-0.5">
{(cow.genomeScore !== undefined && cow.genomeScore !== null) ? (
@@ -1140,9 +1147,15 @@ function MyCowContent() {
</Badge>
</div>
<div className="flex-shrink-0 ml-2">
<span className="font-bold text-xl text-primary">
{cow.genomeScore !== undefined && cow.genomeScore !== null ? cow.genomeScore.toFixed(2) : '-'}
</span>
{cow.genomeScore !== undefined && cow.genomeScore !== null ? (
<span className="font-bold text-xl text-primary">
{cow.genomeScore.toFixed(2)}
</span>
) : (
<Badge className="text-[11px] px-1.5 py-0.5 bg-slate-500 text-white border-0 font-medium">
</Badge>
)}
</div>
</div>
@@ -1179,7 +1192,11 @@ function MyCowContent() {
<div className="flex justify-between">
<span className="text-muted-foreground"></span>
<span className="font-medium">
{cow.anlysDt ? new Date(cow.anlysDt).toLocaleDateString('ko-KR', { year: '2-digit', month: 'numeric', day: 'numeric' }) : '-'}
{cow.anlysDt ? new Date(cow.anlysDt).toLocaleDateString('ko-KR', { year: '2-digit', month: 'numeric', day: 'numeric' }) : (
<span className={cow.unavailableReason ? 'text-red-500' : 'text-slate-400'}>
{cow.unavailableReason || '미분석'}
</span>
)}
</span>
</div>
</div>