넥사크로 스튜디오에서 작성하는 기본 코드를 공유한다.
/**
* @file XXXXXXXXF00.xfdl
* @author XXX
* @since 2022.11.04
* @description XXXXXXXXXXXXXXXXX
************** 소스 수정 이력 ***********************************************
* date Modifier Description
*******************************************************************************
* 2022.11.04 XXX 최초 생성
*
*******************************************************************************
**/
/************************************************************************************************
* include 영역(업무화면에서 꼭 필요한 경우에만 사용, 미사용 시 include 영역 제거)
************************************************************************************************/
/************************************************************************************************
* FORM 변수 선언 영역
************************************************************************************************/
this.XXXXXX = 0;
/************************************************************************************************
* FORM EVENT 영역(onload, onbeforeclose 등)
************************************************************************************************/
/**
* @description 화면 onload시 처리내역(필수)
**/
this.form_onload = function(obj:nexacro.Form,e:nexacro.LoadEventInfo)
{
// 폼 공통기능 초기화
this.gfnInitForm();
// 공통코드 바인딩
// 폼초기화
};
/**
* @description 폼 초기화
**/
this.fnInitForm = function ()
{
// 조회조건 영역 기본설정
this.dsSearch.setColumn(0, "USE_YN", "Y");
// dataset validation ruleset
this.gfnSetValidRule(this.dsForm, "CONTENTS" , "내용" , "required, maxlengthbyte:4000");
this.gfnSetValidRule(this.dsForm, "FILE_SIZE", "파일사이즈" , "required");
// 조회
this.fnTransaction('조회(search)');
};
/************************************************************************************************
* CRUD 및 TRANSACTION 서비스 호출 처리
************************************************************************************************/
/**
* @description 트랜잭션
**/
this.fnTransaction = function (svcId)
{
let sSvcId = svcId;
let sSvcUrl = "app/service/" + svcId;
let sInDS = "";
let sOutDS = "";
let sArg = "";
let sCallback = "fnCallbackTransaction";
switch (sSvcId) {
case "상세조회(search)" :
sInDS = "dsSearch";
sOutDS = "dsList";
break;
case "조회(search)" :
// 업로드 가능파일 초기화
this.fnExtGridInit();
this.dsOrg.clearData();
this.dsUser.clearData();
sInDS = "dsSearch";
sOutDS = "dsForm dsUpldExtn dsOrgUser";
break;
case "저장(save)" :
sInDS = "dsForm dsUpldExtn dsOrgUser dsOrg dsUser ";
sOutDS = "";
break;
default :
break;
}
// 서비스 트랜잭션 호출
this.gfnTransaction(sSvcId, sSvcUrl, sInDS, sOutDS, sArg, sCallback, true);
};
/************************************************************************************************
* CALLBACK 처리부분 (C/R/U/D Transaction, Common Code, Popup, Message, Excel Export/Import)
************************************************************************************************/
/**
* @description gfnTransaction CallBack 함수
**/
this.fnCallbackTransaction = function(serviceId, responseCode, responseMessage)
{
// 에러 시 화면 처리 내역
if (responseCode != 0) {
this.gfnAlert(responseMessage);
return;
}
switch (serviceId) {
case "상세조회(search)" :
// TODO
break;
case "조회(search)" :
// TODO
break;
case "저장(save)" :
this.gfnAlert('save.success');
// TODO
break;
default :
break;
}
};
/**
* @description Message CallBack 함수
**/
this.fnCallbackMessage = function(messageId, resultValue)
{
switch (messageId) {
case "btnSearch" :
if (resultValue) {
// TODO
}
break;
case "btnNew" :
if (resultValue) {
// TODO
}
break;
case "btnDel" :
if (resultValue) {
// TODO
}
break;
case "btnSave" :
if (resultValue) {
// TODO
}
break;
case "XXXXXXX" :
if (resultValue) {}
break;
default :
break;
}
};
/**
* @description fnOpenPopup CallBack 함수
**/
this.fnCallbackPopup = function(popupId, resultValue)
{
switch (popupId) {
case "부서팝업" :
if ( !this.gfnIsEmpty(resultValue) ) {
let aResultLength = resultValue.cuscOrgNo.length;
for(let i=0 ; i<aResultLength; i++){
let sOrgNo = resultValue.orgNo[i];
let sOrgNm = resultValue.orgNm[i];
if(this.dsOrgUser.getCaseCount("ORG_NO == '"+sOrgNo+"'") < 1){
let nAddRow = this.dsOrgUser.addRow();
this.dsOrgUser.setColumn(nAddRow,"ORG_NO",sOrgNo);
this.dsOrgUser.setColumn(nAddRow,"ORG_NM",sOrgNm);
}
} // end for
}
break;
case "사용자팝업" :
if ( !this.gfnIsEmpty(resultValue) ) {
let nAddRow = this.dsOrgUser.addRow();
this.dsOrgUser.setColumn(nAddRow,"USER_ID",resultValue.userId);
this.dsOrgUser.setColumn(nAddRow,"USER_NM",resultValue.userNm);
}
break;
case "XXXXXXXXX" : // XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
break;
default :
break;
}
};
/************************************************************************************************
* 사용자 FUNCTION 영역
************************************************************************************************/
/**
* @description 입력폼 초기화
**/
this.fnFormInit = function(){
};
/**
* @description 업로드 가능파일 그리드 초기화
**/
this.fnExtGridInit = function(){
};
/**
* @description 입력폼 생성.
**/
this.fnNewForm = function(){
};
/**
* @description 총건수
**/
/**
* @description 팝업호출
**/
this.fnOpenPopup = function (popupId, param)
{
let sPopupId = popupId;
let sUrl = "business::sys/" + sPopupId + ".xfdl";
let oArgument = param;
let sCallback = "fnCallbackPopup";
let oOption = {};
switch (sPopupId) {
case "부서" :
oOption = {title : "조직팝업", width : 710, height : 550};
break;
case "사용자" :
oOption = {title : "상담사조회팝업", width : 800, height : 550};
break;
default :
break;
}
this.gfnOpenPopup(sPopupId, sUrl, oArgument, sCallback, oOption);
};
/************************************************************************************************
* 각 COMPONENT 별 EVENT 영역
************************************************************************************************/
/**
* @description DATASET CANROWPOSITION 변경 이벤트
**/
this.dsList_canrowposchange = function(obj:nexacro.NormalDataset,e:nexacro.DSRowPosChangeEventInfo)
{
let boardNo = this.dsList.getColumn(e.newrow, "BOARD_NO"); //템플릿번호
if ( !this.gfnIsEmpty(boardNo) ) {
this.dsSearch.setColumn(0, "BOARD_NO", boardNo);
}
if ( this.gfnIsUpdated(this.dsForm) || this.gfnIsUpdated(this.dsOrgUser) ) {
return this.gfnEventConfirm(e, "process.nosave", ["폼(FORM)"]
, function(id,response) {
if(response){
this.fnTransaction('조회(search)');
}
}
, "dummyArgv");
}else{
this.fnTransaction('조회(search)');
}
};
/**
* @description DATASET ROWPOSITION 변경 이벤트
**/
this.dsList_onrowposchanged = function(obj:nexacro.NormalDataset,e:nexacro.DSRowPosChangeEventInfo)
{
console.log('######################## dsList_onrowposchanged e.newrow/oldrow :: ' + e.newrow + '/' + e.oldrow);
if( e.newrow == 0 && e.oldrow == -1 ){
let boardNo = this.dsList.getColumn(e.newrow, "BOARD_NO");
if ( !this.gfnIsEmpty(boardNo) ) {
this.dsSearch.setColumn(0, "BOARD_NO", boardNo);
this.fnTransaction('조회(search)');
}
}
};
/**
* @description 그리드 Row Click 이벤트
**/
/**
* @description 신규버튼 클릭 이벤트
**/
/**
* @description 저장버튼 클릭 이벤트
**/
/**
* @description [검색영역] 조회 이벤트
**/
/**
* @description [검색영역] 초기화 이벤트
**/
/**
* @description [알림대상] 사용자추가 이벤트
**/
/**
* @description [알림대상] 부서추가 이벤트
**/
/**
* @description [알림대상] 삭제 이벤트
**/