2025년 1분기 신규기능(Ver 8.2.0.15 ~ )



Ver 8.2.0.15-20250102-15


1. (Cfg) ValidCheck로 나오는 경고 메시지 이후 동작을 제어할 수 있는 Edit, Focus 옵션 추가 

기존에 ValidCheck: true 로 설정 시 경고 메시지 출력 이후 무조건 해당 셀에 Focus 가 가고, Edit 상태가 됩니다.

해당 속성을 boolean 이 아닌, Json 형태로 설정하면 경고 메세지 출력 이후 Focus 와 Edit 을 커스텀하여 설정 할 수 있게 되었습니다.


[사용 예시]


Cfg.ValidCheck: {
      Focus : 1,                // 경고 메세지 출력 이후 해당 셀에 Focus 를 주기
      Edit : 0                      // 경고 메세지 출력 이후 해당 셀은 Edit 상태로 들어가지 않기
}


2. makePivotTable에 평균 계산 기능 추가 

Ver 8.2.0.15-20250102-15 에 맞는 locale 파일이 필요합니다.


기존에는 피벗 테이블을 만들 때 Sum, Count, Max, Min 으로만 컬럼을 계산 할 수 있었습니다.

여기에 추가해 Type: "Avg" 를 추가하여 평균값을 계산할 수 있도록 수정하였습니다.



Ver 8.2.0.16-20250109-13


1. importData로 'xls'파일을 선택 시 서버모듈 호출 여부를 설정하는 (Cfg) XlsImportMode 추가 

ibsheet-excel.js 1.1.9-20250109-13 이상 버전이 필요합니다.


클라이언트 모듈인 importData 로 xls 파일을 업로드 시도하면

"xls 파일 형식은 지원하지 않습니다." 라는 경고창이 출력되며 업로드가 불가능했습니다.


(Cfg)XlsImportMode:1 로 사용하면 importData 로 xls 파일을 선택했을 때 서버모듈로 동작하여 xls 파일을 업로드 할 수 있도록 동작합니다.


[사용 예시]


Cfg : {
     // importData 를 이용하여 xls 파일 업로드 시 서버모듈을 이용
     XlsImportMode:1 
}


2. DataFormat에 타임존을 포함하는 yyyyMMddTHHmmssz 추가 

기존에는 DataFormat 에 타임존 포함 형식을 지정하면 인식하지 못하고 NaN으로 값이 표시되었습니다.

DataFormat: yyyyMMddTHHmmssz 의 타임존 포함 형식이 지원됩니다.



Ver 8.2.0.18-20250123-14


1. 특정 아이디의 시트가 존재하는 지 확인하는 IBSheet.hasSheet API 추가

기존에는 특정 아이디의 시트가 존재하는지 판단하기 위해 window 객체에 직접 접근하여 시트 ID를 탐색했습니다.

특정 아이디의 시트가 존재하는 지 확인하는 로직은 꽤 많이 이용되는 로직이기 때문에(특히 SPA 사용자) 

시트단에서 저리를 하는 방식으로 hasSheet API 가 추가되었습니다.


IBSheet.hasSheet("찾고자하는ID") 방식으로 호출하시면 해당 ID시트 존재 여부에 따라 true/false 를 리턴합니다.


[사용 예시]


IBSheet.hasSheet("sheet") // sheet 라는 id의 시트가 존재하면 true, 없으면 false return



Ver 8.2.0.19-20250206-14


1. doSave, getSaveJson, getSaveString시 유효성 검사를 할 수 있는 onValidation 이벤트 추가 

doSave, getSaveJson, getSaveString 등 저장 api 호출시, 사용자가 저장할 값들에 관해 유효성 검사를 진행할 수 있도록 셀 별로 순회하며 발생하는 이벤트 입니다.
기본적인 필수입력 항목에 대한 확인이나 전체 입력 여부에 대한 확인은 저장 전에 시트가 내부적으로 확인하지만, 업무 로직에 따라 발생할 수 있는 각종 유효성 검사를 이 이벤트에서 처리합니다. 


[사용 예시]

options.Events = {

    onValidation: function (evtParam) {

      if (evtParam.col != "TextData") return false;

      var prevCol = evtParam.sheet.getPrevCol(evtParam.col);


      // TextData 컬럼의 이전 컬럼 값이 100보다 큰 경우 메세지창을 띄우고 저장을 중단합니다.

      if (evtParam.sheet.getValue(evtParam.row, prevCol) >= 100) {

        var index = evtParam.sheet.getRowIndex(evtParam.row);

            

        evtParam.sheet.showMessageTime({

          message: index + "행 정수(Int)컬럼 셀 값이 100보다 큽니다.",

          time: 10000,

          buttons: ["OK", "취소"],

        })


        return true;

      }

    }

}


2. onBeforeSave 이벤트에 source.params(소문자) 추가

이벤트 내부 인자의 통일성을 위해 기존 Params에서 params 로 첫글자가 소문자로 변경되었습니다.



3. (Method)setValue 호출 시 이벤트 발생 여부를 제어할 수 있는 ignoreEvent 인자 추가

setValue 호출 시 ignoreEvent 설정을 통해 제어할 수 있는 각 이벤트의 사용방법은 아래와 같습니다.

인자로 Json 형태로 옵션 세팅이 가능하며, 이벤트 이름을 key 값으로 넣고, true 리턴 시 지정한 이벤트가 발생하지 않습니다. 

NameTypeRequiredDescription
OnChangeBoolean선택setValue시 발생하는 OnChange 이벤트 발생 여부를 제어합니다. true 리턴시 해당 이벤트가 발생하지 않습니다. (default:0(false))
OnSameBoolean선택setValue시 발생하는 OnSame 이벤트 발생 여부를 제어합니다. true 리턴시 해당 이벤트가 발생하지 않습니다. (default:0(false))
onEndEditBoolean선택setValue시 발생하는 onEndEdit 이벤트 발생 여부를 제어합니다. true 리턴시 해당 이벤트가 발생하지 않습니다. (default:0(false))


[사용 예시]


var setRow = sheet.getRowById("AR5")

sheet.setValue({
     row: setRow,
     col: "sName",
     val: "홍길동",
     ignoreEvent : {
          OnChange: true,                   // setValue 시 OnChange 발생x
          OnSame: true                        // setValue 시 OnSame 발생x
     }
})