Files
sam-manage/resources/views/components/canvas-editor.blade.php
강영보 d03c7ed870 feat: [bending] 절곡품 관리 MNG 화면
- 기초관리: 목록(13컬럼) + 폼(기본정보 + 케이스전용 + 절곡테이블 + 이미지)
- 절곡품: 가이드레일/케이스/하단마감재 타입별 목록 + 폼
- 부품 추가(기초관리 검색 모달) + 삭제 + 수량/품명/재질 편집
- 절곡테이블 inline 편집 + 재질별 폭합 자동계산
- 작업지시서 레거시 포맷 인쇄 모달
- 원본수정 버튼 sam_item_id 직접 링크
- DB 메뉴 등록 (기초관리 + 절곡품 + 케이스 + 하단마감재)
2026-03-19 21:08:57 +09:00

69 lines
4.2 KiB
PHP

{{-- Canvas Editor Modal (Fabric.js 기반) --}}
<dialog id="ce-dialog" class="rounded-lg shadow-2xl p-0 backdrop:bg-black/50" style="max-width:90vw; max-height:90vh; border:none;">
{{-- 헤더 --}}
<div class="flex items-center justify-between px-3 py-2 bg-gray-100 border-b">
<span class="text-sm font-bold text-gray-700">이미지 편집기</span>
<div class="flex gap-1">
<button type="button" id="ce-applyBtn" class="px-3 py-1 bg-green-600 text-white rounded text-xs hover:bg-green-700">적용</button>
<button type="button" id="ce-closeBtn" class="px-3 py-1 bg-gray-400 text-white rounded text-xs hover:bg-gray-500">닫기</button>
</div>
</div>
{{-- 도구 모음 --}}
<div class="flex items-center gap-1 px-3 py-2 bg-gray-50 border-b flex-wrap">
<button type="button" id="ce-polyBtn" class="ce-tool-btn px-2 py-1 border rounded text-xs hover:bg-gray-200" title="폴리라인">
<i class="ri-pen-nib-line"></i> Poly
</button>
<button type="button" id="ce-freeBtn" class="ce-tool-btn px-2 py-1 border rounded text-xs hover:bg-gray-200" title="자유선">
<i class="ri-brush-line"></i> Free
</button>
<button type="button" id="ce-lineBtn" class="ce-tool-btn px-2 py-1 border rounded text-xs hover:bg-gray-200" title="직선 (L키)">
<i class="ri-subtract-line"></i> Line
</button>
<button type="button" id="ce-textBtn" class="ce-tool-btn px-2 py-1 border rounded text-xs hover:bg-gray-200" title="문자입력">
<i class="ri-text"></i> Text
</button>
<button type="button" id="ce-eraserBtn" class="ce-tool-btn px-2 py-1 border border-yellow-400 rounded text-xs hover:bg-yellow-100" title="지우개">
<i class="ri-eraser-line"></i> Eraser
</button>
<button type="button" id="ce-selectBtn" class="ce-tool-btn px-2 py-1 border rounded text-xs hover:bg-gray-200" title="선택 (Delete로 삭제)">
<i class="ri-cursor-line"></i> Select
</button>
<span class="mx-1 text-gray-300">|</span>
<label class="flex items-center gap-1 text-xs cursor-pointer">
<input type="checkbox" id="ce-rightAngle" checked class="rounded border-gray-300">
직각고정
</label>
<span class="mx-1 text-gray-300">|</span>
<button type="button" id="ce-clearBtn" class="px-2 py-1 border border-red-300 text-red-600 rounded text-xs hover:bg-red-50">
전체지우기
</button>
</div>
{{-- 색상 + 지우개 크기 --}}
<div class="flex items-center gap-2 px-3 py-1.5 bg-gray-50 border-b">
<div id="ce-colors" class="flex gap-1">
<button type="button" class="ce-color-btn w-5 h-5 rounded-full ring-2 ring-offset-1 ring-gray-800" data-color="#000000" style="background:#000"></button>
<button type="button" class="ce-color-btn w-5 h-5 rounded-full" data-color="#ff0000" style="background:#f00"></button>
<button type="button" class="ce-color-btn w-5 h-5 rounded-full" data-color="#0000ff" style="background:#00f"></button>
<button type="button" class="ce-color-btn w-5 h-5 rounded-full" data-color="#00aa00" style="background:#0a0"></button>
<button type="button" class="ce-color-btn w-5 h-5 rounded-full" data-color="#ff8800" style="background:#f80"></button>
<button type="button" class="ce-color-btn w-5 h-5 rounded-full" data-color="#800080" style="background:#808"></button>
<button type="button" class="ce-color-btn w-5 h-5 rounded-full" data-color="#888888" style="background:#888"></button>
</div>
<span class="text-gray-300">|</span>
<label class="text-xs text-gray-500">지우개:</label>
<input type="range" id="ce-eraserRange" min="5" max="100" value="20" class="w-20 h-1">
<span id="ce-eraserSize" class="text-xs font-bold">20</span><span class="text-xs text-gray-400">px</span>
</div>
{{-- 캔버스 영역 --}}
<div id="ce-body" class="relative overflow-auto bg-white" style="max-height: calc(90vh - 130px);">
<canvas id="ce-canvas" width="400" height="300"></canvas>
</div>
</dialog>