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; } } |
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의 문제로 확인됨)
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
타입 열이 피벗 열로 설정되지 않도록 변경
Drag
, Link
, Pass
, File
, Radio
타입 열이 피벗 열로 설정되지 않도록 변경