|
|
@@ -14,15 +14,28 @@
|
|
|
* 1.0 2021.03.05 bin2107 최초 작성
|
|
|
*******************************************************************************
|
|
|
-->
|
|
|
-<div class="modalPopup" data-width="1400" data-height="750">
|
|
|
+<div class="modalPopup" data-width="1600" data-height="850">
|
|
|
<div class="panelStyle" style="overflow-y:scroll;">
|
|
|
<form id="lbBannerForm" name="lbBannerForm" action="#" th:action="@{'/display/lookbook/save'}" onsubmit="$('#btnSearch').trigger('click'); return false;">
|
|
|
<input type="hidden" id="siteCd" name="siteCd" value="G00_10"/>
|
|
|
<input type="hidden" id="lookbookSq" name="lookbookSq" th:value="${lookbookSq}"/>
|
|
|
+ <input type="hidden" name="uploadDefaultBannerUrlPop" id="uploadDefaultBannerUrlPop" th:value="${@environment.getProperty('upload.image.view') + '/display/lookbook/banner/'}"/>
|
|
|
<div class="panelTitle">
|
|
|
- <h2 th:text="${'룩북 ' + (mode == 'N' ? '등록1' : '상세')}"></h2>
|
|
|
+ <h2 th:text="${'룩북 ' + (mode == 'N' ? '등록' : '상세')}"></h2>
|
|
|
<button type="button" class="close" onclick="uifnPopupClose('popupLookbookBanner');"><i class="fa fa-times"></i></button>
|
|
|
</div>
|
|
|
+ <div class="panelContent">
|
|
|
+ <ul class="panelBar">
|
|
|
+ <li class="aL">
|
|
|
+ <span class="cBlue">* 상단으로 드래그&드랍하여 배너 순서 변경 가능합니다.</span><br>
|
|
|
+ <span class="cBlue">* 배너 PICKER는 저장 후 배너 상세 팝업에서 등록할 수 있습니다.</span>
|
|
|
+ </li>
|
|
|
+ <li class="aR">
|
|
|
+ <button type="button" class="btn btn-success btn-lg" id="btnAddBanner">배너추가</button>
|
|
|
+ <button type="button" class="btn btnRight btn-success btn-lg" id="btnSave">저장</button>
|
|
|
+ </li>
|
|
|
+ </ul>
|
|
|
+ </div>
|
|
|
<div>
|
|
|
<table class="frmStyle">
|
|
|
<colgroup>
|
|
|
@@ -105,111 +118,85 @@
|
|
|
</tbody>
|
|
|
</table>
|
|
|
</div>
|
|
|
- <div>
|
|
|
+ <div id="bannerDiv">
|
|
|
+ <input type="hidden" name="uploadDefaultBannerUrl" id="uploadDefaultBannerUrl" th:value="${@environment.getProperty('upload.image.view') + '/display/lookbook/banner/'}"/>
|
|
|
<!-- posistion picker -->
|
|
|
- <ul class="panelBar" id="pictureOffset">
|
|
|
- <li>
|
|
|
- <div class="picWrap">
|
|
|
- <!-- <img src="image/@item02.jpg" class="picture" style="height:100%;"/> --> <!-- 세로가 긴 이미지 -->
|
|
|
- <img th:src="${@environment.getProperty('upload.image.view') + '/display/popup/POPUP_20210304140009.png'}" class="picture" style="width:100%;"/> <!-- 정사각 이미지 -->
|
|
|
- <!-- <img src="image/@item04.jpg" class="picture" style="width:100%;"/> --> <!-- 가로가 긴 이미지 -->
|
|
|
- </div>
|
|
|
- </li>
|
|
|
- <li>
|
|
|
- <!-- 안내문구 -->
|
|
|
- <ul class="notice padB15">
|
|
|
- <li>이미지를 클릭시 해당 위치의 <em>절대 좌표 값</em>을 가져옵니다.</li>
|
|
|
- </ul>
|
|
|
- <!-- //안내문구 -->
|
|
|
-
|
|
|
- <!-- TABLE -->
|
|
|
- <table class="frmStyle">
|
|
|
- <colgroup>
|
|
|
- <col width="160"/>
|
|
|
- <col/>
|
|
|
- </colgroup>
|
|
|
- <tr>
|
|
|
- <th>상품이미지 찾기</th>
|
|
|
- <td>
|
|
|
- <!-- 파일 선택 -->
|
|
|
- <div class="uFile w300">
|
|
|
- <input id="myFile2" type="file" class="uFileInput">
|
|
|
- <label for="myFile2" class="uFileLabel">파일선택</label>
|
|
|
- </div>
|
|
|
- <!-- //파일 선택 -->
|
|
|
- </td>
|
|
|
- </tr>
|
|
|
- </table>
|
|
|
- <!-- //TABLE -->
|
|
|
-
|
|
|
- <!-- 좌표리스트 -->
|
|
|
- <table class="frmStyle dataWrap">
|
|
|
- <colgroup>
|
|
|
- <col width="10%"/>
|
|
|
- <col/>
|
|
|
- </colgroup>
|
|
|
- </table>
|
|
|
- <!-- //좌표리스트 -->
|
|
|
- </li>
|
|
|
- </ul>
|
|
|
<!-- //posistion picker -->
|
|
|
</div>
|
|
|
</form>
|
|
|
- <ul class="panelBar">
|
|
|
- <li class="right">
|
|
|
- <button type="button" class="btn btnRight btn-success btn-lg" id="btnSave">저장</button>
|
|
|
- </li>
|
|
|
- </ul>
|
|
|
</div>
|
|
|
</div>
|
|
|
<script type="text/javascript" src="/ux/plugins/gaga/gaga.paging.js?v=2019072202"></script>
|
|
|
<script th:inline="javascript">
|
|
|
- var $pic = $("#pictureOffset .picWrap");
|
|
|
- var absX = absY = 0; //위치 표시 단위(픽셀)
|
|
|
- var relX = relY = 0; //위치 표시 단위(퍼센트)
|
|
|
- var trIdx = 0;
|
|
|
- var idx = 0; //원 안의 숫자 count
|
|
|
- const picW = $pic.width(); //이미지 넓이
|
|
|
- const picY = $pic.height(); //이미지 높이
|
|
|
|
|
|
- $pic.on('click', function(e) {
|
|
|
- absX = e.pageX - $(this).offset().left; //left(px)
|
|
|
- absY = e.pageY - $(this).offset().top; //top(px)
|
|
|
- relX = ((absX / picW) * 100).toFixed(2); //left(%) : 소수점 둘째자리까지 표현
|
|
|
- relY = ((absY / picY) * 100).toFixed(2); //top(%) : 소수점 둘째자리까지 표현
|
|
|
- trIdx = trIdx+1; //ID
|
|
|
- idx = idx+1; //circle value
|
|
|
+ var bannerIdx = 0;
|
|
|
+ $("#btnAddBanner").on('click', function(){
|
|
|
+ var html = '';
|
|
|
+ html += '<table class="frmStyle bannerTableC" id="bannerTable'+bannerIdx+'">';
|
|
|
+ html += ' <colgroup>';
|
|
|
+ html += ' <col style="width:10%"/>';
|
|
|
+ html += ' <col style="width:30%"/>';
|
|
|
+ html += ' <col style="width:10%"/>';
|
|
|
+ html += ' <col style="width:45%"/>';
|
|
|
+ html += ' <col style="width:5%"/>';
|
|
|
+ html += ' </colgroup>';
|
|
|
+ html += ' <thead>';
|
|
|
+ html += ' <tr>';
|
|
|
+ html += ' <th>배너이미지</th>';
|
|
|
+ html += ' <td>';
|
|
|
+ html += ' <div class="uFile w300">';
|
|
|
+ html += ' <input id="bannerFile'+bannerIdx+'" name="file" type="file" class="uFileInput w300" onchange="fnBannerImgFileUpload(this, ' + bannerIdx + ')"">';
|
|
|
+ html += ' <label for="bannerFile'+bannerIdx+'" class="uFileLabel">파일선택</label>';
|
|
|
+ html += ' <input type="hidden" name="bannerImgPath" value="">';
|
|
|
+ html += ' <input type="hidden" name="bannerNewImgFile" value="">';
|
|
|
+ html += ' </div>';
|
|
|
+ html += ' <div id="bannerImgView_' + bannerIdx + '">';
|
|
|
+ html += ' <img id="bannerPreViewUrl_' + bannerIdx + '" src="" style="height:100px; max-width:500px;"/>';
|
|
|
+ html += ' </div>';
|
|
|
+ html += ' </td>';
|
|
|
+ html += ' <th>이미지설명</th>';
|
|
|
+ html += ' <td><textarea class="textareaR4" name="imgDesc" id="imgDesc'+bannerIdx+'"></textarea></td>';
|
|
|
+ html += ' <td><input name="dispOrd" type="text" class="w80" placeholder="전시순서" style="margin-left:5px; text-align:center"/><button type="button" class="btn btn-danger btn-lg" onclick="fnDeleteBanner(this);">삭제</button></td>';
|
|
|
+ html += ' </tr>';
|
|
|
+ html += ' </thead>';
|
|
|
+ html += '</table>';
|
|
|
|
|
|
- //원 안에 숫자 표현
|
|
|
- let posTag = `<span data-id="${trIdx}" class="pos" style="left:${relX}%; top:${relY}%;"><i>${idx}</i></span>`;
|
|
|
- $pic.append(posTag);
|
|
|
-
|
|
|
- //테이블에 좌표정보 표현
|
|
|
- let trTag = `<tr data-id="${trIdx}">
|
|
|
- <th>${idx}</th>
|
|
|
- <td>
|
|
|
- <span>left <input type="text" style="width:50px;" value="${relX}" readonly="readonly"/><em class="per">%</em></span>
|
|
|
- <span>top <input type="text" style="width:50px;" value="${relY}" readonly="readonly"/><em class="per">%</em></span>
|
|
|
- <span>상품코드
|
|
|
- <input type="text" style="width:100px;" readonly="readonly"/>
|
|
|
- <button type="button" value="검색하기" class="btn btn-base btn-lg">검색</button>
|
|
|
- </span>
|
|
|
- <span class="btnDel"><button type="button" value="검색하기" class="btn btn-dark btn-lg" onclick="trDel(${trIdx}, ${idx})">삭제</button></span>
|
|
|
- </td>
|
|
|
- </tr>`;
|
|
|
- $(".dataWrap").append(trTag);
|
|
|
+ bannerIdx++;
|
|
|
+ $("#bannerDiv").append(html);
|
|
|
+ $("#bannerDiv").sortable();
|
|
|
+ fnResetIdx();
|
|
|
});
|
|
|
|
|
|
- /* 좌표 삭제 */
|
|
|
- function trDel(trIdx, idx) {
|
|
|
- mcxDialog.confirm( idx + " 번을 삭제하시겠습니까?", {
|
|
|
- cancelBtnText: "취소",
|
|
|
- sureBtnText: "삭제",
|
|
|
- sureBtnClick: function(){
|
|
|
- $( "[data-id="+trIdx+"]").remove();
|
|
|
- }
|
|
|
+ // 배너삭제
|
|
|
+ var fnDeleteBanner = function (obj){
|
|
|
+ $(obj).closest("table").remove();
|
|
|
+ fnResetIdx();
|
|
|
+ }
|
|
|
+
|
|
|
+ var fnBannerImgFileUpload = function (obj, idx){
|
|
|
+ var file = obj.files[0];
|
|
|
+ file.name = 'test';
|
|
|
+ if (typeof(file) == 'undefined'){
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ // 파일 업로드
|
|
|
+ gagajf.ajaxFileUpload('/common/file/upload?subDir=/display/lookbook/banner/'
|
|
|
+ , file
|
|
|
+ , function(result) {
|
|
|
+ $(obj).closest('div').find('input:hidden[name=bannerNewImgFile]').val(result.newFileName);
|
|
|
+ $("#lbBannerForm #bannerPreViewUrl_"+idx).attr('src', $("#lbBannerForm #uploadDefaultBannerUrlPop").val()+result.newFileName);
|
|
|
+ $("#lbBannerForm #bannerImgView_"+idx).removeClass("off").addClass("on");
|
|
|
+ }
|
|
|
+ , 'image'
|
|
|
+ );
|
|
|
+ }
|
|
|
+
|
|
|
+ var fnResetIdx = function (){
|
|
|
+ $(".bannerTableC").each(function (i){
|
|
|
+ $(this).attr('id','bannerTable'+i);
|
|
|
+ $(this).find("input[name=dispOrd]").val(i+1);
|
|
|
});
|
|
|
- };
|
|
|
+ }
|
|
|
|
|
|
/**
|
|
|
* 저장
|
|
|
@@ -295,7 +282,11 @@
|
|
|
|
|
|
$(document).ready(function() {
|
|
|
//sortable Item List
|
|
|
- //fnSearchData();
|
|
|
+ $("#bannerDiv").sortable({
|
|
|
+ stop: function(event, ui) {
|
|
|
+ fnResetIdx();
|
|
|
+ }
|
|
|
+ });
|
|
|
});
|
|
|
</script>
|
|
|
</html>
|