2025-10-13 18:37:18 +09:00
|
|
|
import { Position, Size } from "@/types/screen";
|
|
|
|
|
import { GridSettings } from "@/types/screen-management";
|
2025-09-02 11:16:40 +09:00
|
|
|
|
feat: 테이블 탭 드래그앤드롭 개선 및 AI-개발자 협업 규칙 수립
주요 변경사항:
- 드래그앤드롭 컬럼의 라벨 숨김 및 placeholder로 라벨명 표시
- 기본 높이 30px로 변경
- 5개 시스템 컬럼(id, created_date, updated_date, writer, company_code) 숨김
- AI-개발자 협업 작업 수칙 문서 작성 및 .cursorrules에 통합
파일 변경:
- frontend/components/screen/ScreenDesigner.tsx
* getDefaultHeight(): 기본 높이를 30px로 변경
* handleDrop(): labelDisplay false, placeholder 추가
- frontend/components/screen/panels/TablesPanel.tsx
* hiddenColumns Set으로 시스템 컬럼 필터링
- .cursor/rules/ai-developer-collaboration-rules.mdc (신규)
* 확인 우선, 한 번에 하나, 철저한 마무리 원칙
* 데이터베이스 검증, 코드 수정, 테스트, 커뮤니케이션 규칙
- .cursorrules
* 필수 확인 규칙 섹션 추가
* 모든 작업 시작/완료 시 협업 규칙 확인 강제화
2025-11-07 17:12:01 +09:00
|
|
|
// 🎯 10px 고정 격자 시스템
|
|
|
|
|
const GRID_SIZE = 10; // 고정값
|
|
|
|
|
|
2025-10-13 18:37:18 +09:00
|
|
|
export interface GridInfo {
|
feat: 테이블 탭 드래그앤드롭 개선 및 AI-개발자 협업 규칙 수립
주요 변경사항:
- 드래그앤드롭 컬럼의 라벨 숨김 및 placeholder로 라벨명 표시
- 기본 높이 30px로 변경
- 5개 시스템 컬럼(id, created_date, updated_date, writer, company_code) 숨김
- AI-개발자 협업 작업 수칙 문서 작성 및 .cursorrules에 통합
파일 변경:
- frontend/components/screen/ScreenDesigner.tsx
* getDefaultHeight(): 기본 높이를 30px로 변경
* handleDrop(): labelDisplay false, placeholder 추가
- frontend/components/screen/panels/TablesPanel.tsx
* hiddenColumns Set으로 시스템 컬럼 필터링
- .cursor/rules/ai-developer-collaboration-rules.mdc (신규)
* 확인 우선, 한 번에 하나, 철저한 마무리 원칙
* 데이터베이스 검증, 코드 수정, 테스트, 커뮤니케이션 규칙
- .cursorrules
* 필수 확인 규칙 섹션 추가
* 모든 작업 시작/완료 시 협업 규칙 확인 강제화
2025-11-07 17:12:01 +09:00
|
|
|
gridSize: number; // 항상 10px
|
2025-10-13 18:37:18 +09:00
|
|
|
totalWidth: number;
|
|
|
|
|
totalHeight: number;
|
2025-09-02 11:16:40 +09:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
feat: 테이블 탭 드래그앤드롭 개선 및 AI-개발자 협업 규칙 수립
주요 변경사항:
- 드래그앤드롭 컬럼의 라벨 숨김 및 placeholder로 라벨명 표시
- 기본 높이 30px로 변경
- 5개 시스템 컬럼(id, created_date, updated_date, writer, company_code) 숨김
- AI-개발자 협업 작업 수칙 문서 작성 및 .cursorrules에 통합
파일 변경:
- frontend/components/screen/ScreenDesigner.tsx
* getDefaultHeight(): 기본 높이를 30px로 변경
* handleDrop(): labelDisplay false, placeholder 추가
- frontend/components/screen/panels/TablesPanel.tsx
* hiddenColumns Set으로 시스템 컬럼 필터링
- .cursor/rules/ai-developer-collaboration-rules.mdc (신규)
* 확인 우선, 한 번에 하나, 철저한 마무리 원칙
* 데이터베이스 검증, 코드 수정, 테스트, 커뮤니케이션 규칙
- .cursorrules
* 필수 확인 규칙 섹션 추가
* 모든 작업 시작/완료 시 협업 규칙 확인 강제화
2025-11-07 17:12:01 +09:00
|
|
|
* 격자 정보 계산 (단순화)
|
2025-09-02 11:16:40 +09:00
|
|
|
*/
|
2025-10-13 18:37:18 +09:00
|
|
|
export function calculateGridInfo(
|
|
|
|
|
containerWidth: number,
|
|
|
|
|
containerHeight: number,
|
feat: 테이블 탭 드래그앤드롭 개선 및 AI-개발자 협업 규칙 수립
주요 변경사항:
- 드래그앤드롭 컬럼의 라벨 숨김 및 placeholder로 라벨명 표시
- 기본 높이 30px로 변경
- 5개 시스템 컬럼(id, created_date, updated_date, writer, company_code) 숨김
- AI-개발자 협업 작업 수칙 문서 작성 및 .cursorrules에 통합
파일 변경:
- frontend/components/screen/ScreenDesigner.tsx
* getDefaultHeight(): 기본 높이를 30px로 변경
* handleDrop(): labelDisplay false, placeholder 추가
- frontend/components/screen/panels/TablesPanel.tsx
* hiddenColumns Set으로 시스템 컬럼 필터링
- .cursor/rules/ai-developer-collaboration-rules.mdc (신규)
* 확인 우선, 한 번에 하나, 철저한 마무리 원칙
* 데이터베이스 검증, 코드 수정, 테스트, 커뮤니케이션 규칙
- .cursorrules
* 필수 확인 규칙 섹션 추가
* 모든 작업 시작/완료 시 협업 규칙 확인 강제화
2025-11-07 17:12:01 +09:00
|
|
|
_gridSettings?: GridSettings, // 호환성 유지용 (사용 안 함)
|
2025-10-13 18:37:18 +09:00
|
|
|
): GridInfo {
|
|
|
|
|
return {
|
feat: 테이블 탭 드래그앤드롭 개선 및 AI-개발자 협업 규칙 수립
주요 변경사항:
- 드래그앤드롭 컬럼의 라벨 숨김 및 placeholder로 라벨명 표시
- 기본 높이 30px로 변경
- 5개 시스템 컬럼(id, created_date, updated_date, writer, company_code) 숨김
- AI-개발자 협업 작업 수칙 문서 작성 및 .cursorrules에 통합
파일 변경:
- frontend/components/screen/ScreenDesigner.tsx
* getDefaultHeight(): 기본 높이를 30px로 변경
* handleDrop(): labelDisplay false, placeholder 추가
- frontend/components/screen/panels/TablesPanel.tsx
* hiddenColumns Set으로 시스템 컬럼 필터링
- .cursor/rules/ai-developer-collaboration-rules.mdc (신규)
* 확인 우선, 한 번에 하나, 철저한 마무리 원칙
* 데이터베이스 검증, 코드 수정, 테스트, 커뮤니케이션 규칙
- .cursorrules
* 필수 확인 규칙 섹션 추가
* 모든 작업 시작/완료 시 협업 규칙 확인 강제화
2025-11-07 17:12:01 +09:00
|
|
|
gridSize: GRID_SIZE,
|
2025-10-13 18:37:18 +09:00
|
|
|
totalWidth: containerWidth,
|
|
|
|
|
totalHeight: containerHeight,
|
|
|
|
|
};
|
2025-09-02 11:16:40 +09:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
feat: 테이블 탭 드래그앤드롭 개선 및 AI-개발자 협업 규칙 수립
주요 변경사항:
- 드래그앤드롭 컬럼의 라벨 숨김 및 placeholder로 라벨명 표시
- 기본 높이 30px로 변경
- 5개 시스템 컬럼(id, created_date, updated_date, writer, company_code) 숨김
- AI-개발자 협업 작업 수칙 문서 작성 및 .cursorrules에 통합
파일 변경:
- frontend/components/screen/ScreenDesigner.tsx
* getDefaultHeight(): 기본 높이를 30px로 변경
* handleDrop(): labelDisplay false, placeholder 추가
- frontend/components/screen/panels/TablesPanel.tsx
* hiddenColumns Set으로 시스템 컬럼 필터링
- .cursor/rules/ai-developer-collaboration-rules.mdc (신규)
* 확인 우선, 한 번에 하나, 철저한 마무리 원칙
* 데이터베이스 검증, 코드 수정, 테스트, 커뮤니케이션 규칙
- .cursorrules
* 필수 확인 규칙 섹션 추가
* 모든 작업 시작/완료 시 협업 규칙 확인 강제화
2025-11-07 17:12:01 +09:00
|
|
|
* 위치를 10px 격자에 맞춤
|
2025-09-02 11:16:40 +09:00
|
|
|
*/
|
feat: 테이블 탭 드래그앤드롭 개선 및 AI-개발자 협업 규칙 수립
주요 변경사항:
- 드래그앤드롭 컬럼의 라벨 숨김 및 placeholder로 라벨명 표시
- 기본 높이 30px로 변경
- 5개 시스템 컬럼(id, created_date, updated_date, writer, company_code) 숨김
- AI-개발자 협업 작업 수칙 문서 작성 및 .cursorrules에 통합
파일 변경:
- frontend/components/screen/ScreenDesigner.tsx
* getDefaultHeight(): 기본 높이를 30px로 변경
* handleDrop(): labelDisplay false, placeholder 추가
- frontend/components/screen/panels/TablesPanel.tsx
* hiddenColumns Set으로 시스템 컬럼 필터링
- .cursor/rules/ai-developer-collaboration-rules.mdc (신규)
* 확인 우선, 한 번에 하나, 철저한 마무리 원칙
* 데이터베이스 검증, 코드 수정, 테스트, 커뮤니케이션 규칙
- .cursorrules
* 필수 확인 규칙 섹션 추가
* 모든 작업 시작/완료 시 협업 규칙 확인 강제화
2025-11-07 17:12:01 +09:00
|
|
|
export function snapToGrid(position: Position, _gridInfo: GridInfo, gridSettings: GridSettings): Position {
|
2025-10-13 18:37:18 +09:00
|
|
|
if (!gridSettings.snapToGrid) {
|
|
|
|
|
return position;
|
2025-09-02 11:16:40 +09:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return {
|
feat: 테이블 탭 드래그앤드롭 개선 및 AI-개발자 협업 규칙 수립
주요 변경사항:
- 드래그앤드롭 컬럼의 라벨 숨김 및 placeholder로 라벨명 표시
- 기본 높이 30px로 변경
- 5개 시스템 컬럼(id, created_date, updated_date, writer, company_code) 숨김
- AI-개발자 협업 작업 수칙 문서 작성 및 .cursorrules에 통합
파일 변경:
- frontend/components/screen/ScreenDesigner.tsx
* getDefaultHeight(): 기본 높이를 30px로 변경
* handleDrop(): labelDisplay false, placeholder 추가
- frontend/components/screen/panels/TablesPanel.tsx
* hiddenColumns Set으로 시스템 컬럼 필터링
- .cursor/rules/ai-developer-collaboration-rules.mdc (신규)
* 확인 우선, 한 번에 하나, 철저한 마무리 원칙
* 데이터베이스 검증, 코드 수정, 테스트, 커뮤니케이션 규칙
- .cursorrules
* 필수 확인 규칙 섹션 추가
* 모든 작업 시작/완료 시 협업 규칙 확인 강제화
2025-11-07 17:12:01 +09:00
|
|
|
x: Math.round(position.x / GRID_SIZE) * GRID_SIZE,
|
|
|
|
|
y: Math.round(position.y / GRID_SIZE) * GRID_SIZE,
|
2025-10-13 18:37:18 +09:00
|
|
|
z: position.z,
|
2025-09-02 11:16:40 +09:00
|
|
|
};
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
feat: 테이블 탭 드래그앤드롭 개선 및 AI-개발자 협업 규칙 수립
주요 변경사항:
- 드래그앤드롭 컬럼의 라벨 숨김 및 placeholder로 라벨명 표시
- 기본 높이 30px로 변경
- 5개 시스템 컬럼(id, created_date, updated_date, writer, company_code) 숨김
- AI-개발자 협업 작업 수칙 문서 작성 및 .cursorrules에 통합
파일 변경:
- frontend/components/screen/ScreenDesigner.tsx
* getDefaultHeight(): 기본 높이를 30px로 변경
* handleDrop(): labelDisplay false, placeholder 추가
- frontend/components/screen/panels/TablesPanel.tsx
* hiddenColumns Set으로 시스템 컬럼 필터링
- .cursor/rules/ai-developer-collaboration-rules.mdc (신규)
* 확인 우선, 한 번에 하나, 철저한 마무리 원칙
* 데이터베이스 검증, 코드 수정, 테스트, 커뮤니케이션 규칙
- .cursorrules
* 필수 확인 규칙 섹션 추가
* 모든 작업 시작/완료 시 협업 규칙 확인 강제화
2025-11-07 17:12:01 +09:00
|
|
|
* 크기를 10px 격자에 맞춤
|
2025-09-02 11:16:40 +09:00
|
|
|
*/
|
feat: 테이블 탭 드래그앤드롭 개선 및 AI-개발자 협업 규칙 수립
주요 변경사항:
- 드래그앤드롭 컬럼의 라벨 숨김 및 placeholder로 라벨명 표시
- 기본 높이 30px로 변경
- 5개 시스템 컬럼(id, created_date, updated_date, writer, company_code) 숨김
- AI-개발자 협업 작업 수칙 문서 작성 및 .cursorrules에 통합
파일 변경:
- frontend/components/screen/ScreenDesigner.tsx
* getDefaultHeight(): 기본 높이를 30px로 변경
* handleDrop(): labelDisplay false, placeholder 추가
- frontend/components/screen/panels/TablesPanel.tsx
* hiddenColumns Set으로 시스템 컬럼 필터링
- .cursor/rules/ai-developer-collaboration-rules.mdc (신규)
* 확인 우선, 한 번에 하나, 철저한 마무리 원칙
* 데이터베이스 검증, 코드 수정, 테스트, 커뮤니케이션 규칙
- .cursorrules
* 필수 확인 규칙 섹션 추가
* 모든 작업 시작/완료 시 협업 규칙 확인 강제화
2025-11-07 17:12:01 +09:00
|
|
|
export function snapSizeToGrid(size: Size, _gridInfo: GridInfo, gridSettings: GridSettings): Size {
|
2025-10-13 18:37:18 +09:00
|
|
|
if (!gridSettings.snapToGrid) {
|
|
|
|
|
return size;
|
|
|
|
|
}
|
2025-09-02 11:16:40 +09:00
|
|
|
|
2025-09-03 11:32:09 +09:00
|
|
|
return {
|
feat: 테이블 탭 드래그앤드롭 개선 및 AI-개발자 협업 규칙 수립
주요 변경사항:
- 드래그앤드롭 컬럼의 라벨 숨김 및 placeholder로 라벨명 표시
- 기본 높이 30px로 변경
- 5개 시스템 컬럼(id, created_date, updated_date, writer, company_code) 숨김
- AI-개발자 협업 작업 수칙 문서 작성 및 .cursorrules에 통합
파일 변경:
- frontend/components/screen/ScreenDesigner.tsx
* getDefaultHeight(): 기본 높이를 30px로 변경
* handleDrop(): labelDisplay false, placeholder 추가
- frontend/components/screen/panels/TablesPanel.tsx
* hiddenColumns Set으로 시스템 컬럼 필터링
- .cursor/rules/ai-developer-collaboration-rules.mdc (신규)
* 확인 우선, 한 번에 하나, 철저한 마무리 원칙
* 데이터베이스 검증, 코드 수정, 테스트, 커뮤니케이션 규칙
- .cursorrules
* 필수 확인 규칙 섹션 추가
* 모든 작업 시작/완료 시 협업 규칙 확인 강제화
2025-11-07 17:12:01 +09:00
|
|
|
width: Math.max(GRID_SIZE, Math.round(size.width / GRID_SIZE) * GRID_SIZE),
|
|
|
|
|
height: Math.max(GRID_SIZE, Math.round(size.height / GRID_SIZE) * GRID_SIZE),
|
2025-09-03 11:32:09 +09:00
|
|
|
};
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
feat: 테이블 탭 드래그앤드롭 개선 및 AI-개발자 협업 규칙 수립
주요 변경사항:
- 드래그앤드롭 컬럼의 라벨 숨김 및 placeholder로 라벨명 표시
- 기본 높이 30px로 변경
- 5개 시스템 컬럼(id, created_date, updated_date, writer, company_code) 숨김
- AI-개발자 협업 작업 수칙 문서 작성 및 .cursorrules에 통합
파일 변경:
- frontend/components/screen/ScreenDesigner.tsx
* getDefaultHeight(): 기본 높이를 30px로 변경
* handleDrop(): labelDisplay false, placeholder 추가
- frontend/components/screen/panels/TablesPanel.tsx
* hiddenColumns Set으로 시스템 컬럼 필터링
- .cursor/rules/ai-developer-collaboration-rules.mdc (신규)
* 확인 우선, 한 번에 하나, 철저한 마무리 원칙
* 데이터베이스 검증, 코드 수정, 테스트, 커뮤니케이션 규칙
- .cursorrules
* 필수 확인 규칙 섹션 추가
* 모든 작업 시작/완료 시 협업 규칙 확인 강제화
2025-11-07 17:12:01 +09:00
|
|
|
* 격자 가이드라인 생성 (10px 간격)
|
2025-09-02 11:16:40 +09:00
|
|
|
*/
|
2025-10-13 18:37:18 +09:00
|
|
|
export function generateGridLines(
|
|
|
|
|
containerWidth: number,
|
|
|
|
|
containerHeight: number,
|
feat: 테이블 탭 드래그앤드롭 개선 및 AI-개발자 협업 규칙 수립
주요 변경사항:
- 드래그앤드롭 컬럼의 라벨 숨김 및 placeholder로 라벨명 표시
- 기본 높이 30px로 변경
- 5개 시스템 컬럼(id, created_date, updated_date, writer, company_code) 숨김
- AI-개발자 협업 작업 수칙 문서 작성 및 .cursorrules에 통합
파일 변경:
- frontend/components/screen/ScreenDesigner.tsx
* getDefaultHeight(): 기본 높이를 30px로 변경
* handleDrop(): labelDisplay false, placeholder 추가
- frontend/components/screen/panels/TablesPanel.tsx
* hiddenColumns Set으로 시스템 컬럼 필터링
- .cursor/rules/ai-developer-collaboration-rules.mdc (신규)
* 확인 우선, 한 번에 하나, 철저한 마무리 원칙
* 데이터베이스 검증, 코드 수정, 테스트, 커뮤니케이션 규칙
- .cursorrules
* 필수 확인 규칙 섹션 추가
* 모든 작업 시작/완료 시 협업 규칙 확인 강제화
2025-11-07 17:12:01 +09:00
|
|
|
_gridSettings?: GridSettings,
|
2025-10-13 18:37:18 +09:00
|
|
|
): {
|
|
|
|
|
verticalLines: number[];
|
|
|
|
|
horizontalLines: number[];
|
|
|
|
|
} {
|
|
|
|
|
const verticalLines: number[] = [];
|
feat: 테이블 탭 드래그앤드롭 개선 및 AI-개발자 협업 규칙 수립
주요 변경사항:
- 드래그앤드롭 컬럼의 라벨 숨김 및 placeholder로 라벨명 표시
- 기본 높이 30px로 변경
- 5개 시스템 컬럼(id, created_date, updated_date, writer, company_code) 숨김
- AI-개발자 협업 작업 수칙 문서 작성 및 .cursorrules에 통합
파일 변경:
- frontend/components/screen/ScreenDesigner.tsx
* getDefaultHeight(): 기본 높이를 30px로 변경
* handleDrop(): labelDisplay false, placeholder 추가
- frontend/components/screen/panels/TablesPanel.tsx
* hiddenColumns Set으로 시스템 컬럼 필터링
- .cursor/rules/ai-developer-collaboration-rules.mdc (신규)
* 확인 우선, 한 번에 하나, 철저한 마무리 원칙
* 데이터베이스 검증, 코드 수정, 테스트, 커뮤니케이션 규칙
- .cursorrules
* 필수 확인 규칙 섹션 추가
* 모든 작업 시작/완료 시 협업 규칙 확인 강제화
2025-11-07 17:12:01 +09:00
|
|
|
for (let x = 0; x <= containerWidth; x += GRID_SIZE) {
|
|
|
|
|
verticalLines.push(x);
|
2025-10-13 18:37:18 +09:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
const horizontalLines: number[] = [];
|
feat: 테이블 탭 드래그앤드롭 개선 및 AI-개발자 협업 규칙 수립
주요 변경사항:
- 드래그앤드롭 컬럼의 라벨 숨김 및 placeholder로 라벨명 표시
- 기본 높이 30px로 변경
- 5개 시스템 컬럼(id, created_date, updated_date, writer, company_code) 숨김
- AI-개발자 협업 작업 수칙 문서 작성 및 .cursorrules에 통합
파일 변경:
- frontend/components/screen/ScreenDesigner.tsx
* getDefaultHeight(): 기본 높이를 30px로 변경
* handleDrop(): labelDisplay false, placeholder 추가
- frontend/components/screen/panels/TablesPanel.tsx
* hiddenColumns Set으로 시스템 컬럼 필터링
- .cursor/rules/ai-developer-collaboration-rules.mdc (신규)
* 확인 우선, 한 번에 하나, 철저한 마무리 원칙
* 데이터베이스 검증, 코드 수정, 테스트, 커뮤니케이션 규칙
- .cursorrules
* 필수 확인 규칙 섹션 추가
* 모든 작업 시작/완료 시 협업 규칙 확인 강제화
2025-11-07 17:12:01 +09:00
|
|
|
for (let y = 0; y <= containerHeight; y += GRID_SIZE) {
|
2025-10-13 18:37:18 +09:00
|
|
|
horizontalLines.push(y);
|
|
|
|
|
}
|
2025-09-02 11:16:40 +09:00
|
|
|
|
|
|
|
|
return {
|
2025-10-13 18:37:18 +09:00
|
|
|
verticalLines,
|
|
|
|
|
horizontalLines,
|
2025-09-02 11:16:40 +09:00
|
|
|
};
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
2025-10-13 18:37:18 +09:00
|
|
|
* 컴포넌트가 격자 경계에 있는지 확인
|
2025-09-02 11:16:40 +09:00
|
|
|
*/
|
2025-10-13 18:37:18 +09:00
|
|
|
export function isOnGridBoundary(
|
|
|
|
|
position: Position,
|
|
|
|
|
size: Size,
|
|
|
|
|
gridInfo: GridInfo,
|
|
|
|
|
gridSettings: GridSettings,
|
|
|
|
|
tolerance: number = 5,
|
2025-09-02 11:16:40 +09:00
|
|
|
): boolean {
|
2025-10-13 18:37:18 +09:00
|
|
|
const snappedPos = snapToGrid(position, gridInfo, gridSettings);
|
|
|
|
|
const snappedSize = snapSizeToGrid(size, gridInfo, gridSettings);
|
|
|
|
|
|
|
|
|
|
const positionMatch =
|
|
|
|
|
Math.abs(position.x - snappedPos.x) <= tolerance && Math.abs(position.y - snappedPos.y) <= tolerance;
|
|
|
|
|
|
|
|
|
|
const sizeMatch =
|
|
|
|
|
Math.abs(size.width - snappedSize.width) <= tolerance && Math.abs(size.height - snappedSize.height) <= tolerance;
|
|
|
|
|
|
|
|
|
|
return positionMatch && sizeMatch;
|
2025-09-03 11:32:09 +09:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
2025-10-13 18:37:18 +09:00
|
|
|
* 그룹 내부 컴포넌트들을 격자에 맞게 정렬
|
2025-09-03 11:32:09 +09:00
|
|
|
*/
|
2025-10-13 18:37:18 +09:00
|
|
|
export function alignGroupChildrenToGrid(
|
|
|
|
|
children: any[],
|
|
|
|
|
groupPosition: Position,
|
|
|
|
|
gridInfo: GridInfo,
|
|
|
|
|
gridSettings: GridSettings,
|
|
|
|
|
): any[] {
|
|
|
|
|
if (!gridSettings.snapToGrid || children.length === 0) return children;
|
2025-09-03 11:32:09 +09:00
|
|
|
|
feat: 테이블 탭 드래그앤드롭 개선 및 AI-개발자 협업 규칙 수립
주요 변경사항:
- 드래그앤드롭 컬럼의 라벨 숨김 및 placeholder로 라벨명 표시
- 기본 높이 30px로 변경
- 5개 시스템 컬럼(id, created_date, updated_date, writer, company_code) 숨김
- AI-개발자 협업 작업 수칙 문서 작성 및 .cursorrules에 통합
파일 변경:
- frontend/components/screen/ScreenDesigner.tsx
* getDefaultHeight(): 기본 높이를 30px로 변경
* handleDrop(): labelDisplay false, placeholder 추가
- frontend/components/screen/panels/TablesPanel.tsx
* hiddenColumns Set으로 시스템 컬럼 필터링
- .cursor/rules/ai-developer-collaboration-rules.mdc (신규)
* 확인 우선, 한 번에 하나, 철저한 마무리 원칙
* 데이터베이스 검증, 코드 수정, 테스트, 커뮤니케이션 규칙
- .cursorrules
* 필수 확인 규칙 섹션 추가
* 모든 작업 시작/완료 시 협업 규칙 확인 강제화
2025-11-07 17:12:01 +09:00
|
|
|
return children.map((child) => {
|
2025-10-13 18:37:18 +09:00
|
|
|
const padding = 16;
|
feat: 테이블 탭 드래그앤드롭 개선 및 AI-개발자 협업 규칙 수립
주요 변경사항:
- 드래그앤드롭 컬럼의 라벨 숨김 및 placeholder로 라벨명 표시
- 기본 높이 30px로 변경
- 5개 시스템 컬럼(id, created_date, updated_date, writer, company_code) 숨김
- AI-개발자 협업 작업 수칙 문서 작성 및 .cursorrules에 통합
파일 변경:
- frontend/components/screen/ScreenDesigner.tsx
* getDefaultHeight(): 기본 높이를 30px로 변경
* handleDrop(): labelDisplay false, placeholder 추가
- frontend/components/screen/panels/TablesPanel.tsx
* hiddenColumns Set으로 시스템 컬럼 필터링
- .cursor/rules/ai-developer-collaboration-rules.mdc (신규)
* 확인 우선, 한 번에 하나, 철저한 마무리 원칙
* 데이터베이스 검증, 코드 수정, 테스트, 커뮤니케이션 규칙
- .cursorrules
* 필수 확인 규칙 섹션 추가
* 모든 작업 시작/완료 시 협업 규칙 확인 강제화
2025-11-07 17:12:01 +09:00
|
|
|
|
|
|
|
|
// 10px 단위로 스냅
|
|
|
|
|
const snappedX = Math.max(padding, Math.round((child.position.x - padding) / GRID_SIZE) * GRID_SIZE + padding);
|
|
|
|
|
const snappedY = Math.max(padding, Math.round((child.position.y - padding) / GRID_SIZE) * GRID_SIZE + padding);
|
|
|
|
|
|
|
|
|
|
const snappedWidth = Math.max(GRID_SIZE, Math.round(child.size.width / GRID_SIZE) * GRID_SIZE);
|
|
|
|
|
const snappedHeight = Math.max(GRID_SIZE, Math.round(child.size.height / GRID_SIZE) * GRID_SIZE);
|
|
|
|
|
|
|
|
|
|
return {
|
2025-10-13 18:37:18 +09:00
|
|
|
...child,
|
|
|
|
|
position: {
|
feat: 테이블 탭 드래그앤드롭 개선 및 AI-개발자 협업 규칙 수립
주요 변경사항:
- 드래그앤드롭 컬럼의 라벨 숨김 및 placeholder로 라벨명 표시
- 기본 높이 30px로 변경
- 5개 시스템 컬럼(id, created_date, updated_date, writer, company_code) 숨김
- AI-개발자 협업 작업 수칙 문서 작성 및 .cursorrules에 통합
파일 변경:
- frontend/components/screen/ScreenDesigner.tsx
* getDefaultHeight(): 기본 높이를 30px로 변경
* handleDrop(): labelDisplay false, placeholder 추가
- frontend/components/screen/panels/TablesPanel.tsx
* hiddenColumns Set으로 시스템 컬럼 필터링
- .cursor/rules/ai-developer-collaboration-rules.mdc (신규)
* 확인 우선, 한 번에 하나, 철저한 마무리 원칙
* 데이터베이스 검증, 코드 수정, 테스트, 커뮤니케이션 규칙
- .cursorrules
* 필수 확인 규칙 섹션 추가
* 모든 작업 시작/완료 시 협업 규칙 확인 강제화
2025-11-07 17:12:01 +09:00
|
|
|
x: snappedX,
|
|
|
|
|
y: snappedY,
|
2025-10-13 18:37:18 +09:00
|
|
|
z: child.position.z || 1,
|
|
|
|
|
},
|
|
|
|
|
size: {
|
|
|
|
|
width: snappedWidth,
|
|
|
|
|
height: snappedHeight,
|
|
|
|
|
},
|
|
|
|
|
};
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 그룹 생성 시 최적화된 그룹 크기 계산
|
|
|
|
|
*/
|
|
|
|
|
export function calculateOptimalGroupSize(
|
|
|
|
|
children: Array<{ position: Position; size: Size }>,
|
feat: 테이블 탭 드래그앤드롭 개선 및 AI-개발자 협업 규칙 수립
주요 변경사항:
- 드래그앤드롭 컬럼의 라벨 숨김 및 placeholder로 라벨명 표시
- 기본 높이 30px로 변경
- 5개 시스템 컬럼(id, created_date, updated_date, writer, company_code) 숨김
- AI-개발자 협업 작업 수칙 문서 작성 및 .cursorrules에 통합
파일 변경:
- frontend/components/screen/ScreenDesigner.tsx
* getDefaultHeight(): 기본 높이를 30px로 변경
* handleDrop(): labelDisplay false, placeholder 추가
- frontend/components/screen/panels/TablesPanel.tsx
* hiddenColumns Set으로 시스템 컬럼 필터링
- .cursor/rules/ai-developer-collaboration-rules.mdc (신규)
* 확인 우선, 한 번에 하나, 철저한 마무리 원칙
* 데이터베이스 검증, 코드 수정, 테스트, 커뮤니케이션 규칙
- .cursorrules
* 필수 확인 규칙 섹션 추가
* 모든 작업 시작/완료 시 협업 규칙 확인 강제화
2025-11-07 17:12:01 +09:00
|
|
|
_gridInfo?: GridInfo,
|
|
|
|
|
_gridSettings?: GridSettings,
|
2025-10-13 18:37:18 +09:00
|
|
|
): Size {
|
|
|
|
|
if (children.length === 0) {
|
feat: 테이블 탭 드래그앤드롭 개선 및 AI-개발자 협업 규칙 수립
주요 변경사항:
- 드래그앤드롭 컬럼의 라벨 숨김 및 placeholder로 라벨명 표시
- 기본 높이 30px로 변경
- 5개 시스템 컬럼(id, created_date, updated_date, writer, company_code) 숨김
- AI-개발자 협업 작업 수칙 문서 작성 및 .cursorrules에 통합
파일 변경:
- frontend/components/screen/ScreenDesigner.tsx
* getDefaultHeight(): 기본 높이를 30px로 변경
* handleDrop(): labelDisplay false, placeholder 추가
- frontend/components/screen/panels/TablesPanel.tsx
* hiddenColumns Set으로 시스템 컬럼 필터링
- .cursor/rules/ai-developer-collaboration-rules.mdc (신규)
* 확인 우선, 한 번에 하나, 철저한 마무리 원칙
* 데이터베이스 검증, 코드 수정, 테스트, 커뮤니케이션 규칙
- .cursorrules
* 필수 확인 규칙 섹션 추가
* 모든 작업 시작/완료 시 협업 규칙 확인 강제화
2025-11-07 17:12:01 +09:00
|
|
|
return { width: GRID_SIZE * 20, height: GRID_SIZE * 10 };
|
2025-10-13 18:37:18 +09:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
const bounds = children.reduce(
|
|
|
|
|
(acc, child) => ({
|
|
|
|
|
minX: Math.min(acc.minX, child.position.x),
|
|
|
|
|
minY: Math.min(acc.minY, child.position.y),
|
|
|
|
|
maxX: Math.max(acc.maxX, child.position.x + child.size.width),
|
|
|
|
|
maxY: Math.max(acc.maxY, child.position.y + child.size.height),
|
|
|
|
|
}),
|
|
|
|
|
{ minX: Infinity, minY: Infinity, maxX: -Infinity, maxY: -Infinity },
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
const contentWidth = bounds.maxX - bounds.minX;
|
|
|
|
|
const contentHeight = bounds.maxY - bounds.minY;
|
feat: 테이블 탭 드래그앤드롭 개선 및 AI-개발자 협업 규칙 수립
주요 변경사항:
- 드래그앤드롭 컬럼의 라벨 숨김 및 placeholder로 라벨명 표시
- 기본 높이 30px로 변경
- 5개 시스템 컬럼(id, created_date, updated_date, writer, company_code) 숨김
- AI-개발자 협업 작업 수칙 문서 작성 및 .cursorrules에 통합
파일 변경:
- frontend/components/screen/ScreenDesigner.tsx
* getDefaultHeight(): 기본 높이를 30px로 변경
* handleDrop(): labelDisplay false, placeholder 추가
- frontend/components/screen/panels/TablesPanel.tsx
* hiddenColumns Set으로 시스템 컬럼 필터링
- .cursor/rules/ai-developer-collaboration-rules.mdc (신규)
* 확인 우선, 한 번에 하나, 철저한 마무리 원칙
* 데이터베이스 검증, 코드 수정, 테스트, 커뮤니케이션 규칙
- .cursorrules
* 필수 확인 규칙 섹션 추가
* 모든 작업 시작/완료 시 협업 규칙 확인 강제화
2025-11-07 17:12:01 +09:00
|
|
|
const padding = 16;
|
2025-10-13 18:37:18 +09:00
|
|
|
|
feat: 테이블 탭 드래그앤드롭 개선 및 AI-개발자 협업 규칙 수립
주요 변경사항:
- 드래그앤드롭 컬럼의 라벨 숨김 및 placeholder로 라벨명 표시
- 기본 높이 30px로 변경
- 5개 시스템 컬럼(id, created_date, updated_date, writer, company_code) 숨김
- AI-개발자 협업 작업 수칙 문서 작성 및 .cursorrules에 통합
파일 변경:
- frontend/components/screen/ScreenDesigner.tsx
* getDefaultHeight(): 기본 높이를 30px로 변경
* handleDrop(): labelDisplay false, placeholder 추가
- frontend/components/screen/panels/TablesPanel.tsx
* hiddenColumns Set으로 시스템 컬럼 필터링
- .cursor/rules/ai-developer-collaboration-rules.mdc (신규)
* 확인 우선, 한 번에 하나, 철저한 마무리 원칙
* 데이터베이스 검증, 코드 수정, 테스트, 커뮤니케이션 규칙
- .cursorrules
* 필수 확인 규칙 섹션 추가
* 모든 작업 시작/완료 시 협업 규칙 확인 강제화
2025-11-07 17:12:01 +09:00
|
|
|
return {
|
2025-10-13 18:37:18 +09:00
|
|
|
width: contentWidth + padding * 2,
|
|
|
|
|
height: contentHeight + padding * 2,
|
2025-10-13 15:08:31 +09:00
|
|
|
};
|
2025-10-13 18:37:18 +09:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 그룹 내 상대 좌표를 격자 기준으로 정규화
|
|
|
|
|
*/
|
feat: 테이블 탭 드래그앤드롭 개선 및 AI-개발자 협업 규칙 수립
주요 변경사항:
- 드래그앤드롭 컬럼의 라벨 숨김 및 placeholder로 라벨명 표시
- 기본 높이 30px로 변경
- 5개 시스템 컬럼(id, created_date, updated_date, writer, company_code) 숨김
- AI-개발자 협업 작업 수칙 문서 작성 및 .cursorrules에 통합
파일 변경:
- frontend/components/screen/ScreenDesigner.tsx
* getDefaultHeight(): 기본 높이를 30px로 변경
* handleDrop(): labelDisplay false, placeholder 추가
- frontend/components/screen/panels/TablesPanel.tsx
* hiddenColumns Set으로 시스템 컬럼 필터링
- .cursor/rules/ai-developer-collaboration-rules.mdc (신규)
* 확인 우선, 한 번에 하나, 철저한 마무리 원칙
* 데이터베이스 검증, 코드 수정, 테스트, 커뮤니케이션 규칙
- .cursorrules
* 필수 확인 규칙 섹션 추가
* 모든 작업 시작/완료 시 협업 규칙 확인 강제화
2025-11-07 17:12:01 +09:00
|
|
|
export function normalizeGroupChildPositions(children: any[], _gridSettings?: GridSettings): any[] {
|
|
|
|
|
if (children.length === 0) return children;
|
2025-10-13 18:37:18 +09:00
|
|
|
|
|
|
|
|
const minX = Math.min(...children.map((child) => child.position.x));
|
|
|
|
|
const minY = Math.min(...children.map((child) => child.position.y));
|
|
|
|
|
const padding = 16;
|
|
|
|
|
|
feat: 테이블 탭 드래그앤드롭 개선 및 AI-개발자 협업 규칙 수립
주요 변경사항:
- 드래그앤드롭 컬럼의 라벨 숨김 및 placeholder로 라벨명 표시
- 기본 높이 30px로 변경
- 5개 시스템 컬럼(id, created_date, updated_date, writer, company_code) 숨김
- AI-개발자 협업 작업 수칙 문서 작성 및 .cursorrules에 통합
파일 변경:
- frontend/components/screen/ScreenDesigner.tsx
* getDefaultHeight(): 기본 높이를 30px로 변경
* handleDrop(): labelDisplay false, placeholder 추가
- frontend/components/screen/panels/TablesPanel.tsx
* hiddenColumns Set으로 시스템 컬럼 필터링
- .cursor/rules/ai-developer-collaboration-rules.mdc (신규)
* 확인 우선, 한 번에 하나, 철저한 마무리 원칙
* 데이터베이스 검증, 코드 수정, 테스트, 커뮤니케이션 규칙
- .cursorrules
* 필수 확인 규칙 섹션 추가
* 모든 작업 시작/완료 시 협업 규칙 확인 강제화
2025-11-07 17:12:01 +09:00
|
|
|
return children.map((child) => ({
|
2025-10-13 18:37:18 +09:00
|
|
|
...child,
|
|
|
|
|
position: {
|
feat: 테이블 탭 드래그앤드롭 개선 및 AI-개발자 협업 규칙 수립
주요 변경사항:
- 드래그앤드롭 컬럼의 라벨 숨김 및 placeholder로 라벨명 표시
- 기본 높이 30px로 변경
- 5개 시스템 컬럼(id, created_date, updated_date, writer, company_code) 숨김
- AI-개발자 협업 작업 수칙 문서 작성 및 .cursorrules에 통합
파일 변경:
- frontend/components/screen/ScreenDesigner.tsx
* getDefaultHeight(): 기본 높이를 30px로 변경
* handleDrop(): labelDisplay false, placeholder 추가
- frontend/components/screen/panels/TablesPanel.tsx
* hiddenColumns Set으로 시스템 컬럼 필터링
- .cursor/rules/ai-developer-collaboration-rules.mdc (신규)
* 확인 우선, 한 번에 하나, 철저한 마무리 원칙
* 데이터베이스 검증, 코드 수정, 테스트, 커뮤니케이션 규칙
- .cursorrules
* 필수 확인 규칙 섹션 추가
* 모든 작업 시작/완료 시 협업 규칙 확인 강제화
2025-11-07 17:12:01 +09:00
|
|
|
x: child.position.x - minX + padding,
|
|
|
|
|
y: child.position.y - minY + padding,
|
2025-10-13 18:37:18 +09:00
|
|
|
z: child.position.z || 1,
|
|
|
|
|
},
|
|
|
|
|
}));
|
2025-09-03 11:32:09 +09:00
|
|
|
}
|
feat: 테이블 탭 드래그앤드롭 개선 및 AI-개발자 협업 규칙 수립
주요 변경사항:
- 드래그앤드롭 컬럼의 라벨 숨김 및 placeholder로 라벨명 표시
- 기본 높이 30px로 변경
- 5개 시스템 컬럼(id, created_date, updated_date, writer, company_code) 숨김
- AI-개발자 협업 작업 수칙 문서 작성 및 .cursorrules에 통합
파일 변경:
- frontend/components/screen/ScreenDesigner.tsx
* getDefaultHeight(): 기본 높이를 30px로 변경
* handleDrop(): labelDisplay false, placeholder 추가
- frontend/components/screen/panels/TablesPanel.tsx
* hiddenColumns Set으로 시스템 컬럼 필터링
- .cursor/rules/ai-developer-collaboration-rules.mdc (신규)
* 확인 우선, 한 번에 하나, 철저한 마무리 원칙
* 데이터베이스 검증, 코드 수정, 테스트, 커뮤니케이션 규칙
- .cursorrules
* 필수 확인 규칙 섹션 추가
* 모든 작업 시작/완료 시 협업 규칙 확인 강제화
2025-11-07 17:12:01 +09:00
|
|
|
|
|
|
|
|
// 🗑️ 제거된 함수들 (더 이상 필요 없음)
|
|
|
|
|
// - calculateWidthFromColumns
|
|
|
|
|
// - updateSizeFromGridColumns
|
|
|
|
|
// - adjustGridColumnsFromSize
|
|
|
|
|
// - calculateColumnsFromWidth
|