comm_inf.xjs 65 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <Script type="xscript4.0"><![CDATA[/***************************************************************************************
  3. * System Name : HIT
  4. * Job Name :
  5. * File Name : comm_inf.xjs
  6. * Creator : 이상준
  7. * Make Date : 2014-02-18
  8. *
  9. * Description : 연계 API
  10. *---------------------------------------------------------------------------------------
  11. * Modify Date Modifier Modify Description
  12. *---------------------------------------------------------------------------------------
  13. * 2014-02-18 HIT
  14. *
  15. *---------------------------------------------------------------------------------------
  16. ****************************************************************************************/
  17. /********************************************************************************************************************/
  18. /************************* [HELPER] 시스템헬퍼 연계함수 *********************************************************/
  19. /********************************************************************************************************************/
  20. // helperf_Init : 시스템 헬퍼 모듈을 생성 및 초기화 한다.
  21. /********************************************************************************************************************/
  22. /************************* [ZES] 전자인증 및 전자서명 연계 함수 ************************************************/
  23. /********************************************************************************************************************/
  24. // zesf_InitSign : 전자서명관련 모듈을 생성 및 초기화 한다.
  25. // zesf_getCMErrMsg : 전자서명 관련 에러메세지를 가져온다.
  26. // zesf_getKMIErrMsg : KMI 관련 에러메시지를 가져온다.
  27. // zesf_LoadKeyAndCert : 현재 로그인된 사용자 인증서/개인키를 로드한다.
  28. // zesf_SaveKeyAndCert : 현재 로그인된 사용자 인증서/개인키를 저장한다.
  29. // zesf_SignData : 로드된 인증서를 가지고 전자서명을 수행한다.
  30. // zesf_SignFile : 로드된 인증서를 가지고 파일에 대한 전자서명을 수행한다.
  31. // zesf_ChangeKeyPwd : 인증서의 개인키 패스워드를 변경하여 KMI 서버에 등록한다.
  32. // zesf_RenewKeyAndCert : 전자인증서를 갱신한다.
  33. /********************************************************************************************************************/
  34. /************************* [ZEH] 건강보험공단 연계함수 ***********************************************************/
  35. /********************************************************************************************************************/
  36. // zehf_Initialize : 건강보험공단 모듈을 생성 및 초기화 한다.
  37. // zehf_AddParam : 송신 메세지의 필드를 설정한다.
  38. // zehf_ShowMessage : 서버메세지를 알림창으로 보여준다.
  39. // zehf_Qualify : 공단에 메시지를 송수신하여 자격을 검증한다.
  40. // zehf_Approval : 공단에 메시지를 송수신하여 승인을 처리한다.
  41. // zehf_Cancel : 공단에 메시지를 송수신하여 승인을 취소한다.
  42. // zehf_GetValue : 수신된 데이터의 nSeq 라인의 컬럼 데이터를 반환한다.
  43. // zehf_Close : 송수신 시 사용한 메모리를 해제한다.
  44. /********************************************************************************************************************/
  45. /************************* [INF] activex 관련 함수 *****************************************************************/
  46. /********************************************************************************************************************/
  47. //inff_initsound : 사운드기능 초기화
  48. //inff_playsound : 사운드재생
  49. //inff_fileSystemObject : 파일시스템 오브젝트 사용
  50. /********************************************************************************************************************/
  51. /************************* [TTF] TTS 관련 함수 *********************************************************************/
  52. /********************************************************************************************************************/
  53. //zttf_InitTTS : TTS 기능 초기화 (신규 2014-05-30)
  54. //zttf_TTSPlay : 텍스트를 목소리로 변화하여 재생 (신규 2014-05-30)
  55. //zttf_TTSStop : TTS 재생중인 사운드를 멈춤 (신규 2014-05-30)
  56. /********************************************************************************************************************/
  57. /************************* [INF] TCHART 관련 함수 ******************************************************************/
  58. /********************************************************************************************************************/
  59. //inff_createTChart : TChart Control 생성 (신규 2014-05-30)
  60. //inff_createTChart8 : TChart 8 Control 생성 (신규 2014-05-30)
  61. //inff_clearTChart : TChart Clear (신규 2014-05-30)
  62. //inff_drawBar : 그리드의 해당 로우 data를 반영하여 TChart에(Point Type) 그려 줌. (신규 2014-05-30)
  63. //inff_drawBarFromDs : dataset의 해당 로우 data를 반영하여 TChart에(Point Type) 그려 줌. (신규 2014-06-03)
  64. //inff_drawSelectBar : 그리드의 원하는 행, 컬럼을 선택해서 BAR 타입의 차트를 보여줌 (신규 2014-05-30)
  65. //inff_drawSelectBarFromDs : dataset의 원하는 행, 컬럼을 선택해서 BAR 타입의 차트를 보여줌 (신규 2014-06-03)
  66. //inff_drawLine : 그리드의 해당 로우 data를 반영하여 TChart에(Point Type) 그려 줌. (신규 2014-05-30)
  67. //inff_drawLineFromDs : dataset의 해당 로우 data를 반영하여 TChart에(Point Type) 그려 줌. (신규 2014-06-03)
  68. //inff_drawLineAll : 그리드의 data를 반영하여 TChart에(Point Type) 그려 줌. (신규 2014-05-30)
  69. //inff_drawLineAllFromDs : dataset의 data를 반영하여 TChart에(Point Type) 그려 줌. (신규 2014-06-03)
  70. //inff_setBackImageLoad : chart 배경이미지 삽입(클라이언트 경로만 가능함) (신규 2014-05-30)
  71. //inff_getTChartBackgroundImage : 이미지 경로를 반환 (신규 2014-05-30)
  72. //inff_getTChartBackgroundImageJpg : 이미지 경로를 반환 (신규 2018-08-20)
  73. /********************************************************************************************************************/
  74. /************************* [HELPER] 시스템헬퍼 연계함수 *********************************************************/
  75. /********************************************************************************************************************/
  76. // 시스템헬퍼 인터페이스
  77. var helper_objHelper = null; // 시스템헬퍼 ActiveX 참조
  78. var helper_objForm = null;
  79. var _TEL_NO = "";
  80. var _SIGNTEST = "N";
  81. /**********************************************************************************
  82. * 함수명 : helperf_Init
  83. * 설명 : 시스템 헬퍼 모듈을 생성 및 초기화 한다.
  84. * argument : void
  85. * return Type : Boolean (정상처리여부)
  86. **********************************************************************************/
  87. function helperf_Init() {
  88. try {
  89. // 퀵뷰상태인 경우 직접 생성
  90. if (sysf_isQuickView())
  91. {
  92. helper_objForm = this; // 현재 폼오브젝트를 지정
  93. helper_objHelper = this.components["axHelper"]; // 객체를 찾음
  94. if (helper_objHelper == null)
  95. {
  96. // 전자인증 관련 객체를 동적생성
  97. helper_objHelper = new ActiveX("axHelper", 0,0,0,0);
  98. helper_objHelper.progid = "{7ed5c30d-664e-4b8c-8629-5b787446b987}";
  99. this.addChild("axHelper", helper_objHelper);
  100. helper_objHelper.show();
  101. }
  102. }
  103. else { // 아니면 상단에서 오브젝트를 얻어옴
  104. helper_objForm = agv_objAppTopPath.form; // 상단 폼오브젝트를 지정
  105. helper_objHelper = helper_objForm.getHelperObject();
  106. }
  107. return helper_objHelper;
  108. } catch(e) {
  109. alert("시스템 헬퍼 모듈이 설치되지 않았습니다."+ "|" + e.name + "|" + e.message + "|" + e.number + "|" + e.description);
  110. return false;
  111. }
  112. }
  113. /********************************************************************************************************************/
  114. /************************* [ZES] 전자인증 및 전자서명 연계 함수 ************************************************/
  115. /********************************************************************************************************************/
  116. var zes_objSKComm = null;
  117. var zes_objKMClient = null;
  118. var zes_objForm = null;
  119. var zes_sCertYear = 1970;
  120. var zes_sCertMonth = 1;
  121. var zes_sCertDate = 1;
  122. var zes_sUID = "";
  123. /**********************************************************************************
  124. * 함수명 : zesf_InitSign
  125. * 설명 : 전자서명관련 모듈을 생성 및 초기화 한다.
  126. * argument : void
  127. * return Type : Boolean (정상처리여부)
  128. **********************************************************************************/
  129. function zesf_InitSign(){
  130. try {
  131. // KMI 클라이언트 동적생성
  132. if(utlf_isNull(this.components["axKMClient"])){
  133. zes_objKMClient = new ActiveX("axKMClient", 0,0,0,0);
  134. zes_objKMClient.progid = "{D3C608B5-B664-4962-91B7-289DA892953A}";
  135. this.addChild("axKMClient", zes_objKMClient);
  136. }else{
  137. zes_objKMClient = this.components["axKMClient"];
  138. }
  139. zes_objKMClient.show();
  140. } catch(e) {
  141. alert("KMI 모듈이 설치되지 않았습니다.");
  142. return false;
  143. }
  144. try {
  145. // 퀵뷰상태인 경우 직접 생성
  146. if (sysf_isQuickView())
  147. {
  148. zes_objForm = this; // 현재 폼오브젝트를 지정
  149. zes_objSKComm = this.components["axSKComm"]; // 객체를 찾음
  150. if (zes_objSKComm == null)
  151. {
  152. // 전자인증 관련 객체를 동적생성
  153. zes_objSKComm = new ActiveX("axKMClient", 0,0,0,0);
  154. zes_objSKComm.progid = "{D3C608B5-B664-4962-91B7-289DA892953A}";
  155. this.addChild("axSKComm", zes_objSKComm);
  156. zes_objSKComm.show();
  157. }
  158. }
  159. else { // 아니면 상단에서 오브젝트를 얻어옴
  160. zes_objForm = agv_objAppTopPath.form; // 상단 폼오브젝트를 지정
  161. zes_objSKComm = zes_objForm.getSKCommObject();
  162. }
  163. } catch(e) {
  164. alert("전자인증모듈이 설치되지 않았습니다.");
  165. return false;
  166. }
  167. // 기관코드에 따라서 연락처 다르게 설정
  168. var instcd = sysf_getUserInfo("systeminstcd");
  169. if (instcd == "031")
  170. {
  171. _TEL_NO = "의무기록팀 5233";
  172. }
  173. else if (instcd == "032")
  174. {
  175. _TEL_NO = "의무기록팀 2401,2";
  176. }
  177. return true;
  178. }
  179. /**********************************************************************************
  180. * 함수명 : zesf_getCMErrMsg
  181. * 설명 : 전자서명관련 에러메세지를 리턴한다.
  182. * argument : void
  183. * return Type : String (에러메세지)
  184. **********************************************************************************/
  185. function zesf_getCMErrMsg() {
  186. return "[전자서명 에러]" + zes_objSKComm.GetLastErrorMsg();
  187. }
  188. /**********************************************************************************
  189. * 함수명 : zesf_getKMIErrMsg
  190. * 설명 : KMI 모듈 에러메세지를 리턴한다.
  191. * argument : void
  192. * return Type : String (에러메세지)
  193. **********************************************************************************/
  194. function zesf_getKMIErrMsg( ) {
  195. return "[KMI 에러]" + zes_objKMClient.Error_MSG();
  196. }
  197. /**********************************************************************************
  198. * 함수명 : zesf_LoadKeyAndCert
  199. * 설명 : 현재 로그인된 사용자 인증서/개인키를 로드한다.
  200. * argument : void
  201. * return Type : String (인증서DN)
  202. **********************************************************************************/
  203. function zesf_LoadKeyAndCert( pUid, pDbg ) {
  204. var dn = "";
  205. var msg = "";
  206. var pwd = "";
  207. var certloadyn = "N";
  208. var oDsHardCd = agv_objAppTopPath.form.dv_orderbasicinfo.lf_getOrderBaseInfo("hardcdlist");
  209. if(!utlf_isNull(oDsHardCd)) {
  210. certloadyn = oDsHardCd.lookup("hardcdno", "5996", "hardcd");
  211. }
  212. if (certloadyn == "Y" && _SIGNTEST == "N") {
  213. //비밀번호 입력창 오픈
  214. var xpt = this.getOwnerFrame().position.x + 400;
  215. var ypt = this.getOwnerFrame().position.y + 60;
  216. var objArg = new Object();
  217. objArg.pUid = pUid;
  218. objArg.pDbg = pDbg;
  219. // 인증서비밀번호 입력창이 너무 작게 열리는 현상 때문에 width, height 값 지정해봄 (2017.01.17 - 김상목)
  220. dn = frmf_modal("SPZMS00300", "SPZMS00300", objArg, false, null, xpt, ypt, 281, 143, null, null, null, "M");
  221. } else {
  222. var rData = zesf_LoadKeyAndCertProcess( pUid, pDbg, pwd );
  223. dn = rData.dn;
  224. }
  225. return dn;
  226. }
  227. function zesf_LoadKeyAndCertProcess( pUid, pDbg, pPwd ) {
  228. zes_objSKComm.UnsetMatchedContext();
  229. zes_objForm.zes_sUID = "";
  230. zes_objForm.zes_sCertYear = 1970;
  231. zes_objForm.zes_sCertMonth = 1;
  232. zes_objForm.zes_sCertDate = 1;
  233. var msg = "";
  234. var pwd = "";
  235. var rData = {};
  236. rData.dn = "";
  237. rData.success = false;
  238. if(!utlf_isNull(pPwd)) pwd = pPwd;
  239. var ip = sysf_getUserInfo("kmiip");
  240. var port = sysf_getUserInfo("kmiport");
  241. if( !zes_objKMClient.kmsConnect(ip, port) ) {
  242. msg = "KMI 서버( IP:" + ip + ",포트:" + port + ") 연결에";
  243. sysf_messageBox( msg, "E009", zesf_getKMIErrMsg() );
  244. return rData;
  245. }
  246. if( pDbg != null ) {
  247. alert( "KMI 서버가 연결되었습니다." );
  248. }
  249. var envelop = zes_objKMClient.kmsInit();
  250. if( envelop == "" ) {
  251. msg = "KMI 모듈의 초기화에";
  252. sysf_messageBox( msg, "E009", zesf_getKMIErrMsg() );
  253. zes_objKMClient.kmsDisconnect();
  254. return rData;
  255. }
  256. if( pDbg != null ) {
  257. alert( "KMI 모듈이 초기화되었습니다. \nENVELOP : " + envelop );
  258. }
  259. rData.dn = zes_objKMClient.GetKeyAndCert( pUid );
  260. if( rData.dn == "" ) {
  261. msg = "KMI 서버에서 인증서( " + pUid + " )를 가져오는 데.";
  262. sysf_messageBox( msg, "E009", zesf_getKMIErrMsg() +"\n전자인증서와 관련한 에러는 " + _TEL_NO + " 로 연락해주시기 바랍니다.");
  263. zes_objKMClient.kmsDisconnect();
  264. return rData;
  265. }
  266. if( pDbg != null ) {
  267. alert( "인증서를 다운로드하였습니다.\n다운로드 인증서 DN : " + rData.dn );
  268. }
  269. switch( zes_objKMClient.IsCertNew( pUid, rData.dn ) ) {
  270. case 0 : // 현재 인증서가 유효함
  271. if( pDbg != null ) {
  272. alert( "현재 인증서가 유효합니다." );
  273. }
  274. break;
  275. case 1 : // 인증서가 갱신되어 KMI에 재등록됨
  276. msg = "인증서의 갱신이";
  277. sysf_messageBox( msg, "I002");
  278. break;
  279. case 2 : // 인증서 갱신 실패 ( 에러코드와 메시지가 리턴됨 )
  280. msg = "인증서 갱신에";
  281. sysf_messageBox( msg, "E009", zesf_getKMIErrMsg());
  282. zes_objKMClient.LocalDelKeyAndCert(rData.dn);
  283. zes_objKMClient.kmsDisconnect();
  284. return rData;
  285. case 3 : // 인증서 갱신은 성공 하였으나 KMI 서버 등록 실패 (인증서 백업 성공)
  286. case 4 : // 인증서 갱신은 성공 하였으나 KMI 서버 등록 실패 (인증서 백업 실패)
  287. msg = "갱신된 인증서의 KMI 등록에";
  288. sysf_messageBox( msg, "E009", "관리자에게 문의하시기 바랍니다.");
  289. zes_objKMClient.LocalDelKeyAndCert(rData.dn);
  290. zes_objKMClient.kmsDisconnect();
  291. return rData;
  292. case 5 : // 이미 만료 되었거나 폐지된 인증서
  293. msg = "인증서가 만료되어 사용";
  294. sysf_messageBox( msg, "E001", "인증서를 재발급 받으시기 바랍니다.");
  295. zes_objKMClient.LocalDelKeyAndCert(rData.dn);
  296. zes_objKMClient.kmsDisconnect();
  297. return rData;
  298. case 6 : // 인증서의 갱신을 사용자가 취소
  299. break;
  300. case 7 :
  301. msg = "인증서 화일에 문제가 있어 인증서 읽기에.";
  302. sysf_messageBox( msg, "E009", "관리자에게 문의하시기 바랍니다.");
  303. zes_objKMClient.LocalDelKeyAndCert(rData.dn);
  304. zes_objKMClient.kmsDisconnect();
  305. return rData;
  306. }
  307. //zes_objSKComm.SetExipreCheckSkip(1);// 인증서 갱신안내 팝업표시 안함 (EMR 오픈시까지 유지)
  308. // 0 * 256 : SignKorea의 인증서만 선택
  309. // 0 * 16 : 비밀번호 입력 받음
  310. // 1 : 현재의 ActiveX 인스턴스가 유효할 동안 선택한 정보 유지
  311. var matched_dn = zes_objSKComm.SetMatchedContextExt( rData.dn, "", pwd, 0 * 256 + 0 * 16 + 1 );
  312. if( matched_dn == "" ) {
  313. msg = "인증서의 메모리 로드에";
  314. sysf_messageBox( msg, "E009", zesf_getCMErrMsg());
  315. zes_objKMClient.LocalDelKeyAndCert(rData.dn);
  316. zes_objKMClient.kmsDisconnect();
  317. rData.dn = matched_dn;
  318. return rData;
  319. }
  320. var today = new Date();
  321. zes_objForm.zes_sCertYear = today.getFullYear();
  322. zes_objForm.zes_sCertMonth = today.getMonth() + 1;
  323. zes_objForm.zes_sCertDate = today.getDate();
  324. zes_objForm.zes_sUID = pUid;
  325. zes_objKMClient.LocalDelKeyAndCert(rData.dn);
  326. zes_objKMClient.kmsDisconnect();
  327. rData.success = true;
  328. return rData;
  329. }
  330. /**********************************************************************************
  331. * 함수명 : zesf_SaveKeyAndCert
  332. * 설명 : 현재 로그인된 사용자 인증서/개인키를 저장한다.
  333. * argument : void
  334. * return Type : String (등록된 DN)
  335. **********************************************************************************/
  336. function zesf_SaveKeyAndCert( pUid, pDn, pPwd, pDbg ) {
  337. var dn = "";
  338. var msg = "";
  339. if( pDbg != null ) {
  340. alert( "인증서 등록 정보 : [" + pUid + "," + pDn + "," + pPwd + "]" );
  341. }
  342. var ip = sysf_getUserInfo("kmiip");
  343. var port = sysf_getUserInfo("kmiport");
  344. if( !zes_objKMClient.kmsConnect(ip, port) ) {
  345. msg = "KMI 서버( IP:" + ip + ",포트:" + port + ") 연결에";
  346. sysf_messageBox( msg, "E009", zesf_getKMIErrMsg() );
  347. return dn;
  348. }
  349. if( pDbg != null ) {
  350. alert( "KMI 서버가 연결되었습니다." );
  351. }
  352. var envelop = zes_objKMClient.kmsInit();
  353. if( envelop == "" ) {
  354. msg = "KMI 모듈의 초기화에";
  355. sysf_messageBox( msg, "E009", zesf_getKMIErrMsg() );
  356. zes_objKMClient.kmsDisconnect();
  357. return dn;
  358. }
  359. if( pDbg != null ) {
  360. alert( "KMI 모듈이 초기화되었습니다. \nENVELOP : " + envelop );
  361. }
  362. dn = zes_objKMClient.SetKeyAndCert( pUid, pDn, "", pPwd );
  363. if( dn == "" ) {
  364. msg = "KMI 서버에 인증서(" + pUid + "," + pDn + "," + ") 등록에";
  365. sysf_messageBox( msg, "E009", zesf_getKMIErrMsg() );
  366. zes_objKMClient.kmsDisconnect();
  367. return dn;
  368. }
  369. if( pDbg != null ) {
  370. alert( "인증서를 등록하였습니다.\n등록된 인증서 DN : " + dn );
  371. }
  372. zes_objKMClient.kmsDisconnect();
  373. return dn;
  374. }
  375. /**********************************************************************************
  376. * 함수명 : zesf_SignData
  377. * 설명 : 로드된 인증서를 가지고 전자서명을 수행한다.
  378. * argument : void
  379. * return Type : String (서명된 데이터)
  380. **********************************************************************************/
  381. function zesf_SignData( pOrgData, pUid, pReload, pDbg )
  382. {
  383. if(pReload){
  384. zes_objForm.zes_sUID = "";
  385. }
  386. var signedData = "";
  387. var reload = false;
  388. if( pUid == null || pUid == "" ) {
  389. pUid = sysf_getUserInfo("userid");
  390. }
  391. if( zes_objForm.zes_sUID != pUid ) {
  392. reload = true;
  393. }
  394. var today = new Date();
  395. if( zes_objForm.zes_sCertYear != today.getFullYear() ) {
  396. reload = true;
  397. }
  398. if( zes_objForm.zes_sCertMonth != ( today.getMonth() + 1 ) ) {
  399. reload = true;
  400. }
  401. if( zes_objForm.zes_sCertDate != today.getDate() ) {
  402. reload = true;
  403. }
  404. if( reload ) {
  405. // zes_objSKComm.UnsetMatchedContext();
  406. //
  407. // zes_objForm.zes_sUID = "";
  408. // zes_objForm.zes_sCertYear = 1970;
  409. // zes_objForm.zes_sCertMonth = 1;
  410. // zes_objForm.zes_sCertDate = 1;
  411. if( zesf_LoadKeyAndCert( pUid, pDbg ) == "" ) {
  412. return signedData;
  413. }
  414. }
  415. if( pDbg != null ) {
  416. alert( "SignDataB64" );
  417. }
  418. signedData = zes_objSKComm.SignDataB64( "", pOrgData, 0 );
  419. if( signedData == "" ) {
  420. msg = "전자서명 생성에"
  421. sysf_messageBox( msg, "E009", zesf_getCMErrMsg());
  422. }
  423. //activateMyWindow();
  424. return signedData;
  425. }
  426. /**********************************************************************************
  427. * 함수명 : zesf_SignFile
  428. * 설명 : 로드된 인증서를 가지고 전자서명을 수행한다.
  429. * argument : void
  430. * return Type : String (서명된 파일경로)
  431. **********************************************************************************/
  432. function zesf_SignFile( pOrgFilePath, pUid, pReload, pDbg ) {
  433. if(pReload){
  434. zes_objForm.zes_sUID = "";
  435. }
  436. var signedFilePath = "";
  437. var reload = false;
  438. if( pUid == null || pUid == "" ) {
  439. pUid = sysf_getUserInfo("userid");
  440. }
  441. if( zes_objForm.zes_sUID != pUid ) {
  442. reload = true;
  443. }
  444. var today = new Date();
  445. if( zes_objForm.zes_sCertYear != today.getFullYear() ) {
  446. reload = true;
  447. }
  448. if( zes_objForm.zes_sCertMonth != ( today.getMonth() + 1 ) ) {
  449. reload = true;
  450. }
  451. if( zes_objForm.zes_sCertDate != today.getDate() ) {
  452. reload = true;
  453. }
  454. if( reload ) {
  455. // if( viewerObj.window.javascript._CERT_UID_ != "" ) {
  456. // zes_objSKComm.UnsetMatchedContext();
  457. //
  458. // zes_objForm.zes_sUID = "";
  459. // zes_objForm.zes_sCertYear = 1970;
  460. // zes_objForm.zes_sCertMonth = 1;
  461. // zes_objForm.zes_sCertDate = 1;
  462. // }
  463. if( zesf_LoadKeyAndCert( pUid, pDbg ) == "" ) {
  464. return signedFilePath;
  465. }
  466. }
  467. if( pDbg != null ) {
  468. alert( "SignFileB64" );
  469. }
  470. signedFilePath = zes_objSKComm.SignFileB64( "", pOrgFilePath, true, 0 );
  471. if( signedFilePath == "" ) {
  472. msg = "전자서명 생성에"
  473. sysf_messageBox( msg, "E009", zesf_getCMErrMsg());
  474. }
  475. return signedFilePath;
  476. }
  477. /**********************************************************************************
  478. * 함수명 : zesf_ChangeKeyPwd
  479. * 설명 : 인증서의 개인키 패스워드를 변경하여 KMI 서버에 등록한다.
  480. * argument : void
  481. * return Type : String (검증된 데이터)
  482. **********************************************************************************/
  483. function zesf_ChangeKeyPwd(oldpasswd, newpasswd, pDbg){
  484. var msg = "";
  485. var ip = sysf_getUserInfo("kmiip");
  486. var port = sysf_getUserInfo("kmiport");
  487. if( !zes_objKMClient.kmsConnect(ip, port) ) {
  488. msg = "KMI 서버( IP:" + ip + ",포트:" + port + ") 연결에";
  489. sysf_messageBox( msg, "E009", zesf_getKMIErrMsg() );
  490. return;
  491. }
  492. if( pDbg != null ) {
  493. alert( "KMI 서버가 연결되었습니다." );
  494. }
  495. var envelop = zes_objKMClient.kmsInit();
  496. if( envelop == "" ) {
  497. msg = "KMI 모듈의 초기화에";
  498. sysf_messageBox( msg, "E009", zesf_getKMIErrMsg() );
  499. zes_objKMClient.kmsDisconnect();
  500. return;
  501. }
  502. if( pDbg != null ) {
  503. alert( "KMI 모듈이 초기화되었습니다. \nENVELOP : " + envelop );
  504. }
  505. var uid = sysf_getUserInfo("userid");
  506. if( pDbg != null ) {
  507. alert( "사용자 ID : " + uid );
  508. }
  509. var dn = zes_objKMClient.ChangePasswordKey(uid, oldpasswd, newpasswd);
  510. if( dn == "" ) {
  511. msg = "개인키 비밀번호 변경에";
  512. sysf_messageBox( msg, "E009", zesf_getKMIErrMsg() );
  513. }
  514. zes_objKMClient.LocalDelKeyAndCert( dn );
  515. zes_objKMClient.kmsDisconnect();
  516. return;
  517. }
  518. /**********************************************************************************
  519. * 함수명 : zesf_RenewKeyAndCert
  520. * 설명 : 인증서의 개인키 패스워드를 변경하여 KMI 서버에 등록한다.
  521. * argument : void
  522. * return Type : String (검증된 데이터)
  523. **********************************************************************************/
  524. function zesf_RenewKeyAndCert( pDbg ){
  525. var msg = "";
  526. var ip = sysf_getUserInfo("kmiip");
  527. var port = sysf_getUserInfo("kmiport");
  528. if( !zes_objKMClient.kmsConnect(ip, port) ) {
  529. msg = "KMI 서버( IP:" + ip + ",포트:" + port + ") 연결에";
  530. sysf_messageBox( msg, "E009", zesf_getKMIErrMsg() );
  531. return;
  532. }
  533. if( pDbg != null ) {
  534. alert( "KMI 서버가 연결되었습니다." );
  535. }
  536. var envelop = zes_objKMClient.kmsInit();
  537. if( envelop == "" ) {
  538. msg = "KMI 모듈의 초기화에";
  539. sysf_messageBox( msg, "E009", zesf_getKMIErrMsg() );
  540. zes_objKMClient.kmsDisconnect();
  541. return;
  542. }
  543. if( pDbg != null ) {
  544. alert( "KMI 모듈이 초기화되었습니다. \nENVELOP : " + envelop );
  545. }
  546. var uid = sysf_getUserInfo("userid");
  547. if( pDbg != null ) {
  548. alert( "사용자 ID : " + uid );
  549. }
  550. var dn = zes_objKMClient.GetKeyAndCert( uid );
  551. if( dn == "" ) {
  552. msg = "KMI 서버에서 인증서( " + uid + " )를 가져오는 데.";
  553. sysf_messageBox( msg, "E009", zesf_getKMIErrMsg()+"\n전자인증서와 관련한 에러는 "+ _TEL_NO +" 로 연락해주시기 바랍니다." );
  554. zes_objKMClient.kmsDisconnect();
  555. return;
  556. }
  557. if( pDbg != null ) {
  558. alert( "인증서를 다운로드하였습니다.\n다운로드 인증서 DN : " + dn );
  559. }
  560. switch( zes_objKMClient.IsCertNew( uid, dn ) ) {
  561. case 0 : // 현재 인증서가 유효함
  562. msg = "현재 인증서가 유효하여 갱신되지" ;
  563. sysf_messageBox( msg, "E007" );
  564. break;
  565. case 1 : // 인증서가 갱신되어 KMI에 재등록됨
  566. msg = "인증서 갱신이"
  567. sysf_messageBox( msg, "I002" );
  568. break;
  569. case 2 : // 인증서 갱신 실패 ( 에러코드와 메시지가 리턴됨 )
  570. msg = "인증서 갱신에";
  571. sysf_messageBox( msg, "E009", zesf_getKMIErrMsg());
  572. break;
  573. case 3 : // 인증서는 갱신되었으나 KMI 등록은 실패(인증서 백업 성공)
  574. msg = "갱신된 인증서의 KMI 등록에";
  575. sysf_messageBox( msg, "E009", "관리자에게 문의하시기 바랍니다.(백업성공)");
  576. break;
  577. case 4 : // 인증서는 갱신되었으나 KMI 등록은 실패(인증서 백업 실패)
  578. msg = "갱신된 인증서의 KMI 등록에";
  579. sysf_messageBox( msg, "E009", "관리자에게 문의하시기 바랍니다.(백업실패)");
  580. break;
  581. case 5 : // 인증서가 만료됨
  582. msg = "인증서가 만료되어 갱신";
  583. sysf_messageBox( msg, "E001", "인증서를 재발급 받으시기 바랍니다.");
  584. break;
  585. case 6 : // 인증서의 갱신을 사용자가 취소
  586. break;
  587. case 7 :
  588. msg = "인증서 파일에 문제가 있어 인증서 읽기에.";
  589. sysf_messageBox( msg, "E009", "관리자에게 문의하시기 바랍니다.");
  590. break;
  591. }
  592. zes_objKMClient.LocalDelKeyAndCert(dn);
  593. zes_objKMClient.kmsDisconnect();
  594. return;
  595. }
  596. /********************************************************************************************************************/
  597. /************************* [ZEH] 건강보험공단 연계함수 ***********************************************************/
  598. /********************************************************************************************************************/
  599. // 국민 건강 보험 관리 공단 인터페이스
  600. var zeh_sNhicUrl = null; // 공단서버 URL
  601. var zeh_objNhic = null; // 공단연계용 ActiveX 참조
  602. /**********************************************************************************
  603. * 함수명 : zehf_Initialize
  604. * 설명 : 건강보험공단 모듈을 생성 및 초기화 한다.
  605. * argument : void
  606. * return Type : Boolean (정상처리여부)
  607. **********************************************************************************/
  608. function zehf_Initialize() {
  609. try {
  610. zeh_sNhicUrl = sysf_getSystemInfo("nhicurl"); // 시스템 정보를 받음
  611. zeh_objNhic = this.components["objNHIC"]; // 객체를 찾음
  612. if (zes_objSKComm == null)
  613. {
  614. // NHIC 클라이언트 동적생성
  615. zeh_objNhic = new ActiveX("objNHIC", 0,0,0,0);
  616. zeh_objNhic.progid = "{40F98276-90BB-409D-A9CF-124266C805C9}";
  617. this.addChild("objNHIC", zeh_objNhic);
  618. zeh_objNhic.show();
  619. }
  620. } catch(e) {
  621. alert("건보 연계모듈이 설치되지 않았습니다.");
  622. return false;
  623. }
  624. return true;
  625. }
  626. /**********************************************************************************
  627. * 함수명 : zehf_AddParam
  628. * 설명 : 송신 메세지의 필드를 설정한다.
  629. * argument : name - 필드명
  630. value - 데이터
  631. * return Type : Number (성공 – 1실패 - -1 리턴)
  632. **********************************************************************************/
  633. function zehf_AddParam(name,value) {
  634. return zeh_objNhic.WSAddParam(name,value);
  635. }
  636. /**********************************************************************************
  637. * 함수명 : zehf_ShowMessage
  638. * 설명 : 서버메세지를 알림창으로 보여준다.
  639. * argument : void
  640. * return Type : void
  641. **********************************************************************************/
  642. function zehf_ShowMessage() {
  643. var msg = zehf_GetValue(0,"message");
  644. messageBox(msg,"E");
  645. }
  646. /**********************************************************************************
  647. * 함수명 : zehf_Qualify
  648. * 설명 : 공단에 메시지를 송수신하여 자격을 검증한다.
  649. * argument : void
  650. * return Type : Number (성공 - 수신되는 컬럼의 개수를 리턴, 실패 – 0 또는 -1 리턴)
  651. **********************************************************************************/
  652. function zehf_Qualify() {
  653. return zeh_objNhic.WSQualify(zeh_sNhicUrl);
  654. }
  655. /**********************************************************************************
  656. * 함수명 : zehf_Approval
  657. * 설명 : 공단에 메시지를 송수신하여 승인을 처리한다.
  658. * argument : void
  659. * return Type : Number (성공 - 수신되는 컬럼의 개수를 리턴, 실패 – 0 또는 -1 리턴)
  660. **********************************************************************************/
  661. function zehf_Approval() {
  662. return zeh_objNhic.WSApproval(zeh_sNhicUrl);
  663. }
  664. /**********************************************************************************
  665. * 함수명 : zehf_Cancel
  666. * 설명 : 공단에 메시지를 송수신하여 승인을 취소한다.
  667. * argument : void
  668. * return Type : Number (성공 - 수신되는 컬럼의 개수를 리턴, 실패 – 0 또는 -1 리턴)
  669. **********************************************************************************/
  670. function zehf_Cancel() {
  671. return zeh_objNhic.WSCancel(zeh_sNhicUrl);
  672. }
  673. /**********************************************************************************
  674. * 함수명 : zehf_GetValue
  675. * 설명 : 수신된 데이터의 nSeq 라인의 컬럼 데이터를 반환한다.
  676. * argument : seq - 수신된 데이터의 라인번호
  677. name - 수신된 데이터의 컬럼명
  678. * return Type : Variant (성공 – 컬럼의 데이터, 실패 - -1 리턴)
  679. **********************************************************************************/
  680. function zehf_GetValue(seq, name) {
  681. return zeh_objNhic.WSGetValue(seq, name);
  682. }
  683. /**********************************************************************************
  684. * 함수명 : zehf_Close
  685. * 설명 : 송수신 시 사용한 메모리를 해제한다.
  686. * 메모리를 Clear하지 않으면, 이전의 데이터가 다시 처리될 수 있으므로
  687. * 송수신 완료후에는 반드시 이 함수를 실행하여 메모리를 Clear해야 한다.
  688. * argument : void
  689. * return Type : void
  690. **********************************************************************************/
  691. function zehf_Close() {
  692. zeh_objNhic.WSClose();
  693. }
  694. /********************************************************************************************************************/
  695. /************************* [INF] activex 관련 함수 *****************************************************************/
  696. /********************************************************************************************************************/
  697. /****************************************************************************************
  698. * Function : inff_initsound
  699. * Description : 사운드기능 초기화
  700. * Argument :
  701. * return type :
  702. * Creator : 임준호
  703. ****************************************************************************************/
  704. function inff_initsound(){
  705. var objAtx = null;
  706. if(utlf_isNull(this.components["atxMeidaPlayer"])){
  707. objAtx = new ActiveX("atxMeidaPlayer", 0,0,0,0);
  708. objAtx.progid = "{6bf52a52-394a-11d3-b153-00c04f79faa6}";
  709. this.addChild("atxMeidaPlayer", objAtx);
  710. objAtx.show();
  711. }
  712. }
  713. /****************************************************************************************
  714. * Function : inff_playsound
  715. * Description : 사운드재생
  716. * Argument : 01.type - 소리타입
  717. * return type :
  718. * Creator : 임준호
  719. ****************************************************************************************/
  720. function inff_playsound(type, count){
  721. if(utlf_isNull(count)) count = 1;
  722. atxMeidaPlayer.URL="file://C:/himed/components/VoiceWare/"+type+".wav";
  723. atxMeidaPlayer.settings.playCount = count;
  724. atxMeidaPlayer.controls.play();
  725. }
  726. /****************************************************************************************
  727. * Function : inff_fileSystemObject
  728. * Description : 파일시스템 오브젝트 사용
  729. * Argument :
  730. * return type :
  731. * Creator : 임준호
  732. ****************************************************************************************/
  733. function inff_fileSystemObject(){
  734. var objAtx = null;
  735. if(utlf_isNull(this.components["inff_objFso"])){
  736. objAtx = new ActiveX("inff_objFso", 0,0,0,0);
  737. objAtx.progid = "Scripting.FileSystemObject";
  738. this.addChild("inff_objFso", objAtx);
  739. objAtx.show();
  740. }
  741. return inff_objFso;
  742. }
  743. /********************************************************************************************************************/
  744. /************************* [INF] TTS 관련 함수 *****************************************************************/
  745. /********************************************************************************************************************/
  746. var ztt_objTTS = null; // TTS 연계용 웹브라우저 오브젝트 참조
  747. var ztt_sIPaddr = "10.10.10.75"; // TTS서버 아이피
  748. var ztt_sPort = "7000"; // TTS서버 포트
  749. /****************************************************************************************
  750. * Function : zttf_InitTTS
  751. * Description : TTS 기능 초기화
  752. * Argument :
  753. * return type :
  754. * Creator : 이상준
  755. ****************************************************************************************/
  756. function zttf_InitTTS(){
  757. try {
  758. ztt_sIPaddr = sysf_getSystemInfo("ttssvrip"); // TTS서버 아이피
  759. ztt_sPort = sysf_getSystemInfo("ttssvrport"); // TTS서버 포트
  760. ztt_objTTS = this.components["objTTS"]; // 객체를 찾음
  761. if (ztt_objTTS == null)
  762. {
  763. // NHIC 클라이언트 동적생성
  764. ztt_objTTS = new WebBrowser("objTTS", -200, -200, -50,-50); // 영역이 보이지 않으면 오동작 하므로 마이어스 좌표를 줌
  765. //ztt_objTTS = new WebBrowser("objTTS", 0, 0, 0,0);
  766. this.addChild("objTTS", ztt_objTTS);
  767. ztt_objTTS.url = "C:\\himed\\components\\VoiceWare\\tts.html";
  768. ztt_objTTS.show();
  769. //ztt_objTTS.visible = false;
  770. }
  771. } catch(e) {
  772. alert("연계모듈 초기화 도중 오류가 발생하였습니다."+ "|" + e.name + "|" + e.message + "|" + e.number + "|" + e.description);
  773. return false;
  774. }
  775. }
  776. /****************************************************************************************
  777. * Function : zttf_TTSPlay
  778. * Description : 텍스트를 목소리로 변화하여 재생
  779. * Argument : sMsg - 재생할 텍스트
  780. nSpeakerID - 목소리 아이디
  781. - 0 : 지혜(여성)
  782. - 1 : 민호(남성)
  783. - 2 : 은주(여성)
  784. - 3 : 준우(남성)
  785. - 6 : 선영(여성)
  786. - 8 : 수진(여성)
  787. - 10 : 유미(여성)
  788. - 100 : Kate(영문, 여성)
  789. - 101 : Paul(영문, 남성)
  790. - 200 : Lily(중국어, 여성)
  791. - 201 : Wang(중국어, 남성)
  792. - 300 : Miyu(일본어, 여성)
  793. * return type :
  794. * Creator : 이상준
  795. ****************************************************************************************/
  796. function zttf_TTSPlay(sMsg, nSpeakerID) {
  797. sMsg = sMsg.replace(/[\r|\n]/g, ""); //개행문자제거
  798. if (nSpeakerID == null)
  799. {
  800. nSpeakerID = 10;
  801. }
  802. ztt_objTTS.document.parentWindow.execScript("SetTTSEnv('"+ ztt_sIPaddr +"', "+ztt_sPort+", "+nSpeakerID+", 16000, 0)", "JavaScript");
  803. ztt_objTTS.document.parentWindow.execScript("TTSPlay('"+sMsg+"')", "JavaScript");
  804. }
  805. /****************************************************************************************
  806. * Function : zttf_TTSStop
  807. * Description : TTS 기능 초기화
  808. * Argument :
  809. * return type :
  810. * Creator : 이상준
  811. ****************************************************************************************/
  812. function zttf_TTSStop() {
  813. ztt_objTTS.document.parentWindow.execScript("TTSStop()", "JavaScript");
  814. }
  815. /********************************************************************************************************************/
  816. /************************* [INF] TCHART 관련 함수 ******************************************************************/
  817. /********************************************************************************************************************/
  818. /****************************************************************************************
  819. * Function : inff_createTChart
  820. * Description : TChart Control 생성
  821. * Argument : 01. sObjId(String) : 생성될 TChart Object ID
  822. * : 02. nLeftPx(Integer) : Left
  823. * : 03. nTopPx(Integer) : Top
  824. * : 04. nWidthPx(Integer) : Width
  825. * : 05. nHeightPx(Integer) : Height
  826. * return type : Object TChart
  827. * Creator : 임준호
  828. ****************************************************************************************/
  829. function inff_createTChart(sObjId, nLeftPx, nTopPx, nWidthPx, nHeightPx){
  830. var objAtx = null;
  831. if(utlf_isNull(this.components[sObjId])){
  832. objAtx = new ActiveX(sObjId, nLeftPx, nTopPx, nWidthPx, nHeightPx);
  833. objAtx.progid = "{FAB9B41C-87D6-474D-AB7E-F07D78F2422E}";
  834. this.addChild(sObjId, objAtx);
  835. objAtx.show();
  836. }
  837. this.components[sObjId].visible = true;
  838. return this.components[sObjId];
  839. }
  840. /****************************************************************************************
  841. * Function : inff_createTChart8
  842. * Description : TChart 8 Control 생성
  843. * Argument : 01. sObjId(String) : 생성될 TChart Object ID
  844. * : 02. nLeftPx(Integer) : Left
  845. * : 03. nTopPx(Integer) : Top
  846. * : 04. nWidthPx(Integer) : Width
  847. * : 05. nHeightPx(Integer) : Height
  848. * return type : Object TChart
  849. * Creator : 임준호
  850. ****************************************************************************************/
  851. function inff_createTChart8(sObjId, nLeftPx, nTopPx, nWidthPx, nHeightPx){
  852. var objAtx = null;
  853. if(utlf_isNull(this.components[sObjId])){
  854. objAtx = new ActiveX(sObjId, nLeftPx, nTopPx, nWidthPx, nHeightPx);
  855. objAtx.progid = "{BDEB0088-66F9-4A55-ABD2-0BF8DEEC1196}";
  856. this.addChild(sObjId, objAtx);
  857. objAtx.show();
  858. }
  859. this.components[sObjId].visible = true;
  860. return this.components[sObjId];
  861. }
  862. /****************************************************************************************
  863. * Function : inff_clearTChart
  864. * Description : TChart Clear
  865. * Argument : 01. objTchart(Object) : Target Chart Object
  866. * return type :
  867. * Creator : 임준호
  868. ****************************************************************************************/
  869. function inff_clearTChart(objTchart){
  870. objTchart.RemoveAllSeries();
  871. objTchart.Tools.clear()
  872. }
  873. /****************************************************************************************
  874. * Function : inff_drawBar
  875. * Description : dataset의 해당 로우 data를 반영하여 TChart에(Point Type) 그려 줌.
  876. * Argument : 01. tChartObj(Object) : Target TChart Object
  877. * : 02. objDs(Object) : Source Dataset
  878. * : 03. sXColNm(String) : X축 데이터의 Column명
  879. * : 03. sYColNm(String) : Y축 데이터의 Column명
  880. * : 04. title(String) : TChart Title
  881. * : 05. pivot(Boolean) : true | false
  882. * return type :
  883. * Creator : 임준호
  884. ****************************************************************************************/
  885. function inff_drawBarFromDs(tChartObj:ActiveX, objDs:Dataset, sXColNm, sYColNm, sTitle, pivot) {
  886. // TChart 초기화
  887. inff_clearTChart(tChartObj);
  888. tChartObj.Header.Visible = true;
  889. tChartObj.Header.Text[0] = sTitle; // Title 설정
  890. tChartObj.Aspect.View3D = 0; // 3D 설정 :: 0 = 2D | 1 = 3D
  891. if(pivot) pivot = 2;
  892. else pivot = 1;
  893. tChartObj.AddSeries(pivot); // TChart Type 설정 :: 0 = Line | 1 = Bar ..
  894. tChartObj.Legend.Visible = false;
  895. tChartObj.Series(0).Marks.Visible = false;
  896. var Rnd1, Rnd2, Rnd3;
  897. var cColor;
  898. var i;
  899. var x, y;
  900. var nRowCnt = objDs.rowcount;
  901. for(i=0 ; i<nRowCnt ; i++){
  902. Rnd1 = Math.random();
  903. Rnd1 = Math.round((255 - 1) * Rnd1 + 1);
  904. Rnd2 = Math.random();
  905. Rnd2 = Math.round((255 - 1) * Rnd2 + 1);
  906. Rnd3 = Math.random();
  907. Rnd3 = Math.round((255 - 1) * Rnd3 + 1);
  908. //trace("Rnd1="+Rnd1+":Rnd2="+Rnd2+":Rnd3="+Rnd3);
  909. cColor = (Rnd1).toString(16) + (Rnd2).toString(16) + (Rnd3).toString(16);
  910. x = objDs.getColumn(i, sXColNm);
  911. y = objDs.getColumn(i, sYColNm);
  912. tChartObj.Series(0).Add (y, x, cColor);
  913. }
  914. }
  915. /****************************************************************************************
  916. * Function : inff_drawBar
  917. * Description : 그리드의 해당 로우 data를 반영하여 TChart에(Point Type) 그려 줌.
  918. * Argument : 01. tChartObj(Object) : Target TChart Object
  919. * : 02. objGrid(Object) : Source Grid
  920. * : 03. nYColIndex(Number) : Y축 데이터의 Column index
  921. * : 04. title(String) : TChart Title
  922. * : 05. pivot(Boolean) : true | false
  923. * return type :
  924. * Creator : 임준호
  925. ****************************************************************************************/
  926. function inff_drawBar(tChartObj:ActiveX, objGrid:Grid, nYColIndex, sTitle, pivot) {
  927. // TChart 초기화
  928. inff_clearTChart(tChartObj);
  929. tChartObj.Header.Visible = true;
  930. tChartObj.Header.Text[0] = sTitle; // Title 설정
  931. tChartObj.Aspect.View3D = 0; // 3D 설정 :: 0 = 2D | 1 = 3D
  932. if(pivot) pivot = 2;
  933. else pivot = 1;
  934. tChartObj.AddSeries(pivot); // TChart Type 설정 :: 0 = Line | 1 = Bar ..
  935. tChartObj.Legend.Visible = false;
  936. tChartObj.Series(0).Marks.Visible = false;
  937. var Rnd1, Rnd2, Rnd3;
  938. var cColor;
  939. var i;
  940. var x, y;
  941. //var nRowCnt = objDs.rowcount;
  942. var nRowCnt = objGrid.getFormatRowCount();
  943. for(i=0 ; i<nRowCnt ; i++){
  944. Rnd1 = Math.random();
  945. Rnd1 = Math.round((255 - 1) * Rnd1 + 1);
  946. Rnd2 = Math.random();
  947. Rnd2 = Math.round((255 - 1) * Rnd2 + 1);
  948. Rnd3 = Math.random();
  949. Rnd3 = Math.round((255 - 1) * Rnd3 + 1);
  950. //trace("Rnd1="+Rnd1+":Rnd2="+Rnd2+":Rnd3="+Rnd3);
  951. cColor = (Rnd1).toString(16) + (Rnd2).toString(16) + (Rnd3).toString(16);
  952. //x = objDs.getColumn(i, sXColNm);
  953. x = objGrid.getCellText(i, 0);
  954. //y = objDs.getColumn(i, sYColNm);
  955. y = objGrid.getCellText(i, nYColIndex);
  956. tChartObj.Series(0).Add (y, x, cColor);
  957. }
  958. }
  959. /****************************************************************************************
  960. * Function : inff_drawSelectBarFromDs
  961. * Description : dataset의 원하는 행, 컬럼을 선택해서 BAR 타입의 차트를 보여줌
  962. * type == "row" 면 rows 가 X 축, cols 가 그래프 데이터가 된다.
  963. * type == "col" 면 cols 가 X 축, rows 가 그래프 데이터가 된다.
  964. * Argument : 01.Object chart : TeeChartObject
  965. * : 02.Object objDs : teechart 생성시 참고할 데이터를 가진 대상 dataset Object
  966. * : 03.String title : TeeChart 에 보여질 제목
  967. * : 04.String sBaseColNm : 기준축에 보여질 title명
  968. * : 05.String rows : dataset 의 행번호배열( 예: grid의 1,2,4번째 행을 대상으로 하고 싶으면 grid[0]=1, grid[1]=2, grid[2]=4 인 길이 3짜리 배열 object)
  969. * : 06.String cols : dataset 의 컬럼번호배열( 예: grid의 2,4번째 컬럼을 대상으로 하고 싶으면 grid[0]=2, grid[1]=4 인 길이 2짜리 배열 object)
  970. * : 07.boolean legend : legend 의 visible 여부(true/false) 기본값은 true;
  971. * : 08.boolean pivot : pivot 여부 (true/false) 기본값은 false;
  972. * : 09.String type : X 축으로 지정할 기준 데이터(row/col)
  973. * 1. row : Grid 의 row(행)이 X축, column(컬럼)이 그래프 데이터가 된다.
  974. * 2. col : Grid 의 column(컬럼)이 X축, row(행)이 그래프 데이터가 된다.
  975. * return type :
  976. * Creator : 임준호
  977. ****************************************************************************************/
  978. function inff_drawSelectBarFromDs(chart, objDs:Dataset, title, sBaseColNm, rows, cols, legend, pivot, type) {
  979. // TChart 초기화
  980. inff_clearTChart(chart);
  981. chart.Header.Text[0] = title; // Title 설정
  982. chart.Aspect.View3D = 0; // 3D 설정 :: 0 = 2D | 1 = 3D
  983. if(pivot) pivot = 2;
  984. else pivot = 1;
  985. if(legend) chart.Legend.Visible = true;
  986. else chart.Legend.Visible = false;
  987. if (type == "row") {
  988. var r, g, b, color;
  989. var x, y;
  990. for (var i = 0; i < cols.length; i++ ) {
  991. chart.AddSeries(pivot); // TChart Type 설정 :: 0 = Line | 1 = Bar ..
  992. var idx = chart.SeriesCount -1;
  993. //chart.Series(idx).title = grid.valueMatrix(0, cols[i]);
  994. chart.Series(idx).Title = objDs.getColumn(0, cols[i]);
  995. chart.Series(i).Marks.Visible = false;
  996. r = Math.random();
  997. r = Math.round((255 - 1) * r + 1);
  998. g = Math.random();
  999. g = Math.round((255 - 1) * g + 1);
  1000. b = Math.random();
  1001. b = Math.round((255 - 1) * b + 1);
  1002. //color = window.rgb( (255 - 1) * r + 1, (255 - 1) * g + 1 , (255 - 1) * b + 1);
  1003. color = (r).toString(16) + (g).toString(16) + (b).toString(16);
  1004. for (var j = 0; j < rows.length; j++) {
  1005. //x = grid.valueMatrix(rows[j], 0);
  1006. x = objDs.getColumn(rows[j], sBaseColNm);
  1007. //y = grid.valueMatrix(rows[j], cols[i]);
  1008. y = objDs.getColumn(rows[j], cols[i]);
  1009. //alert("x : " + x + "\ny : " + y + "\ncolor : " + color + "\ni : " + i + "\nj : " + j);
  1010. chart.Series(i).Add (y, x, chart.Series(idx).Color);
  1011. chart.Series(i).LegendItemColor(color)
  1012. }
  1013. }
  1014. } else if (type == "col") {
  1015. var r, g, b, color;
  1016. var x, y;
  1017. for (var i = 0; i < rows.length; i++ ) {
  1018. chart.AddSeries(pivot); // TChart Type 설정 :: 0 = Line | 1 = Bar ..
  1019. var idx = chart.SeriesCount -1;
  1020. chart.Series(idx).Title = objDs.getColumn(rows[i], sBaseColNm);
  1021. chart.Series(i).Marks.Visible = false;
  1022. r = Math.random();
  1023. r = Math.round((255 - 1) * r + 1);
  1024. g = Math.random();
  1025. g = Math.round((255 - 1) * g + 1);
  1026. b = Math.random();
  1027. b = Math.round((255 - 1) * b + 1);
  1028. color = (r).toString(16) + (g).toString(16) + (b).toString(16);
  1029. for (var j = 0; j < cols.length; j++) {
  1030. x = objDs.getColumn(0, cols[j]);
  1031. y = objDs.getColumn(rows[i], cols[j]);
  1032. //alert("x : " + x + "\ny : " + y + "\ncolor : " + color + "\ni : " + i + "\nj : " + j);
  1033. chart.Series(i).Add (y, x, chart.Series(idx).Color);
  1034. chart.Series(i).LegendItemColor(color)
  1035. }
  1036. }
  1037. }
  1038. }
  1039. /****************************************************************************************
  1040. * Function : inff_drawSelectBar
  1041. * Description : 그리드의 원하는 행, 컬럼을 선택해서 BAR 타입의 차트를 보여줌
  1042. * type == "row" 면 rows 가 X 축, cols 가 그래프 데이터가 된다.
  1043. * type == "col" 면 cols 가 X 축, rows 가 그래프 데이터가 된다.
  1044. * Argument : 01.Object chart : TeeChartObject
  1045. * : 02.Object objGrid : teechart 생성시 참고할 데이터를 가진 대상 dataset Grid
  1046. * : 03.String title : TeeChart 에 보여질 제목
  1047. * : 05.String rows : dataset 의 행번호배열( 예: grid의 1,2,4번째 행을 대상으로 하고 싶으면 grid[0]=1, grid[1]=2, grid[2]=4 인 길이 3짜리 배열 object)
  1048. * : 06.String cols : dataset 의 컬럼번호배열( 예: grid의 2,4번째 컬럼을 대상으로 하고 싶으면 grid[0]=2, grid[1]=4 인 길이 2짜리 배열 object)
  1049. * : 07.boolean legend : legend 의 visible 여부(true/false) 기본값은 true;
  1050. * : 08.boolean pivot : pivot 여부 (true/false) 기본값은 false;
  1051. * : 09.String type : X 축으로 지정할 기준 데이터(row/col)
  1052. * 1. row : Grid 의 row(행)이 X축, column(컬럼)이 그래프 데이터가 된다.
  1053. * 2. col : Grid 의 column(컬럼)이 X축, row(행)이 그래프 데이터가 된다.
  1054. * return type :
  1055. * Creator : 임준호
  1056. ****************************************************************************************/
  1057. function inff_drawSelectBar(chart, objGrid:Grid, title, rows, cols, legend, pivot, type) {
  1058. // TChart 초기화
  1059. inff_clearTChart(chart);
  1060. chart.Header.Text[0] = title; // Title 설정
  1061. chart.Aspect.View3D = 0; // 3D 설정 :: 0 = 2D | 1 = 3D
  1062. if(pivot) pivot = 2;
  1063. else pivot = 1;
  1064. if(legend) chart.Legend.Visible = true;
  1065. else chart.Legend.Visible = false;
  1066. if (type == "row") {
  1067. var r, g, b, color;
  1068. var x, y;
  1069. for (var i = 0; i < cols.length; i++ ) {
  1070. chart.AddSeries(pivot); // TChart Type 설정 :: 0 = Line | 1 = Bar ..
  1071. var idx = chart.SeriesCount -1;
  1072. //chart.Series(idx).title = grid.valueMatrix(0, cols[i]);
  1073. //chart.Series(idx).Title = objDs.getColumn(0, cols[i]);
  1074. chart.Series(idx).Title = objGrid.getCellText(0, cols[i]);
  1075. chart.Series(i).Marks.Visible = false;
  1076. r = Math.random();
  1077. r = Math.round((255 - 1) * r + 1);
  1078. g = Math.random();
  1079. g = Math.round((255 - 1) * g + 1);
  1080. b = Math.random();
  1081. b = Math.round((255 - 1) * b + 1);
  1082. //color = window.rgb( (255 - 1) * r + 1, (255 - 1) * g + 1 , (255 - 1) * b + 1);
  1083. color = (r).toString(16) + (g).toString(16) + (b).toString(16);
  1084. for (var j = 0; j < rows.length; j++) {
  1085. //x = grid.valueMatrix(rows[j], 0);
  1086. //x = objDs.getColumn(rows[j], sBaseColNm);
  1087. x = objGrid.getCellText(rows[j], 0);
  1088. //y = grid.valueMatrix(rows[j], cols[i]);
  1089. //y = objDs.getColumn(rows[j], cols[i]);
  1090. y = objGrid.getCellText(rows[j], cols[i]);
  1091. //alert("x : " + x + "\ny : " + y + "\ncolor : " + color + "\ni : " + i + "\nj : " + j);
  1092. chart.Series(i).Add (y, x, chart.Series(idx).Color);
  1093. chart.Series(i).LegendItemColor(color)
  1094. }
  1095. }
  1096. } else if (type == "col") {
  1097. var r, g, b, color;
  1098. var x, y;
  1099. for (var i = 0; i < rows.length; i++ ) {
  1100. chart.AddSeries(pivot); // TChart Type 설정 :: 0 = Line | 1 = Bar ..
  1101. var idx = chart.SeriesCount -1;
  1102. //chart.Series(idx).Title = objDs.getColumn(rows[i], sBaseColNm);
  1103. chart.Series(idx).Title = objGrid.getCellText(rows[i], 0);
  1104. chart.Series(i).Marks.Visible = false;
  1105. r = Math.random();
  1106. r = Math.round((255 - 1) * r + 1);
  1107. g = Math.random();
  1108. g = Math.round((255 - 1) * g + 1);
  1109. b = Math.random();
  1110. b = Math.round((255 - 1) * b + 1);
  1111. color = (r).toString(16) + (g).toString(16) + (b).toString(16);
  1112. for (var j = 0; j < cols.length; j++) {
  1113. //x = objDs.getColumn(0, cols[j]);
  1114. x = objGrid.getCellText(0, cols[j]);
  1115. //y = objDs.getColumn(rows[i], cols[j]);
  1116. y = objGrid.getCellText(rows[i], cols[j]);
  1117. //alert("x : " + x + "\ny : " + y + "\ncolor : " + color + "\ni : " + i + "\nj : " + j);
  1118. chart.Series(i).Add (y, x, chart.Series(idx).Color);
  1119. chart.Series(i).LegendItemColor(color)
  1120. }
  1121. }
  1122. }
  1123. }
  1124. /****************************************************************************************
  1125. * Function : inff_drawSelectBarFromDs
  1126. * Description : dataset의 원하는 행, 컬럼을 선택해서 BAR 타입의 차트를 보여줌
  1127. * type == "row" 면 rows 가 X 축, cols 가 그래프 데이터가 된다.
  1128. * type == "col" 면 cols 가 X 축, rows 가 그래프 데이터가 된다.
  1129. * Argument : 01.Object chart : TeeChartObject
  1130. * : 02.Object objDs : teechart 생성시 참고할 데이터를 가진 대상 dataset Object
  1131. * : 03.String title : TeeChart 에 보여질 제목
  1132. * : 04.String sBaseColNm : 기준축에 보여질 title명
  1133. * : 05.String rows : dataset 의 행번호배열( 예: grid의 1,2,4번째 행을 대상으로 하고 싶으면 grid[0]=1, grid[1]=2, grid[2]=4 인 길이 3짜리 배열 object)
  1134. * : 06.String cols : dataset 의 컬럼번호배열( 예: grid의 2,4번째 컬럼을 대상으로 하고 싶으면 grid[0]=2, grid[1]=4 인 길이 2짜리 배열 object)
  1135. * : 07.boolean legend : legend 의 visible 여부(true/false) 기본값은 true;
  1136. * : 08.boolean pivot : pivot 여부 (true/false) 기본값은 false;
  1137. * : 09.String type : X 축으로 지정할 기준 데이터(row/col)
  1138. * 1. row : Grid 의 row(행)이 X축, column(컬럼)이 그래프 데이터가 된다.
  1139. * 2. col : Grid 의 column(컬럼)이 X축, row(행)이 그래프 데이터가 된다.
  1140. * return type :
  1141. * Creator : 임준호
  1142. ****************************************************************************************/
  1143. function inff_drawSelectBarFromDs(chart, objDs:Dataset, title, sBaseColNm, rows, cols, legend, pivot, type) {
  1144. // TChart 초기화
  1145. inff_clearTChart(chart);
  1146. chart.Header.Text[0] = title; // Title 설정
  1147. chart.Aspect.View3D = 0; // 3D 설정 :: 0 = 2D | 1 = 3D
  1148. if(pivot) pivot = 2;
  1149. else pivot = 1;
  1150. if(legend) chart.Legend.Visible = true;
  1151. else chart.Legend.Visible = false;
  1152. if (type == "row") {
  1153. var r, g, b, color;
  1154. var x, y;
  1155. for (var i = 0; i < cols.length; i++ ) {
  1156. chart.AddSeries(pivot); // TChart Type 설정 :: 0 = Line | 1 = Bar ..
  1157. var idx = chart.SeriesCount -1;
  1158. //chart.Series(idx).title = grid.valueMatrix(0, cols[i]);
  1159. chart.Series(idx).Title = objDs.getColumn(0, cols[i]);
  1160. chart.Series(i).Marks.Visible = false;
  1161. r = Math.random();
  1162. r = Math.round((255 - 1) * r + 1);
  1163. g = Math.random();
  1164. g = Math.round((255 - 1) * g + 1);
  1165. b = Math.random();
  1166. b = Math.round((255 - 1) * b + 1);
  1167. //color = window.rgb( (255 - 1) * r + 1, (255 - 1) * g + 1 , (255 - 1) * b + 1);
  1168. color = (r).toString(16) + (g).toString(16) + (b).toString(16);
  1169. for (var j = 0; j < rows.length; j++) {
  1170. //x = grid.valueMatrix(rows[j], 0);
  1171. x = objDs.getColumn(rows[j], sBaseColNm);
  1172. //y = grid.valueMatrix(rows[j], cols[i]);
  1173. y = objDs.getColumn(rows[j], cols[i]);
  1174. //alert("x : " + x + "\ny : " + y + "\ncolor : " + color + "\ni : " + i + "\nj : " + j);
  1175. chart.Series(i).Add (y, x, chart.Series(idx).Color);
  1176. chart.Series(i).LegendItemColor(color)
  1177. }
  1178. }
  1179. } else if (type == "col") {
  1180. var r, g, b, color;
  1181. var x, y;
  1182. for (var i = 0; i < rows.length; i++ ) {
  1183. chart.AddSeries(pivot); // TChart Type 설정 :: 0 = Line | 1 = Bar ..
  1184. var idx = chart.SeriesCount -1;
  1185. chart.Series(idx).Title = objDs.getColumn(rows[i], sBaseColNm);
  1186. chart.Series(i).Marks.Visible = false;
  1187. r = Math.random();
  1188. r = Math.round((255 - 1) * r + 1);
  1189. g = Math.random();
  1190. g = Math.round((255 - 1) * g + 1);
  1191. b = Math.random();
  1192. b = Math.round((255 - 1) * b + 1);
  1193. color = (r).toString(16) + (g).toString(16) + (b).toString(16);
  1194. for (var j = 0; j < cols.length; j++) {
  1195. x = objDs.getColumn(0, cols[j]);
  1196. y = objDs.getColumn(rows[i], cols[j]);
  1197. //alert("x : " + x + "\ny : " + y + "\ncolor : " + color + "\ni : " + i + "\nj : " + j);
  1198. chart.Series(i).Add (y, x, chart.Series(idx).Color);
  1199. chart.Series(i).LegendItemColor(color)
  1200. }
  1201. }
  1202. }
  1203. }
  1204. /****************************************************************************************
  1205. * Function : inff_drawLineFromDs
  1206. * Description : dataset의 해당 로우 data를 반영하여 TChart에(Point Type) 그려 줌.
  1207. * Argument : 01.Object tChartObj : Target TChart Object
  1208. * : 02.Object objDs : Source Dataset Object
  1209. * : 03.Integer row : Dataset Source row
  1210. * : 04.[String title] : TChart Title
  1211. * : 05.String sBaseColNm : 기준축에 보여질 title명
  1212. * : 06.[Boolean refresh] : 초기화 여부
  1213. * return type :
  1214. * Creator : 임준호
  1215. ****************************************************************************************/
  1216. function inff_drawLineFromDs(tChartObj, objDs:Dataset, row, title, sBaseColNm, refresh){
  1217. // TChart 초기화
  1218. if( refresh ) {
  1219. inff_clearTChart(tChartObj);
  1220. }
  1221. if( title != null || title == "" ) {
  1222. tChartObj.Header.Text[0] = title; // Title 설정
  1223. }
  1224. tChartObj.Aspect.View3D = 0; // 모양 설정 :: 0 = 2D | 1 = 3D
  1225. tChartObj.Legend.CheckBoxes = true;
  1226. tChartObj.Legend.Alignment = 0; // Legend 위치 설정 :: 0 = left | 1 = right | 2 = top| 3 = bottom
  1227. var Rnd1, Rnd2, Rnd3;
  1228. var cColor;
  1229. var i;
  1230. var x, y;
  1231. tChartObj.AddSeries(0); // TChart Type 설정 :: 0 = Line | 1 = Bar ..
  1232. var seriesIndex = tChartObj.SeriesCount - 1;
  1233. var trgRow = row;
  1234. tChartObj.Series(seriesIndex).asLine.Pointer.Visible = true;
  1235. tChartObj.Series(seriesIndex).asLine.Pointer.Style = 1; //PointStyle 설정 :: 0 - 8
  1236. tChartObj.Series(seriesIndex).Title = objDs.getColumn(trgRow, sBaseColNm);
  1237. //tChartObj.Series(cline - 2).Marks.Style = 0;
  1238. Rnd1 = Math.random();
  1239. Rnd1 = Math.round((255 - 1) * Rnd1 + 1);
  1240. Rnd2 = Math.random();
  1241. Rnd2 = Math.round((255 - 1) * Rnd2 + 1);
  1242. Rnd3 = Math.random();
  1243. Rnd3 = Math.round((255 - 1) * Rnd3 + 1);
  1244. cColor = (Rnd1).toString(16) + (Rnd2).toString(16) + (Rnd3).toString(16);
  1245. var nColCnt = objDs.getColCount();
  1246. for(i=0 ; i<nColCnt ; i++){
  1247. if(objDs.getColumnInfo(i).name != sBaseColNm){
  1248. //x = gridObj.valueMatrix(0, i);
  1249. x = objDs.getColumn(0, i);
  1250. //y = gridObj.valueMatrix(trgRow, i);
  1251. y = objDs.getColumn(trgRow, i);
  1252. tChartObj.Series(seriesIndex).Add (y, x, tChartObj.Series(seriesIndex).Color);
  1253. tChartObj.Series(seriesIndex).LegendItemColor(cColor);
  1254. }
  1255. }
  1256. }
  1257. /****************************************************************************************
  1258. * Function : inff_drawLine
  1259. * Description : 그리드의 해당 로우 data를 반영하여 TChart에(Point Type) 그려 줌.
  1260. * Argument : 01.Object tChartObj : Target TChart Object
  1261. * : 02.Object objGrid : Source Grid Object
  1262. * : 03.Integer row : Dataset Source row
  1263. * : 04.[String title] : TChart Title
  1264. * : 06.[Boolean refresh] : 초기화 여부
  1265. * return type :
  1266. * Creator : 임준호
  1267. ****************************************************************************************/
  1268. function inff_drawLine(tChartObj, objGrid:Grid, row, title, refresh){
  1269. // TChart 초기화
  1270. if( refresh ) {
  1271. inff_clearTChart(tChartObj);
  1272. }
  1273. if( title != null || title == "" ) {
  1274. tChartObj.Header.Text[0] = title; // Title 설정
  1275. }
  1276. tChartObj.Aspect.View3D = 0; // 모양 설정 :: 0 = 2D | 1 = 3D
  1277. tChartObj.Legend.CheckBoxes = true;
  1278. tChartObj.Legend.Alignment = 0; // Legend 위치 설정 :: 0 = left | 1 = right | 2 = top| 3 = bottom
  1279. var Rnd1, Rnd2, Rnd3;
  1280. var cColor;
  1281. var i;
  1282. var x, y;
  1283. tChartObj.AddSeries(0); // TChart Type 설정 :: 0 = Line | 1 = Bar ..
  1284. var seriesIndex = tChartObj.SeriesCount - 1;
  1285. var trgRow = row;
  1286. tChartObj.Series(seriesIndex).asLine.Pointer.Visible = true;
  1287. tChartObj.Series(seriesIndex).asLine.Pointer.Style = 1; //PointStyle 설정 :: 0 - 8
  1288. //tChartObj.Series(seriesIndex).Title = objDs.getColumn(trgRow, sBaseColNm);
  1289. tChartObj.Series(seriesIndex).Title = objGrid.getCellText(trgRow, 0);
  1290. //tChartObj.Series(cline - 2).Marks.Style = 0;
  1291. Rnd1 = Math.random();
  1292. Rnd1 = Math.round((255 - 1) * Rnd1 + 1);
  1293. Rnd2 = Math.random();
  1294. Rnd2 = Math.round((255 - 1) * Rnd2 + 1);
  1295. Rnd3 = Math.random();
  1296. Rnd3 = Math.round((255 - 1) * Rnd3 + 1);
  1297. cColor = (Rnd1).toString(16) + (Rnd2).toString(16) + (Rnd3).toString(16);
  1298. //var nColCnt = objDs.getColCount();
  1299. var nColCnt = objGrid.getFormatColCount();
  1300. for(i=1 ; i<nColCnt ; i++){
  1301. var nCellWidth = objGrid.getCellRect("Body", i).width;
  1302. if(nCellWidth != "0"){
  1303. //if(objDs.getColumnInfo(i).name != sBaseColNm){
  1304. //x = gridObj.valueMatrix(0, i);
  1305. //x = objDs.getColumn(0, i);
  1306. x = objGrid.getCellText(-1, i);
  1307. //y = gridObj.valueMatrix(trgRow, i);
  1308. //y = objDs.getColumn(trgRow, i);
  1309. y = objGrid.getCellText(trgRow, i);
  1310. //trace("================x="+x+":"+"y="+y);
  1311. tChartObj.Series(seriesIndex).Add (y, x, tChartObj.Series(seriesIndex).Color);
  1312. tChartObj.Series(seriesIndex).LegendItemColor(cColor);
  1313. //}
  1314. }
  1315. }
  1316. }
  1317. /****************************************************************************************
  1318. * Function : inff_drawLineAllFromDs
  1319. * Description : dataset의 data를 반영하여 TChart에(Point Type) 그려 줌.
  1320. * Argument : 01.Object tChartObj : Target TChart Object
  1321. * : 02.Object objDs : Source Dataset Object
  1322. * : 03.String title : TChart Title
  1323. * : 04.String sBaseColNm : 기준축에 보여질 title명
  1324. * return type :
  1325. * Creator : 임준호
  1326. ****************************************************************************************/
  1327. function inff_drawLineAllFromDs(tChartObj, objDs, title, sBaseColNm) {
  1328. var nRowCnt = objDs.rowcount;
  1329. for(i=0 ; i<nRowCnt ; i++){
  1330. inff_drawLine(tChartObj, objDs, i, title, sBaseColNm, false);
  1331. }
  1332. }
  1333. /****************************************************************************************
  1334. * Function : inff_drawLineAll
  1335. * Description : dataset의 data를 반영하여 TChart에(Point Type) 그려 줌.
  1336. * Argument : 01.Object tChartObj : Target TChart Object
  1337. * : 02.Object objGrid : Source Grid Object
  1338. * : 03.String title : TChart Title
  1339. * return type :
  1340. * Creator : 임준호
  1341. ****************************************************************************************/
  1342. function inff_drawLineAll(tChartObj, objGrid:Grid, title) {
  1343. //var nRowCnt = objGrid.getFormatRowCount();
  1344. var nRowCnt = objGrid.rowcount;
  1345. inff_clearTChart(tChartObj);
  1346. for(i=0 ; i<nRowCnt ; i++){
  1347. inff_drawLine(tChartObj, objGrid, i, title, false);
  1348. }
  1349. }
  1350. /****************************************************************************************
  1351. * Function : inff_setBackImageLoad
  1352. * Description : chart 배경이미지 삽입(클라이언트 경로만 가능함)
  1353. * Argument : 01.Object tChartObj : Target TChart Object
  1354. * : 02.String imgCd : 이미지명
  1355. * return type :
  1356. * Creator : 임준호
  1357. ****************************************************************************************/
  1358. function inff_setBackImageLoad(tChartObj, imgCd){
  1359. tChartObj.Panel.BackImageLoad(inff_getTChartBackgroundImage(imgCd));
  1360. }
  1361. /****************************************************************************************
  1362. * Function : inff_getTChartBackgroundImage
  1363. * Description : 이미지 경로를 반환
  1364. * Argument : 01.String imgCd : 이미지명
  1365. * return type :
  1366. * Creator : 임준호
  1367. ****************************************************************************************/
  1368. function inff_getTChartBackgroundImage(imgcd){
  1369. return "C:\\himed\\components\\ClipSoft\\teechart7\\images\\"+imgcd+".gif";
  1370. //return "C:\\Program Files\\himed\\components\\ClipSoft\\teechart7\\images\\"+imgcd+".gif";
  1371. }
  1372. /****************************************************************************************
  1373. * Function : inff_getTChartBackgroundImageJpg
  1374. * Description : 이미지 경로를 반환
  1375. * Argument : 01.String imgCd : 이미지명
  1376. * return type :
  1377. * Creator :
  1378. ****************************************************************************************/
  1379. function inff_getTChartBackgroundImageJpg(imgcd){
  1380. return "C:\\himed\\components\\ClipSoft\\teechart7\\images\\"+imgcd+".jpg";
  1381. }]]></Script>