New

1. onBeforeExport 이벤트에 data 인자 추가 

onBeforeExport 이벤트에서 엑셀 다운 전 Blob 데이터를 받을 수 있는 인자인 data 인자가 추가되었습니다.

evtParam.data.blob 으로 blob 데이터를 받아 이용할 수 있습니다.

* 주의 : 해당 인자는 exportData 메소드에서만 사용가능합니다.


[사용 예시]

onBeforeExport : function (evtParam){
     evtParam.data.blob // Blob 데이터를 이렇게 꺼낼 수 있음
..
return true; // Blob 데이터 처리로 엑셀 파일 다운이 필요없는 경우 return ture를 하여 엑셀 다운 중단
}


2. 외부 달력을 제어할 수 있는 onExCalendar 이벤트 추가 

외부 달력을 제어할 수 있는 시트 이벤트를 발생시키도록 하는 onExcalendar 이벤트가 추가되었습니다.

시트의 onScroll, onKeyDown, onAfterFilter, onClick 이벤트 시점에 해당 이벤트가 발생합니다.

onClickSide 이벤트에서 외부 달력을 시트 셀 영역에 표시하고, 해당 이벤트에서 외부 달력을 제거할 수 있습니다.


[사용 예시]

 // 외부 달력 이벤트 닫기 (onScroll, onKeyDown, onAfterFilter, onClick)

  onExcalendar : function (evtParam) {


    var isCal = false;

    var evtName = evtParam.evType;


    if (document.getElementsByClassName('daterangepicker ltr show-calendar opensright')[0] && document.getElementsByClassName('daterangepicker ltr show-calendar opensright')[0].style.display != 'none') isCal = true;


    switch (evtName) {

      case "onScroll":

        if (isCal) $('#CalendarInput').data('daterangepicker').remove();

        break;

      case "onAfterFilter":

        // 필터행 초기화인 경우

        if (evtParam.sheet.FCol == "FromData" && evtParam.sheet.FRow[evtParam.sheet.FCol] == '') {

          evtParam.sheet.doFilter("ToData",'');

          if (isCal) $('#CalendarInput').data('daterangepicker').remove();

        }

        break;

      case "onKeyDown": //esc키를 누를

        if (evtParam.params.name == "Esc" && isCal) $('#CalendarInput').data('daterangepicker').remove();

        break;

      case "onClick":

        console.log('onClick');

        break;

    }

  }




Fixed

1. 외부 달력 오픈하고 내부 달력 오픈 시 스크립트 오류가 발생하는 현상 수정 


2. (Cfg)SearchMode:0 의 트리 시트에서 (Col,Cell)Icon을 설정한 열의 헤더를 클릭할 경우 공백문자가 추가되던 현상 수정


3. 필터 다이얼로그의 데이터 필터의 항목 간 간격이 (Cfg)Size 에 따라 변경되지 않던 문제 수정 


4. (Col,Cell)BoolIcon:4 가 특정 버전 이후 동작하지 않던 문제 수정


5. (Method)doFilter 를 통해 필터링할 경우 필터행의 Type:Date 열의 값이 (Method)getValue 로 확인 시 타임스탬프로 나오던 문제 수정


6. (Cfg)AutoSelectFirstEnum:1 시트에서 (Method)setAttribute로 Enum, EnumKeys 변경 시 변경된 EnumKeys로 우선 변경되도록 수정


7. 모바일 또는 (Cfg)TabletMode:1 에서 터치로 시트의 세로 스크롤이 되지 않던 문제 수정


8. (Method)exportDataBuffer 에서 인자 appendPrevSheet 를 사용할 경우 동일한 이름의 컬럼 머지가 정상적으로 적용되지 않는 현상 수정


9. 태블릿PC에서 셀 터치 시 가상키보드가 뜨는 현상 수정


10. 태블릿PC에서 빠른 편집 시 첫 글자가 영문으로 표시되는 수정 원상복구 (제품의 문제가 아닌 Windows의 문제로 확인됨)


Css Fixed

1. Hint에 Menu가 가려지지 않게 Menu의 z-index를 Hint보다 높게 변경 

/* 기존 258에서 268로 변경 */

.IBMenuMain { position:absolute;left:0px;top:0px;z-index:265;overflow:hidden;box-shadow:0 2px 5px rgba(84, 105, 120, 0.3); }

2. (cfg) Size 대응하기 위해 font-size 추가 및 높이를 설정하는 필터다이얼로그 css 변경 

/* 체크박스 크기를 지정 */

