1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693 |
- <?xml version="1.0" encoding="utf-8"?>
- <Script type="xscript4.0"><![CDATA[/***************************************************************************************
- * System Name : HIT
- * Job Name :
- * File Name : comm_inf.xjs
- * Creator : 이상준
- * Make Date : 2014-02-18
- *
- * Description : 연계 API
- *---------------------------------------------------------------------------------------
- * Modify Date Modifier Modify Description
- *---------------------------------------------------------------------------------------
- * 2014-02-18 HIT
- *
- *---------------------------------------------------------------------------------------
- ****************************************************************************************/
-
- /********************************************************************************************************************/
- /************************* [HELPER] 시스템헬퍼 연계함수 *********************************************************/
- /********************************************************************************************************************/
- // helperf_Init : 시스템 헬퍼 모듈을 생성 및 초기화 한다.
- /********************************************************************************************************************/
- /************************* [ZES] 전자인증 및 전자서명 연계 함수 ************************************************/
- /********************************************************************************************************************/
- // zesf_InitSign : 전자서명관련 모듈을 생성 및 초기화 한다.
- // zesf_getCMErrMsg : 전자서명 관련 에러메세지를 가져온다.
- // zesf_getKMIErrMsg : KMI 관련 에러메시지를 가져온다.
- // zesf_LoadKeyAndCert : 현재 로그인된 사용자 인증서/개인키를 로드한다.
- // zesf_SaveKeyAndCert : 현재 로그인된 사용자 인증서/개인키를 저장한다.
- // zesf_SignData : 로드된 인증서를 가지고 전자서명을 수행한다.
- // zesf_SignFile : 로드된 인증서를 가지고 파일에 대한 전자서명을 수행한다.
- // zesf_ChangeKeyPwd : 인증서의 개인키 패스워드를 변경하여 KMI 서버에 등록한다.
- // zesf_RenewKeyAndCert : 전자인증서를 갱신한다.
- /********************************************************************************************************************/
- /************************* [ZEH] 건강보험공단 연계함수 ***********************************************************/
- /********************************************************************************************************************/
- // zehf_Initialize : 건강보험공단 모듈을 생성 및 초기화 한다.
- // zehf_AddParam : 송신 메세지의 필드를 설정한다.
- // zehf_ShowMessage : 서버메세지를 알림창으로 보여준다.
- // zehf_Qualify : 공단에 메시지를 송수신하여 자격을 검증한다.
- // zehf_Approval : 공단에 메시지를 송수신하여 승인을 처리한다.
- // zehf_Cancel : 공단에 메시지를 송수신하여 승인을 취소한다.
- // zehf_GetValue : 수신된 데이터의 nSeq 라인의 컬럼 데이터를 반환한다.
- // zehf_Close : 송수신 시 사용한 메모리를 해제한다.
- /********************************************************************************************************************/
- /************************* [INF] activex 관련 함수 *****************************************************************/
- /********************************************************************************************************************/
- //inff_initsound : 사운드기능 초기화
- //inff_playsound : 사운드재생
- //inff_fileSystemObject : 파일시스템 오브젝트 사용
- /********************************************************************************************************************/
- /************************* [TTF] TTS 관련 함수 *********************************************************************/
- /********************************************************************************************************************/
- //zttf_InitTTS : TTS 기능 초기화 (신규 2014-05-30)
- //zttf_TTSPlay : 텍스트를 목소리로 변화하여 재생 (신규 2014-05-30)
- //zttf_TTSStop : TTS 재생중인 사운드를 멈춤 (신규 2014-05-30)
- /********************************************************************************************************************/
- /************************* [INF] TCHART 관련 함수 ******************************************************************/
- /********************************************************************************************************************/
- //inff_createTChart : TChart Control 생성 (신규 2014-05-30)
- //inff_createTChart8 : TChart 8 Control 생성 (신규 2014-05-30)
- //inff_clearTChart : TChart Clear (신규 2014-05-30)
- //inff_drawBar : 그리드의 해당 로우 data를 반영하여 TChart에(Point Type) 그려 줌. (신규 2014-05-30)
- //inff_drawBarFromDs : dataset의 해당 로우 data를 반영하여 TChart에(Point Type) 그려 줌. (신규 2014-06-03)
- //inff_drawSelectBar : 그리드의 원하는 행, 컬럼을 선택해서 BAR 타입의 차트를 보여줌 (신규 2014-05-30)
- //inff_drawSelectBarFromDs : dataset의 원하는 행, 컬럼을 선택해서 BAR 타입의 차트를 보여줌 (신규 2014-06-03)
- //inff_drawLine : 그리드의 해당 로우 data를 반영하여 TChart에(Point Type) 그려 줌. (신규 2014-05-30)
- //inff_drawLineFromDs : dataset의 해당 로우 data를 반영하여 TChart에(Point Type) 그려 줌. (신규 2014-06-03)
- //inff_drawLineAll : 그리드의 data를 반영하여 TChart에(Point Type) 그려 줌. (신규 2014-05-30)
- //inff_drawLineAllFromDs : dataset의 data를 반영하여 TChart에(Point Type) 그려 줌. (신규 2014-06-03)
- //inff_setBackImageLoad : chart 배경이미지 삽입(클라이언트 경로만 가능함) (신규 2014-05-30)
- //inff_getTChartBackgroundImage : 이미지 경로를 반환 (신규 2014-05-30)
- //inff_getTChartBackgroundImageJpg : 이미지 경로를 반환 (신규 2018-08-20)
- /********************************************************************************************************************/
- /************************* [HELPER] 시스템헬퍼 연계함수 *********************************************************/
- /********************************************************************************************************************/
- // 시스템헬퍼 인터페이스
- var helper_objHelper = null; // 시스템헬퍼 ActiveX 참조
- var helper_objForm = null;
- var _TEL_NO = "";
- var _SIGNTEST = "N";
- /**********************************************************************************
- * 함수명 : helperf_Init
- * 설명 : 시스템 헬퍼 모듈을 생성 및 초기화 한다.
- * argument : void
- * return Type : Boolean (정상처리여부)
- **********************************************************************************/
- function helperf_Init() {
- try {
- // 퀵뷰상태인 경우 직접 생성
- if (sysf_isQuickView())
- {
- helper_objForm = this; // 현재 폼오브젝트를 지정
- helper_objHelper = this.components["axHelper"]; // 객체를 찾음
- if (helper_objHelper == null)
- {
- // 전자인증 관련 객체를 동적생성
- helper_objHelper = new ActiveX("axHelper", 0,0,0,0);
- helper_objHelper.progid = "{7ed5c30d-664e-4b8c-8629-5b787446b987}";
- this.addChild("axHelper", helper_objHelper);
- helper_objHelper.show();
- }
- }
- else { // 아니면 상단에서 오브젝트를 얻어옴
- helper_objForm = agv_objAppTopPath.form; // 상단 폼오브젝트를 지정
- helper_objHelper = helper_objForm.getHelperObject();
- }
-
- return helper_objHelper;
- } catch(e) {
- alert("시스템 헬퍼 모듈이 설치되지 않았습니다."+ "|" + e.name + "|" + e.message + "|" + e.number + "|" + e.description);
- return false;
- }
- }
- /********************************************************************************************************************/
- /************************* [ZES] 전자인증 및 전자서명 연계 함수 ************************************************/
- /********************************************************************************************************************/
- var zes_objSKComm = null;
- var zes_objKMClient = null;
- var zes_objForm = null;
- var zes_sCertYear = 1970;
- var zes_sCertMonth = 1;
- var zes_sCertDate = 1;
- var zes_sUID = "";
- /**********************************************************************************
- * 함수명 : zesf_InitSign
- * 설명 : 전자서명관련 모듈을 생성 및 초기화 한다.
- * argument : void
- * return Type : Boolean (정상처리여부)
- **********************************************************************************/
- function zesf_InitSign(){
- try {
- // KMI 클라이언트 동적생성
- if(utlf_isNull(this.components["axKMClient"])){
- zes_objKMClient = new ActiveX("axKMClient", 0,0,0,0);
- zes_objKMClient.progid = "{D3C608B5-B664-4962-91B7-289DA892953A}";
- this.addChild("axKMClient", zes_objKMClient);
- }else{
- zes_objKMClient = this.components["axKMClient"];
- }
- zes_objKMClient.show();
- } catch(e) {
- alert("KMI 모듈이 설치되지 않았습니다.");
- return false;
- }
-
- try {
- // 퀵뷰상태인 경우 직접 생성
- if (sysf_isQuickView())
- {
- zes_objForm = this; // 현재 폼오브젝트를 지정
- zes_objSKComm = this.components["axSKComm"]; // 객체를 찾음
- if (zes_objSKComm == null)
- {
- // 전자인증 관련 객체를 동적생성
- zes_objSKComm = new ActiveX("axKMClient", 0,0,0,0);
- zes_objSKComm.progid = "{D3C608B5-B664-4962-91B7-289DA892953A}";
- this.addChild("axSKComm", zes_objSKComm);
- zes_objSKComm.show();
- }
- }
- else { // 아니면 상단에서 오브젝트를 얻어옴
- zes_objForm = agv_objAppTopPath.form; // 상단 폼오브젝트를 지정
- zes_objSKComm = zes_objForm.getSKCommObject();
- }
- } catch(e) {
- alert("전자인증모듈이 설치되지 않았습니다.");
- return false;
- }
-
- // 기관코드에 따라서 연락처 다르게 설정
- var instcd = sysf_getUserInfo("systeminstcd");
- if (instcd == "031")
- {
- _TEL_NO = "의무기록팀 5233";
- }
- else if (instcd == "032")
- {
- _TEL_NO = "의무기록팀 2401,2";
- }
- return true;
- }
- /**********************************************************************************
- * 함수명 : zesf_getCMErrMsg
- * 설명 : 전자서명관련 에러메세지를 리턴한다.
- * argument : void
- * return Type : String (에러메세지)
- **********************************************************************************/
- function zesf_getCMErrMsg() {
- return "[전자서명 에러]" + zes_objSKComm.GetLastErrorMsg();
- }
- /**********************************************************************************
- * 함수명 : zesf_getKMIErrMsg
- * 설명 : KMI 모듈 에러메세지를 리턴한다.
- * argument : void
- * return Type : String (에러메세지)
- **********************************************************************************/
- function zesf_getKMIErrMsg( ) {
- return "[KMI 에러]" + zes_objKMClient.Error_MSG();
- }
- /**********************************************************************************
- * 함수명 : zesf_LoadKeyAndCert
- * 설명 : 현재 로그인된 사용자 인증서/개인키를 로드한다.
- * argument : void
- * return Type : String (인증서DN)
- **********************************************************************************/
- function zesf_LoadKeyAndCert( pUid, pDbg ) {
- var dn = "";
- var msg = "";
- var pwd = "";
- var certloadyn = "N";
-
- var oDsHardCd = agv_objAppTopPath.form.dv_orderbasicinfo.lf_getOrderBaseInfo("hardcdlist");
- if(!utlf_isNull(oDsHardCd)) {
- certloadyn = oDsHardCd.lookup("hardcdno", "5996", "hardcd");
- }
-
- if (certloadyn == "Y" && _SIGNTEST == "N") {
- //비밀번호 입력창 오픈
- var xpt = this.getOwnerFrame().position.x + 400;
- var ypt = this.getOwnerFrame().position.y + 60;
-
- var objArg = new Object();
- objArg.pUid = pUid;
- objArg.pDbg = pDbg;
- // 인증서비밀번호 입력창이 너무 작게 열리는 현상 때문에 width, height 값 지정해봄 (2017.01.17 - 김상목)
- dn = frmf_modal("SPZMS00300", "SPZMS00300", objArg, false, null, xpt, ypt, 281, 143, null, null, null, "M");
- } else {
- var rData = zesf_LoadKeyAndCertProcess( pUid, pDbg, pwd );
- dn = rData.dn;
- }
-
- return dn;
- }
- function zesf_LoadKeyAndCertProcess( pUid, pDbg, pPwd ) {
- zes_objSKComm.UnsetMatchedContext();
- zes_objForm.zes_sUID = "";
- zes_objForm.zes_sCertYear = 1970;
- zes_objForm.zes_sCertMonth = 1;
- zes_objForm.zes_sCertDate = 1;
-
- var msg = "";
- var pwd = "";
-
- var rData = {};
- rData.dn = "";
- rData.success = false;
-
- if(!utlf_isNull(pPwd)) pwd = pPwd;
-
- var ip = sysf_getUserInfo("kmiip");
- var port = sysf_getUserInfo("kmiport");
- if( !zes_objKMClient.kmsConnect(ip, port) ) {
- msg = "KMI 서버( IP:" + ip + ",포트:" + port + ") 연결에";
- sysf_messageBox( msg, "E009", zesf_getKMIErrMsg() );
- return rData;
- }
- if( pDbg != null ) {
- alert( "KMI 서버가 연결되었습니다." );
- }
- var envelop = zes_objKMClient.kmsInit();
- if( envelop == "" ) {
- msg = "KMI 모듈의 초기화에";
- sysf_messageBox( msg, "E009", zesf_getKMIErrMsg() );
- zes_objKMClient.kmsDisconnect();
- return rData;
- }
- if( pDbg != null ) {
- alert( "KMI 모듈이 초기화되었습니다. \nENVELOP : " + envelop );
- }
- rData.dn = zes_objKMClient.GetKeyAndCert( pUid );
- if( rData.dn == "" ) {
- msg = "KMI 서버에서 인증서( " + pUid + " )를 가져오는 데.";
- sysf_messageBox( msg, "E009", zesf_getKMIErrMsg() +"\n전자인증서와 관련한 에러는 " + _TEL_NO + " 로 연락해주시기 바랍니다.");
- zes_objKMClient.kmsDisconnect();
- return rData;
- }
- if( pDbg != null ) {
- alert( "인증서를 다운로드하였습니다.\n다운로드 인증서 DN : " + rData.dn );
- }
- switch( zes_objKMClient.IsCertNew( pUid, rData.dn ) ) {
- case 0 : // 현재 인증서가 유효함
- if( pDbg != null ) {
- alert( "현재 인증서가 유효합니다." );
- }
- break;
- case 1 : // 인증서가 갱신되어 KMI에 재등록됨
- msg = "인증서의 갱신이";
- sysf_messageBox( msg, "I002");
- break;
- case 2 : // 인증서 갱신 실패 ( 에러코드와 메시지가 리턴됨 )
- msg = "인증서 갱신에";
- sysf_messageBox( msg, "E009", zesf_getKMIErrMsg());
- zes_objKMClient.LocalDelKeyAndCert(rData.dn);
- zes_objKMClient.kmsDisconnect();
- return rData;
- case 3 : // 인증서 갱신은 성공 하였으나 KMI 서버 등록 실패 (인증서 백업 성공)
- case 4 : // 인증서 갱신은 성공 하였으나 KMI 서버 등록 실패 (인증서 백업 실패)
- msg = "갱신된 인증서의 KMI 등록에";
- sysf_messageBox( msg, "E009", "관리자에게 문의하시기 바랍니다.");
- zes_objKMClient.LocalDelKeyAndCert(rData.dn);
- zes_objKMClient.kmsDisconnect();
- return rData;
- case 5 : // 이미 만료 되었거나 폐지된 인증서
- msg = "인증서가 만료되어 사용";
- sysf_messageBox( msg, "E001", "인증서를 재발급 받으시기 바랍니다.");
- zes_objKMClient.LocalDelKeyAndCert(rData.dn);
- zes_objKMClient.kmsDisconnect();
- return rData;
- case 6 : // 인증서의 갱신을 사용자가 취소
- break;
- case 7 :
- msg = "인증서 화일에 문제가 있어 인증서 읽기에.";
- sysf_messageBox( msg, "E009", "관리자에게 문의하시기 바랍니다.");
- zes_objKMClient.LocalDelKeyAndCert(rData.dn);
- zes_objKMClient.kmsDisconnect();
- return rData;
- }
- //zes_objSKComm.SetExipreCheckSkip(1);// 인증서 갱신안내 팝업표시 안함 (EMR 오픈시까지 유지)
- // 0 * 256 : SignKorea의 인증서만 선택
- // 0 * 16 : 비밀번호 입력 받음
- // 1 : 현재의 ActiveX 인스턴스가 유효할 동안 선택한 정보 유지
- var matched_dn = zes_objSKComm.SetMatchedContextExt( rData.dn, "", pwd, 0 * 256 + 0 * 16 + 1 );
- if( matched_dn == "" ) {
- msg = "인증서의 메모리 로드에";
- sysf_messageBox( msg, "E009", zesf_getCMErrMsg());
-
- zes_objKMClient.LocalDelKeyAndCert(rData.dn);
- zes_objKMClient.kmsDisconnect();
-
- rData.dn = matched_dn;
- return rData;
- }
- var today = new Date();
-
- zes_objForm.zes_sCertYear = today.getFullYear();
- zes_objForm.zes_sCertMonth = today.getMonth() + 1;
- zes_objForm.zes_sCertDate = today.getDate();
- zes_objForm.zes_sUID = pUid;
- zes_objKMClient.LocalDelKeyAndCert(rData.dn);
- zes_objKMClient.kmsDisconnect();
-
- rData.success = true;
- return rData;
- }
- /**********************************************************************************
- * 함수명 : zesf_SaveKeyAndCert
- * 설명 : 현재 로그인된 사용자 인증서/개인키를 저장한다.
- * argument : void
- * return Type : String (등록된 DN)
- **********************************************************************************/
- function zesf_SaveKeyAndCert( pUid, pDn, pPwd, pDbg ) {
- var dn = "";
- var msg = "";
- if( pDbg != null ) {
- alert( "인증서 등록 정보 : [" + pUid + "," + pDn + "," + pPwd + "]" );
- }
- var ip = sysf_getUserInfo("kmiip");
- var port = sysf_getUserInfo("kmiport");
- if( !zes_objKMClient.kmsConnect(ip, port) ) {
- msg = "KMI 서버( IP:" + ip + ",포트:" + port + ") 연결에";
- sysf_messageBox( msg, "E009", zesf_getKMIErrMsg() );
- return dn;
- }
- if( pDbg != null ) {
- alert( "KMI 서버가 연결되었습니다." );
- }
- var envelop = zes_objKMClient.kmsInit();
- if( envelop == "" ) {
- msg = "KMI 모듈의 초기화에";
- sysf_messageBox( msg, "E009", zesf_getKMIErrMsg() );
- zes_objKMClient.kmsDisconnect();
- return dn;
- }
- if( pDbg != null ) {
- alert( "KMI 모듈이 초기화되었습니다. \nENVELOP : " + envelop );
- }
- dn = zes_objKMClient.SetKeyAndCert( pUid, pDn, "", pPwd );
- if( dn == "" ) {
- msg = "KMI 서버에 인증서(" + pUid + "," + pDn + "," + ") 등록에";
- sysf_messageBox( msg, "E009", zesf_getKMIErrMsg() );
- zes_objKMClient.kmsDisconnect();
- return dn;
- }
- if( pDbg != null ) {
- alert( "인증서를 등록하였습니다.\n등록된 인증서 DN : " + dn );
- }
- zes_objKMClient.kmsDisconnect();
- return dn;
- }
- /**********************************************************************************
- * 함수명 : zesf_SignData
- * 설명 : 로드된 인증서를 가지고 전자서명을 수행한다.
- * argument : void
- * return Type : String (서명된 데이터)
- **********************************************************************************/
- function zesf_SignData( pOrgData, pUid, pReload, pDbg )
- {
- if(pReload){
- zes_objForm.zes_sUID = "";
- }
- var signedData = "";
- var reload = false;
- if( pUid == null || pUid == "" ) {
- pUid = sysf_getUserInfo("userid");
- }
- if( zes_objForm.zes_sUID != pUid ) {
- reload = true;
- }
- var today = new Date();
- if( zes_objForm.zes_sCertYear != today.getFullYear() ) {
- reload = true;
- }
- if( zes_objForm.zes_sCertMonth != ( today.getMonth() + 1 ) ) {
- reload = true;
- }
- if( zes_objForm.zes_sCertDate != today.getDate() ) {
- reload = true;
- }
- if( reload ) {
- // zes_objSKComm.UnsetMatchedContext();
- //
- // zes_objForm.zes_sUID = "";
- // zes_objForm.zes_sCertYear = 1970;
- // zes_objForm.zes_sCertMonth = 1;
- // zes_objForm.zes_sCertDate = 1;
- if( zesf_LoadKeyAndCert( pUid, pDbg ) == "" ) {
- return signedData;
- }
- }
- if( pDbg != null ) {
- alert( "SignDataB64" );
- }
- signedData = zes_objSKComm.SignDataB64( "", pOrgData, 0 );
- if( signedData == "" ) {
- msg = "전자서명 생성에"
- sysf_messageBox( msg, "E009", zesf_getCMErrMsg());
- }
-
- //activateMyWindow();
- return signedData;
-
- }
- /**********************************************************************************
- * 함수명 : zesf_SignFile
- * 설명 : 로드된 인증서를 가지고 전자서명을 수행한다.
- * argument : void
- * return Type : String (서명된 파일경로)
- **********************************************************************************/
- function zesf_SignFile( pOrgFilePath, pUid, pReload, pDbg ) {
- if(pReload){
- zes_objForm.zes_sUID = "";
- }
- var signedFilePath = "";
- var reload = false;
- if( pUid == null || pUid == "" ) {
- pUid = sysf_getUserInfo("userid");
- }
- if( zes_objForm.zes_sUID != pUid ) {
- reload = true;
- }
- var today = new Date();
- if( zes_objForm.zes_sCertYear != today.getFullYear() ) {
- reload = true;
- }
- if( zes_objForm.zes_sCertMonth != ( today.getMonth() + 1 ) ) {
- reload = true;
- }
- if( zes_objForm.zes_sCertDate != today.getDate() ) {
- reload = true;
- }
- if( reload ) {
- // if( viewerObj.window.javascript._CERT_UID_ != "" ) {
- // zes_objSKComm.UnsetMatchedContext();
- //
- // zes_objForm.zes_sUID = "";
- // zes_objForm.zes_sCertYear = 1970;
- // zes_objForm.zes_sCertMonth = 1;
- // zes_objForm.zes_sCertDate = 1;
- // }
- if( zesf_LoadKeyAndCert( pUid, pDbg ) == "" ) {
- return signedFilePath;
- }
- }
- if( pDbg != null ) {
- alert( "SignFileB64" );
- }
- signedFilePath = zes_objSKComm.SignFileB64( "", pOrgFilePath, true, 0 );
- if( signedFilePath == "" ) {
- msg = "전자서명 생성에"
- sysf_messageBox( msg, "E009", zesf_getCMErrMsg());
- }
- return signedFilePath;
- }
- /**********************************************************************************
- * 함수명 : zesf_ChangeKeyPwd
- * 설명 : 인증서의 개인키 패스워드를 변경하여 KMI 서버에 등록한다.
- * argument : void
- * return Type : String (검증된 데이터)
- **********************************************************************************/
- function zesf_ChangeKeyPwd(oldpasswd, newpasswd, pDbg){
- var msg = "";
- var ip = sysf_getUserInfo("kmiip");
- var port = sysf_getUserInfo("kmiport");
- if( !zes_objKMClient.kmsConnect(ip, port) ) {
- msg = "KMI 서버( IP:" + ip + ",포트:" + port + ") 연결에";
- sysf_messageBox( msg, "E009", zesf_getKMIErrMsg() );
- return;
- }
- if( pDbg != null ) {
- alert( "KMI 서버가 연결되었습니다." );
- }
- var envelop = zes_objKMClient.kmsInit();
- if( envelop == "" ) {
- msg = "KMI 모듈의 초기화에";
- sysf_messageBox( msg, "E009", zesf_getKMIErrMsg() );
- zes_objKMClient.kmsDisconnect();
- return;
- }
- if( pDbg != null ) {
- alert( "KMI 모듈이 초기화되었습니다. \nENVELOP : " + envelop );
- }
- var uid = sysf_getUserInfo("userid");
- if( pDbg != null ) {
- alert( "사용자 ID : " + uid );
- }
- var dn = zes_objKMClient.ChangePasswordKey(uid, oldpasswd, newpasswd);
- if( dn == "" ) {
- msg = "개인키 비밀번호 변경에";
- sysf_messageBox( msg, "E009", zesf_getKMIErrMsg() );
- }
- zes_objKMClient.LocalDelKeyAndCert( dn );
- zes_objKMClient.kmsDisconnect();
- return;
- }
- /**********************************************************************************
- * 함수명 : zesf_RenewKeyAndCert
- * 설명 : 인증서의 개인키 패스워드를 변경하여 KMI 서버에 등록한다.
- * argument : void
- * return Type : String (검증된 데이터)
- **********************************************************************************/
- function zesf_RenewKeyAndCert( pDbg ){
- var msg = "";
- var ip = sysf_getUserInfo("kmiip");
- var port = sysf_getUserInfo("kmiport");
- if( !zes_objKMClient.kmsConnect(ip, port) ) {
- msg = "KMI 서버( IP:" + ip + ",포트:" + port + ") 연결에";
- sysf_messageBox( msg, "E009", zesf_getKMIErrMsg() );
- return;
- }
- if( pDbg != null ) {
- alert( "KMI 서버가 연결되었습니다." );
- }
- var envelop = zes_objKMClient.kmsInit();
- if( envelop == "" ) {
- msg = "KMI 모듈의 초기화에";
- sysf_messageBox( msg, "E009", zesf_getKMIErrMsg() );
- zes_objKMClient.kmsDisconnect();
- return;
- }
- if( pDbg != null ) {
- alert( "KMI 모듈이 초기화되었습니다. \nENVELOP : " + envelop );
- }
- var uid = sysf_getUserInfo("userid");
- if( pDbg != null ) {
- alert( "사용자 ID : " + uid );
- }
- var dn = zes_objKMClient.GetKeyAndCert( uid );
- if( dn == "" ) {
- msg = "KMI 서버에서 인증서( " + uid + " )를 가져오는 데.";
- sysf_messageBox( msg, "E009", zesf_getKMIErrMsg()+"\n전자인증서와 관련한 에러는 "+ _TEL_NO +" 로 연락해주시기 바랍니다." );
- zes_objKMClient.kmsDisconnect();
- return;
- }
- if( pDbg != null ) {
- alert( "인증서를 다운로드하였습니다.\n다운로드 인증서 DN : " + dn );
- }
- switch( zes_objKMClient.IsCertNew( uid, dn ) ) {
- case 0 : // 현재 인증서가 유효함
- msg = "현재 인증서가 유효하여 갱신되지" ;
- sysf_messageBox( msg, "E007" );
- break;
- case 1 : // 인증서가 갱신되어 KMI에 재등록됨
- msg = "인증서 갱신이"
- sysf_messageBox( msg, "I002" );
- break;
- case 2 : // 인증서 갱신 실패 ( 에러코드와 메시지가 리턴됨 )
- msg = "인증서 갱신에";
- sysf_messageBox( msg, "E009", zesf_getKMIErrMsg());
- break;
- case 3 : // 인증서는 갱신되었으나 KMI 등록은 실패(인증서 백업 성공)
- msg = "갱신된 인증서의 KMI 등록에";
- sysf_messageBox( msg, "E009", "관리자에게 문의하시기 바랍니다.(백업성공)");
- break;
- case 4 : // 인증서는 갱신되었으나 KMI 등록은 실패(인증서 백업 실패)
- msg = "갱신된 인증서의 KMI 등록에";
- sysf_messageBox( msg, "E009", "관리자에게 문의하시기 바랍니다.(백업실패)");
- break;
- case 5 : // 인증서가 만료됨
- msg = "인증서가 만료되어 갱신";
- sysf_messageBox( msg, "E001", "인증서를 재발급 받으시기 바랍니다.");
- break;
- case 6 : // 인증서의 갱신을 사용자가 취소
- break;
- case 7 :
- msg = "인증서 파일에 문제가 있어 인증서 읽기에.";
- sysf_messageBox( msg, "E009", "관리자에게 문의하시기 바랍니다.");
- break;
- }
- zes_objKMClient.LocalDelKeyAndCert(dn);
- zes_objKMClient.kmsDisconnect();
- return;
- }
- /********************************************************************************************************************/
- /************************* [ZEH] 건강보험공단 연계함수 ***********************************************************/
- /********************************************************************************************************************/
- // 국민 건강 보험 관리 공단 인터페이스
- var zeh_sNhicUrl = null; // 공단서버 URL
- var zeh_objNhic = null; // 공단연계용 ActiveX 참조
- /**********************************************************************************
- * 함수명 : zehf_Initialize
- * 설명 : 건강보험공단 모듈을 생성 및 초기화 한다.
- * argument : void
- * return Type : Boolean (정상처리여부)
- **********************************************************************************/
- function zehf_Initialize() {
-
- try {
- zeh_sNhicUrl = sysf_getSystemInfo("nhicurl"); // 시스템 정보를 받음
- zeh_objNhic = this.components["objNHIC"]; // 객체를 찾음
- if (zes_objSKComm == null)
- {
- // NHIC 클라이언트 동적생성
- zeh_objNhic = new ActiveX("objNHIC", 0,0,0,0);
- zeh_objNhic.progid = "{40F98276-90BB-409D-A9CF-124266C805C9}";
- this.addChild("objNHIC", zeh_objNhic);
- zeh_objNhic.show();
- }
- } catch(e) {
- alert("건보 연계모듈이 설치되지 않았습니다.");
- return false;
- }
- return true;
- }
- /**********************************************************************************
- * 함수명 : zehf_AddParam
- * 설명 : 송신 메세지의 필드를 설정한다.
- * argument : name - 필드명
- value - 데이터
- * return Type : Number (성공 – 1실패 - -1 리턴)
- **********************************************************************************/
- function zehf_AddParam(name,value) {
-
- return zeh_objNhic.WSAddParam(name,value);
- }
- /**********************************************************************************
- * 함수명 : zehf_ShowMessage
- * 설명 : 서버메세지를 알림창으로 보여준다.
- * argument : void
- * return Type : void
- **********************************************************************************/
- function zehf_ShowMessage() {
- var msg = zehf_GetValue(0,"message");
- messageBox(msg,"E");
- }
- /**********************************************************************************
- * 함수명 : zehf_Qualify
- * 설명 : 공단에 메시지를 송수신하여 자격을 검증한다.
- * argument : void
- * return Type : Number (성공 - 수신되는 컬럼의 개수를 리턴, 실패 – 0 또는 -1 리턴)
- **********************************************************************************/
- function zehf_Qualify() {
- return zeh_objNhic.WSQualify(zeh_sNhicUrl);
- }
- /**********************************************************************************
- * 함수명 : zehf_Approval
- * 설명 : 공단에 메시지를 송수신하여 승인을 처리한다.
- * argument : void
- * return Type : Number (성공 - 수신되는 컬럼의 개수를 리턴, 실패 – 0 또는 -1 리턴)
- **********************************************************************************/
- function zehf_Approval() {
- return zeh_objNhic.WSApproval(zeh_sNhicUrl);
- }
- /**********************************************************************************
- * 함수명 : zehf_Cancel
- * 설명 : 공단에 메시지를 송수신하여 승인을 취소한다.
- * argument : void
- * return Type : Number (성공 - 수신되는 컬럼의 개수를 리턴, 실패 – 0 또는 -1 리턴)
- **********************************************************************************/
- function zehf_Cancel() {
- return zeh_objNhic.WSCancel(zeh_sNhicUrl);
- }
- /**********************************************************************************
- * 함수명 : zehf_GetValue
- * 설명 : 수신된 데이터의 nSeq 라인의 컬럼 데이터를 반환한다.
- * argument : seq - 수신된 데이터의 라인번호
- name - 수신된 데이터의 컬럼명
- * return Type : Variant (성공 – 컬럼의 데이터, 실패 - -1 리턴)
- **********************************************************************************/
- function zehf_GetValue(seq, name) {
- return zeh_objNhic.WSGetValue(seq, name);
- }
- /**********************************************************************************
- * 함수명 : zehf_Close
- * 설명 : 송수신 시 사용한 메모리를 해제한다.
- * 메모리를 Clear하지 않으면, 이전의 데이터가 다시 처리될 수 있으므로
- * 송수신 완료후에는 반드시 이 함수를 실행하여 메모리를 Clear해야 한다.
- * argument : void
- * return Type : void
- **********************************************************************************/
-
- function zehf_Close() {
- zeh_objNhic.WSClose();
- }
- /********************************************************************************************************************/
- /************************* [INF] activex 관련 함수 *****************************************************************/
- /********************************************************************************************************************/
- /****************************************************************************************
- * Function : inff_initsound
- * Description : 사운드기능 초기화
- * Argument :
- * return type :
- * Creator : 임준호
- ****************************************************************************************/
- function inff_initsound(){
-
- var objAtx = null;
-
- if(utlf_isNull(this.components["atxMeidaPlayer"])){
- objAtx = new ActiveX("atxMeidaPlayer", 0,0,0,0);
- objAtx.progid = "{6bf52a52-394a-11d3-b153-00c04f79faa6}";
- this.addChild("atxMeidaPlayer", objAtx);
- objAtx.show();
- }
- }
- /****************************************************************************************
- * Function : inff_playsound
- * Description : 사운드재생
- * Argument : 01.type - 소리타입
- * return type :
- * Creator : 임준호
- ****************************************************************************************/
- function inff_playsound(type, count){
-
- if(utlf_isNull(count)) count = 1;
- atxMeidaPlayer.URL="file://C:/himed/components/VoiceWare/"+type+".wav";
- atxMeidaPlayer.settings.playCount = count;
-
- atxMeidaPlayer.controls.play();
- }
- /****************************************************************************************
- * Function : inff_fileSystemObject
- * Description : 파일시스템 오브젝트 사용
- * Argument :
- * return type :
- * Creator : 임준호
- ****************************************************************************************/
- function inff_fileSystemObject(){
-
- var objAtx = null;
-
- if(utlf_isNull(this.components["inff_objFso"])){
- objAtx = new ActiveX("inff_objFso", 0,0,0,0);
- objAtx.progid = "Scripting.FileSystemObject";
- this.addChild("inff_objFso", objAtx);
- objAtx.show();
- }
-
- return inff_objFso;
- }
- /********************************************************************************************************************/
- /************************* [INF] TTS 관련 함수 *****************************************************************/
- /********************************************************************************************************************/
- var ztt_objTTS = null; // TTS 연계용 웹브라우저 오브젝트 참조
- var ztt_sIPaddr = "10.10.10.75"; // TTS서버 아이피
- var ztt_sPort = "7000"; // TTS서버 포트
- /****************************************************************************************
- * Function : zttf_InitTTS
- * Description : TTS 기능 초기화
- * Argument :
- * return type :
- * Creator : 이상준
- ****************************************************************************************/
-
- function zttf_InitTTS(){
- try {
- ztt_sIPaddr = sysf_getSystemInfo("ttssvrip"); // TTS서버 아이피
- ztt_sPort = sysf_getSystemInfo("ttssvrport"); // TTS서버 포트
-
- ztt_objTTS = this.components["objTTS"]; // 객체를 찾음
- if (ztt_objTTS == null)
- {
- // NHIC 클라이언트 동적생성
- ztt_objTTS = new WebBrowser("objTTS", -200, -200, -50,-50); // 영역이 보이지 않으면 오동작 하므로 마이어스 좌표를 줌
-
- //ztt_objTTS = new WebBrowser("objTTS", 0, 0, 0,0);
-
- this.addChild("objTTS", ztt_objTTS);
- ztt_objTTS.url = "C:\\himed\\components\\VoiceWare\\tts.html";
- ztt_objTTS.show();
- //ztt_objTTS.visible = false;
- }
- } catch(e) {
- alert("연계모듈 초기화 도중 오류가 발생하였습니다."+ "|" + e.name + "|" + e.message + "|" + e.number + "|" + e.description);
- return false;
- }
- }
- /****************************************************************************************
- * Function : zttf_TTSPlay
- * Description : 텍스트를 목소리로 변화하여 재생
- * Argument : sMsg - 재생할 텍스트
- nSpeakerID - 목소리 아이디
-
- - 0 : 지혜(여성)
- - 1 : 민호(남성)
- - 2 : 은주(여성)
- - 3 : 준우(남성)
- - 6 : 선영(여성)
- - 8 : 수진(여성)
- - 10 : 유미(여성)
- - 100 : Kate(영문, 여성)
- - 101 : Paul(영문, 남성)
- - 200 : Lily(중국어, 여성)
- - 201 : Wang(중국어, 남성)
- - 300 : Miyu(일본어, 여성)
-
- * return type :
- * Creator : 이상준
- ****************************************************************************************/
- function zttf_TTSPlay(sMsg, nSpeakerID) {
- sMsg = sMsg.replace(/[\r|\n]/g, ""); //개행문자제거
- if (nSpeakerID == null)
- {
- nSpeakerID = 10;
- }
- ztt_objTTS.document.parentWindow.execScript("SetTTSEnv('"+ ztt_sIPaddr +"', "+ztt_sPort+", "+nSpeakerID+", 16000, 0)", "JavaScript");
- ztt_objTTS.document.parentWindow.execScript("TTSPlay('"+sMsg+"')", "JavaScript");
- }
- /****************************************************************************************
- * Function : zttf_TTSStop
- * Description : TTS 기능 초기화
- * Argument :
- * return type :
- * Creator : 이상준
- ****************************************************************************************/
- function zttf_TTSStop() {
- ztt_objTTS.document.parentWindow.execScript("TTSStop()", "JavaScript");
- }
- /********************************************************************************************************************/
- /************************* [INF] TCHART 관련 함수 ******************************************************************/
- /********************************************************************************************************************/
- /****************************************************************************************
- * Function : inff_createTChart
- * Description : TChart Control 생성
- * Argument : 01. sObjId(String) : 생성될 TChart Object ID
- * : 02. nLeftPx(Integer) : Left
- * : 03. nTopPx(Integer) : Top
- * : 04. nWidthPx(Integer) : Width
- * : 05. nHeightPx(Integer) : Height
- * return type : Object TChart
- * Creator : 임준호
- ****************************************************************************************/
- function inff_createTChart(sObjId, nLeftPx, nTopPx, nWidthPx, nHeightPx){
-
- var objAtx = null;
-
- if(utlf_isNull(this.components[sObjId])){
- objAtx = new ActiveX(sObjId, nLeftPx, nTopPx, nWidthPx, nHeightPx);
- objAtx.progid = "{FAB9B41C-87D6-474D-AB7E-F07D78F2422E}";
- this.addChild(sObjId, objAtx);
- objAtx.show();
- }
-
- this.components[sObjId].visible = true;
- return this.components[sObjId];
- }
- /****************************************************************************************
- * Function : inff_createTChart8
- * Description : TChart 8 Control 생성
- * Argument : 01. sObjId(String) : 생성될 TChart Object ID
- * : 02. nLeftPx(Integer) : Left
- * : 03. nTopPx(Integer) : Top
- * : 04. nWidthPx(Integer) : Width
- * : 05. nHeightPx(Integer) : Height
- * return type : Object TChart
- * Creator : 임준호
- ****************************************************************************************/
- function inff_createTChart8(sObjId, nLeftPx, nTopPx, nWidthPx, nHeightPx){
-
- var objAtx = null;
-
- if(utlf_isNull(this.components[sObjId])){
- objAtx = new ActiveX(sObjId, nLeftPx, nTopPx, nWidthPx, nHeightPx);
- objAtx.progid = "{BDEB0088-66F9-4A55-ABD2-0BF8DEEC1196}";
- this.addChild(sObjId, objAtx);
- objAtx.show();
- }
-
- this.components[sObjId].visible = true;
- return this.components[sObjId];
- }
- /****************************************************************************************
- * Function : inff_clearTChart
- * Description : TChart Clear
- * Argument : 01. objTchart(Object) : Target Chart Object
- * return type :
- * Creator : 임준호
- ****************************************************************************************/
- function inff_clearTChart(objTchart){
-
- objTchart.RemoveAllSeries();
- objTchart.Tools.clear()
- }
- /****************************************************************************************
- * Function : inff_drawBar
- * Description : dataset의 해당 로우 data를 반영하여 TChart에(Point Type) 그려 줌.
- * Argument : 01. tChartObj(Object) : Target TChart Object
- * : 02. objDs(Object) : Source Dataset
- * : 03. sXColNm(String) : X축 데이터의 Column명
- * : 03. sYColNm(String) : Y축 데이터의 Column명
- * : 04. title(String) : TChart Title
- * : 05. pivot(Boolean) : true | false
- * return type :
- * Creator : 임준호
- ****************************************************************************************/
- function inff_drawBarFromDs(tChartObj:ActiveX, objDs:Dataset, sXColNm, sYColNm, sTitle, pivot) {
-
- // TChart 초기화
- inff_clearTChart(tChartObj);
- tChartObj.Header.Visible = true;
- tChartObj.Header.Text[0] = sTitle; // Title 설정
-
- tChartObj.Aspect.View3D = 0; // 3D 설정 :: 0 = 2D | 1 = 3D
-
- if(pivot) pivot = 2;
- else pivot = 1;
- tChartObj.AddSeries(pivot); // TChart Type 설정 :: 0 = Line | 1 = Bar ..
- tChartObj.Legend.Visible = false;
- tChartObj.Series(0).Marks.Visible = false;
- var Rnd1, Rnd2, Rnd3;
- var cColor;
- var i;
- var x, y;
-
- var nRowCnt = objDs.rowcount;
-
- for(i=0 ; i<nRowCnt ; i++){
- Rnd1 = Math.random();
- Rnd1 = Math.round((255 - 1) * Rnd1 + 1);
-
- Rnd2 = Math.random();
- Rnd2 = Math.round((255 - 1) * Rnd2 + 1);
-
- Rnd3 = Math.random();
- Rnd3 = Math.round((255 - 1) * Rnd3 + 1);
- //trace("Rnd1="+Rnd1+":Rnd2="+Rnd2+":Rnd3="+Rnd3);
- cColor = (Rnd1).toString(16) + (Rnd2).toString(16) + (Rnd3).toString(16);
-
- x = objDs.getColumn(i, sXColNm);
- y = objDs.getColumn(i, sYColNm);
-
- tChartObj.Series(0).Add (y, x, cColor);
- }
- }
- /****************************************************************************************
- * Function : inff_drawBar
- * Description : 그리드의 해당 로우 data를 반영하여 TChart에(Point Type) 그려 줌.
- * Argument : 01. tChartObj(Object) : Target TChart Object
- * : 02. objGrid(Object) : Source Grid
- * : 03. nYColIndex(Number) : Y축 데이터의 Column index
- * : 04. title(String) : TChart Title
- * : 05. pivot(Boolean) : true | false
- * return type :
- * Creator : 임준호
- ****************************************************************************************/
- function inff_drawBar(tChartObj:ActiveX, objGrid:Grid, nYColIndex, sTitle, pivot) {
-
- // TChart 초기화
- inff_clearTChart(tChartObj);
- tChartObj.Header.Visible = true;
- tChartObj.Header.Text[0] = sTitle; // Title 설정
-
- tChartObj.Aspect.View3D = 0; // 3D 설정 :: 0 = 2D | 1 = 3D
-
- if(pivot) pivot = 2;
- else pivot = 1;
- tChartObj.AddSeries(pivot); // TChart Type 설정 :: 0 = Line | 1 = Bar ..
- tChartObj.Legend.Visible = false;
- tChartObj.Series(0).Marks.Visible = false;
- var Rnd1, Rnd2, Rnd3;
- var cColor;
- var i;
- var x, y;
-
- //var nRowCnt = objDs.rowcount;
- var nRowCnt = objGrid.getFormatRowCount();
-
- for(i=0 ; i<nRowCnt ; i++){
- Rnd1 = Math.random();
- Rnd1 = Math.round((255 - 1) * Rnd1 + 1);
-
- Rnd2 = Math.random();
- Rnd2 = Math.round((255 - 1) * Rnd2 + 1);
-
- Rnd3 = Math.random();
- Rnd3 = Math.round((255 - 1) * Rnd3 + 1);
- //trace("Rnd1="+Rnd1+":Rnd2="+Rnd2+":Rnd3="+Rnd3);
- cColor = (Rnd1).toString(16) + (Rnd2).toString(16) + (Rnd3).toString(16);
-
- //x = objDs.getColumn(i, sXColNm);
- x = objGrid.getCellText(i, 0);
- //y = objDs.getColumn(i, sYColNm);
- y = objGrid.getCellText(i, nYColIndex);
-
- tChartObj.Series(0).Add (y, x, cColor);
- }
- }
- /****************************************************************************************
- * Function : inff_drawSelectBarFromDs
- * Description : dataset의 원하는 행, 컬럼을 선택해서 BAR 타입의 차트를 보여줌
- * type == "row" 면 rows 가 X 축, cols 가 그래프 데이터가 된다.
- * type == "col" 면 cols 가 X 축, rows 가 그래프 데이터가 된다.
- * Argument : 01.Object chart : TeeChartObject
- * : 02.Object objDs : teechart 생성시 참고할 데이터를 가진 대상 dataset Object
- * : 03.String title : TeeChart 에 보여질 제목
- * : 04.String sBaseColNm : 기준축에 보여질 title명
- * : 05.String rows : dataset 의 행번호배열( 예: grid의 1,2,4번째 행을 대상으로 하고 싶으면 grid[0]=1, grid[1]=2, grid[2]=4 인 길이 3짜리 배열 object)
- * : 06.String cols : dataset 의 컬럼번호배열( 예: grid의 2,4번째 컬럼을 대상으로 하고 싶으면 grid[0]=2, grid[1]=4 인 길이 2짜리 배열 object)
- * : 07.boolean legend : legend 의 visible 여부(true/false) 기본값은 true;
- * : 08.boolean pivot : pivot 여부 (true/false) 기본값은 false;
- * : 09.String type : X 축으로 지정할 기준 데이터(row/col)
- * 1. row : Grid 의 row(행)이 X축, column(컬럼)이 그래프 데이터가 된다.
- * 2. col : Grid 의 column(컬럼)이 X축, row(행)이 그래프 데이터가 된다.
- * return type :
- * Creator : 임준호
- ****************************************************************************************/
- function inff_drawSelectBarFromDs(chart, objDs:Dataset, title, sBaseColNm, rows, cols, legend, pivot, type) {
- // TChart 초기화
- inff_clearTChart(chart);
- chart.Header.Text[0] = title; // Title 설정
- chart.Aspect.View3D = 0; // 3D 설정 :: 0 = 2D | 1 = 3D
- if(pivot) pivot = 2;
- else pivot = 1;
-
- if(legend) chart.Legend.Visible = true;
- else chart.Legend.Visible = false;
-
- if (type == "row") {
- var r, g, b, color;
- var x, y;
- for (var i = 0; i < cols.length; i++ ) {
- chart.AddSeries(pivot); // TChart Type 설정 :: 0 = Line | 1 = Bar ..
- var idx = chart.SeriesCount -1;
- //chart.Series(idx).title = grid.valueMatrix(0, cols[i]);
- chart.Series(idx).Title = objDs.getColumn(0, cols[i]);
- chart.Series(i).Marks.Visible = false;
- r = Math.random();
- r = Math.round((255 - 1) * r + 1);
-
- g = Math.random();
- g = Math.round((255 - 1) * g + 1);
-
- b = Math.random();
- b = Math.round((255 - 1) * b + 1);
-
- //color = window.rgb( (255 - 1) * r + 1, (255 - 1) * g + 1 , (255 - 1) * b + 1);
- color = (r).toString(16) + (g).toString(16) + (b).toString(16);
-
- for (var j = 0; j < rows.length; j++) {
- //x = grid.valueMatrix(rows[j], 0);
- x = objDs.getColumn(rows[j], sBaseColNm);
- //y = grid.valueMatrix(rows[j], cols[i]);
- y = objDs.getColumn(rows[j], cols[i]);
-
- //alert("x : " + x + "\ny : " + y + "\ncolor : " + color + "\ni : " + i + "\nj : " + j);
- chart.Series(i).Add (y, x, chart.Series(idx).Color);
- chart.Series(i).LegendItemColor(color)
- }
- }
- } else if (type == "col") {
- var r, g, b, color;
- var x, y;
- for (var i = 0; i < rows.length; i++ ) {
- chart.AddSeries(pivot); // TChart Type 설정 :: 0 = Line | 1 = Bar ..
- var idx = chart.SeriesCount -1;
- chart.Series(idx).Title = objDs.getColumn(rows[i], sBaseColNm);
-
- chart.Series(i).Marks.Visible = false;
- r = Math.random();
- r = Math.round((255 - 1) * r + 1);
-
- g = Math.random();
- g = Math.round((255 - 1) * g + 1);
-
- b = Math.random();
- b = Math.round((255 - 1) * b + 1);
-
- color = (r).toString(16) + (g).toString(16) + (b).toString(16);
- for (var j = 0; j < cols.length; j++) {
- x = objDs.getColumn(0, cols[j]);
- y = objDs.getColumn(rows[i], cols[j]);
- //alert("x : " + x + "\ny : " + y + "\ncolor : " + color + "\ni : " + i + "\nj : " + j);
- chart.Series(i).Add (y, x, chart.Series(idx).Color);
- chart.Series(i).LegendItemColor(color)
- }
- }
- }
- }
- /****************************************************************************************
- * Function : inff_drawSelectBar
- * Description : 그리드의 원하는 행, 컬럼을 선택해서 BAR 타입의 차트를 보여줌
- * type == "row" 면 rows 가 X 축, cols 가 그래프 데이터가 된다.
- * type == "col" 면 cols 가 X 축, rows 가 그래프 데이터가 된다.
- * Argument : 01.Object chart : TeeChartObject
- * : 02.Object objGrid : teechart 생성시 참고할 데이터를 가진 대상 dataset Grid
- * : 03.String title : TeeChart 에 보여질 제목
- * : 05.String rows : dataset 의 행번호배열( 예: grid의 1,2,4번째 행을 대상으로 하고 싶으면 grid[0]=1, grid[1]=2, grid[2]=4 인 길이 3짜리 배열 object)
- * : 06.String cols : dataset 의 컬럼번호배열( 예: grid의 2,4번째 컬럼을 대상으로 하고 싶으면 grid[0]=2, grid[1]=4 인 길이 2짜리 배열 object)
- * : 07.boolean legend : legend 의 visible 여부(true/false) 기본값은 true;
- * : 08.boolean pivot : pivot 여부 (true/false) 기본값은 false;
- * : 09.String type : X 축으로 지정할 기준 데이터(row/col)
- * 1. row : Grid 의 row(행)이 X축, column(컬럼)이 그래프 데이터가 된다.
- * 2. col : Grid 의 column(컬럼)이 X축, row(행)이 그래프 데이터가 된다.
- * return type :
- * Creator : 임준호
- ****************************************************************************************/
- function inff_drawSelectBar(chart, objGrid:Grid, title, rows, cols, legend, pivot, type) {
- // TChart 초기화
- inff_clearTChart(chart);
- chart.Header.Text[0] = title; // Title 설정
- chart.Aspect.View3D = 0; // 3D 설정 :: 0 = 2D | 1 = 3D
- if(pivot) pivot = 2;
- else pivot = 1;
-
- if(legend) chart.Legend.Visible = true;
- else chart.Legend.Visible = false;
-
- if (type == "row") {
- var r, g, b, color;
- var x, y;
-
- for (var i = 0; i < cols.length; i++ ) {
- chart.AddSeries(pivot); // TChart Type 설정 :: 0 = Line | 1 = Bar ..
- var idx = chart.SeriesCount -1;
- //chart.Series(idx).title = grid.valueMatrix(0, cols[i]);
- //chart.Series(idx).Title = objDs.getColumn(0, cols[i]);
- chart.Series(idx).Title = objGrid.getCellText(0, cols[i]);
- chart.Series(i).Marks.Visible = false;
- r = Math.random();
- r = Math.round((255 - 1) * r + 1);
-
- g = Math.random();
- g = Math.round((255 - 1) * g + 1);
-
- b = Math.random();
- b = Math.round((255 - 1) * b + 1);
-
- //color = window.rgb( (255 - 1) * r + 1, (255 - 1) * g + 1 , (255 - 1) * b + 1);
- color = (r).toString(16) + (g).toString(16) + (b).toString(16);
-
- for (var j = 0; j < rows.length; j++) {
- //x = grid.valueMatrix(rows[j], 0);
- //x = objDs.getColumn(rows[j], sBaseColNm);
- x = objGrid.getCellText(rows[j], 0);
- //y = grid.valueMatrix(rows[j], cols[i]);
- //y = objDs.getColumn(rows[j], cols[i]);
- y = objGrid.getCellText(rows[j], cols[i]);
-
- //alert("x : " + x + "\ny : " + y + "\ncolor : " + color + "\ni : " + i + "\nj : " + j);
- chart.Series(i).Add (y, x, chart.Series(idx).Color);
- chart.Series(i).LegendItemColor(color)
- }
- }
- } else if (type == "col") {
- var r, g, b, color;
- var x, y;
- for (var i = 0; i < rows.length; i++ ) {
- chart.AddSeries(pivot); // TChart Type 설정 :: 0 = Line | 1 = Bar ..
- var idx = chart.SeriesCount -1;
- //chart.Series(idx).Title = objDs.getColumn(rows[i], sBaseColNm);
- chart.Series(idx).Title = objGrid.getCellText(rows[i], 0);
-
- chart.Series(i).Marks.Visible = false;
- r = Math.random();
- r = Math.round((255 - 1) * r + 1);
-
- g = Math.random();
- g = Math.round((255 - 1) * g + 1);
-
- b = Math.random();
- b = Math.round((255 - 1) * b + 1);
-
- color = (r).toString(16) + (g).toString(16) + (b).toString(16);
- for (var j = 0; j < cols.length; j++) {
- //x = objDs.getColumn(0, cols[j]);
- x = objGrid.getCellText(0, cols[j]);
- //y = objDs.getColumn(rows[i], cols[j]);
- y = objGrid.getCellText(rows[i], cols[j]);
- //alert("x : " + x + "\ny : " + y + "\ncolor : " + color + "\ni : " + i + "\nj : " + j);
- chart.Series(i).Add (y, x, chart.Series(idx).Color);
- chart.Series(i).LegendItemColor(color)
- }
- }
- }
- }
- /****************************************************************************************
- * Function : inff_drawSelectBarFromDs
- * Description : dataset의 원하는 행, 컬럼을 선택해서 BAR 타입의 차트를 보여줌
- * type == "row" 면 rows 가 X 축, cols 가 그래프 데이터가 된다.
- * type == "col" 면 cols 가 X 축, rows 가 그래프 데이터가 된다.
- * Argument : 01.Object chart : TeeChartObject
- * : 02.Object objDs : teechart 생성시 참고할 데이터를 가진 대상 dataset Object
- * : 03.String title : TeeChart 에 보여질 제목
- * : 04.String sBaseColNm : 기준축에 보여질 title명
- * : 05.String rows : dataset 의 행번호배열( 예: grid의 1,2,4번째 행을 대상으로 하고 싶으면 grid[0]=1, grid[1]=2, grid[2]=4 인 길이 3짜리 배열 object)
- * : 06.String cols : dataset 의 컬럼번호배열( 예: grid의 2,4번째 컬럼을 대상으로 하고 싶으면 grid[0]=2, grid[1]=4 인 길이 2짜리 배열 object)
- * : 07.boolean legend : legend 의 visible 여부(true/false) 기본값은 true;
- * : 08.boolean pivot : pivot 여부 (true/false) 기본값은 false;
- * : 09.String type : X 축으로 지정할 기준 데이터(row/col)
- * 1. row : Grid 의 row(행)이 X축, column(컬럼)이 그래프 데이터가 된다.
- * 2. col : Grid 의 column(컬럼)이 X축, row(행)이 그래프 데이터가 된다.
- * return type :
- * Creator : 임준호
- ****************************************************************************************/
- function inff_drawSelectBarFromDs(chart, objDs:Dataset, title, sBaseColNm, rows, cols, legend, pivot, type) {
- // TChart 초기화
- inff_clearTChart(chart);
- chart.Header.Text[0] = title; // Title 설정
- chart.Aspect.View3D = 0; // 3D 설정 :: 0 = 2D | 1 = 3D
- if(pivot) pivot = 2;
- else pivot = 1;
-
- if(legend) chart.Legend.Visible = true;
- else chart.Legend.Visible = false;
-
- if (type == "row") {
- var r, g, b, color;
- var x, y;
- for (var i = 0; i < cols.length; i++ ) {
- chart.AddSeries(pivot); // TChart Type 설정 :: 0 = Line | 1 = Bar ..
- var idx = chart.SeriesCount -1;
- //chart.Series(idx).title = grid.valueMatrix(0, cols[i]);
- chart.Series(idx).Title = objDs.getColumn(0, cols[i]);
- chart.Series(i).Marks.Visible = false;
- r = Math.random();
- r = Math.round((255 - 1) * r + 1);
-
- g = Math.random();
- g = Math.round((255 - 1) * g + 1);
-
- b = Math.random();
- b = Math.round((255 - 1) * b + 1);
-
- //color = window.rgb( (255 - 1) * r + 1, (255 - 1) * g + 1 , (255 - 1) * b + 1);
- color = (r).toString(16) + (g).toString(16) + (b).toString(16);
-
- for (var j = 0; j < rows.length; j++) {
- //x = grid.valueMatrix(rows[j], 0);
- x = objDs.getColumn(rows[j], sBaseColNm);
- //y = grid.valueMatrix(rows[j], cols[i]);
- y = objDs.getColumn(rows[j], cols[i]);
-
- //alert("x : " + x + "\ny : " + y + "\ncolor : " + color + "\ni : " + i + "\nj : " + j);
- chart.Series(i).Add (y, x, chart.Series(idx).Color);
- chart.Series(i).LegendItemColor(color)
- }
- }
- } else if (type == "col") {
- var r, g, b, color;
- var x, y;
- for (var i = 0; i < rows.length; i++ ) {
- chart.AddSeries(pivot); // TChart Type 설정 :: 0 = Line | 1 = Bar ..
- var idx = chart.SeriesCount -1;
- chart.Series(idx).Title = objDs.getColumn(rows[i], sBaseColNm);
-
- chart.Series(i).Marks.Visible = false;
- r = Math.random();
- r = Math.round((255 - 1) * r + 1);
-
- g = Math.random();
- g = Math.round((255 - 1) * g + 1);
-
- b = Math.random();
- b = Math.round((255 - 1) * b + 1);
-
- color = (r).toString(16) + (g).toString(16) + (b).toString(16);
- for (var j = 0; j < cols.length; j++) {
- x = objDs.getColumn(0, cols[j]);
- y = objDs.getColumn(rows[i], cols[j]);
- //alert("x : " + x + "\ny : " + y + "\ncolor : " + color + "\ni : " + i + "\nj : " + j);
- chart.Series(i).Add (y, x, chart.Series(idx).Color);
- chart.Series(i).LegendItemColor(color)
- }
- }
- }
- }
- /****************************************************************************************
- * Function : inff_drawLineFromDs
- * Description : dataset의 해당 로우 data를 반영하여 TChart에(Point Type) 그려 줌.
- * Argument : 01.Object tChartObj : Target TChart Object
- * : 02.Object objDs : Source Dataset Object
- * : 03.Integer row : Dataset Source row
- * : 04.[String title] : TChart Title
- * : 05.String sBaseColNm : 기준축에 보여질 title명
- * : 06.[Boolean refresh] : 초기화 여부
- * return type :
- * Creator : 임준호
- ****************************************************************************************/
- function inff_drawLineFromDs(tChartObj, objDs:Dataset, row, title, sBaseColNm, refresh){
- // TChart 초기화
- if( refresh ) {
- inff_clearTChart(tChartObj);
- }
-
-
- if( title != null || title == "" ) {
- tChartObj.Header.Text[0] = title; // Title 설정
- }
- tChartObj.Aspect.View3D = 0; // 모양 설정 :: 0 = 2D | 1 = 3D
- tChartObj.Legend.CheckBoxes = true;
- tChartObj.Legend.Alignment = 0; // Legend 위치 설정 :: 0 = left | 1 = right | 2 = top| 3 = bottom
- var Rnd1, Rnd2, Rnd3;
- var cColor;
- var i;
- var x, y;
-
- tChartObj.AddSeries(0); // TChart Type 설정 :: 0 = Line | 1 = Bar ..
- var seriesIndex = tChartObj.SeriesCount - 1;
- var trgRow = row;
- tChartObj.Series(seriesIndex).asLine.Pointer.Visible = true;
- tChartObj.Series(seriesIndex).asLine.Pointer.Style = 1; //PointStyle 설정 :: 0 - 8
- tChartObj.Series(seriesIndex).Title = objDs.getColumn(trgRow, sBaseColNm);
- //tChartObj.Series(cline - 2).Marks.Style = 0;
-
- Rnd1 = Math.random();
- Rnd1 = Math.round((255 - 1) * Rnd1 + 1);
-
- Rnd2 = Math.random();
- Rnd2 = Math.round((255 - 1) * Rnd2 + 1);
-
- Rnd3 = Math.random();
- Rnd3 = Math.round((255 - 1) * Rnd3 + 1);
- cColor = (Rnd1).toString(16) + (Rnd2).toString(16) + (Rnd3).toString(16);
- var nColCnt = objDs.getColCount();
-
- for(i=0 ; i<nColCnt ; i++){
- if(objDs.getColumnInfo(i).name != sBaseColNm){
- //x = gridObj.valueMatrix(0, i);
- x = objDs.getColumn(0, i);
- //y = gridObj.valueMatrix(trgRow, i);
- y = objDs.getColumn(trgRow, i);
- tChartObj.Series(seriesIndex).Add (y, x, tChartObj.Series(seriesIndex).Color);
- tChartObj.Series(seriesIndex).LegendItemColor(cColor);
- }
- }
- }
- /****************************************************************************************
- * Function : inff_drawLine
- * Description : 그리드의 해당 로우 data를 반영하여 TChart에(Point Type) 그려 줌.
- * Argument : 01.Object tChartObj : Target TChart Object
- * : 02.Object objGrid : Source Grid Object
- * : 03.Integer row : Dataset Source row
- * : 04.[String title] : TChart Title
- * : 06.[Boolean refresh] : 초기화 여부
- * return type :
- * Creator : 임준호
- ****************************************************************************************/
- function inff_drawLine(tChartObj, objGrid:Grid, row, title, refresh){
-
- // TChart 초기화
- if( refresh ) {
- inff_clearTChart(tChartObj);
- }
-
-
- if( title != null || title == "" ) {
- tChartObj.Header.Text[0] = title; // Title 설정
- }
- tChartObj.Aspect.View3D = 0; // 모양 설정 :: 0 = 2D | 1 = 3D
- tChartObj.Legend.CheckBoxes = true;
- tChartObj.Legend.Alignment = 0; // Legend 위치 설정 :: 0 = left | 1 = right | 2 = top| 3 = bottom
- var Rnd1, Rnd2, Rnd3;
- var cColor;
- var i;
- var x, y;
-
- tChartObj.AddSeries(0); // TChart Type 설정 :: 0 = Line | 1 = Bar ..
- var seriesIndex = tChartObj.SeriesCount - 1;
- var trgRow = row;
-
- tChartObj.Series(seriesIndex).asLine.Pointer.Visible = true;
- tChartObj.Series(seriesIndex).asLine.Pointer.Style = 1; //PointStyle 설정 :: 0 - 8
- //tChartObj.Series(seriesIndex).Title = objDs.getColumn(trgRow, sBaseColNm);
- tChartObj.Series(seriesIndex).Title = objGrid.getCellText(trgRow, 0);
-
- //tChartObj.Series(cline - 2).Marks.Style = 0;
-
- Rnd1 = Math.random();
- Rnd1 = Math.round((255 - 1) * Rnd1 + 1);
-
- Rnd2 = Math.random();
- Rnd2 = Math.round((255 - 1) * Rnd2 + 1);
-
- Rnd3 = Math.random();
- Rnd3 = Math.round((255 - 1) * Rnd3 + 1);
- cColor = (Rnd1).toString(16) + (Rnd2).toString(16) + (Rnd3).toString(16);
-
- //var nColCnt = objDs.getColCount();
- var nColCnt = objGrid.getFormatColCount();
-
- for(i=1 ; i<nColCnt ; i++){
- var nCellWidth = objGrid.getCellRect("Body", i).width;
- if(nCellWidth != "0"){
- //if(objDs.getColumnInfo(i).name != sBaseColNm){
- //x = gridObj.valueMatrix(0, i);
- //x = objDs.getColumn(0, i);
- x = objGrid.getCellText(-1, i);
- //y = gridObj.valueMatrix(trgRow, i);
- //y = objDs.getColumn(trgRow, i);
- y = objGrid.getCellText(trgRow, i);
- //trace("================x="+x+":"+"y="+y);
- tChartObj.Series(seriesIndex).Add (y, x, tChartObj.Series(seriesIndex).Color);
- tChartObj.Series(seriesIndex).LegendItemColor(cColor);
- //}
- }
- }
- }
- /****************************************************************************************
- * Function : inff_drawLineAllFromDs
- * Description : dataset의 data를 반영하여 TChart에(Point Type) 그려 줌.
- * Argument : 01.Object tChartObj : Target TChart Object
- * : 02.Object objDs : Source Dataset Object
- * : 03.String title : TChart Title
- * : 04.String sBaseColNm : 기준축에 보여질 title명
- * return type :
- * Creator : 임준호
- ****************************************************************************************/
- function inff_drawLineAllFromDs(tChartObj, objDs, title, sBaseColNm) {
-
- var nRowCnt = objDs.rowcount;
-
- for(i=0 ; i<nRowCnt ; i++){
- inff_drawLine(tChartObj, objDs, i, title, sBaseColNm, false);
- }
- }
- /****************************************************************************************
- * Function : inff_drawLineAll
- * Description : dataset의 data를 반영하여 TChart에(Point Type) 그려 줌.
- * Argument : 01.Object tChartObj : Target TChart Object
- * : 02.Object objGrid : Source Grid Object
- * : 03.String title : TChart Title
- * return type :
- * Creator : 임준호
- ****************************************************************************************/
- function inff_drawLineAll(tChartObj, objGrid:Grid, title) {
-
- //var nRowCnt = objGrid.getFormatRowCount();
- var nRowCnt = objGrid.rowcount;
-
- inff_clearTChart(tChartObj);
-
- for(i=0 ; i<nRowCnt ; i++){
- inff_drawLine(tChartObj, objGrid, i, title, false);
- }
- }
- /****************************************************************************************
- * Function : inff_setBackImageLoad
- * Description : chart 배경이미지 삽입(클라이언트 경로만 가능함)
- * Argument : 01.Object tChartObj : Target TChart Object
- * : 02.String imgCd : 이미지명
- * return type :
- * Creator : 임준호
- ****************************************************************************************/
- function inff_setBackImageLoad(tChartObj, imgCd){
- tChartObj.Panel.BackImageLoad(inff_getTChartBackgroundImage(imgCd));
- }
- /****************************************************************************************
- * Function : inff_getTChartBackgroundImage
- * Description : 이미지 경로를 반환
- * Argument : 01.String imgCd : 이미지명
- * return type :
- * Creator : 임준호
- ****************************************************************************************/
- function inff_getTChartBackgroundImage(imgcd){
- return "C:\\himed\\components\\ClipSoft\\teechart7\\images\\"+imgcd+".gif";
- //return "C:\\Program Files\\himed\\components\\ClipSoft\\teechart7\\images\\"+imgcd+".gif";
- }
- /****************************************************************************************
- * Function : inff_getTChartBackgroundImageJpg
- * Description : 이미지 경로를 반환
- * Argument : 01.String imgCd : 이미지명
- * return type :
- * Creator :
- ****************************************************************************************/
- function inff_getTChartBackgroundImageJpg(imgcd){
- return "C:\\himed\\components\\ClipSoft\\teechart7\\images\\"+imgcd+".jpg";
- }]]></Script>
|