//------------------------------------------------------------------
//마이플렛폼 스크립트 공백일때 0 처리
//------------------------------------------------------------------
isNil(absncDiseDds) ? "0" : absncDiseDds
//------------------------------------------------------------------
// grd_cnsgnStdntAtteList02_ontextchange() : 그리드 날짜 범위체크
//------------------------------------------------------------------
function grd_cnsgnStdntAtteList02_ontextchange(obj:Grid, e:GridEditTextChangeEventInfo)
{
if(e.cell == 3){//수업일수
if(e.chartext == "-") return false;//-입력금지
if(toNumber(e.posttext) > 31) return false; //수업일수는 31을 넘지 않는다.
}
}
//----------------------------------------------------------
// lfn_ValueChangeCheck() : 체크처리
//----------------------------------------------------------
function lfn_ValueChangeCheck(obj:Dataset, e:DSColChangeEventInfo)
{
if(e.columnid == "_chk") return;
ds_cnsgnStdntAtteList02.setColumn(ds_cnsgnStdntAtteList02.rowposition,"_chk","1");
}
<<공통스크립트>>-------------------------------------------------------------------
/**
* @fileoverview 공통유틸리티 함수
* @author
* @version 1.0 버전
*/
/**
* Resize 처리 xjs Include.
* @param 없음
* @return 없음
*/
include "LIB::rsz_script.xjs"
/**
* 변수 선언부
* @param 없음
* @return 없음
*/
var utlv_AscMark =" ▲"; // Asc Mark
var utlv_DescMark =" ▼"; // Desc Mark
//첨부파일 관련 변수 선언
var vFile; //VirtualFile
var FileDialog0; //FileDialog
var HttpObject0; //HttpObject
var strFileDir = ""; //file directory
var strAddFilenm = ""; //add file name
//FusionChart 관련 변수 선언
var gv_chartPath = gv_ServerUrl + "/deploy/fusionchart/";
/**
* Form Load 시 공통 기능 처리.
* Form의 onload Event에 필히 기술.
* @param : obj - Object(Form)
* @return : N/A
* @example : utlf_frmLoadsetEnv(obj);
*/
function utlf_frmLoadsetEnv(obj, nX, nY) {
this.btn_help.onclick.setHandler(utlf_callHelp);
this.btn_reply.onclick.setHandler(utlf_callReply);
this.btn_qna.onclick.setHandler(utlf_callQna);
this.btn_pal.onclick.setHandler(utlf_callPal);
//Object 선언
vFile = new VirtualFile;
FileDialog0 = new FileDialog;
// // utlf_tranGetMessage(); // Message 처리
// // utlf_tranLogin(); // Log-in 처리
if (gv_mdiFlag == "false") {
var uExtObj = new ExtCommon();
gv_ServerUrl = "localhost:8080";
// 김동학 파트장님 IP 임 Explorer 9 버젼에서 IP를 가지 가지 못함
if(uExtObj.getIPAddress() == "80.2.23.186"){
gv_ServerUrl = "112.136.170.16:5102";
}
trace("local gv_ServerUrl : === > " + gv_ServerUrl);
utlf_tranGetMessage(); // Message 처리
utlf_tranLogin(); // Log-in 처리
nX = 831;
nY = 553;
} else {
if(utlf_IsNull(nX)) nX = gv_initWidth;
if(utlf_IsNull(nY)) nY = gv_initHeight;
}
//LIB::rsz_script.xjs 용 리사이즈 함수
lf_SetResize(obj, nX, nY);
}
/**
* Div URL 링크돈 Form Load 시 공통 기능 처리.
* Div URL 링크돈 Form의 onload Event에 필히 기술.
* @param : obj - Object(Form)
* @return : N/A
* @example : utlf_divLoadsetEnv(obj);
*/
function utlf_divLoadsetEnv(obj, nX, nY) {
//trace(obj.position.width + " ::: " + obj.position.height);
if(obj instanceof Tabpage) {
nX = obj.parent.position.width;
nY = obj.parent.position.height - 26; // 26 : Tab Button Height
} else {
nX = obj.position.width;
nY = obj.position.height;
}
// // if (gv_mdiFlag == "false") {
// //
// // if(utlf_IsNull(nX)) nX = obj.position.width;
// // if(utlf_IsNull(nY)) nY = obj.position.height;
// // // nX = 831;
// // // nY = 553;
// //
// // } else {
// // if(utlf_IsNull(nX)) nX = gv_initWidth;
// // if(utlf_IsNull(nY)) nY = gv_initHeight;
// // }
//LIB::rsz_script.xjs 용 리사이즈 함수
lf_SetResize(obj, nX, nY);
}
/**
* transaction 메세지
* @param : 없음
* @return : N/A
* @example : utlf_tranGetMessage();
*/
function utlf_tranGetMessage() {
transaction("getMessage",
"svc_neis::"+gv_ServerUrl+"/initialMessageProperties.xp?locale=ko",
"",
"gds_message=dsMergedProperties_mergedPropertiesList",
"",
"lfn_trans_callback");
}
/**
* 임시 Log-in 처리
* @param : 없음
* @return : N/A
* @example : utlf_tranLogin();
*/
function utlf_tranLogin() {
transaction("login",
"svc_neis::"+gv_ServerUrl+"/login.jsp",
"",
"",
"",
"lfn_trans_callback", false);
//trace("call Transaction >>>>> " + JSESSIONID);
}
/**
* transaction Callback
* @param : 없음
* @return : N/A
* @example : lfn_trans_callbackmsg()
*/
function lfn_trans_callback(svcid, errcd, errmsg) {
// trace("OnLoad>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>");
// trace(gds_message.saveXML());
//if (svcid == "login") {
// trace("callBack ::: Transaction >>>>> " + JSESSIONID);
//}
}
/**
* Popup Load 시 공통 기능 처리.
* Form의 onload Event에 필히 기술.
* @param : obj - Object(Form)
* @return : N/A
* @example : utlf_PopupLoadsetEnv(obj);
*/
function utlf_PopupLoadsetEnv(obj, nX, nY) {
if (gv_mdiFlag == "false") return;
if (opener.pv_frmAuth == 1) {
//trace(" opener auth:: "+opener.pv_frmAuth);
//dialog WebSafer 적용
//trace(" dialog handle::: "+opener.getOwnerFrame().Popup_Dialog.getHandle());
opener.MaWebSAFER.LoadImageSafer(opener.getOwnerFrame().Popup_Dialog.getHandle(), false);
}
}
/**
* 초등학교의 단위화면의 Main
* @param : winKey - Window ID
* @return : N/A
* @example : utlf_elsFrmClose(winKey);
*/
function utlf_elsFrmClose(winKey) {
if (gv_mdiFlag != "false") {
gv_AppBottomPath.form.lfn_deleteTabpage(winKey);
var iRow = gds_openwininfo.findRow("winid", winKey);
gds_openwininfo.deleteRow(iRow);
}
}
/**
* 초등학교의 단위화면의 Main의 Title, Path, 의견달기, 도움말 비활성화
* @param : N/A
* @return : N/A
* @example : utlf_elsFrmClose(winKey);
*/
function utlf_elsFrmEnv() {
btn_help.visible = false;
main_title.visible = false;
btn_reply.visible = false;
btn_qna.visible = false;
btn_pal.visible = false;
}
/**
* Popup 화면의 도움말 공통 처리.
* @param : popID - Popup Window ID
* @return : N/A
* @example : utlf_helpPopup(winID);
*/
function utlf_helpPopup(popID) {
alert(popID);
}
/**
* Alert(공통 Message) 처리
* @param : msgId - Message ID (gds_message:Global Dataset)
* @param : args - 치환문자열(Array)
* @return : N/A
* @example : utlf_alert("err.slc.cm.0002")
*/
function utlf_alert(msgid, args) {
//alert(msgid);
var msgTemp;
var charChk = utlf_Pos(msgid, "^");
if (charChk > 0) {
msgTemp = msgid.split("^");
alert(msgTemp[0] + "\n" + msgTemp[1]);
} else {
var findRow = gds_message.findRow( "msgId", msgid );
if (findRow < 0) {
return false;
}
if (utlf_IsNull(args)) {
alert(gds_message.getColumn(findRow, "msg"));
} else {
var arglen = args.length;
var strmsg = gds_message.getColumn(findRow, "msg");
var arrmsg = strmsg.split("{");
msgTemp = arrmsg[0];
for (var i=0; i<arglen; i++) {
msgTemp += utlf_Replace(arrmsg[i+1], i+"}", args[i]);
}
alert(msgTemp);
}
}
}
/**
* Confirm(공통 Message) 처리
* @param : msgId - Message ID (gds_message:Global Dataset)
* @param : args - 치환문자열(Array)
* @return : true/false
* @example : utlf_confirm("err.slc.cm.0002")
*/
function utlf_confirm(msgid, args) {
//return confirm(msgid);
var rtnVal;
var findRow = gds_message.findRow( "msgId", msgid );
if (findRow < 0) {
return false;
}
if (utlf_IsNull(args)) {
return confirm(gds_message.getColumn(findRow, "msg"));
} else {
var arglen = args.length;
var strmsg = gds_message.getColumn(findRow, "msg");
var arrmsg = strmsg.split("{");
var msgTemp = arrmsg[0];
for (var i=0; i<arglen; i++) {
msgTemp += utlf_Replace(arrmsg[i+1], i+"}", args[i]);
}
return confirm(msgTemp);
}
}
/**
* Dataset의 Message Id에 대한 Text를 가져옴
* @param : msgId - Message ID (gds_message:Global Dataset)
* @param : args - 치환문자열(Array)
* @return : string(Message), Not Exist : false
* @example : utlf_getMessage("err.slc.cm.0002")
*/
function utlf_getMessage(msgid, args) {
var findRow = gds_message.findRow( "msgId", msgid );
if (findRow < 0) {
alert("해당 메세지가 없습니다!");
return false;
}
if (utlf_IsNull(args)) {
return gds_message.getColumn(findRow, "msg");
} else {
var arglen = args.length;
var strmsg = gds_message.getColumn(findRow, "msg");
var arrmsg = strmsg.split("{");
var msgTemp = arrmsg[0];
for (var i=0; i<arglen; i++) {
msgTemp += utlf_Replace(arrmsg[i+1], i+"}", args[i]);
}
return msgTemp;
}
}
/**
* 페이지 처리 기능.
* @param : objPage - Object(Page 처리Composite Component)
* @param : totRowCnt - 전체 건수
* @param : strFn - 페이지 선택 시 호출 함수 정의
* @param : displayPage - 페이지당 보여줄 Data 건수
* @param : pgViewSize - 보여줄 페이지 수(default:10)
* @return : N/A
* @example : utlf_setPageProc(div_PG, 10, 10, 145, "fn_search");
*/
function utlf_setPageProc(objPage, totRowCnt, strFn, displayPage, pgViewSize) {
objPage.lfn_Init(totRowCnt, strFn, displayPage, pgViewSize);
}
/**
* Modal Dialog 처리
* @param : sID - Dialog의 ID
* @param : sURL - Popup 화면 URL
* @param : sArg - Dialog Form으로 전달될 Argument
* @param : nLeft - Dialog의 Left Position
* @param : nTop - Dialog의 Top Position
* @param : nWidth - Dialog 창의 Width
* @param : nHeight - Dialog 창의 Height
* @param : sStyle - Dialog 기본 유형
* @param : sProp - Chile Frame의 모든 Property를 설정
* @return : Child Frame Object
* @example : utlf_Dialog("test", "TEST::frm_type01_popup.xfdl", "");
*/
function utlf_Dialog(sID, sURL, sArg, nLeft, nTop, nWidth, nHeight, sStyle, sProp)
{
var rtn=null;
var newChild;
var MyFrame = this.getOwnerFrame();
newChild = _utlf_NewChildFrame(sID, sURL, sArg, nLeft, nTop, nWidth, nHeight, sStyle, sProp);
rtn = newChild.showModal(sID, MyFrame, sArg);
this.removeChild(newChild.name);
newChild.destroy();
newChild = null;
if( rtn == "" || rtn == "undefined" ) rtn = "";
return rtn;
}
/**
* Modeless Open 처리
* @param : sID - Modeless의 ID
* @param : sURL - Popup 화면 URL
* @param : sArg - Modeless Form으로 전달될 Argument
* @param : nLeft - Modeless의 Left Position
* @param : nTop - Modeless의 Top Position
* @param : nWidth - Modeless 창의 Width
* @param : nHeight - Modeless 창의 Height
* @param : sStyle - Modeless 기본 유형
* @param : sProp - Chile Frame의 모든 Property를 설정
* @return : Child Frame Object
* @example : utlf_Open("test", "TEST::frm_type01_popup.xfdl", "");
*/
function utlf_Open(sID, sURL, sArg, nLeft, nTop, nWidth, nHeight, sStyle, sProp)
{
var rtn;
var newChild;
var MyFrame = this.getOwnerFrame();
newChild = _utlf_NewChildFrame(sID, sURL, sArg, nLeft, nTop, nWidth, nHeight, sStyle, sProp);
return newChild.showModeless(sID, MyFrame, sArg);
}
/**
* Modal/Modeless Popuu 처리
* @param : sID - Popup Form의 ID
* @param : sURL - Popup Form URL
* @param : sArg - Popup Form으로 전달될 Argument
* @param : nLeft - Popup Form Left Position
* @param : nTop - Popup Form Top Position
* @param : nWidth - Popup Form Width
* @param : nHeight - Popup Form Height
* @param : sStyle - Popup Form 기본 유형
* @param : sProp - Chile Frame의 모든 Property를 설정
* @return : Child Frame Object
* @example : _utlf_NewChildFrame("test", "TEST::frm_type01_popup.xfdl", "");
*/
function _utlf_NewChildFrame( sID, sURL, Arg, nLeft, nTop, nWidth, nHeight, sStyle, sProp)
{
var newChild = null;
var MyFrame = this.getOwnerFrame();
var bTitle = true;
var bStatus = true;
var bClose = true;
var bMin = true;
var bMax = true;
var bAutoSize = true;
var flag;
var aProp = new Array();
var bLayer = false; //layer속성(2010.10.30)
if( utlf_IsNull(sID) || utlf_IsNull(sURL) ) return null;
newChild = new ChildFrame;
if( utlf_IsNull(nLeft) || nLeft < 0 )
newChild.openalign.halign = "center";
if( utlf_IsNull(nTop) || nTop < 0 )
newChild.openalign.valign = "center";
if( utlf_IsNull(nWidth) || nWidth < 0 ||
utlf_IsNull(nHeight) || nHeight < 0 )
{
nWidth = 0;
nHeight = 0;
bAutoSize = true;
}
else
bAutoSize = false;
if( utlf_IsNull(sStyle) == false )
{
var i, arr, arr1;
arr = sStyle.split(",");
for( i = 0 ; i < arr.length ; i++ )
{
arr1 = arr[i].split("=");
arr1[0] = utlf_RTrim(utlf_LTrim(arr1[0]));
arr1[1] = utlf_RTrim(utlf_LTrim(arr1[1]));
if( arr1[1].toLowerCase() == "true" ) flag = true;
else flag = false;
if( arr1[0].toLowerCase() == "title" ) bTitle = flag;
if( arr1[0].toLowerCase() == "status" ) bStatus = flag;
if( arr1[0].toLowerCase() == "close" ) bClose = flag;
if( arr1[0].toLowerCase() == "min" ) bMin = flag;
if( arr1[0].toLowerCase() == "max" ) bMax = flag;
if( arr1[0].toLowerCase() == "layer" ) bLayer = flag;
}
}
if( utlf_IsNull(sProp) == false )
{
var i;
aProp = sProp.split(",");
for( i = 0 ; i < aProp.length ; i++ )
{
aProp[i] = aProp[i].split("=");
aProp[i][0] = utlf_RTrim(utlf_LTrim(aProp[i][0]));
aProp[i][1] = utlf_RTrim(utlf_LTrim(aProp[i][1]));
}
}
newChild.formurl = sURL;
////// sStyle내용 적용( 이부분은 init()호출전에 사용해야 함 )
newChild.showtitlebar = bTitle;
newChild.showstatusbar = bStatus;
newChild.autosize = bAutoSize;
newChild.layered = bLayer;//layer속성(2010.10.30)
newChild.init(sID, nLeft, nTop, nLeft + nWidth, nTop + nHeight);
////// sStyle내용 적용( 이부분은 init()호출후에 사용해야 함 )
newChild.titlebar.minbutton.enable = bMin;
newChild.titlebar.maxbutton.enable = bMax;
newChild.titlebar.closebutton.enable = bClose;
if (bLayer) {
newChild.style.background = "URL('theme://images/topmenu_openBg.png') stretch 15,15";
newChild.style.align = "left top";
newChild.style.bordertype.type = "round 4 4 4 4";
newChild.style.border = "0 none";
newChild.dragmovetype = "none";
newChild.resizable = false;
} else {
newChild.style.border = "1 solid #777777" ;
newChild.resizable = false;
newChild.scrollbars = "none";
}
//newChild.style.margin = "0 5 5 0"; // <-----------------셰도우 처리를 위한 margin 설정 필요
//newChild.style.shadow = "outer 4,4 5 #00000070" ;
//newChild.layered = true; //--> 무조건 투명하게 ...
MyFrame.addChild(sID, newChild); // 이거 꼭 해야 함
////// sProp내용 적용
for( i = 0 ; i < aProp.length ; i++ )
{
SetProp( "this.getOwnerFrame()."+sID, aProp[i][0], aProp[i][1] );
}
MyFrame.removeChild(sID); // 이거 꼭 해야 함
return newChild;
}
/**
* 조건에 따른 Value 처리
* @param : 함수의 Arguments에서 확인
* @return : value
* @example : decode(strVal, "test", true, false);
*/
function decode()
{
var varRtnValue = null;
var arrArgument = decode.arguments;
var varValue = arrArgument[0];
var bIsDefault = false;
var nCount = 0;
if((arrArgument.length % 2) == 0) {
nCount = arrArgument.length - 1;
bIsDefault = true;
} else {
nCount = arrArgument.length;
bIsDefault = false;
}
for(var i = 1; i < nCount; i+=2) {
if(varValue == arrArgument[i]) {
varRtnValue = arrArgument[i+1];
i = nCount;
}
}
if(varRtnValue == null && bIsDefault) {
varRtnValue = arrArgument[arrArgument.length-1];
}
return varRtnValue;
}
/**
* 조건에 따른 Value 처리
* @param : 함수의 Arguments에서 확인
* @return : value
* @example : iif(strVal=="test", true, false);
*/
function iif()
{
var varRtnValue = null;
var arrArgument = iif.arguments;
if(arrArgument[0]) {
return arrArgument[1];
} else {
return arrArgument[2];
}
}
/**
* Null에 해당하는 값 체크.
* @param : sValue - Null 확인 밗
* @return : true/false
* @example : utlf_IsNull(sValue);
*/
function utlf_IsNull(sValue)
{
if( new String(sValue).valueOf() == "undefined")
return true;
if( sValue == null )
return true;
if( ("x"+sValue == "xNaN") && ( new String(sValue.length).valueOf() == "undefined" ) )
return true;
if( sValue.length == 0 )
return true;
return false;
}
/**
* 문자열에서 주어진 부분 문자열의 위치를 검색
* @param : sOrg - 검색대상 문자열
* @param : sFind - 검색할 문자열
* @param : nStart - 검색 시작 위치
* @return : Integer(문자열의 위치)
* @example : utlf_Pos(strText, "Find", [0]); []는 Optional을 표현.
*/
function utlf_Pos(sOrg, sFind, nStart)
{
if( utlf_IsNull(sOrg) || utlf_IsNull(sFind) ) return -1;
if( utlf_IsNull(nStart) ) nStart = 0;
return sOrg.indexOf(sFind, nStart);
}
/**
* 문자열에서 주어진 부분 문자열의 위치를 검색
* @param : sOrg - 가운데 부문을 얻어올 원본 문자열
* @param : sStart - 얻어올 문자열의 첫 Index
* @param : sEnd - 얻어올 문자열의 마지막 Idnex
* @param : nStart - 검색 시작 위치
* @return : string
* @example : utlf_Mid(strText, 2, 4, [nStart]);
*/
function utlf_Mid(sOrg, sStart, sEnd, nStart)
{
var pos_start, pos_end, ret_str;
if( utlf_IsNull(sOrg) ) return "";
if( utlf_IsNull(sStart) ) sStart = "";
if( utlf_IsNull(sEnd) ) sEnd = "";
if( utlf_IsNull(nStart) ) nStart = 0;
if( sStart == "" )
pos_start = nStart;
else
{
pos_start = utlf_Pos(sOrg, sStart, nStart);
if( pos_start < 0 ) return "";
}
if( sEnd == "" )
pos_end = sOrg.length;
else
{
pos_end = utlf_Pos(sOrg, sEnd, pos_start+sStart.length, nStart);
if( pos_end < 0 ) return "";
}
return sOrg.substring(pos_start+sStart.length, pos_end);
}
/**
* 문자열의 일부분을 다른 문자열로 치환
* @param : sOrg - 가운데 부문을 얻어올 원본 문자열
* @param : sRepFrom - 치환대상 문자열
* @param : sRepTo - 치환될 문자열
* @return : string
* @example : utlf_Replace( sOrg, " ", "" );
*/
function utlf_Replace( sOrg, sRepFrom, sRepTo )
{
var pos, nStart=0, sRet="";
sOrg = utlf_Str(sOrg);
if( utlf_IsNull(sOrg) ) return "";
if( utlf_IsNull(sRepFrom) ) return sOrg;
//if( utlf_IsNull(sRepTo) ) return sOrg;
while(1)
{
pos = utlf_Pos( sOrg, sRepFrom, nStart );
if( pos < 0 )
{
sRet += sOrg.substr( nStart );
break;
}
else
{
sRet += sOrg.substr( nStart, pos - nStart);
sRet += sRepTo;
nStart = pos+sRepFrom.length;
}
}
return sRet;
}
/**
* 문자열의 좌측 공백을 제거
* @param : sOrg - 좌측 공백문자 제거 대상 문자열
* @param : [sTrim] - 제거대상 문자열(default:" ")
* @return : string
* @example : utlf_LTrim( sOrg, " ");
*/
function utlf_LTrim(sOrg, sTrim)
{
var chk, pos;
sOrg = utlf_Str(sOrg);
if( utlf_IsNull(sOrg) ) return "";
if( utlf_IsNull(sTrim) ) sTrim = " ";
for( pos = 0 ; pos < sOrg.length ; pos+=sTrim.length )
{
if( sOrg.substr( pos, sTrim.length ) != sTrim )
break;
}
return sOrg.substr(pos);
}
/**
* 문자열의 우측 공백을 제거
* @param : sOrg - 우측 공백문자 제거 대상 문자열
* @param : [sTrim] - 치환대상 문자열
* @return : string
* @example : utlf_RTrim( sOrg, " ");
*/
function utlf_RTrim(sOrg, sTrim)
{
var pos, nStart;
sOrg = utlf_Str(sOrg);
if( utlf_IsNull(sOrg) ) return "";
if( utlf_IsNull(sTrim) ) sTrim = " ";
for( pos = sOrg.length-sTrim.length ; pos >= 0 ; pos -= sTrim.length )
{
if( sOrg.substr( pos, sTrim.length ) != sTrim )
break;
}
return sOrg.substr(0, pos+sTrim.length);
}
/**
* 문자열의 좌우측 공백을 제거
* @param : sOrg - 좌측 공백문자 제거 대상 문자열
* @param : [sTrim] - 제거대상 문자열(default:" ")
* @return : string
* @example : utlf_Trim( sOrg, " ");
*/
function utlf_Trim(sOrg, sTrim) {
var rtnVal = "";
if (utlf_IsNull(sTrim)) sTrim = " ";
rtnVal = utlf_RTrim(sOrg, sTrim);
rtnVal = utlf_LTrim(rtnVal, sTrim);
return rtnVal;
}
/**
* 문자열이 지정된 길이가 되도록 왼쪽을 채우는 함수
* @param : sOrg - 원본 문자열
* @param : sPad - 왼쪽에 채울 문자
* @param : nCnt - 출력될 문자열의 길이
* @return : string
* @example : utlf_LPad("2", "0", 2);
*/
function utlf_LPad(sOrg, sPad, nCnt)
{
var i, sRet="";
if( utlf_IsNull(sOrg) ) return "";
if( utlf_IsNull(sPad) ) sPad = " ";
if( utlf_IsNull(nCnt) ) nCnt = 1;
for( i = 0 ; i < nCnt ; i++ )
sRet += sPad;
sRet += sOrg;
return sRet;
}
/**
* 문자열이 지정된 길이가 되도록 오른쪽을 채우는 함수
* @param : sOrg - 원본 문자열
* @param : sPad - 오늘쪽에 채울 문자
* @param : nCnt - 출력될 문자열의 길이
* @return : string
* @example : utlf_RPad("2", "0", 2);
*/
function utlf_RPad(sOrg, sPad, nCnt)
{
var i, sRet="";
if( utlf_IsNull(sOrg) ) return "";
if( utlf_IsNull(sPad) ) sPad = " ";
if( utlf_IsNull(nCnt) ) nCnt = 1;
sRet += sOrg;
for( i = 0 ; i < nCnt ; i++ )
sRet += sPad;
return sRet;
}
/**
* 문자열의 오른쪼 부분을 지정한 길이만큼 가져오는 함수
* @param : sOrg - 원본 문자열
* @param : nSize - 얻어올 크기
* @return : string
* @example : utlf_Right(sOrg, 2);
*/
function utlf_Right(sOrg, nSize)
{
if( utlf_IsNull(sOrg) || utlf_IsNull(nSize) ) return "";
if( sOrg.length < nSize )
return sOrg;
else
return sOrg.substr(sOrg.length-nSize, nSize);
}
/**
* 문자열의 문자 개수 가져옴
* @param : sOrg - 원본 문자열
* @param : sCnt - Count 대상 문자
* @return : Integer
* @example : utlf_Count(sOrg, 2);
*/
function utlf_Count(sOrg, sCnt)
{
var i, sRet="";
var nCnt = 0;
if( utlf_IsNull(sOrg) || utlf_IsNull(sCnt) ) return -1;
for( i = 0 ; i < sOrg.length ; i += sCnt.length )
{
if( sOrg.substr(i, sCnt.length) == sCnt )
nCnt++;
}
return nCnt;
}
/**
* 문자열의 전체 길이 계산(한글,한자:2 / 나머지 1)
* @param : sVal - 입력받은 문자열
* @return : Integer
* @example : utlf_LenB(sVal);
*/
function utlf_LenB(sVal)
{
var len = 0;
if( utlf_IsNull(sVal) ) return -1;
for (i=0; i<sVal.length; i++)
{
if (sVal.charCodeAt(i) > 127)
len += 3;
else
len += 1;
}
return len;
}
/**
* 숫자형식 여부 확인
* @param : sNum - 숫자형식 확인 대상 문자열
* @return : true/false
* @example : utlf_IsNum(sNum);
*/
function utlf_IsNum(sNum)
{
var c;
var point_cnt=0;
var ret=true;
if( utlf_IsNull(sNum) ) return false;
for( i = 0 ; i < sNum.length ; i++ )
{
c = sNum.charAt(i);
if( i == 0 && ( c == "+" || c == "-" ) );
else if( c >= "0" && c <= "9" );
else if( c == "." )
{
point_cnt++;
if( point_cnt > 1 )
{
ret = false;
break;
}
}
else
{
ret = false;
break;
}
}
return ret;
}
/**
* 숫자에 천단위 "," 적용
* @param : sNum - 숫자형식 확인 대상 문자열
* @return : string
* @example : utlf_SetComma(sNum);
*/
function utlf_SetComma(sNum)
{
var ppos, sDigit, nEnd, nStart=0, sRet="";
if( utlf_IsNull(sNum) ) return "";
if( sNum.charAt(0) == "+" || sNum.charAt(0) == "-" )
{
sRet += sNum.charAt(0);
nStart = 1;
}
ppos = utlf_Pos(sNum, ".", nStart);
if( ppos < 0 )
nEnd = sNum.length;
else
nEnd = ppos;
sDigit = sNum.substr(nStart, nEnd-nStart);
for( pos = 0 ; pos < sDigit.length ; pos ++ )
{
if( pos != 0 && (sDigit.length-pos)%3 == 0 )
sRet += ",";
sRet += sDigit.charAt(pos);
}
sRet += sNum.substr(nEnd);
return sRet;
}
/**
* 해당월의 마지막 날짜
* @param : sDate - yyyyMMdd 형태의 날짜
* @return : integer
* @example : utlf_LastDateNum("20100501");
*/
function utlf_LastDateNum(sDate)
{
var nMonth, nLastDate;
if( utlf_IsNull(sDate) ) return -1;
nMonth = parseInt(sDate.substr(4,2), 10);
if( nMonth == 1 || nMonth == 3 || nMonth == 5 || nMonth == 7 || nMonth == 8 || nMonth == 10 || nMonth == 12 )
nLastDate = 31;
else if( nMonth == 2 )
{
if( utlf_IsLeapYear(sDate) == true )
nLastDate = 29;
else
nLastDate = 28;
}
else
nLastDate = 30;
return nLastDate;
}
/**
* 윤년여부 확인
* @param : sDate - yyyyMMdd형태의 날짜
* @return : true/false
* @example : utlf_IsLeapYear("20100501");
*/
function utlf_IsLeapYear(sDate)
{
var ret;
var nY;
if( utlf_IsNull(sDate) ) return false;
nY = parseInt(sDate.substring(0,4), 10);
if ((nY % 4) == 0)
{
if ((nY % 100) != 0 || (nY % 400) == 0)
ret = true;
else
ret = false;
}
else
ret = false;
return ret;
}
/**
* 해당월의 마지막 날짜를 yyyyMMdd 형태로 출력
* @param : sDate - yyyyMMdd형태의 날짜
* @return : string(date:yyyyMMdd)
* @example : utlf_LastDateNum("20100501");
*/
function utlf_LastDate(sDate)
{
if( utlf_IsNull(sDate) ) return "";
var nLastDate = utlf_LastDateNum(sDate);
return sDate.substr(0,6) + nLastDate.toString();
}
/**
* 날짜 형시 여부 체크
* @param : sDate - yyyyMMdd형태의 날짜
* @return : true/false
* @example : utlf_LastDateNum("20100501");
*/
function utlf_IsDate(sDate)
{
if( utlf_IsNull(sDate) ) return false;
if( sDate.length != 8 )
return false;
if( utlf_IsNum(sDate) != true )
return false;
var nMonth = parseInt(sDate.substring(4,6), 10);
var nDate = parseInt(sDate.substring(6,8), 10);
if( nMonth < 1 || nMonth > 12 )
return false;
if( nDate < 1 || nDate > utlf_LastDateNum(sDate) )
return false;
return true;
}
/**
* 입력된 날짜에 지정된 인수 만큼의 날짜를 증감
* @param : sDate - yyyyMMdd형태의 날짜
* nOffset - 일 증감
* @return : string(date)
* @example : utlf_AddDate("20100501", 5);
*/
function utlf_AddDate(sDate, nOffset)
{
if( utlf_IsNull(sDate) || utlf_IsNull(nOffset) ) return "";
var nYear = parseInt(sDate.substr(0, 4));
var nMonth = parseInt(sDate.substr(4, 2));
var nDate = parseInt(sDate.substr(6, 2)) + nOffset;
return utlf_MakeDate(nYear, nMonth, nDate);
}
/**
* 입력된 날짜에 지정된 인수 만큼의 월 증감
* @param : sDate - yyyyMMdd형태의 날짜
* @param : nOffset - 월 증감
* @return : string(date)
* @example : utlf_AddMonth("20100501", 5);
*/
function utlf_AddMonth(sDate, nOffset)
{
if( utlf_IsNull(sDate) || utlf_IsNull(nOffset) ) return "";
var nYear = parseInt(sDate.substr(0, 4));
var nMonth = parseInt(sDate.substr(4, 2))+nOffset;
var nDate = parseInt(sDate.substr(6, 2));
var nLastDate, sRet;
sRet = utlf_MakeDate(nYear, nMonth, 1);
nLastDate = utlf_LastDateNum(sRet);
sRet = sRet.substr(0,6);
if( nDate > nLastDate )
sRet += utlf_Right("00" + nLastDate.toString(), 2);
else
sRet += utlf_Right("00" + nDate.toString(), 2);
return sRet;
}
/**
* yyyyMMdd 형태의 문자열 날짜 출력
* @param : nYear - Year : 년도
* @param : nYear - Month : 월
* @param : nYear - Date : 일
* @return : string(date)
* @example : utlf_MakeDate("2010", "05", "01");
*/
function utlf_MakeDate(nYear, nMonth, nDate)
{
if( utlf_IsNull(nYear) || utlf_IsNull(nMonth) || utlf_IsNull(nDate) ) return "";
var objDate = new Date(nYear, nMonth-1, nDate);
var sYear = objDate.getFullYear().toString();
var sMonth = utlf_Right("0" + (objDate.getMonth() + 1), 2);
var sDate = utlf_Right("0" + objDate.getDate(), 2);
return sYear + sMonth + sDate;
}
/**
* 현재 날짜 출력(Local)
* @param : N/A
* @return : string(date)
* @example : utlf_Today();
*/
function utlf_Today()
{
var sToday = "";
var objDate = new Date();
var sToday = objDate.getFullYear().toString();
sToday += utlf_Right("0" + (objDate.getMonth() + 1), 2);
sToday += utlf_Right("0" + objDate.getDate(), 2);
return sToday;
}
/**
* 현재 날짜 + 시간 출력(Local)
* @param : N/A
* @return : string(date:yyyyMMddhhmiss)
* @example : utlf_TodayTime("2010", "05", "01");
*/
function utlf_TodayTime(bMode)
{
var strToday = "";
var objDate = new Date();
var sToday = objDate.getFullYear().toString();
sToday += utlf_Right("0" + (objDate.getMonth() + 1), 2);
sToday += utlf_Right("0" + objDate.getDate(), 2);
sToday += utlf_Right("0" + objDate.getHours(), 2);
sToday += utlf_Right("0" + objDate.getMinutes(), 2);
sToday += utlf_Right("0" + objDate.getSeconds(), 2);
if (bMode == "S") {
strToday += objDate.getMilliseconds();
}
return sToday;
}
/**
* 두 일자간의 날짜 계산
* @param : sStartDate - yyyyMMdd 형태의 From 일자
* sEndDate - yyyyMMdd 형태의 To 일자
* @return : integer
* @example : utlf_TodayTime("20091002", "2010051");
*/
function utlf_DiffDate(sStartDate, sEndDate)
{
if( utlf_IsNull(sStartDate) || utlf_IsNull(sEndDate) ) return NaN;
var vFromDate = new Date(parseInt(sEndDate.substring(0,4), 10), parseInt(sEndDate.substring(4,6)-1, 10), parseInt(sEndDate.substring(6,8), 10));
var vToDate = new Date(parseInt(sStartDate.substring(0,4), 10), parseInt(sStartDate.substring(4,6)-1, 10), parseInt(sStartDate.substring(6,8), 10));
return parseInt((vFromDate - vToDate)/(1000*60*60*24));
}
/**
* 두 월간의 월 계산
* @param : sStartDate - yyyyMMdd 형태의 From 일자
* @param : sEndDate - yyyyMMdd 형태의 To 일자
* @return : integer
* @example : utlf_DiffMonth("20091002", "2010051");
*/
function utlf_DiffMonth(sStartDate, sEndDate)
{
var nStartMon, nEndMon;
if( utlf_IsNull(sStartDate) || utlf_IsNull(sEndDate) ) return NaN;
nStartMon = parseInt(sStartDate.substr(0,4), 10)*12 + parseInt(sStartDate.substr(4,2), 10);
nEndMon = parseInt(sEndDate.substr(0,4), 10)*12 + parseInt(sEndDate.substr(4,2), 10);
return (nEndMon - nStartMon);
}
/**
* 주민번호 확인
* @param : sValue - 입력된 주민등록번호
* @return : true/false
* @example : utlf_IsRsrNo(sValue);
*/
function utlf_IsRsrNo(sValue)
{
if( utlf_IsNull(sValue) ) return false;
var v_JuminNo = utlf_Replace(sValue, "-", "");
var v_JuminChkDgt = [2,3,4,5,6,7,8,9,2,3,4,5];
var v_FNum = new Number();
var v_LNum = new Number();
var v_iSum = new Number();
var v_RtnVal;
var v_YY;
if(v_JuminNo.length != 13)
return false;
v_FNum = v_JuminNo.substr(0, 6).toString();
v_LNum = v_JuminNo.substr(6).toString();
if (v_LNum.substr(0,1) == '1' || v_LNum.substr(0,1) == '2')
v_YY = '19';
else if (v_LNum.substr(0,1) == '3' || v_LNum.substr(0,1) == '4')
v_YY = '20';
else
return false;
if(utlf_IsDate(v_YY + v_FNum) == false)
return false;
if (utlf_IsNum(v_JuminNo) == false)
return false;
for ( ix = 0; ix < 12 ; ix++)
v_iSum += (parseInt(v_JuminNo.substr(ix, 1)) * v_JuminChkDgt[ix]);
v_iSum = 11 - (v_iSum%11);
v_iSum = v_iSum % 10;
if (v_iSum != (parseInt(v_JuminNo.substr(12, 1))))
return false;
return true;
}
/**
* 외국인번호 확인
* @param : sValue - 입력된 외국인등록번호
* @return : true/false
* @example : utlf_IsForeignNo(sValue);
*/
function utlf_IsForeignNo(sValue)
{
var sum = 0;
var odd = 0;
buf = Array(13);
for (i = 0; i < 13; i++) buf[i] = parseInt(sValue.charAt(i));
odd = buf[7]*10 + buf[8];
if (odd%2 != 0) {
return false;
}
if ((buf[11] != 6)&&(buf[11] != 7)&&(buf[11] != 8)&&(buf[11] != 9)) {
return false;
}
multipliers = [2,3,4,5,6,7,8,9,2,3,4,5];
for (i = 0, sum = 0; i < 12; i++) {
buf[i] = buf[i] * multipliers[i];
sum = sum + buf[i];
}
sum=11-(sum%11);
if (sum>=10) sum-=10;
sum += 2;
if (sum>=10) sum-=10;
if ( sum != buf[12]) {
return false;
}
else {
return true;
}
}
/**
* Grid Data를 Excel Export 처리
* @param : obj:Grid - Object(Grid)
* @param : ExpObj:ExportObject - Object(Export Object)
* @param : sSheetName - Sheet 명(default:"Sheet1")
* @return : Child Frame Object
* @example : utlf_GridExportExcel(objGrd, expObj, sSheet);
*/
function utlf_GridExportExcel(obj:Grid, ExpObj:ExportObject, sSheetName)
{
if( utlf_IsNull(obj) ) return false;
if( utlf_IsNull(ExpObj) == true )
var ExpObj = new ExportObject;
if( utlf_IsNull(sSheetName) == true )
sSheetName = "Sheet1";
ExpObj.exportfilename = Grid.name+".xls"; // 꼭 줘야됨
ExpObj.exporttype = ExportTypes.EXCEL; // 현재 Excel만 가능합니다.
ExpObj.activepagename = sSheetName;
ExpObj.addExportItem(ExportItemTypes.GRID, obj, sSheetName+"!A1");
ExpObj.export(); // Excel로 Export실행
return true;
}
/**
* Control에 들어가는 Text에 대해 Control의 width를 구하는 처리
* @param : obj - text가 표시되는 해당 컴포넌트
* @param sText - 표시될 text
* @param nFontSize - 폰트 크기
* @return : Control의 width
* @example : var objControl.position.width = utlf_getTextSize(objControl, sText, 9);
*/
function utlf_getTextSize(obj, sText, nFontSize)
{
var objPainter = obj.canvas.getPainter();
var objFont = new Font;
objFont.size = nFontSize;
var objSize = objPainter.getTextSize(sText, objFont);
return objSize.cx;
}
/**
* 선택된 Grid Column에 대한 Sort 처리
* @param : grdObj - Sorting 처리 Grid Object
* @param nCell - Sort 적용 Column
* @param [resetCol] - Sort 해제 시 기준 Column 정보
* @param [strAscMark] - Asc Mark(표현문자:Default-▲)
* @param [strDescMark] - Desc Mark(표현문자:Default-▼)
* @return : N/A
* @example : utlf_procGrdSort(grdObj, nCell, "col1,col2", "↑", "↓");
*/
function utlf_procGrdSort(grdObj, nCell, resetCol, strAscMark, strDescMark) {
var curObj = grdObj.id;
if (! utlf_IsNull(strAscMark)) utlv_AscMark =" " + strAscMark; // Asc Mark
if (! utlf_IsNull(strDescMark)) utlv_DescMark = " " + strDescMark; // Desc Mark
// 단일 Column Sort 처리 시
_utlf_GridDataSort(grdObj, nCell, resetCol);
}
/**
* Column Sort 처리
* @param : grdObj - Sorting 처리 Grid Object
* @param nCell - Sort 적용 Column
* @param [resetCol] - Sort 해제 시 기준 Column 정보
* @return : N/A
* @example : _utlf_GridDataSort(grdObj, nCell, resetCol);
*/
function _utlf_GridDataSort(grdObj, nCell, resetCol) {
// Grid Bind Dataset 추출
var dsObj = new Object();
dsObj = objects(grdObj.binddataset);
var strHeadText; // Head Text + SortMark
var sortCol; // 선택된 Head의 Column Index
var sortSpan; // 선택된 Head의 ColSpan 정보
var splitCol; // Grid body Column의 text의 colid 추출 : ex)bind:Col1 - split처리(":")
var sortColumns = ""; // Grid Sort 대상 Column
var rowDepth;
var headCnt = grdObj.getCellCount("head"); // Grid Head Cell Count
var bodyCnt = grdObj.getCellCount("body"); // Grid Body Cell Count
var sortRow = grdObj.getCellProperty("head",nCell,"row");
for (var iHead=0; iHead<headCnt; iHead++) {
rowDepth = grdObj.getCellProperty("head", iHead, "row");
if ( (nCell == iHead) && (sortRow == rowDepth) ) break;
}
sortCol = grdObj.getCellProperty("head", iHead, "col");
var bodyRow = _utlf_grdBodyDepth(grdObj);
for (var iBody=0; iBody<bodyCnt; iBody++) {
if (bodyRow > 0) {
if ( (sortCol == grdObj.getCellProperty("body", iBody, "col")) &&
(sortRow == grdObj.getCellProperty("body", iBody, "row")) ) break;
} else {
if (sortCol == grdObj.getCellProperty("body", iBody, "col")) break;
}
}
//checkbox 일경우 제외
if (grdObj.getCellProperty("head",nCell,"displaytype") == "checkbox" ||
grdObj.getCellProperty("head",nCell,"edittype") == "checkbox") return;
//expr일 경우 sort제외
splitCol = grdObj.getCellProperty("body", iBody, "text").split(":");
if (splitCol[0] == "expr") return;
splitCol ="";
// Grid Head의 해당 Column이 Asc(▲) 인 경우
if (grdObj.getCellProperty("head", nCell, "text").indexOf(utlv_AscMark) > -1) {
if (grdObj.getCellProperty("head", nCell, "colspan") > 1) {
sortSpan = grdObj.getCellProperty("head", iHead, "colspan");
for (var ii=0; ii<bodyCnt; ii++) {
if ( (grdObj.getCellProperty("body", ii, "col") >= sortCol) &&
grdObj.getCellProperty("body", ii, "col") < (Math.abs(sortCol) + Math.abs(sortSpan) ) ) {
if (grdObj.getCellProperty("body", ii, "text").length > 0) {
splitCol = grdObj.getCellProperty("body", ii, "text").split(":");
sortColumns += "-" + splitCol[1];
}
}
}
} else {
splitCol = grdObj.getCellProperty("body", iBody, "text").split(":");
sortColumns += "-" + splitCol[1];
}
strHeadText = grdObj.getCellProperty("head",nCell,"text");
strHeadText = strHeadText.replace(utlv_AscMark, utlv_DescMark);
// Grid Head의 해당 Column이 Desc(▼) 인 경우
} else if (grdObj.getCellProperty("head", nCell, "text").indexOf(utlv_DescMark) > -1) {
var sortIdx = 0;
// Sort Mark 제거 시 해당 Grid의 Column Index에 대해서 Sort 처리(Max 3 Column)
if (resetCol == null || resetCol == "") {
for (var ii=0; ii<bodyCnt; ii++) {
if (grdObj.getCellProperty("body", ii, "text").length > 1) {
splitCol = grdObj.getCellProperty("body", ii, "text").split(":");
if(splitCol[0] != "expr"){
sortColumns += "+" + splitCol[1];
sortIdx++;
}
}
if (sortIdx == 3) break;
}
// Reset Column이 정의된 경우
} else {
sortColumns = _utlf_defaultSortCols(resetCol); // Sort Column이 정의된 경우(매개변수)
}
strHeadText = grdObj.getCellProperty("head", nCell, "text");
strHeadText = strHeadText.replace(utlv_DescMark, "");
// 초기값인 경우(Sort 미 적용) 시
} else {
if (grdObj.getCellProperty("head",nCell,"colspan") > 1) {
sortSpan = grdObj.getCellProperty("head", iHead, "colspan");
for (var ii=0; ii<bodyCnt; ii++) {
if ( (grdObj.getCellProperty("body", ii, "col") >= sortCol) &&
grdObj.getCellProperty("body", ii, "col") < (Math.abs(sortCol) + Math.abs(sortSpan) ) ){
if (grdObj.getCellProperty("body", ii, "text").length > 0) {
splitCol = grdObj.getCellProperty("body", ii, "text").split(":");
sortColumns += "+" + splitCol[1];
}
}
}
} else {
splitCol = grdObj.getCellProperty("body", iBody, "text").split(":");
sortColumns += "+" + splitCol[1];
}
strHeadText = grdObj.getCellProperty("head", nCell, "text");
strHeadText = strHeadText + utlv_AscMark;
}
// 해당 Column에 대한 Sort 처리
if (sortColumns == "reset") dsObj.reset();
else dsObj.keystring = "S:" + sortColumns;
// Grid의 Row Position 설정(Sort 처리 시 Row Position 변경)
dsObj.rowposition = 0;
// 선택 Head의 Text 변경 (Sort Mark 적용)
grdObj.setCellProperty("head", nCell, "text", strHeadText);
// Selected Column을 제외한 Sort Mark 제거
_utlf_clearSortMark(grdObj, nCell);
}
/**
* Seleted Column을 제외한 Sort Mark 제거
* @param : grdObj - Sorting 처리 Grid Object
* @param nCell - Sort 적용 Column
* @return : N/A
* @example : _utlf_clearSortMark(grdObj, nCell)
*/
function _utlf_clearSortMark(grdObj, nCell) {
var nColCnt = grdObj.getCellCount("head");
var sRepText;
for(var ii=0; ii<nColCnt; ii++) {
if (nCell != null && nCell == ii) continue; // 선택한 Cell을 제외하고 처리
if (grdObj.getCellProperty("head",ii,"displaytype") == "checkbox" ||
grdObj.getCellProperty("head",ii,"edittype") == "checkbox") continue;
sRepText = grdObj.getCellProperty("head",ii,"text").replace(utlv_AscMark,"").replace(utlv_DescMark, "");
grdObj.setCellProperty("head",ii,"text", sRepText);
}
//var dsObj = grdObj.binddataset;
//eval(dsObj).keystring = "";
}
/**
* Sort Mark 제거 시 기본 Sort Column 정의(ResetColumn)
* @param : ResetColumn - Sorting 처리 Grid Object
* @return : Sort Column(String)
* @example : _utlf_defaultSortCols(resetCol)
*/
function _utlf_defaultSortCols(resetCol) {
var rtnVal = "";
var arrSortCol = resetCol.split(",");
var sortLen = arrSortCol.length;
for (i=0; i<sortLen; i++) {
if (arrSortCol[i].length < 1) continue;
rtnVal += "+" + arrSortCol[i];
}
return rtnVal;
}
/**
* Grid Head(band)의 Row Depth 계산
* @param : GridObject - Sorting 처리 Grid Object
* @return : Head(band) Row Depth(Number)
* @example : _utlf_grdBodyDepth(grdObj)
*/
function _utlf_grdBodyDepth(grdObj) {
var rtnVal = 0;
var rowDepth = 0;
var bodyCnt = grdObj.getCellCount("body"); // Grid Body Cell Count
for (var i=0; i<bodyCnt; i++) {
rowDepth = grdObj.getCellProperty("body",i,"row");
if (rowDepth > rtnVal) rtnVal = rowDepth;
}
return rtnVal;
}
/**
* Sort Mark 제거(초기화상태로 되돌리고자 할때)
* @param : grdObj - Sorting 처리 Grid Object
* @return : N/A
* @example : utlf_clearSort(grdObj)
*/
function utlf_clearSort(grdObj) {
var nColCnt = grdObj.getCellCount("head");
var sRepText;
for(var ii=0; ii<nColCnt; ii++) {
sRepText = grdObj.getCellProperty("head",ii,"text").replace(utlv_AscMark,"").replace(utlv_DescMark, "");
grdObj.setCellProperty("head",ii,"text", sRepText);
}
var dsObj = grdObj.binddataset;
eval(dsObj).keystring = "";
}
/**
* Grid의 내용을 Excel로 실행
* @param : objGrd - Excel Export 대상 Grid Object
* @return : N/A
* @example : utlf_XlstoExe(objGrd)
*/
function utlf_exeXls(objGrd, bMode) {
if (bMode) {
//utlf_ImgProc(true);
}
var objExport = new ExportObject();
objExport.onexport.setHandler(utlf_onexport);
objExport.exporttype = ExportTypes.EXCEL;
objExport.activepagename = "Sheet0";
objExport.addExportItem(ExportItemTypes.GRID, objGrd, "Sheet0!A0" );
objExport.exportuitype = "exportprogress";
objExport.exportmessageprocess = "%d Recrod, %d Total";
//objExport.exportvalue = "onlyvalue";
var rtnVal = objExport.export();
//objExport = null;
//end image
if (bMode) {
//utlf_ImgProc(false)
}
}
function utlf_onexport(obj:ExportObject,e:ExportEventInfo) {
//trace(e.recordindex);
}
/**
* Grid의 내용을 Excel 파일로 저장
* @param : objGrd - Excel Export 대상 Grid Object
* @param : strXlsNm - 저장할 Excel 파일명
* @param : strSheetNm - 저장할 Excel sheet명
* @param : strRunYn - 저장후 실행할지 여부
* @return : N/A
* @example : utlf_exportExcel(grd_export,"sample_xls.xls","메뉴");
*/
function utlf_exportExcel(objGrd, strXlsNm, strSheetNm, strRunYn) {
var objExport = new ExportObject();
var fdlg = new FileDialog;
if (utlf_IsNull(strXlsNm)) {
strXlsNm = "";
}
if (utlf_IsNull(strSheetNm)) {
strSheetNm = "sheet1!A0";
} else {
strSheetNm += "!A0";
}
if (utlf_IsNull(strRunYn)) {
strRunYn = "noactive";
} else {
strRunYn = "active";
}
fdlg.filter = "Worksheet Files (*.xls;*.xlsx)|*.xls;*.xlsx";
var vFile = fdlg.open("FileSave", FileDialog.SAVE, "%MYDOCUMENT%", strXlsNm);
if (utlf_IsNull(vFile)) return false;
if (vFile == -1) return false;
objExport.exporttype = ExportTypes.EXCEL;
objExport.exportfilename = vFile.fullpath;
objExport.exportactivemode = strRunYn;
objExport.exportsavemode = "save";
objExport.addExportItem(ExportItemTypes.GRID, objGrd, strSheetNm );
var ExportCnt = objExport.export();
objExport = null;
return true;
}
/**
* Excel File을 Dataset Import
* @param : objGrd - Excel File의 표현할 Grid Object
* @return : N/A
* @example : utlf_importExcel(objGrd,intUseColInfo, intExp,intDecimal,intStartRow,numcheck,skipcol)
*/
function utlf_importExcel(objGrd,intUseColInfo, intExp,intDecimal,intStartRow,numcheck,skipcol) {
if (utlf_IsNull(intUseColInfo)) intUseColInfo = 1;
if (utlf_IsNull(intExp)) intExp = null;
if (utlf_IsNull(intDecimal)) intDecimal = 0;
if (utlf_IsNull(intStartRow)) intStartRow = 1;
if (utlf_IsNull(numcheck)) numcheck = 0;
if (utlf_IsNull(skipcol)) skipcol = null;
var strDs = objGrd.binddataset;
var fdlg = new FileDialog;
//trace("[ 폴더경로 ]" + system.convertRealPath("%MYDOCUMENT%"));
var vFile = fdlg.open("FileSave", FileDialog.LOAD);
if (utlf_IsNull(vFile)) return false;
if (vFile == -1) return false;
//trace("path :: " + vFile.fullpath);
var extComapi = new ExtCommon();
//excelImportByIndex(strExcelFilename, intSheetIndex, strTargetDatasetID, [intUseColInfo, intExp,intDecimal,intStartRow,numcheck,skiprow])
var strExcelFilename = vFile.fullpath;//system.convertRealPath("%MYDOCUMENT%")+"excel_import001.xls";
var intSheetIndex = 0;
var strTargetDatasetID = strDs;//"dsXls";
//trace(strExcelFilename);
utlf_ImgProc(true, "업로드처리중입니다. 잠시 기다려주세요!");
// if (strExcelFilename.indexOf("csv")>0) {
// trace("csv file일 경우");
// extComapi.csv2Ds(strExcelFilename,strTargetDatasetID,true,"Column0,Column1,Column2,Column3,Column4,Column5");
// } else {
extComapi.excelImportByIndex(strExcelFilename, intSheetIndex, strTargetDatasetID,intUseColInfo, intExp,intDecimal,intStartRow,numcheck,skipcol);// , 1, 1, 1, 2, 1, 2
/* }*/
utlf_ImgProc(false);
return true;
}
/**
* Dataset을 RD 출력 CSV로 전환
* @param : argDs - CSV 전환 Dataset Object
* arg1 - Master, Detail간의 Key
* @return : String(RD용 CSV Format)
* @example : utlf_DstoCsv("dsMast,dsDtl1,dsDtl2", "EmployeeID:EmpID,OrderDate:ordDate");
*/
function utlf_DstoCsv(argDs, arg1) {
var arrDs = argDs.split(",");
var arrArg1;
if (utlf_IsNull(arg1)) {
arrArg1 = "";
} else {
arrArg1 = arg1.split(",");
}
var strDsCont = "";
if (arrArg1.length > 1) {
var nRowCnt = eval(arrDs[0]).getRowCount();
var nColCnt = eval(arrDs[0]).getColCount();
for (var j = 0;j<nRowCnt;j++) {
for (var k = 0;k<nColCnt;k++) {
strDsCont += eval(arrDs[0]).getColumn(j,k);
strDsCont += "^";
}
strDsCont += "\r\n";
for (var i=1;i<arrDs.length;i++) {
var arrArg2 = arrArg1[i-1].split(":");
var strFnm = eval(arrDs[0]).getColumn(j,arrArg2[0]);
var nSubRowCnt = eval(arrDs[i]).getRowCount();
var nSubColCnt = eval(arrDs[i]).getColCount();
for (var m=0;m<nSubRowCnt;m++) {
//두번째 Detail Dataset 맨처음일 경우(EOR문자 삽입)
if (i > 1 && m== 0) {
strDsCont += "//EOR//";
strDsCont += "\r\n";
}
if (strFnm == eval(arrDs[i]).getColumn(m,arrArg2[1])) {
for (var n=0;n<nSubColCnt;n++) {
strDsCont += eval(arrDs[i]).getColumn(m,n);
strDsCont += "^";
//행마다 개행문자 삽입
if (n == (nSubColCnt-1)) {
strDsCont += "\r\n";
}//end if
}//end for
}//end if
}//end for
}//end for
strDsCont += "//EOR//";
strDsCont += "\r\n";
}
} else {
for (var i=0;i<arrDs.length;i++) {
var nRowCnt = eval(arrDs[i]).getRowCount();
var nColCnt = eval(arrDs[i]).getColCount();
for (var j = 0;j<nRowCnt;j++) {
for (var k = 0;k<nColCnt;k++) {
strDsCont += eval(arrDs[i]).getColumn(j,k);
strDsCont += "^";
}
strDsCont += "\r\n";
}
//데이타셋이 여러개일경우 구분자추가
if (arrDs.length > 1) {
strDsCont += "//EOR//";
strDsCont += "\r\n";
}
}
}
//trace(strDsCont);
return strDsCont;
}
/**
* Grid/Excel간 Copy & Paste
* @param : obj - Grid Object
* @param e - Event Info
* @return : N/A
* @example : utlf_grdCopy_Paste(obj, e)
*/
function utlf_grdCopy_Paste(obj, e) {
if(e.ctrlKey){
if(e.keycode == 67){
//Grid Binddataset
var strGrdDsNm = obj.binddataset;
var v_clip = "";
var strSeperate = " ";
for (var i=obj.selectstartrow;i<=obj.selectendrow;i++) {
for (var j=obj.selectstartcol;j<=obj.selectendcol;j++) {
if (j < obj.selectendcol) {
v_clip += obj.getCellValue(i,j) + strSeperate;
} else {
v_clip += obj.getCellValue(i,j);
}
}
if (i < obj.selectendrow) {
v_clip += "\r\n";
}
}
v_clip += "\r\n";
system.clearClipboard();
system.setClipboard("CF_TEXT",v_clip);
}else if(e.keycode == 86){
var bAddrow = true;
if (!utlf_IsNull(utlf_grdCopy_Paste.arguments[2])) {
bAddrow = utlf_grdCopy_Paste.arguments[2];
}
//Grid Binddataset
var strGrdDsNm = obj.binddataset;
//cell count
var nGrdCellCnt = obj.getCellCount("body");
//cell position
var nGrdCellPos = obj.getCellPos();
//row position
var nRowPos = eval(strGrdDsNm).rowposition;
//arrText2 index
var k = 0;
//Dataset rowcount
var nDsRowCnt = eval(strGrdDsNm).getRowCount();
var t_clip = system.getClipboard("CF_UNICODETEXT");
var strText = new String(t_clip);
var arrText = new Array();
var arrText2 = new Array();
arrText = strText.split("\r\n");
if (nDsRowCnt < (arrText.length + nRowPos -1)) {
if (bAddrow) {
} else {
return false;
}
}
//복사한 Row만큼
for (var i=0;i<arrText.length;i++) {
if (utlf_IsNull(arrText[i])) {
return;
}
arrText2 = arrText[i].split(" ");
//기존 dataset갯수보다 많은 경우
if ( nDsRowCnt <= nRowPos) {
var nAddrow = eval(strGrdDsNm).addRow();
}
var nLoopCnt = (nGrdCellPos + arrText2.length);
if (nLoopCnt > nGrdCellCnt) {
nLoopCnt = nGrdCellCnt;
}
//Dataset setcolumn
for (var j=nGrdCellPos;j<nLoopCnt;j++) {
obj.setCellPos(j);
obj.showEditor(true);
obj.setEditText(arrText2[k]);
k++;
obj.showEditor(false);
}
nRowPos++;
eval(strGrdDsNm).rowposition = nRowPos;
k = 0;
}
return true;
}
}
}
/**
* Grid 체크박스를 이용한 전체선택/해제
* @param : obj - Grid Object
* @param e - Event Info
* @return : N/A
* @example : utlf_SetGridCheckAll(obj, e)
*/
function utlf_setGridCheckAll(obj, e)
{
var celltype = obj.getCellProperty("head",e.cell,"displaytype");
var utlv_IsGridCheckAll = obj.getCellText(-1,e.cell);
if (celltype.toUpperCase() != "CHECKBOX") {
return;
}
var dsObj = eval(obj.binddataset);
var v_Colid = obj.getCellProperty("body", e.cell, "text").replace("bind:", "");
if (utlv_IsGridCheckAll == 1) {
utlv_IsGridCheckAll = 0;
} else {
utlv_IsGridCheckAll = 1;
}
dsObj.enableevent = false;
for (var i=0; i<dsObj.getRowCount(); i++) {
dsObj.setColumn(i, v_Colid, utlv_IsGridCheckAll);
}
obj.setCellProperty( "Head", e.cell, "expr", utlv_IsGridCheckAll);
dsObj.enableevent = true;
}
/**
* Grid에서 선택한 Row를 지정한 데이타셋으로 복사
* @param : obj - Grid Object
* @param dsObj - 복사할 대상 데이타셋 object
* @return : N/A
* @example : utlf_gridMultiSelectCopyRow(grd_leftList, dsRightList, "name")
*/
function utlf_gridMultiSelectCopyRow(obj:Grid, dsObj, strColNm) {
var nCrow = 0;
var nCnt = 0;
//Grid Binddataset
var strGrdDsNm = obj.binddataset;
var arrSelectedstartRow = obj.selectstartrow;
var arrselectendrow = obj.selectendrow;
nCnt = arrSelectedstartRow.length;
if (nCnt > 1) {
for (var i=0;i<nCnt;i++) {
nCrow = parseInt(arrSelectedstartRow[i]);
var strFindKey = eval(strGrdDsNm).getColumn(nCrow,strColNm);
//데이타 중복이 아닌경우
if (dsObj.findRow(strColNm, strFindKey) == -1) {
//왼쪽 리스트에 선택한 값을 오른쪽 리스트로 이동
var nRow = dsObj.addRow();
dsObj.copyRow(nRow,eval(strGrdDsNm),nCrow);
}
}
} else {
if (arrSelectedstartRow < 0) return;
for (var i=arrSelectedstartRow;i<=arrselectendrow;i++) {
var strFindKey = eval(strGrdDsNm).getColumn(i,strColNm);
//데이타 중복이 아닌경우
if (dsObj.findRow(strColNm, strFindKey) == -1) {
//왼쪽 리스트에 선택한 값을 오른쪽 리스트로 이동
var nRow = dsObj.addRow();
dsObj.copyRow(nRow,eval(strGrdDsNm),i);
}
}
}
}
/**
* Grid에서 선택한 Row를 삭제
* @param : obj - Grid Object
* @return : N/A
* @example : utlf_gridMultiSelectDelRow(grd_rightList)
*/
function utlf_gridMultiSelectDelRow(obj:Grid) {
var nCrow = 0;
var nCnt = 0;
//Grid Binddataset
var strGrdDsNm = obj.binddataset;
var arrSelectedstartRow = obj.selectstartrow;
var arrselectendrow = obj.selectendrow;
nCnt = arrSelectedstartRow.length;
if (nCnt > 1) {
var arr1 = new Array(nCnt);
for (var i=0;i<arr1.length;i++) {
arr1[i] = arrSelectedstartRow[i];
}
arr1.sort();
arr1.reverse();
for (var i=0;i<nCnt;i++) {
nCrow = parseInt(arr1[i]);
//오른쪽 리스트에 선택한 값을 리스트에서 삭제
eval(strGrdDsNm).deleteRow(nCrow);
}
} else {
for (var i=arrselectendrow;i>=arrSelectedstartRow;i--) {
//arrSelectedstartRow 값이 변하는 관계로 return 처리
if (arrSelectedstartRow < 0) return;
//오른쪽 리스트에 선택한 값을 리스트에서 삭제
eval(strGrdDsNm).deleteRow(i);
}
}
obj.selecttype = "row";
obj.selecttype = "multiarea";
for(var i=0; i<eval(strGrdDsNm).getRowCount(); i++){
eval(strGrdDsNm).selectRow(i, false);
}
}
/**
* 도움말 팝업창 호출
* @param : obj - Button Object
* @param e - ClickEventInfo
* @return : N/A
* @example : utlf_callHelp()
*/
function utlf_callHelp(obj:Button, e:ClickEventInfo)
{
var strUrl = "http://"+gv_ServerUrl+"/popup_help.jsp?"+"pgeid="+pv_fileNm+"&SESSIONKEY1="+SESSIONKEY1+"&SESSIONVAL1="+SESSIONVAL1+"&SESSIONKEY2="+SESSIONKEY2+"&SESSIONVAL2="+SESSIONVAL2+"&SSO_IDP_ID="+SSO_IDP_ID;
//var strHeader = "Content-Type: application/x-www-form-urlencoded\r\n";
//strHeader += "Cookie : SP_SESSIONID="+gv_ssoSessionValue+" _KWE_PTL_IDP_session="+"qwer1234sdfg"+"; domain=112.136.170.16; \n";
//var objBuffer = new Buffer;
//objBuffer.appendText("pgeid="+pv_fileNm+"&SP_SESSIONID="+gv_ssoSessionValue+"&_KWE_PTL_IDP_session="+"qwer1234sdfg"); //값을 넘겨줘야 하는 경우
//objBuffer.appendText("pgeid="+pv_fileNm+"&SESSIONKEY1="+SESSIONKEY1+"&SESSIONVAL1="+SESSIONVAL1+"&SESSIONKEY2="+SESSIONKEY2+"&SESSIONVAL2="+SESSIONVAL2+"&SSO_IDP_ID="+SSO_IDP_ID);
//trace(pv_fileNm+"help popup:"+strUrl);
//atx_cookie.Navigate2("about:blank","wikiViewerPopup");
div_atx.atx_cookie.Navigate("about:blank");
div_atx.atx_cookie.Navigate("javascript:window.open('"+strUrl+"','wikiViewerPopup','width=815,height=750,toolbar=no, directories=no, status=no, menubar=no')");
//atx_cookie.Navigate2(strUrl,null,"_New",objBuffer.data,strHeader);
//var rtn_val = utlf_Dialog("Popup_Help", "COMM::comp_helpFrm.xfdl", "");
//alert(st_title.text + " 의 도움말 ");
}
/**
* QNA 팝업창 호출
* @param : obj - Button Object
* @param e - ClickEventInfo
* @return : N/A
* @example : utlf_callQna()
*/
function utlf_callQna(obj:Button, e:ClickEventInfo)
{
//var rtn_val = utlf_Dialog("Popup_Qna", "COMM::comp_qna.xfdl", "");
var strUrl = "http://"+gv_ServerUrl+"/popup_qna.jsp?pageUrl=http://112.136.170.16:5012/sqc_qur_qn00_006.do";
// var strHeader = "Content-Type: application/x-www-form-urlencoded\r\n";
// var objBuffer = new Buffer;
// objBuffer.appendText("pageUrl=http://112.136.170.16:5012/sqc_qur_qn00_006.do");
div_atx.atx_cookie.Navigate("about:blank");
div_atx.atx_cookie.Navigate("javascript:window.open('"+strUrl+"','qnaPopup','width=1000,height=680,resizable=no,status=0,menubar=0,toolbar=no,location=no,scrollbars=yes')");
}
/**
* 절차서 팝업창 호출
* @param : obj - Button Object
* @param e - ClickEventInfo
* @return : N/A
* @example : utlf_callPal()
*/
function utlf_callPal(obj:Button, e:ClickEventInfo) {
var strSccd = gds_userinfo.getColumn(0,"conctAtptScCode");//PAGE_ID=pv_fileNm&SD_CODE=strSccd
var strUrl = "http://112.136.170.16:5102/popup_pmm.jsp";
//width=1000,height=680,resizable=no,status=0,menubar=0,toolbar=no,location=no,scrollbars=yes
//atx_cookie.Navigate("about:blank");
//atx_cookie.Navigate("javascript:window.open('"+strUrl+"','palPopup','width=1000,height=680,resizable=no,status=0,menubar=0,toolbar=no,location=no,scrollbars=yes')");
var strHeader = "Content-Type: application/x-www-form-urlencoded\r\n";
var objBuffer = new Buffer;
objBuffer.appendText("PAGE_ID="+pv_fileNm+"&SD_CODE="+strSccd);
div_atx.atx_cookie.Navigate2(strUrl,"","_self",objBuffer.data,strHeader);
}
/**
* 댓글달기 팝업창 호출
* @param : obj - Button Object
* @param e - ClickEventInfo
* @return : N/A
* @example : utlf_callReply()
*/
function utlf_callReply(obj:Button, e:ClickEventInfo)
{
var rtn_val = utlf_Dialog("Popup_Reply", "COMM::comp_reply.xfdl", "");
}
/**
* Grid에서 선택한 Row를 지정한 데이타셋으로 복사
* @param : obj - Grid Object
* @param dsObj - 복사할 대상 데이타셋 object
* @return : N/A
* @example : utlf_gridCheckedMoveRow(grd_leftList, dsRightList, "name", "chk_col")
*/
function utlf_gridCheckedMoveRow(obj:Grid, dsObj, strColNm, strChkColNm) {
var nCrow = 0;
var nCnt = 0;
//Grid Binddataset
var strGrdDsNm = obj.binddataset;
nCnt = eval(strGrdDsNm).getRowCount();
for (var i=0;i<nCnt;i++) {
if (eval(strGrdDsNm).getColumn(i,strChkColNm) == "1") {
nCrow = i;
var strFindKey = eval(strGrdDsNm).getColumn(nCrow,strColNm);
//데이타 중복이 아닌경우
if (dsObj.findRow(strColNm, strFindKey) == -1) {
//왼쪽 리스트에 선택한 값을 오른쪽 리스트로 이동
var nRow = dsObj.addRow();
dsObj.copyRow(nRow,eval(strGrdDsNm),nCrow);
}
}
}
// Dataset의 Row 삭제 시 해당 RowPosition을 위해 뒤에서 부터 삭제
for (i=eval(strGrdDsNm).rowcount -1; i>=0; i--) {
//trace(" *** " + eval(strGrdDsNm).getColumn(i, strChkColNm));
if (eval(strGrdDsNm).getColumn(i, strChkColNm)=="1") eval(strGrdDsNm).deleteRow(i);
}
}
/**
* Grid에서 선택한 Row를 제외한 Row들의 값을 원래의값으로 복구
* @param : dsObj - Grid BindDataset Object
* @param column - 체크컬럼명
* @return : N/A
* @example : utlf_dsSelUpdatedRow(ds_list, "chk_col")
*/
function utlf_dsSelUpdatedRow(dsobj,strColNm) {
var nRowCnt = dsobj.getRowCount();
var nColCnt = dsobj.getColCount();
for (var i=0;i<nRowCnt;i++) {
var strChk = dsobj.getColumn(i,strColNm);
for (var j=0;j<nColCnt;j++) {
if (strChk != "1") {
if (dsobj.getOrgColumn(i,j) != dsobj.getColumn(i,j)) {
dsobj.setColumn(i,j,dsobj.getOrgColumn(i,j));
}
}
}
}
//추가된 Row삭제처리
for (var i=nRowCnt;i>=0;i--) {
if (dsobj.getRowType(i) == 2) {
dsobj.deleteRow(i);
}
}
}
/**
* Dataset의 변경(Update) 여부 확인
* @param : dsObj - Dataset Object
* @return : true/false
* @example : utlf_isUpdate(ds_list)
*/
function utlf_isUpdate(dsObj) {
if (dsObj.getRowCount() < 1 ) return false;
for (var i=0; i<dsObj.getRowCount(); i++) {
//trace(i + " :: " + dsObj.getRowType());
if (dsObj.getRowType(i) != 1) {
return true;
break;
}
}
return false;
}
/**
* Grid에서 선택한 Row를 지정한 데이타셋으로 이동
* @param : obj - Grid Object
* @param dsObj - 복사할 대상 데이타셋 object
* @return : N/A
* @example : utlf_gridMultiSelectMoveRow(grd_leftList, dsRightList, "name")
*/
function utlf_gridMultiSelectMoveRow(obj:Grid, dsObj, strColNm) {
var nCrow = 0;
var nCnt = 0;
//Grid Binddataset
var strGrdDsNm = obj.binddataset;
var arrSelectedstartRow = obj.selectstartrow;
var arrselectendrow = obj.selectendrow;
nCnt = arrSelectedstartRow.length;
if (nCnt > 1) {
for (var i=0;i<nCnt;i++) {
for (var j=parseInt(arrSelectedstartRow[i]);j<=parseInt(arrselectendrow[i]);j++) {
nCrow = j;//parseInt(arrSelectedstartRow[i]);
var strFindKey = eval(strGrdDsNm).getColumn(nCrow,strColNm);
//데이타 중복이 아닌경우
if (dsObj.findRow(strColNm, strFindKey) == -1) {
//왼쪽 리스트에 선택한 값을 오른쪽 리스트로 이동
var nRow = dsObj.addRow();
dsObj.copyRow(nRow,eval(strGrdDsNm),nCrow);
}
}
}
//이동한 Row삭제
var nTrow;
for (var k=0;k<dsObj.getRowCount();k++) {
nTrow = eval(strGrdDsNm).findRow(strColNm, dsObj.getColumn(k,strColNm));
eval(strGrdDsNm).deleteRow(nTrow);
}
} else {
if (arrSelectedstartRow < 0) return;
for (var i=arrSelectedstartRow;i<=arrselectendrow;i++) {
var strFindKey = eval(strGrdDsNm).getColumn(i,strColNm);
//데이타 중복이 아닌경우
if (dsObj.findRow(strColNm, strFindKey) == -1) {
//왼쪽 리스트에 선택한 값을 오른쪽 리스트로 이동
var nRow = dsObj.addRow();
dsObj.copyRow(nRow,eval(strGrdDsNm),i);
}
}
//이동한 Row삭제
var nTrow;
for (var k=0;k<dsObj.getRowCount();k++) {
nTrow = eval(strGrdDsNm).findRow(strColNm, dsObj.getColumn(k,strColNm));
eval(strGrdDsNm).deleteRow(nTrow);
}
}
obj.selecttype = "row";
obj.selecttype = "multirow";
for(var i=0; i<eval(strGrdDsNm).getRowCount(); i++){
eval(strGrdDsNm).selectRow(i, false);
}
}
/**
* Object의 type을 문자열로 얻어온다.
* @param : oObj - type을 얻어올 Object
* @return : string
* @example : utlf_GetObjType(oObj)
*/
function utlf_GetObjType(oObj)
{
var sType;
if( utlf_IsNull(oObj) ) return "";
sType = oObj.toString().valueOf().substr(1,6);
if( sType.toLowerCase() == "object" )
return utlf_Mid(oObj.toString().valueOf(), " ", "]");
return "";
}
/**
* Check 대상 Value가 Null일 경우 지정된 값으로 대체
* @param : sVal - Null Check 대상 Value
* @param sRepVal - Null일 경우 대체 Value
* @return : N/A
* @example : utlf_nvl(sVal, sRepVal)
*/
function utlf_nvl(sVal, sRepVal)
{
if (utlf_IsNull(sVal)) return sRepVal;
else return sVal;
}
/**
* 파일을 추가한다. 대화상자를 통해 파일을 선택하고
* 리스트를 표시한다.
* @param : dsObj - 첨부파일 리스트 테이타셋
* @param sRepVal - Null일 경우 대체 Value
* @return : N/A
* @example : utlf_fileAttach(dsObj, strAtchFileNm, strFileCoursNm)
*/
function utlf_fileAttach(dsObj, strAtchFileNm, strFileCoursNm) {
//file 관련 Object 선언
vFile = new VirtualFile;
FileDialog0 = new FileDialog;
HttpObject0 = new HttpObject;
HttpObject0.timeout = 300;
//HttpObject 이벤트 지정
HttpObject0.onstatus.setHandler(utlf_httpObject_onstatus);
HttpObject0.onload.setHandler(utlf_httpObject_onload);
//lfn_addcolumn();//체크 컬럼 추가
var vFileList = FileDialog0.open("FileOpen", FileDialog.MULTILOAD, "%MYDOCUMENT%");
if(!vFileList) {
return; //선택된 file 없을경우 처리
}
var nRow;
for (var i=0;i<vFileList.length;i++) {
nRow = dsObj.addRow();
dsObj.setColumn(nRow,strAtchFileNm,vFileList[i].filename);
dsObj.setColumn(nRow,strFileCoursNm,vFileList[i].path);
}
}
/**
* 파일을 서버에 업로드한다.(Sync방식)
* @param : dsObj - 첨부파일 리스트 테이타셋
* @return : N/A
* @example : utlf_fileUpload(dsObj, strUrl, strAtchFileNm, strFileCoursNm)
*/
function utlf_fileUpload(dsObj, strServerUrl, strAtchFileNm, strFileCoursNm) {
if (dsObj.getRowCount() == 0) return true;
var strUrl = strServerUrl + strFileDir;
var strFilename = "";
var bSuccess = "";
var strFileUuid = "";
var rtn;
var nRow;
var nTotCnt = dsObj.getRowCount();
strAddFilenm = ""; //초기화
for (var i=0;i<nTotCnt;i++) {
//addfiles 골라내기
isCompleted = false;
if (dsObj.getRowType(i) == 2) {
strFilename = dsObj.getColumn(i,strFileCoursNm) + dsObj.getColumn(i,strAtchFileNm);
bSuccess = vFile.open(strFilename, VirtualFile.openRead | VirtualFile.openText );
//trace(strFilename + " open ::: " + bSuccess);
//파일 업로드
rtn = HttpObject0.upload(strUrl, FileDialog.LOAD, vFile, false);
// 업로드 리렉토리 + 파일 UUID(36자리) 형태로 메시지를 넘겨 받음
// 뒤의 36자리를 잘라내어 UUID로 저장함
strFileUuid = utlf_Right(strFileDir, 36);
strFileDir = utlf_Replace(strFileDir, strFileUuid, "");
// strAddfilenm에 UUID,파일이름,... 형태로 저장한 후 화면에서 hiddenUploadedFiles 값에 담아
// 서비스에 전달함
strAddFilenm += strFileUuid;
strAddFilenm += ",";
strAddFilenm += dsObj.getColumn(i,strAtchFileNm);
if (i < (nTotCnt-1)) {
strAddFilenm += ",";
}
strUrl = strServerUrl + strFileDir;
}
}
if (rtn == true) {
return true;
} else {
return rtn;
}
}
/**
* 서버에서 선택한 파일을 다운로드 한다.
* @param : obj - Grid Object
* @param e - event
* @param strServerUrl - 다운로드 url
* @param strAtchFileNm - 첨부파일명 컬럼
* @return : N/A
* @example : utlf_fileDown(obj, e, strServerUrl, strAtchFileNm)
*/
function utlf_fileDown(obj, e, strServerUrl, strAtchFileNm) {
//file 관련 Object 선언
vFile = new VirtualFile;
FileDialog0 = new FileDialog;
HttpObject0 = new HttpObject;
HttpObject0.timeout = 300;
//HttpObject 이벤트 지정
HttpObject0.onstatus.setHandler(utlf_httpObject_onstatus);
HttpObject0.onload.setHandler(utlf_httpObject_onload);
var dsObj = obj.binddataset;
var strDownFilenm = eval(dsObj).getColumn(e.row,strAtchFileNm);
var strFileId = eval(dsObj).getColumn(e.row,"fileId");
var strFileRefrnId = eval(dsObj).getColumn(e.row,"fileRefrnId");
var vFile_down = FileDialog0.open("file download",FileDialog.SAVE,"%MYDOCUMENT%",strDownFilenm);
var strUrl = strServerUrl + "?fileRefrnId="+strFileRefrnId+"&fileId="+strFileId;
if (vFile_down)
{
var rtn = HttpObject0.download(strUrl , vFile_down, true);
}
vFile_down.close();
}
/**
* 파일을 삭제한다.
* @param : dsObj - 첨부파일 리스트 테이타셋
* @param chkColnm - 체크컬럼명
* @param dsDelObj - 삭제된 파일용 데이타셋
* @return : N/A
* @example : utlf_fileDel(dsObj, chkColnm, dsDelObj)
*/
function utlf_fileDel(dsObj, chkColnm, dsDelObj) {
//체크되어있는 데이타만 처리
dsDelObj.clearData();
for (var i=dsObj.getRowCount();i>=0;i--) {
if (dsObj.getColumn(i,chkColnm) == "1") {
nRow = dsDelObj.addRow();
dsDelObj.copyRow(nRow,dsObj,i);
dsObj.deleteRow(i);
}
}
//trace(dsDelObj.saveXML());
}
/**
* HTTPOBJECT 파일업로드/다운로드 onstatus 이벤트
* @param : obj - httpObject
* @param e - event
* @return : N/A
* @example :
*/
function utlf_httpObject_onstatus(obj:HttpObject, e:HttpObjStatusEventInfo)
{
trace("status:: "+e.status);
}
/**
* HTTPOBJECT 파일업로드/다운로드 완료 이벤트
* @param : obj - httpObject
* @param e - event
* @return : N/A
* @example :
*/
function utlf_httpObject_onload(obj:HttpObject, e:HttpObjLoadEventInfo)
{
trace("return code: "+e.errorcode+" return folder::"+e.errormsg);
if (e.errorcode == 0) {
if (e.errormsg != "Success") {
strFileDir = e.errormsg;
}
}
}
/**
* gds_userinfo(사용자 정보)의 정보 처리
* @param : strKey - User 정보 항목(string)
* @return : string(Value)
* @example :
*/
function utlf_getSession(strKey)
{
var bInvalidKey = false;
var sInvalidKeyId = "";
var sValidKeyId = "";
//임시 작업
if(strKey == "userid"){
bInvalidKey = true;
sInvalidKeyId = strKey;
sValidKeyId = "usrid";
strKey = "usrid";
}else if(strKey == "userName"){
bInvalidKey = true;
sInvalidKeyId = strKey;
sValidKeyId = "userNm";
strKey = "userNm";
}
if(bInvalidKey && (smf_IsLocalMode || smf_IsDevMode())){
// var sMessage = format("세션값 {0}는 폐기됐습니다. 2010년 12월31일까지 utlf_getSession('{1}')로 변경하세요.\n"
// +"이 메시지는 검수서버에서는 나타나지 않습니다.", [sInvalidKeyId, sValidKeyId]);
// alert(sMessage);
}
var findRow = gds_userinfo.findRow( "key", strKey );
if (findRow == -1) {
if(gds_userinfo.getColumn(0, strKey) == "undefined"){
return false;
}else{
return gds_userinfo.getColumn(0, strKey);
}
} else {
return gds_userinfo.getColumn(findRow, "value");
}
}
/**
* sText를 String으로 형변환
* undefined -> ""
* null -> ""
* 1 -> "1"
* "" -> ""
* 1.1 -> "1.1"
* @param sText
* @return String
* @see
*/
function utlf_Str(sText){
if(sText == undefined) return "";
if(sText == null) return "";
if(sText instanceof String) return sText;
return ""+sText;
}
/**
* default_typedef.xml에 정의된 service url정보를 가져온다.
* @param argPrefix as String
* @return String
* @see
*/
function utlf_getSvcUrl(argPrefix)
{
var arrServices = application.services;
var bFindRtn = false;
for (var i = 0; i < arrServices.length; i++) {
if (arrServices[i].prefixid == argPrefix) {
bFindRtn = true;
break;
}
}
if (bFindRtn) {
return arrServices[i].url;
} else {
return undefined;
}
}
/**
* Global에 정의된 Cache항목의 Key 값 설정
* @param strBiz : 단위업무 코드
* @param strKey : Cache 처리 시 Key
* @param strVal : Key에 대한 Value
* @return N/A
* @see
*/
function utlf_setCache(strBiz, strKey, strVal) {
if (utlf_IsNull(strBiz)) return false;
if (utlf_IsNull(strKey)) return false;
//if (utlf_IsNull(strVal)) return false;
var fStr = "bizid=='" + strBiz + "' && key=='" + strKey + "' && type=='C'";
var findRow = gds_cache.findRowExpr(fStr);
if (findRow < 0) {
iRowPos = gds_cache.addRow();
gds_cache.setColumn(iRowPos, "bizid", strBiz);
gds_cache.setColumn(iRowPos, "key", strKey);
gds_cache.setColumn(iRowPos, "value", strVal);
gds_cache.setColumn(iRowPos, "type", "C");
} else {
gds_cache.setColumn(findRow, "value", strVal);
}
}
/**
* Global에 정의된 Cache 항목의 Key을 가져옴
* @param strBiz : 단위업무 코드
* @param strKey : Cache 처리 시 Key
* @return N/A
* @see
*/
function utlf_getCache(strBiz, strKey) {
if (utlf_IsNull(strBiz)) return false;
if (utlf_IsNull(strKey)) return false;
var fStr = "bizid=='" + strBiz + "' && key=='" + strKey + "' && type=='C'";
var findRow = gds_cache.findRowExpr(fStr);
if (findRow < 0) {
return "";
} else {
return gds_cache.getColumn(findRow, "value");
}
}
/**
* 업무단의 Session 항목 정의
* @param dsObj : 단위업무 Session Dataset(Object)
* @param strBiz : 단위업무 코드
* @param strKey : Dataset의 Code Column 명(string)
* @param strVal : Dataset의 value Column 명(string)
* @return N/A
* @see
*/
function utlf_setBizSession(dsObj, strBiz, strKey, strVal) {
if (dsObj.getRowCount() < 1) return false;
if (utlf_IsNull(strBiz)) return false;
if (utlf_IsNull(strKey)) return false;
if (utlf_IsNull(strVal)) return false;
var iRow;
for (var i=0; i<dsObj.getRowCount(); i++) {
iRow = gds_cache.addRow();
gds_cache.setColumn(iRow, "bizid", strBiz);
gds_cache.setColumn(iRow, "key", dsObj.getColumn(i, strKey));
gds_cache.setColumn(iRow, "value", dsObj.getColumn(i, strVal));
gds_cache.setColumn(iRow, "type", "S");
}
return true;
}
/**
* 업무단의 Session 항목 가져옴
* @param strBiz : 단위업무 코드
* @param strKey : Session Key
* @return N/A
* @see
*/
function utlf_getBizSession(strBiz, strKey) {
if (utlf_IsNull(strBiz)) return false;
if (utlf_IsNull(strKey)) return false;
var fStr = "bizid=='" + strBiz + "' && key=='" + strKey + "' && type=='S'";
var findRow = gds_cache.findRowExpr(fStr);
if (findRow < 0) {
return false;
} else {
return gds_cache.getColumn(findRow, "value");
}
}
/**
* FusionChart Object를 생성한다.
* @param chartNm - Chart Object name
* @return 없음
* @example utlf_FusionChart(atx_chart1,cbo_type1.value,strXml)
*/
function utlf_FusionChart(objChart,nLeft,nTop,nRight,nBottom) {
var _objAry = objChart.split(".");
if(_objAry.length > 1){
var _prefixObj = eval(objChart.substr(0,objChart.length - (_objAry[_objAry.length-1].length + 1)));
if (!_prefixObj.isValidObject( _objAry[_objAry.length-1])) {
alert("FusionChart object가 존재하지 않습니다.");
return;
}
}else{
if (!isValidObject(objChart)) {
alert("FusionChart object가 존재하지 않습니다.");
return;
}
}
eval(objChart).progid = "{D27CDB6E-AE6D-11CF-96B8-444553540000}";
eval(objChart).codebase = "http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab";
eval(objChart).init(objChart);//,nLeft,nTop,nRight,nBottom
eval(objChart).show();
}
/**
* Form ID를 넘기면 MenuId를 return..
* @param strFormID
* @return MenuId
* @example utlf_mainFormIdOpen(this.name, "key1=abcd,key2=1234")
*/
function utlf_mainFormIdOpen(strFromId,strArg) {
var sMenuId=gds_menuinfo.lookup("pgeid",strFromId,"menuId");
if(utlf_IsNull(sMenuId)){
alert("메뉴아이디가 존재하지않습니다.");
return;
}else{
sysf_chkOpenMenu(sMenuId, strArg, true);
}
}
/**
* 메인화면에서 다른 메인화면을 호출한다.
* @param strMenuId - MenuID값
* @return 없음
* @example utlf_mainFormOpen("NA10010", "key1=abcd,key2=1234")
*/
function utlf_mainFormOpen(strMenuId, strArg) {
sysf_chkOpenMenu(strMenuId, strArg, true);
}
/**
* 메인화면을 닫는다.(화면에서 필요시 사용)
* @param obj - 실행중인 화면Object
* obj - 실행중인 화면menuid
* @return 없음
* @example utlf_mainFormClose(obj)
* @example utlf_mainFormClose("NA10010")
* @example utlf_mainFormClose("NA10010,NA10020")
*/
function utlf_mainFormClose(obj) {
var sFrmID = obj.pv_winKey;
if (gv_mdiFlag == false && sFrmID == undefined) {
//quick view가 아니고 argument가 form object인 경우
sysf_tabOnClose(sFrmID);
} else {
var arrStr = new Array();
arrStr = obj.split(",");
for (var i=0;i<arrStr.length;i++) {
strMenuId = arrStr[i];
//mdi form control key 찾기
var winKey = gds_openwininfo.lookup("menuid", strMenuId,"winid");
if (winKey == undefined) {
alert("해당화면을 찾을 수 없습니다.");
return;
}
//화면 닫기
sysf_tabOnClose(winKey);
}
}
}
/**
* PC의 날짜와 시각을 설정한다.
* @param strTime - 년월일을 포함한 문자열(yyyyMMddhhmmss)
* @return 없음
* @example utlf_setTime("20100803100200")
*/
function utlf_setTime(strTime) {
var extComapi = new ExtCommon();
extComapi.setTime(strTime);
}
/**
* 날짜,시간, 포멧을 넣으면 해당되는 포멧으로 반환한다(java의 SimpleDateFormat과 비슷함)
* ex1) var date = '20100729090134';
* date.dateFormat("yyyy년MM월dd일 hh시mm분ss초"); => 2010년07월29일 09시01분34초
* ex2) var date = '20100729';
* date.dateFormat("yyyy.MM.dd"); => 2010.07.29
*
* @param format 포멧( 'a' 옵션을 넣으면 오전,오후구분, 없으면 24시간표시)
*/
String.prototype.dateFormat = function(format) {
if(this == '' || this.length < 8) return 'Error String for format';
if(format == null || format == undefined) return 'Error Date format';
var date = this.length == 8 || this.length > 8 ? this.substring(0, 8) : '';
var time = this.length == 14 ? this.substring(8, 14) : '';
if(date != null || date != undefined){
date = date.replace(/[\s\-\/]/g, "");
if(date.length == 8) {
format = format.replace(/yyyy/g, date.substring(0, 4));
format = format.replace(/MM/g, date.substring(4, 6));
format = format.replace(/dd/g, date.substring(6, 8));
}else if(date.length == 6) {
format = format.replace(/yyyy/g, date.substring(0, 2));
format = format.replace(/MM/g, date.substring(2, 4));
format = format.replace(/dd/g, date.substring(4, 6));
}
}
if(time != null || time != undefined) {
time = time.replace(/[\s\-\/]/g, "");
if(time.length >= 4) {
//만약 오전,오후 format check( 'a' 옵션)
var hour = Number(format.substring(0, 2));
if(format.match(/a/g) != null) {
if(hour > 12) {
format = format.replace(/a/g, "오후");
hour = hour - 12;
} else {
format = format.replace(/a/g, "오전");
}
format = format.replace(/hh/g, hour+"");
}else {
format = format.replace(/hh/g, time.substring(0, 2));
}
format = format.replace(/mm/g, time.substring(2, 4));
}
if(time.length == 6) {
format = format.replace(/ss/g, time.substring(4, 6));
}
}
return format;
}
/**
* form이 속해있는 시스템코드, 코드명을 구할때 사용한다.
* @param objNm : 파일명 또는 form ID
* @param gbn : 구분 ( NM / CD )
* @return 시스템코드명 배열
* @example utlf_sysGbnNm("mis_sdlca00_m00", "NM") -> 교무업무,중,학생생활,자격증및인증취득상황, mis_sdlca00_m00
* @example utlf_sysGbnNm("mis_sdlca00_m00", "CD") -> SW,MIS,SDL,CA,mis_sdlca00_m00
*/
function utlf_sysGbnNm(objNm,gbn) {
var arrSysNm = new Array();
if(gbn == "NM"){
arrSysNm[0] = gdsSubSys.lookup("cd",objNm.substr(0,3).toUpperCase(),"upNm");
arrSysNm[1] = gdsSubSys.lookup("cd",objNm.substr(0,3).toUpperCase(),"nm");
gdsBigGbn.filter("upCd=='"+objNm.substr(0,3).toUpperCase()+"'");
arrSysNm[2] = gdsBigGbn.lookup("cd",objNm.substr(4,3).toUpperCase(),"nm");
gdsMidGbn.filter("subCd=='"+objNm.substr(0,3).toUpperCase()+"' && upCd=='"+objNm.substr(4,3).toUpperCase()+"'" );
arrSysNm[3] = gdsMidGbn.lookup("cd",objNm.substr(7,2).toUpperCase(),"nm");
arrSysNm[4] = objNm;
}else if(gbn == "CD"){
arrSysNm[0] = gdsSubSys.lookup("cd",objNm.substr(0,3).toUpperCase(),"upCd");
arrSysNm[1] = objNm.substr(0,3).toUpperCase();
arrSysNm[2] = objNm.substr(4,3).toUpperCase();
arrSysNm[3] = objNm.substr(7,2).toUpperCase();
arrSysNm[4] = objNm;
}
return arrSysNm;
}
/**
* 첨부파일의 사이즈를 구한다.
* @param filenm : 파일경로
* @param strUnit : 구분(K,M,G,B)
* @return 파일사이즈
* @example utlf_getFileSize("c:\Documents and Settings\neon\My Documents\1234.xls") -> Kbyte사이즈
* @example utlf_getFileSize("c:\Documents and Settings\neon\My Documents\1234.xls", "M") -> Mbyte사이즈
*/
function utlf_getFileSize(filenm, strUnit) {
if (utlf_IsNull(strUnit)) {
strUnit = "K";
}
//Object 선언
vFile = new VirtualFile;
bSuccess = vFile.open(filenm, VirtualFile.openRead | VirtualFile.openText );
nFileSize = vFile.getFileSize();
switch (strUnit) {
case "B": //byte
nFileSize = nFileSize;
break;
case "K": //Kilo byte
nFileSize = Math.round(nFileSize / 1024,1);
break;
case "M": //Mega byte
nFileSize = Math.round((nFileSize / 1024)/1024,1);
break;
case "G": //Giga byte
nFileSize = Math.round(((nFileSize / 1024)/1024)/1024,1);
break;
default: //Kilo byte
nFileSize = Math.round(nFileSize / 1024,1);
break;
}
return nFileSize;
}
/**
* 년월달력 팝업디비젼을 동적으로 생성한다.
* @param oobj: Calendar
* @param e: MouseEventInfo
* @return 년월로 구성된 문자열
* @example utlf_makeCalMonthPopdiv -> 달력컴포넌트 이벤트에서 직접 호출
*/
function utlf_monthCalendar(obj:Calendar, e:MouseEventInfo) {
if (e.fromreferenceobject == "[object Button]") {
var nLeft = system.clientToScreenX(obj,0);
var nTop = system.clientToScreenY(obj,0) + (obj.position.bottom - obj.position.top);
var objParentForm = this.getOwnerFrame();
/////////////////////////////////////////////////
var objL = obj.position.left;
var objT = obj.position.bottom;
//모니터 해상도
var monitorX = system.screenwidth;
var monitorY = system.screenheight;
/////////////////////////////////////////////////
// Create Object
var objPopupDiv = new PopupDiv();
objPopupDiv.init("popdiv_calMonth", 0, 0, 194, 182);
// Add Object to Parent Form
this.addChild("popdiv_calMonth", objPopupDiv);
objPopupDiv.url = "COMM::comp_calMonth.xfdl";
objPopupDiv.style.border = "1 solid #d9dadcff";
objPopupDiv.style.color = "#d9dadcff";
// Show Object
objPopupDiv.show();
if (!utlf_IsNull(obj.value)) {
popdiv_calMonth.sta_year.text = obj.getYear();
eval("popdiv_calMonth.img_month" + obj.getMonth()).image = "theme://images\\cal_num" + obj.getMonth() + "R.png";
} else {
//현재일자 가져와서 세팅
var strToday = utlf_Today();
popdiv_calMonth.sta_year.text = strToday.substr(0,4);
var nMonth = parseInt(strToday.substr(4,2));
var strImgNm = "theme://images\\cal_num" + nMonth.toString() + "R.png";
eval("popdiv_calMonth.img_month" + nMonth.toString()).image = strImgNm;
}
//팝업위치 조정(모니터 우측으로 넘어가지 않도록 처리)
if ((nLeft+objPopupDiv.position.width) > monitorX) {
nLeft = monitorX - objPopupDiv.position.width;
}
//팝업위치 조정(모니터 아래로 넘어가지 않도록 처리)
if ((nTop+objPopupDiv.position.height) > monitorY) {
nTop = nTop - objPopupDiv.position.height - (obj.position.bottom-obj.position.top);
}
var rtnvalue = popdiv_calMonth.trackPopup(nLeft-1, nTop-1, 194, 182);
// Remove Object form Parent Form
this.removeChild("popdiv_calMonth");
// Destroy Object
objPopupDiv.destroy();
objPopupDiv = null;
//value binding
if (!utlf_IsNull(rtnvalue)) {
obj.value = rtnvalue;
}
//calendar popwindow hide
obj.dropdown();
}
}
/////////////////////////////////////////////////////////////////////////////////////////////
// Batch File Upload / Download
// 최원 선임님 요청
/////////////////////////////////////////////////////////////////////////////////////////////
function utlf_batchFileUpload(dsObj, strAtchFileNm, strFileCoursNm){
var strServerUrl = "http://" + gv_ServerUrl + "/alc_cor_fl01_004.xp?fileDir=";
//var strServerUrl = "svc_neis::" + gv_ServerUrl + "/alc_cor_fl01_004.xp?fileDir=";
return utlf_fileUpload(dsObj, strServerUrl, strAtchFileNm, strFileCoursNm);
}
/**
* CSV 파일업로드/다운로드 완료 이벤트
* @param : obj - httpObject
* @param e - event
* @return : N/A
* @example :
*/
function utlf_batchFileDown_complete(obj:HttpObject, e:HttpObjLoadEventInfo)
{
trace("return code: "+e.errorcode+" return folder::"+e.errormsg);
}
/**
* 배치 실행 로그를 조회하는 기능
* @param : jobId - batch Job ID
* @param : uuidParam - 배치 실행시 발생시키는 uuid
* @return : dsBatchResult - 배치 실행정보를 담고 있는 Dataset
* @example : utlf_srchBatchResiult("exampleFiletoFileBatch",
*/
function utlf_srchBatchResult(stringVal, jobName, callback){
var dsInBatchMonitoring = "";
var dsOutBatchMonitoring = "";
//조회용 Dataset 생성
if (sysf_IsNull(objects("_dsInBatchMonitoring"))) {
trace("여긴 if");
dsInBatchMonitoring = new Dataset;
dsInBatchMonitoring.name = "_dsInBatchMonitoring";
this.addChild(dsInBatchMonitoring.name, dsInBatchMonitoring);
} else {
trace("여긴 else");
dsInBatchMonitoring = objects("_dsInBatchMonitoring");
dsInBatchMonitoring.clear();
}
dsInBatchMonitoring.addColumn("stringVal", "STRING", 255);
dsInBatchMonitoring.addColumn("jobName", "STRING", 255);
dsInBatchMonitoring.addRow();
dsInBatchMonitoring.setColumn(0, 0, stringVal);
dsInBatchMonitoring.setColumn(0, 1, jobName);
trace("stringVal = " + stringVal + " jobName = " + jobName);
trace(dsInBatchMonitoring.getRowCount());
//조회용 Dataset 생성 종료
//배치 실행 상태 검색 결과 Dataset 생성 시작
if (sysf_IsNull(objects("_dsOutBatchMonitoring"))) {
dsOutBatchMonitoring = new Dataset;
dsOutBatchMonitoring.name = "_dsOutBatchMonitoring";
this.addChild(dsOutBatchMonitoring.name, dsOutBatchMonitoring);
} else {
dsOutBatchMonitoring = objects("_dsOutBatchMonitoring");
dsOutBatchMonitoring.clear();
}
dsOutBatchMonitoring.addColumn("jobInstanceId", "BIGDECIMAL", 19);
dsOutBatchMonitoring.addColumn("jobExecutionId", "BIGDECIMAL", 19);
dsOutBatchMonitoring.addColumn("version", "BIGDECIMAL", 19);
dsOutBatchMonitoring.addColumn("createTime", "STRING", 26);
dsOutBatchMonitoring.addColumn("startTime", "STRING", 26);
dsOutBatchMonitoring.addColumn("endTime", "STRING", 26);
dsOutBatchMonitoring.addColumn("status", "STRING", 10);
dsOutBatchMonitoring.addColumn("exitCode", "STRING", 100);
dsOutBatchMonitoring.addColumn("exitMessage", "STRING", 6000);
dsOutBatchMonitoring.addColumn("lastUpdated", "STRING", 26);
transaction("srchBatchResult",
"http://"+gv_ServerUrl+"/srch_batch_result.xp",
//"svc_neis::"+gv_ServerUrl+"/srch_batch_result.xp",
"dsBatchMonitoringSVO=_dsInBatchMonitoring",
"_dsOutBatchMonitoring=dsBatchMonitoringSVO_batchStatus",
"svcId='edusys.sc.alc.bat.mo.svc.BatchMonitoringSVC' voId='edusys.sc.alc.bat.mo.svc.BatchMonitoringSVO' method='selectBatchStatus'",
callback);
}
/**
* 배치 어플리케이션을 으로 생성된 CSV 파일을 다운로드 한다.
* @param fileId : 배치로 생성된 파일의 정보가 저장되어 있는 임시 테이블의 PK
* @param ext : 다운받을 파일의 기본 확장자, 입력되지 않을경우 .csv 로 저장한다.
* @param defLoc : 파일 Dialog가 실행되는 기본 위치
* @param defFileName : 파일 Dialog가 실행될때 저장파일명의 default로 뜰 이름
* @return true/false(파일 다운 성공여부, 다이얼로그를 닫으면 false를 리턴)
* @example utlf_batchDownload('down', 'CSV|*.csv|', 'c:\\', 'downFile.csv')
*/
function utlf_batchFileDownload(fileId, ext, defLoc, defFileName) {
//파라미터 null 체크
if(utlf_IsNull(fileId)){
alert("fileId가 null 입니다.");
return;
}
//업무에서 기본 디렉토리를 넣지 않은 경우 내문서 폴더를 기본으로 연다.
if(utlf_IsNull(defLoc)){
defLoc = "%MYDOCUMENT%";
}
//fileDialog에서 사용될 확장자가 입력되었는지 확인
if(utlf_IsNull(ext)){
ext = "CSV|*.csv|";
}
//fileDialog에서 사용될 defFileName이 입력되었는지 확인
if(utlf_IsNull(defFileName)){
defFileName = "";
}
FileDialog0 = new FileDialog();
FileDialog0.filter = ext; //확장자 설정
//var _vFile = FileDialog0.open("배치용 파일 다운로드", FileDialog.SAVE, defLoc, "");
var _vFile = FileDialog0.open("배치용 파일 다운로드", FileDialog.SAVE, defLoc, defFileName);
var _rtn = false;
if(_vFile != null){ //Dialog에서 파일을 선택한 경우에만 다음 로직을 실행
HttpObject0 = new HttpObject();
HttpObject0.onload.setHandler(utlf_batchFileDown_complete);
//_rtn = HttpObject0.download("svc_neis::" + gv_ServerUrl + "/alc_cor_fl01_003.xp?fileId="+ fileId, _vFile, true);
_rtn = HttpObject0.download("http://" + gv_ServerUrl + "/alc_cor_fl01_003.xp?fileId="+ fileId, _vFile, true);
_vFile.close();
}
return _rtn;
}
/**
* 파일을 추가한다. 대화상자를 통해 파일을 선택하고
* 리스트를 표시한다.
* @param : dsObj - 첨부파일 리스트 테이타셋
* @param sRepVal - Null일 경우 대체 Value
* @return : N/A
* @example : utlf_batchFileAttach(dsObj, strAtchFileNm, strFileCoursNm)
*/
function utlf_batchFileAttach(dsObj, strAtchFileNm, strFileCoursNm, ext) {
//file 관련 Object 선언
vFile = new VirtualFile;
FileDialog0 = new FileDialog;
HttpObject0 = new HttpObject;
HttpObject0.timeout = 300;
//HttpObject 이벤트 지정
HttpObject0.onstatus.setHandler(utlf_httpObject_onstatus);
HttpObject0.onload.setHandler(utlf_httpObject_onload);
//fileDialog에서 사용될 확장자가 입력되었는지 확인
if(utlf_IsNull(ext)){
ext = "CSV|*.csv|";
}
//lfn_addcolumn();//체크 컬럼 추가
FileDialog0.filter = ext; //확장자 설정
var vFileList = FileDialog0.open("FileOpen", FileDialog.LOAD, "%MYDOCUMENT%");
if(!vFileList) {
return; //선택된 file 없을경우 처리
}
//기존에 들어가 있는 파일 정보를 Clear 처리
dsObj.clearData();
var nRow;
nRow = dsObj.addRow();
dsObj.setColumn(nRow,strAtchFileNm,vFileList.filename);
dsObj.setColumn(nRow,strFileCoursNm,vFileList.path);
return true;
}
/**
* 파일을 서버에 업로드한다.(Sync방식) - 배치에서 사용
* @param : dsObj - 첨부파일 리스트 테이타셋
* @return : N/A
* @example : utlf_fileUploadBatch(dsObj, strAtchFileNm, strFileCoursNm)
*/
function utlf_fileUploadBatch(dsObj, strAtchFileNm, strFileCoursNm) {
var strServerUrl = "http://" + gv_ServerUrl + "/alc_cor_fl01_004.xp?fileDir=";
if (dsObj.getRowCount() == 0) return true;
var strUrl = strServerUrl + strFileDir;
var strFilename = "";
var bSuccess = "";
var rtn;
var nRow;
var nTotCnt = dsObj.getRowCount();
strAddFilenm = ""; //초기화
for (var i=0;i<nTotCnt;i++) {
strFilename = dsObj.getColumn(i,strFileCoursNm) + dsObj.getColumn(i,strAtchFileNm);
bSuccess = vFile.open(strFilename, VirtualFile.openRead | VirtualFile.openText );
strAddFilenm += dsObj.getColumn(i,strAtchFileNm);
if (i < (nTotCnt-1)) {
strAddFilenm += ",";
}
//파일 업로드
rtn = HttpObject0.upload(strUrl, FileDialog.LOAD, vFile, false);
// 업로드 리렉토리 + 파일 UUID(36자리) 형태로 메시지를 넘겨 받음
// 뒤의 36자리를 잘라내어 UUID로 저장함
strFileUuid = utlf_Right(strFileDir, 36);
strFileDir = utlf_Replace(strFileDir, strFileUuid, "");
// strAddfilenm에 UUID,파일이름,... 형태로 저장한 후 화면에서 hiddenUploadedFiles 값에 담아
// 서비스에 전달함
strAddFilenm += strFileUuid;
strAddFilenm += ",";
strAddFilenm += dsObj.getColumn(i,strAtchFileNm);
if (i < (nTotCnt-1)) {
strAddFilenm += ",";
}
strUrl = strServerUrl + strFileDir;
}
if (rtn == true) {
return true;
} else {
return rtn;
}
}
/**
* 사업자 등록번호를 체크하는 함수
* @param : strBizNo - 사업자번호 (10자리)
* @return : true/false
* @example : utlf_isBizno("1234567890");
*/
function utlf_isBizno(strBizNo){
if (utlf_IsNull(strBizNo)) return false;
var as_Biz_no = strBizNo;
var isNum = true;
var I_TEMP_SUM = 0 ;
var I_TEMP = 0;
var S_TEMP;
var I_CHK_DIGIT = 0;
as_Biz_no = as_Biz_no.replace("-","");
I_TEMP_SUM = I_TEMP_SUM + parseInt(as_Biz_no.substring(0,1),10) ;
I_TEMP_SUM = I_TEMP_SUM + parseInt(as_Biz_no.substring(1,2),10) * 3 ;
I_TEMP_SUM = I_TEMP_SUM + parseInt(as_Biz_no.substring(2,3),10) * 7 ;
I_TEMP_SUM = I_TEMP_SUM + parseInt(as_Biz_no.substring(3,4),10) ;
I_TEMP_SUM = I_TEMP_SUM + parseInt(as_Biz_no.substring(4,5),10) * 3 ;
I_TEMP_SUM = I_TEMP_SUM + parseInt(as_Biz_no.substring(5,6),10) * 7 ;
I_TEMP_SUM = I_TEMP_SUM + parseInt(as_Biz_no.substring(6,7),10) ;
I_TEMP_SUM = I_TEMP_SUM + parseInt(as_Biz_no.substring(7,8),10) * 3 ;
I_TEMP = parseInt(as_Biz_no.substring(8,9),10)*5,'00';
if (I_TEMP < 10) {
S_TEMP = '0' + String(I_TEMP);
} else {
S_TEMP = String(I_TEMP);
}
I_TEMP_SUM = I_TEMP_SUM + parseInt(S_TEMP.substring(0,1)) + parseInt(S_TEMP.substring(1,2)) ;
I_CHK_DIGIT= (10-(I_TEMP_SUM%10))%10 ;
if (as_Biz_no.substring(9,10) != String(I_CHK_DIGIT)) return false;
return true ;
}
/**
* 처리하는 동안 대기메세지 처리하는 함수
* @param : bFlag: Boolean, objForm: 해당 폼
* @return : 없음
* @example : utlf_waitImage(true,this);
*/
function utlf_waitImage(bFlag, objForm, strMsg) {
var MyFrame = this.getOwnerFrame();
if (bFlag) {
var nLeft = (MyFrame.position.width / 2) - 200;
var nTop = (MyFrame.position.height / 2) - 45;
var nRight = nLeft + 400;
var nBottom = nTop + 90;
var objDiv;
try {
MyFrame.form.div_waitImage.visible;
trace("check");
objDiv = div_waitImage;
} catch(e) {
trace("not exist");
objDiv = new Div("div_waitImage", nLeft, nTop, nRight, nBottom);
MyFrame.form.addChild("div_waitImage", objDiv);
}
// if (!isValidObject("div_waitImage")) {
// objDiv = new Div("div_waitImage", nLeft, nTop, nRight, nBottom);
// MyFrame.form.addChild("div_waitImage", objDiv);
// } else {
// objDiv = div_waitImage;
// }
if (utlf_IsNull(strMsg)) {
objDiv.text = "처리중입니다. 잠시 기다려주세요";
} else {
objDiv.text = strMsg;
}
objDiv.class = "div_top_menuBG";
objDiv.show();
objDiv.visible = bFlag;
MyFrame.form.setTimer(1001, 100);
} else {
MyFrame.form.div_waitImage.visible = bFlag;
MyFrame.form.killTimer(1001);
}
}
function utlf_ImgProc(bFlag, strMsg) {
var MyFrame = this.getOwnerFrame();
if (bFlag) {
var nLeft = (MyFrame.position.width / 2) - 200;
var nTop = (MyFrame.position.height / 2) - 45;
var nRight = nLeft + 400;
var nBottom = nTop + 90;
var objDiv;
if (!isValidObject("div_ImgProc")) {
objDiv = new Div("div_ImgProc", nLeft, nTop, nRight, nBottom);
MyFrame.form.addChild("div_ImgProc", objDiv);
} else {
objDiv = div_ImgProc;
}
if (utlf_IsNull(strMsg)) {
objDiv.text = "처리중입니다. 잠시 기다려주세요";
} else {
objDiv.text = strMsg;
}
//objDiv.class = "div_top_menuBG";
objDiv.show();
objDiv.visible = bFlag;
} else {
MyFrame.form.div_ImgProc.visible = bFlag;
}
}
/**
* 기안문상신 화면 호출
* @param : strMenuId: 기안문상신 메뉴아이디, bMode: 팝업여부
* @return : 없음
* @example : utlf_sangsin("m_00000000");
*/
function utlf_sangsin(strMenuId, bMode) {
if (utlf_IsNull(strMenuId)) {
alert("파라메터(메뉴아이디)가 없습니다.");
return;
}
var strPgeid = gds_menuinfo.lookup("menuId",strMenuId,"pgeid");
//trace("page id : "+strPgeid);
if (strPgeid == undefined) {
alert("기안문상신 화면을 찾을 수 없습니다.");
return;
}
if (bMode == true) {
var strpgeCoursNm = gds_menuinfo.lookup("menuId",strMenuId,"pgeCoursNm");
var strUrl = strpgeCoursNm +"::"+ strPgeid+".xfdl";
var nPopLeft = system.clientToScreenX(gv_AppTopPath.form.stc_usrInfo,-10);
var nPopTop = system.clientToScreenY(gv_AppTopPath.form.stc_usrInfo,60);
var nWidth = 831;
var nHeight = 553;
utlf_Dialog(strPgeid, strUrl, "", nPopLeft, nPopTop, nWidth, nHeight, "");
} else {
sysf_chkOpenMenu(strMenuId);
}
}
/**
* 상신 화면 조회함수 호출
* @param : strMenuId: 상신화면 메뉴아이디
* @return : 없음
* @example : utlf_sangsinRetrive("m_00000000");
*/
function utlf_sangsinRetrive(strMenuId) {
if (utlf_IsNull(strMenuId)) {
alert("파라메터(메뉴아이디)가 없습니다.");
return;
}
var winKey = gds_openwininfo.lookup("menuid", strMenuId,"winid");
if (winKey == undefined) {
alert("해당화면을 찾을 수 없습니다.");
return;
}
gv_AppFramePath.frames(winKey).form.lfn_Retrive();
}