# common_screen.php 개발자 가이드
## 📋 개요
`common_screen.php`는 방화셔터 견적 시스템의 스크린 견적 테이블을 동적으로 생성하는 핵심 PHP 컴포넌트입니다. 이 파일은 복잡한 HTML 테이블 구조를 함수화하여 재사용 가능한 형태로 제공하며, 스크린 견적서 작성에 필요한 모든 컬럼과 기능을 포함합니다.
## 🏗️ 파일 구조
### 📁 파일 위치
```
/estimate/common/common_screen.php
```
### 📊 파일 정보
- **파일 크기**: 8.6KB (220 lines)
- **주요 언어**: PHP + HTML
- **의존성**: Bootstrap, Bootstrap Icons
- **주요 함수**: `generateTableSection()`
## 🔧 핵심 기능
### 1. 메인 함수: `generateTableSection()`
```php
function generateTableSection($id, $title, $badgeClass = 'bg-primary', $user_idtem= '', $process=null, $mode)
```
#### 매개변수
- `$id`: 테이블의 고유 식별자 (예: 'estimateScreen')
- `$title`: 테이블 섹션 제목
- `$badgeClass`: 배지 스타일 클래스 (기본값: 'bg-primary')
- `$user_idtem`: 사용자 아이템 (개발자 모드용)
- `$process`: 프로세스 타입 (예: '견적서')
- `$mode`: 모드 (예: 'view', 'edit')
## 📊 테이블 구조 분석
### 🎯 **테이블 헤더 구조 (6단계 계층)**
#### **1단계 헤더 (기본 정보)**
```html
행추가 삭제
일련 번호
층수
부호
제품명
종류
가이드레일
①오픈사이즈
②-1제작사이즈 (스크린)
②-2제작사이즈 (부자재)
③면적
④중량
셔터 수량
연동제어기
⑤모터
절곡
부자재
```
#### **2단계 헤더 (주요 카테고리)**
```html
⑥가이드레일(한쌍)
⑦케이스(셔터박스)
⑧하단마감재
⑨감기샤프트
⑩각파이프
⑪환봉
⑫앵글
```
#### **3단계 헤더 (모터 상세)**
```html
모터 견적가 포함
전원
유/무선
용량
브라케트
```
#### **4단계 헤더 (세부 구성요소)**
```html
가이드레일 마감/보강재
하부base1
하부base2
레일용 연기차단재
케이스
케이스용 연기차단재
하장바
엘바
보강평철
무게평철
인치
원형파이프
50*30*1.4T
```
#### **5단계 헤더 (구체적 사양)**
```html
설치유형
마감유형
가로
높이
가로
높이
가로
높이
매립
노출
매립형 뒷박스
가로*세로
사이즈 (인치)
받침용 앵글
size
2438
3000
3500
4000
4300
W50
셔터박스
상부덮개
마구리
W80
60*40
60*17
50
12T
연결 샤프트
4
5
```
#### **6단계 헤더 (최종 세부사항)**
```html
2438
3000
3500
4000
4300
규격 (사이즈,전면밑,레일폭,점검구방향)
size
1219
2438
3000
3500
4000
4150
1219*389
size
날개
수량
size
3000
4000
size
3000
4000
size
3000
4000
2000
인치 / 길이 / 수량
3000
4500
6000
6000
7000
8200
보강개수환산
size
3000
6000
3000
2500
```
## 🎨 UI/UX 특징
### 📱 **반응형 디자인**
- Bootstrap `table-responsive` 클래스 활용
- 모바일 최적화된 테이블 레이아웃
- 스크롤 가능한 테이블 구조
### 🔘 **버튼 시스템**
```html
+
```
### 🎯 **색상 코딩 시스템**
- **파란색 (text-primary)**: 스크린 관련 항목
- **빨간색 (text-danger)**: 부자재 관련 항목
- **초록색 (text-success)**: 개발자 모드 컬럼 번호
- **보라색 (text-primary)**: 모터 견적가 포함 표시
## 🔧 개발자 모드 기능
### 👨💻 **개발자 모드 활성화**
```php
if ($user_idtem === 'pro') {
// 컬럼명 표시 행 추가
echo "
";
for ($i = 1; $i <= 71; $i++) {
// 특수 컬럼 처리
if($i==10) {
$j = 'col10_SW'; // 스크린제작치수 가로
echo "
";
```
## 🚨 주의사항
### ⚠️ **필수 의존성**
- Bootstrap 5.x
- Bootstrap Icons
- jQuery (JavaScript 연동용)
### 🔒 **보안 고려사항**
- 사용자 권한에 따른 버튼 표시 제어
- XSS 방지를 위한 출력 이스케이프 처리
- SQL 인젝션 방지를 위한 서버 사이드 검증
### 📱 **성능 최적화**
- 대용량 테이블 렌더링 시 성능 고려
- 조건부 렌더링으로 불필요한 요소 제거
- CSS 클래스 최적화
## 🐛 디버깅 가이드
### 🔍 **개발자 모드 활용**
```php
// 개발자 모드에서 컬럼명과 번호 확인
if ($user_idtem === 'pro') {
// 컬럼명 표시
echo "
col{$i}
";
// 컬럼 번호 표시
echo "
{$i}
";
}
```
### 🛠️ **일반적인 문제 해결**
#### 1. 테이블이 표시되지 않는 경우
```php
// 테이블 ID 확인
echo "";
// 컨테이너 확인
echo "";
```
#### 2. 버튼이 작동하지 않는 경우
```javascript
// JavaScript에서 테이블 ID 확인
console.log('Table ID:', '{$id}Table');
// 이벤트 바인딩 확인
$('#{$id}Table').on('click', '.add-row', function() {
console.log('Add row clicked');
});
```
#### 3. 컬럼 수가 맞지 않는 경우
```php
// 컬럼 수 계산
$totalColumns = 77; // 기본 컬럼 수
if ($user_idtem === 'pro') {
$totalColumns += 2; // 개발자 모드 추가 컬럼
}
echo "";
```
## 📚 관련 파일
### 🔗 **의존성 파일**
- `Bootstrap CSS/JS`: UI 프레임워크
- `Bootstrap Icons`: 아이콘 라이브러리
- `jQuery`: JavaScript 라이브러리
### 🔗 **연관 파일**
- `common_addrowJS.php`: 행 추가 JavaScript
- `common_slat.php`: 철재 테이블 생성
- `estimate.php`: 스크린 견적 메인 페이지
- `write_form.php`: 견적 작성 폼
### 🔗 **JavaScript 연동**
- `estimateScreen_view`: 테이블 표시/숨김
- `viewEstimateUnit`: 단가표 보기
- `viewEstimate`: 견적서 보기
- `viewEstimateDetail`: 산출내역서 보기
- `add-row`: 행 추가 기능
## 🎯 향후 개선 방향
### 🔄 **코드 리팩토링**
- 함수 분리 및 모듈화
- 설정 파일 분리
- 템플릿 엔진 도입 고려
### 🎨 **UI/UX 개선**
- 드래그 앤 드롭 컬럼 재정렬
- 컬럼 숨김/표시 기능
- 실시간 검증 메시지
### ⚡ **성능 최적화**
- 가상 스크롤링 도입
- 지연 로딩 구현
- 메모리 사용량 최적화
### 🔧 **기능 확장**
- 동적 컬럼 추가/제거
- 사용자 정의 테이블 템플릿
- 다국어 지원
---
**📅 문서 버전**: 1.0
**👨💻 작성자**: 개발팀
**📝 최종 수정일**: 2024-12-24
**🔗 관련 문서**: [견적 시스템 전체 가이드](./README.md), [common_addrowJS 개발자 가이드](./common_addrowJS_developer_guide.md)