.IBFilterDialogHeaderCheckIcon0 { background-image:url(./imgs/DlgFilterUnCheckAll.png); background-repeat: no-repeat; background-position-x: left; background-position-y: center; width: 10px; height: 16px; }

.IBFilterDialogHeaderCheckIcon1 { background-image:url(./imgs/DlgFilterCheckAll.png); background-repeat: no-repeat; background-position-x: left; background-position-y: center; width: 10px; height: 16px; }

/* 필터다이얼로그의 헤더 높이를 auto로 변경 */

.IBDataFilterDialogHeaderLayer { display:flex;flex-direction:column;position:relative;padding: 5px 10px;justify-content:space-between; }

/* 필터다이얼로그의 input크기를 search영역과 동일하도록 변경 (#2414) */

.IBGRDataFilterDialogSearch { width:inherit;margin-top:8px;overflow:hidden;line-height:24px;border-radius:3px;background-color:#fff;border:solid 1px #c7c7c7;font-size:1em;outline:none;padding-left: 20px;box-sizing: border-box !important; }

.IBGRDataFilterDialogSearch>input { width:100%;border:none;height:calc(100% - 10px);outline: 0;box-sizing:border-box !important; }

/* 높이가 내부 폰트 사이즈로 설정되도록 수정 */

.IBGRDataFilterDialogHeaderCheck { margin-bottom: 4px;padding: 0px 10px; }

.IBGRDataFilterDialogHeaderCheck .IBMenuItemText { font-size: 12px; }

.IBHigh .IBGRDataFilterDialogHeaderCheck .IBMenuItemText, .IBBig .IBGRDataFilterDialogHeaderCheck .IBMenuItemText { font-size: 20px; }



3. gray 테마 수정 

  • 설명 주석 수정
  • font 추가: 'Pretendard'
  • 시트의 기본 color 변경: #222222 > #000000
  • 시트의 border-color 변경: #d0d0d0d > #f1f1f1 등


/* gray 테마 수정 */

.IBGYMain { font-family: /*'Malgun Gothic','Verdana','Nanum Gothic'*/'Pretendard',sans-serif;font-style: normal;font-weight: normal;font-variant: normal;}


.IBGYMain,.IBGYMain * { font-size:/*13px*/14px;line-height:18px; }


.IBGYRowAbove .IBGYTabHtmlBase,.IBGYRowBelow .IBGYTabHtmlBase { font-family: /* 'Noto Sans CJK kr Bold','Noto Sans KR Bold','Noto Sans Bold','Nanum Gothic Bold' */'Pretendard','Nanum Gothic Bold',sans-serif;font-style: normal; }


.IBGYMain { color:/* #222222 */#000000; }


.IBGYSearchRow { border-bottom:1px solid /* #d0d0d0 */#f1f1f1; }

.IBGYRowSpace4 .IBGYSolidRow { background:white;border-bottom:1px solid #f1f1f1;border-left:1px solid #f1f1f1;border-right:1px solid /* #d0d0d0 */#f1f1f1; }

.IBGYRowSpace0.IBGYRowSpaceFirst .IBGYSolidRow,.IBGYRowSpace2.IBGYRowSpaceFirst .IBGYSolidRow,.IBGYRowSpace3.IBGYRowSpaceFirst .IBGYSolidRow { border-top:1px solid /* #d0d0d0 */#f1f1f1; }           

.IBGYRowSpace1.IBGYRowSpaceLast .IBGYSolidRow { border-bottom:1px solid /* #d0d0d0 */#f1f1f1; }                                                   

.IBGYRowSpace4.IBGYRowSpaceFirst .IBGYSolidRow { border-top:1px solid /* #d0d0d0 */#f1f1f1; }                                                                                             

.IBGYRowSpace0 .IBGYSolidRow,.IBGYRowSpace1 .IBGYSolidRow,.IBGYRowSpace2 .IBGYSolidRow,.IBGYRowSpace3 .IBGYSolidRow { border-left:1px solid /* #d0d0d0 */#f1f1f1;border-right:1px solid /* #d0d0d0 */#f1f1f1; } 


.IBGYSpaceSelectInner,.IBGYSpaceSelectInnerIcon,.IBGYSpaceEditInner,.IBGYSpaceEditInnerIcon { border:1px solid /* #d0d0d0 */#f1f1f1;background-color:#FFFFFF; }

.IBGYSpaceEditReadOnly { border:1px solid /* #d0d0d0 */#f1f1f1;background-color:#d8d8d8;min-height:18px; }


.IBGYHeaderGroup { border:1px solid /* #d0d0d0 */#f1f1f1; }


.IBGYCellBase { border-bottom:1px solid /* #d0d0d0 */#f1f1f1;border-right:1px solid /* #d0d0d0 */#f1f1f1;border-left:0px none;border-top:0px none; }


.IBGYCellHeader { color:#222222;background:#E4E7EB;border-bottom:1px solid /* #d0d0d0 */#f1f1f1;border-right:1px solid /* #d0d0d0 */#f1f1f1; }


.IBGYHoverRowBackground { background:rgba(152, 207, 229, /* 0.1 */0); }

.IBGYFocusRowBackground { background-color:rgba(152, 207, 229, /* 0.2 */0.1); }

/* border-radius 추가 */

.IBGYDialogButton,u.IBGYSheetButton { background:/*#999999*/#888888;border:0px solid #9f9f9f;color:#FFFFFF;border-radius:4px;}


.IBGYMenuFoot { background:#ededed;border-top:1px solid /* #d0d0d0 */#f1f1f1; }    

.IBGYMenuEdit,.IBGYMenuEditEdit,.IBGYMenuEnum { border:1px solid /* #d0d0d0 */#f1f1f1;background-color:#FFFFFF;color:black; }

.IBGYMenuCaption,.IBGYMenuLevel { color:#333333;background:#ededed;text-align:center;border-top:1px solid #f1f1f1;border-bottom:1px solid /* #d0d0d0 */#f1f1f1; }

.IBGYMenuSeparator { border-top:1px solid /* #d0d0d0 */#f1f1f1; } 

.IBGYMenuVSeparator { border-right:1px solid /* #d0d0d0 */#f1f1f1; }


.IBGYPickFooter,.IBGYPick2Footer,.IBGYPickTimeCell { background:#ededed;border:1px solid #CACACA;border-top:1px solid /* #d0d0d0 */#f1f1f1; }

.IBGYPickRowW .IBGYPickCell { border-bottom:1px solid /* #d0d0d0 */#f1f1f1; }


.IBGYPrompt input { border:1px solid /* #d0d0d0 */#f1f1f1; }


.IBGYPagerHeaderSingle { border-bottom:1px solid /* #d0d0d0 */#f1f1f1; }

 

.IBGYPagerBodyLeft,.IBGYPagerHeaderLeft { border-left:1px solid /* #d0d0d0 */#f1f1f1; }

.IBGYPagerBodyRight,.IBGYPagerHeaderRight { border-right:1px solid /* #d0d0d0 */#f1f1f1; }

.IBGYPagerItem { border-bottom:1px solid /* #d0d0d0 */#f1f1f1; }


.IBGYHintOuter { background:white;color:black;border-color:/* #22222 */#dddddd; }


.IBGYHeadLeft,.IBGYBodyLeft,.IBGYFootLeft { border-left:1px solid /* #d0d0d0 */#ffffff; }

.IBGYHeadMid,.IBGYBodyMid,.IBGYFootMid { border-left:1px solid #ffffff;border-right:1px solid /* #d0d0d0 */#ffffff; }

.IBGYHeadRight,.IBGYBodyRight,.IBGYFootRight { border-right:1px solid /* #d0d0d0 */#ffffff; }

.IBGYHeadLeft,.IBGYHeadMid,.IBGYHeadRight { border-bottom:0px solid /* #d0d0d0 */#ffffff;border-top:/*1px*/0px solid #D0D0D0; }

.IBGYHasHead .IBGYHeadLeft,.IBGYHasHead .IBGYHeadMid,.IBGYHasHead .IBGYHeadRight { border-top:1px solid /* #d0d0d0 */#f1f1f1; }

.IBGYFootLeft,.IBGYFootMid,.IBGYFootRight { border-top:/*1px*/0px solid #7b7b7b; }


.IBGYLeftSplitter,.IBGYRightSplitter { width:/*3px*/1px;overflow:hidden;cursor:e-resize;font-size:0px; }

.IBGYLeftSplitter { border-left:/*1px*/0px solid /*b4b4b4*/#ffffff; background-color:/*b4b4b4*/#ffffff;}

.IBGYRightSplitter { border-right:/*1px*/0px solid /*b4b4b4*/#ffffff; background-color:/*b4b4b4*/#ffffff;}


.IBGYVScroll { padding-top:0px;padding-bottom:0px;overflow:hidden;border-top:/*1px*/0px solid #d0d0d0;border-right:/*1px*/0px solid #d0d0d0; }

.IBGYVScrollHeadPadding { border-bottom: 0px solid #d0d0d0; border-top: 1px solid #CACACA; border-right:1px solid /*d0d0d0*/#f1f1f1; }


.IBGYHScrollLeft,.IBGYHScrollMid,.IBGYHScrollRight { /* padding-left:1px;padding-right:1px; */overflow:hidden;border-top:1px solid /* d0d0d0 */#f1f1f1;border-bottom:1px solid /* d0d0d0 */#f1f1f1; }

.IBGYHScrollLeft { border-left:1px solid /* d0d0d0 */#f1f1f1; }

.IBGYHScrollMid { border-left:1px solid /* d0d0d0 */#f1f1f1;border-right:1px solid /* d0d0d0 */#f1f1f1; }

.IBGYHScrollRight { border-right:1px solid /* d0d0d0 */#f1f1f1; }


.IBGYXScroll { background:#f3f3f3;cursor:default;border-top:1px solid /* d0d0d0 */#f1f1f1;border-bottom:0px solid /* d0d0d0 */#f1f1f1;border-right:1px solid /* d0d0d0 */#f1f1f1; }


.IBGYCustScroll1X,.IBGYCustScroll2X { background:#f1f1f1;cursor:default;border-right:1px solid /* d0d0d0 */#f1f1f1;border-bottom:1px solid /* d0d0d0 */#f1f1f1;border-top:1px solid /* d0d0d0 */#f1f1f1; }


.IBGYCustScroll3X { background:#f1f1f1;cursor:default;border-right:1px solid * d0d0d0 */#f1f1f1;border-bottom:1px solid * d0d0d0 */#f1f1f1;border-top:1px solid * d0d0d0 */#f1f1f1; }

/* font-size, font-weight 추가 */

.IBGYNoDataRow div { text-align:center; font-size: 15px; font-weight:700;}


.IBGYNoDataIcon{

  display: inline-block;

  width: /*15px*/20px;

  height: /*15px*/20px;

}


.IBGYRowAbove,.IBGYRowBelow { margin-left:/*5px*/0px;margin-right:/*5px*/0px;overflow:hidden; }


/* font-weight 추가 */

.IBGYHeaderText {font-weight: 500; color:/* 050505 */#444444; letter-spacing: 1px;}

/* 아래 속성의 주석 해제 */

.IBGYInfoRow, .IBGYInfoRow * { background-color: /* #ececec */#e4e7eb; }


.IBGYColorFound1 { background-color:/* #b8b8b8*/#ddff93; }

.IBGYColorFound2 { background-color:/* #cecece */#fff183; }

.IBGYColorFound3 { background-color:/* #cdcdcd */#ffc3e1; }


.IBGYProgressOuter { text-align:left;width:300px;margin:0px 30px 10px 30px;border:1px solid /* #d0d0d0 */#f1f1f1; }

/* border-radius 속성 추가 */

.IBGYProgressButton,.IBGYMessageButton { padding:4px 5px 4px 5px;margin:1px 4px 1px 4px;text-align:center;white-space:nowrap;overflow:hidden;min-width:70px;border-radius:4px; }


.IBGYEditDialogSheetMain .IBGYMainTable .IBGYHeadMid {border-top: 1px solid #f1f1f1; border-bottom: 0px solid /* #d0d0d0 */#f1f1f1;}


/* 아래 내용 추가 */

.pivotDown:hover{ background-size: 18px 18px;}



 



Excel Fix

1. EnumKeys 가 길 경우 ComboValidation 설정과 상관없이 서버 전문에 EnumKeys를 포함하지 않는 문제 수정

ibsheet-excel.js 1.1.18-20250424-14 버전에서 해당 릴리즈가 이루어졌습니다.




Dialog Fix

ibsheet-dialog.js 1.1.37-20250424-14 버전에서 해당 릴리즈가 이루어졌습니다.

ibsheet.js ver 8.3.0.5-20250424-14 이상 버전이 함께 필요합니다.

1. 피벗 다이얼로그 개선

  • 다이얼로그 상단의 검색 input의 내용을 삭제할 수 있는 버튼 추가
  • 피벗테이블을 생성 후 피벗다이얼로그를 접을 경우 시트의 영역에만 disabled가 되도록 변경
  • 클릭으로 열을 설정할 수 있는 체크박스 추가


2. Drag, Link, Pass, File, Radio 타입 열이 피벗 열로 설정되지 않도록 변경