/**
 * Workplace Management - Utilities
 * 작업장 관리 관련 유틸리티 함수들
 */

class WorkplaceUtils {
  constructor() {
    console.log('[WorkplaceUtils] 초기화 완료');
  }

  /**
   * 날짜 포맷팅
   */
  formatDate(dateString) {
    if (!dateString) return '';
    const date = new Date(dateString);
    return date.toLocaleDateString('ko-KR', {
      year: 'numeric',
      month: '2-digit',
      day: '2-digit'
    });
  }

  /**
   * API URL 생성
   */
  getApiBaseUrl() {
    return window.API_BASE_URL || 'http://localhost:30005/api';
  }

  /**
   * 이미지 URL 생성
   */
  getFullImageUrl(imagePath) {
    if (!imagePath) return null;
    if (imagePath.startsWith('http')) return imagePath;
    return `${this.getApiBaseUrl()}${imagePath}`.replace('/api/', '/');
  }

  /**
   * 작업장 용도 아이콘 반환
   */
  getPurposeIcon(purpose) {
    const icons = {
      '작업구역': '🔧',
      '설비': '⚙️',
      '휴게시설': '☕',
      '회의실': '💼',
      '창고': '📦',
      '기타': '📍'
    };
    return purpose ? (icons[purpose] || '📍') : '🏗️';
  }

  /**
   * 퍼센트를 픽셀로 변환
   */
  percentToPixel(percent, canvasSize) {
    return (percent / 100) * canvasSize;
  }

  /**
   * 픽셀을 퍼센트로 변환
   */
  pixelToPercent(pixel, canvasSize) {
    return (pixel / canvasSize) * 100;
  }

  /**
   * 영역 좌표 정규화 (음수 처리)
   */
  normalizeRect(rect, canvasWidth, canvasHeight) {
    const xPercent = this.pixelToPercent(
      Math.min(rect.x, rect.x + rect.width),
      canvasWidth
    );
    const yPercent = this.pixelToPercent(
      Math.min(rect.y, rect.y + rect.height),
      canvasHeight
    );
    const widthPercent = this.pixelToPercent(
      Math.abs(rect.width),
      canvasWidth
    );
    const heightPercent = this.pixelToPercent(
      Math.abs(rect.height),
      canvasHeight
    );

    return { xPercent, yPercent, widthPercent, heightPercent };
  }
}

// 전역 인스턴스 생성
window.WorkplaceUtils = new WorkplaceUtils();

// showToast, formatDate → api-base.js 전역 사용

console.log('[Module] workplace-management/utils.js 로드 완료');
