From ac5ae6eb05075b23ef5f18a863a9e59224ae1bdc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B9=80=EB=B3=B4=EA=B3=A4?= Date: Sun, 8 Mar 2026 00:51:12 +0900 Subject: [PATCH] =?UTF-8?q?feat:=20[planning-design]=20=EC=A2=8C=ED=91=9C?= =?UTF-8?q?=20=EA=B8=B0=EB=B0=98=20=EC=9D=B8=EC=87=84=20=EA=B8=B0=EB=8A=A5?= =?UTF-8?q?=20=EC=B6=94=EA=B0=80=20+=20HTML=20=EB=82=B4=EB=B3=B4=EB=82=B4?= =?UTF-8?q?=EA=B8=B0=20=EB=B8=94=EB=A1=9D=20=EC=A2=8C=ED=91=9C=20=EB=B0=B0?= =?UTF-8?q?=EC=B9=98=20=EA=B0=9C=EC=84=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../views/rd/planning-design/index.blade.php | 82 ++++++++++++++++++- 1 file changed, 81 insertions(+), 1 deletion(-) diff --git a/resources/views/rd/planning-design/index.blade.php b/resources/views/rd/planning-design/index.blade.php index 04bf04d6..ea0a525f 100644 --- a/resources/views/rd/planning-design/index.blade.php +++ b/resources/views/rd/planning-design/index.blade.php @@ -1473,6 +1473,8 @@
+ @@ -3607,7 +3609,15 @@ function planningCanvas() { }); html += '
'; if (pg.blocks && pg.blocks.length > 0) { - pg.blocks.forEach(blk => { html += this.sbExportBlock(blk); }); + // 캔버스 높이 계산 + const maxBottom = Math.max(...pg.blocks.map(b => (b.y || 0) + (b.h || 40)), 400); + html += '
'; + pg.blocks.forEach(blk => { + html += '
'; + html += this.sbExportBlock(blk); + html += '
'; + }); + html += '
'; } else if (pg.wireframeImage) { html += ''; } else if (pg.wireframeContent) { @@ -3637,6 +3647,76 @@ function planningCanvas() { URL.revokeObjectURL(url); }, + sbPrintPreview() { + // HTML 내보내기와 동일하게 생성 후 새 창에서 인쇄 + const origExport = this.sbExportHtml.bind(this); + let html = '' + + (this.sb.docInfo.projectName || 'Storyboard') + ' - 인쇄' + + ''; + + this.sb.pages.forEach((pg, idx) => { + html += '
'; + html += '
단위업무명
' + (this.sb.docInfo.unitTask || '-') + '
'; + html += '
버전
' + (this.sb.docInfo.version || '-') + '
'; + html += '
Page
' + (idx + 1) + '
'; + html += '
경로
' + (pg.path || '-') + '
'; + html += '
화면명
' + (pg.screenName || '-') + '
'; + html += '
화면 ID
' + (pg.screenId || '-') + '
'; + html += '
'; + if (pg.blocks && pg.blocks.length > 0) { + const maxBottom = Math.max(...pg.blocks.map(b => (b.y || 0) + (b.h || 40)), 400); + html += '
'; + pg.blocks.forEach(blk => { + html += '
'; + html += this.sbExportBlock(blk); + html += '
'; + }); + html += '
'; + } + html += '
'; + if (pg.descriptions && pg.descriptions.length > 0) { + html += '
Description
'; + pg.descriptions.forEach((d, di) => { + html += '
' + String(di + 1).padStart(2, '0') + '
'; + html += '
' + (d.text || '').replace(/\n/g, '
') + '
'; + }); + html += '
'; + } + html += '
'; + }); + + html += ''; + const printWin = window.open('', '_blank'); + printWin.document.write(html); + printWin.document.close(); + printWin.onload = () => { printWin.print(); }; + }, + sbExportBlock(blk) { const esc = (s) => (s || '').replace(//g, '>'); switch (blk.type) {