/** * @fileoverview 확장 file upload 공통 library관련 기본함수. */ if(!JsNamespace.exist("LGE.File")) { /** * @namespace * @name LGE.File * @author Tobesoft w.s.jeong * @memberof! */ JsNamespace.declare("LGE.File", { extUpComp : null, extUpName : "", extDownComp : null, extDownName : "", _createExtUpload : function(obj) { if(this.extUpName != null && Eco.isEmpty(this.extUpName.parent)) { this.extUpComp = null; this.extUpName = ""; } if(Eco.isEmpty(this.extUpName) || this.extUpComp == null) { this.extUpName = Eco.getUniqueId("extUpload_"); var extUp = new nexacro.ExtFileUpload(this.extUpName, obj); obj.addChild(extUp.name, extUp); this.extUpComp = extUp; extUp.set_multiselect(false); // 파일 다이얼로그를 통해 파일을 선택했을 때 발생하는 이벤트입니다 extUp.addEventHandler("onchange", obj._geh_onChangeUpload, obj); //통신 성공시에 발생하는 이벤트입니다 extUp.addEventHandler("onsuccess", obj._geh_onSuccessUpload, obj); //통신 오류 시 발생하는 이벤트입니다. extUp.addEventHandler("onerror", obj._geh_onErrorUpload, obj); //HTML5 Only : XMLHttpRequest가 데이터를 보내거나 받는 동안 서버에서 정의된 간격으로 발생합니다. extUp.addEventHandler("onprogress", obj._geh_onProgressUpload, obj); //HTML5 Only : XMLHttpRequest 통신시 readystate 속성 변경 event extUp.addEventHandler("onreadystatechange", obj._geh_onReadyStateChangeUpload, obj); extUp.show(); } }, getExtUpload : function() { return this.extUpComp; }, existFile : function() { if(this.extUpComp != null && (this.extUpComp.getAddedFileLength() || 0) > 0) { return true; } return false; }, /** * File를 선택할 다이얼로그 팝업을 기동. * 추가한 File에 대한 처리는 fn_addFileCallBack에서 처리. * @param {object} Form Object * @return N/A * @example * $(LGE.File.findFile(this)); * @memberOf LGE.File */ findFile : function(obj) { this._createExtUpload(obj); if(this.extUpComp != null) { this.extUpComp.addFiles(); } }, uploadFile : function(obj, sActId, sInDs, sOutDs, sTransType, nHttpTimeout) { if(this.existFile()) { var nDataType = 2; var sArg = ""; sArg += "baRq=" + LGE.Util.splitDsName(sInDs, 0).join(","); sArg += "&baRs=" + LGE.Util.splitDsName(sOutDs, 1).join(","); var url = application.services["host"].url + "service/" + sActId + "/uploadnexacro.ncd?" + sArg; if(Eco.isEmpty(sTransType)) { sTransType = "all"; //all(전체전송)/each(개별) } if(Eco.isEmpty(nHttpTimeout)) { nHttpTimeout = 120; } application.set_httptimeout(nHttpTimeout); application.set_usewaitcursor(true, true); this.extUpComp.upload(url, sInDs, sOutDs, sTransType, 2); } }, _createExtDownload : function(obj) { if(this.extDownComp != null && Eco.isEmpty(this.extDownComp.parent)) { this.extDownComp = null; this.extDownName = ""; } if(Eco.isEmpty(this.extDownName) || this.extDownComp == null) { this.extDownName = Eco.getUniqueId("extDownload_"); var extDown = new nexacro.ExtFileDownload(this.extDownName, obj); obj.addChild(extDown.name, extDown); this.extDownComp = extDown; //통신 성공시에 발생하는 이벤트입니다 extDown.addEventHandler("onsuccess", obj._geh_onSuccessDownload, obj); //통신 오류 시 발생하는 이벤트입니다. extDown.addEventHandler("onerror", obj._geh_onErrorDownload, obj); //HTML5 Only : XMLHttpRequest가 데이터를 보내거나 받는 동안 서버에서 정의된 간격으로 발생합니다. extDown.addEventHandler("onprogress", obj._geh_onProgressDownload, obj); extDown.show(); } }, downloadFile : function(obj, sActId, sNo, sFileName, sKey) { this._createExtDownload(obj); if(this.extDownComp != null) { var url = application.services["host"].url + "service/" + sActId + "/download.ncd?baRq=IN_PARAMETER&baRs=OUT_DS"; this.extDownComp.download(url + "&fileNo="+sNo+"&fileKey="+sKey, sFileName); } }, download : function(obj, sUrl, sFileName) { this._createExtDownload(obj); if(this.extDownComp != null) { this.extDownComp.download(sUrl, sFileName); } }, exportText : function(obj, sSvcId, sFileName, sDsName, sFileType, sDelimeter) { this._createExtDownload(obj); var objDs = new Dataset(); objDs.addColumn("fileType", "string"); objDs.addColumn("delimeter", "string"); var nAddRow = objDs.addRow(); objDs.setColumn(nAddRow, "fileType", sFileType); objDs.setColumn(nAddRow, "delimeter", sDelimeter); obj.addChild("_dsCsvTextIn", objDs); var sInDataset = "IN_CSVTEXT_DS=_dsCsvTextIn IN_CSVTEXT_DATA_DS="+sDsName; var sArg = ""; if(this.extDownComp != null) { var url = application.services["host"].url + "service/" + sSvcId + "/csvtextfile/downloadnexacro.do"; this.extDownComp.download(url, sFileName+"."+sFileType, sInDataset, 2); obj.removeChild("_dsCsvTextIn"); } }, _getImportFile : function(obj, e) { trace(obj.name + " :: " + this); }, importText : function(obj, sSvcId, sOutDsName, sFileType, sDelimeter) { if(this.existFile()) { this._createExtDownload(obj); var objDs = new Dataset(); objDs.addColumn("fileType", "string"); objDs.addColumn("delimeter", "string"); var nAddRow = objDs.addRow(); objDs.setColumn(nAddRow, "fileType", sFileType); objDs.setColumn(nAddRow, "delimeter", sDelimeter); obj.addChild("_dsCsvTextIn", objDs); var sInDs = "IN_CSVTEXT_DS=_dsCsvTextIn"; var sOutDs = sOutDsName + "=OUT_CSVTEXT_DATA_DS"; var nDataType = 2; var url = application.services["host"].url + "service/csvtextfile/uploadnexacro.do"; sTransType = "all"; //all(전체전송)/each(개별) application.set_usewaitcursor(true, true); this.extUpComp.upload(url, sInDs, sOutDs, sTransType, 2); obj.removeChild("_dsCsvTextIn"); } }, /** * sActId에 해당하는 BR의 Output Dataset중 하나만 엑셀로 변환하여 다운로드. * @param {object} Form Object * @param {string} Biz Act Id * @param {string} inputdataset 명 '='와 ' '로 구분 * @param {string} Biz Act의 Output Dataset명들 ','로 구분 * @param {string} Output Dataset 중 엑셀로 변환할 Dataset 명 * @param {string} 저장할 파일 이름 * @param {string} column명에 따른 엑셀 헤더명 정보 * @return N/A * @example * var sActId = "BR_MC_SelectCodeList"; * var sInDs = "IN_DS=dsSearch"; * var sBaRs = "OUT_DS"; * var sChangeDs = "OUT_DS"; * var sFileName = "DownloadExcel"; * var sExcelFields = "{"; * sExcelFields += "commonCode:'Common Code'"; * sExcelFields += ",commonCodeDesc:'Common Code Desc'"; * sExcelFields += ",sortPriority:'Sort Priority'"; * sExcelFields += ",managementTypeCode:'Management Type Code'"; * sExcelFields += ",deleteFlag:'Delete Flag'"; * sExcelFields += ",transFlag:'Trans Flag'"; * sExcelFields += ",commonClassCode:'commonClassCode'"; * sExcelFields += "}"; * LGE.File.downloadExcel(this, sActId, sInDs, sBaRs, sChangeDs, sFileName, sExcelFields); * @memberOf LGE.File */ downloadExcel : function(obj, sActId, sInDs, sBaRs, sChangeDs, sFileName, sExcelFields) { this._createExtDownload(obj); var objDs = new Dataset(); objDs.addColumn("fileID", "string"); objDs.addColumn("excelFields", "string"); var nAddRow = objDs.addRow(); objDs.setColumn(nAddRow, "fileID", sFileName); objDs.setColumn(nAddRow, "excelFields", "{" + sChangeDs + ":" + sExcelFields + "}"); obj.addChild("_dsExcelInfoIn", objDs); var aInDs = LGE.Util.splitDsName(sInDs, 0); var sArg = "?baRq=" + aInDs.join(","); sArg += "&baRs=" + sBaRs + "&baRsSel=" + sChangeDs; sInDs += " IN_EXCEL_INFO_DS=_dsExcelInfoIn"; if(this.extDownComp != null) { var url = application.services["host"].url + "service/" + sActId + "/excelDownload.ncd"; this.extDownComp.download(url+sArg, sFileName+".xlsx", sInDs, 2); obj.removeChild("_dsExcelInfoIn"); } }, /* * url : {serviceName}/selectExcelReport/nexacro.do * 맨 앞에 /를 넣지 않도록 주의 */ downloadExcelReport : function(obj, sUrl, sInDs, sFileName) { this._createExtDownload(obj); if(this.extDownComp != null) { this.extDownComp.download(application.services["host"].url + sUrl, sFileName, sInDs, 2); } }, openReportPopup : function(obj, sPopId, sUrl, oArg, bModal, nWidth, nHeight, sPopupCallback) { if(Eco.isEmpty(sUrl)) { return; } if(Eco.isEmpty(bModal)) { bModal = true; } if(Eco.isEmpty(nWidth)) { nWidth = 1000; } if(Eco.isEmpty(nHeight)) { nHeight = 700; } if(Eco.isEmpty(sPopupCallback)) { sPopupCallback = ""; } var sPopupUrl = "CM::ReportViewP.xfdl"; var oArgument = {p_url : sUrl ,p_arguments : oArg ,p_width : nWidth ,p_height : nHeight ,p_modal : bModal }; var sOption = "width="+nWidth+",height="+nHeight+",autosize=false,title=true"; if(!bModal) { sOption += ",modaless=true"; } LGE.Core.popup(obj, sPopId, sPopupUrl, oArgument, sOption, sPopupCallback); } }); }