123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824 |
- <?xml version="1.0" encoding="utf-8"?>
- <Script type="xscript4.0"><![CDATA[/***************************************************************************************
- * System Name : HIT
- * Job Name :
- * File Name : comm_awt.xjs
- * Creator : 김지훈
- * Make Date : 2014-12-22
- *
- * Description :
- *---------------------------------------------------------------------------------------
- * Modify Date Modifier Modify Description
- *---------------------------------------------------------------------------------------
- * 2014-02-18 HIT
- *
- *---------------------------------------------------------------------------------------
- ****************************************************************************************/
- var AwtxmlHttpRequest = null;
- var AwtAjaxUrl = sysf_getURLprefix() + "/webapps/com/hismainweb/jsp/awtAjaxOra.jsp"; //Awt조회 Ajax의 url
- var AwtCtrl = null; //Awt 입력중인 콤포넌트 객체(그리드에서 입력중일때는 그리드의 gridinput객체)
- var AwtCtrlDatagrid = null; //Awt 입력중인 콤포넌트가 그리드일때 해당 그래드 객체
- var AwtCtrlType = null; //Awt 입력중인 콤포넌트의 유형(gridinput:그리드, input,textarea 등)
- var AwtWordBegin = -1; //입력중인 문자열에서 구분문자(스페이스,엔터,' 등)으로 잘라야할 첫 위치
- var AwtWordEnd = -1; //입력중인 문자열에서 구분문자으로 잘라야할 끝 위치
- var AwtSendWord = null; //입력중인 문자열에서 구분문자으로 잘라진 단어(조회/변환할 단어)
- var AwtMode = null;
- var AwtTolText = null; //입력창의 전체 문자열
- var AwtCurrentPos = null; //입력창의 커서 위치
- var AwtObj = null; //입력창 오브젝트
- var AwtObjName = null; //입력창 오브젝트 종류
- var div_AwtViewer:Div = null; // AWT 조회 화면
- var isEnter = false; // 엔터키를 눌러 변환 하는 경우 true
- var oriIMEmode = ""; // 원래의 IMEMODE
- function awtf_AwtSearch(obj:Form, e:KeyEventInfo){
- AwtMode = null;
- //'F2':113
- if (e.keycode == 113) {
- if (awtf_AwtUseThisWindow() != '1')
- {
- return;
- }
- else
- {
- if(AwtGetSearchWordPopup(obj, e)) {
- AwtShow(obj);
- }
- // var objArg = new Object();
- // objArg.awtSendWord = AwtSendWord;
- // var iParam = frmf_modal("SMZWT00000", "SMZWT00000", objArg, null, mon, xpt, ypt, null, null, null, null, null, "P");
- // if(iParam != null && iParam != undefined && iParam != ""){
- // awtf_AwtSetResult(iParam, AwtMode);
- // }
- }
- // if (AwtGetSearchWordPopup()) {
- // awtf_AwtSearchLike(AwtSendWord);
- // AwtShow();
- // }
- }
-
- else {
- //'F10':121
- if (e.keycode == 121) {
- if (AwtStnsOn() != '1')
- return;
-
- if (AwtGetSearchWord(obj, e)) {
- AwtSearchSentense(AwtSendWord);
- }
- }
- else
- {
- //다음의 구분자로 단어를 자른다. ('space':32 ',':188 '.':190 "'":222)
- if (e.keycode == 32 || e.keycode == 188 || e.keycode == 190 || e.keycode == 222 || e.keycode == 13) {
-
- if (AwtOn() != '1')
- {
- return;
- }
- else
- {
- if (AwtGetSearchWord(obj, e)) {
- AwtSearchOne(AwtSendWord);
- } else {
- fChkGrid();
- }
- }
- }
- }
- }
-
- return true;
- }
- function AwtShow(obj:Form) {
- var AwtObj_xpt = system.clientToScreenX(AwtObj, 0);
- var AwtObj_ypt = system.clientToScreenY(AwtObj, 0);
- var obj_xpt2 = system.clientToScreenX(obj, 0);
- var obj_ypt2 = system.clientToScreenY(obj, 0);
- var xpt = AwtObj_xpt - obj_xpt2;
- var ypt = AwtObj_ypt - obj_ypt2;
-
- var width = AwtObj.position.width;
- var height = AwtObj.position.height;
-
- if(AwtObjName == "Grid") { // 그리드는 셀 단위로 처리 하도록 함
- var arrCellRect = AwtObj.getCellRect(AwtObj.currentrow, AwtObj.getCellPos());
-
- xpt += arrCellRect.left;
- width = arrCellRect.right - arrCellRect.left;
- height = arrCellRect.bottom;
- }
-
- if (obj.position.width < xpt + width) {
- xpt = xpt - 382;
- }
-
- if (obj.position.height < ypt + height + 222) {
- ypt = ypt - 222;
- } else {
- ypt = ypt + height;
- }
-
- if(xpt < 0) xpt = 0;
- else if(xpt > obj.position.width - 382) xpt = obj.position.width - 382;
- if(ypt < 0) ypt = 0;
- else if(ypt > obj.position.height - 222) xpt = obj.position.height - 222;
-
- if(div_AwtViewer == null) {
- div_AwtViewer = new Div("AwtViewer", xpt, ypt, xpt + 382, ypt + 222);
- div_AwtViewer.asyncmode = false;
- div_AwtViewer.url = "com_awtxp::SMZWT00000_AWT조회.xfdl";
- obj.addChild("AwtViewer", div_AwtViewer);
- div_AwtViewer.show();
- } else {
- div_AwtViewer.position.x = xpt;
- div_AwtViewer.position.y = ypt;
-
- div_AwtViewer.visible = true;
- }
-
- div_AwtViewer.initSearch(obj, AwtSendWord);
- }
- //화면 & 개인별 자동변환 사용여부 1:사용, 0:미사용
- function AwtStnsOn() {
-
- try {
- if(agv_objAppBottomPath.form.fGetUserAwtStnsYN() == "Y")
- return '1';
- } catch(e) {
- // alert('상용구 개인별 On/Off 설정을 가져오는데 오류가 발생했습니다.' + e.toString());
- }
- return '0';
-
- }
- //화면 & 개인별 자동변환 사용여부 1:사용, 0:미사용
- function AwtOn() {
- if (awtf_AwtUseThisWindow() != '1')
- return '0';
-
- try {
- if(agv_objAppBottomPath.form.fGetUserAwtYN() == "Y")
- return '1';
-
- } catch(e) {
- // alert('Awt 개인별 On/Off 설정을 가져오는데 오류가 발생했습니다.' + e.toString());
- }
- return '0';
-
- }
- function AwtSearchSentense(sendWord) {
-
- AwtMode = "sent";
- AwtxmlHttpPost();
- //구문 ctrl+space조회시 조회창f2에서 사용하는 단어그룹 설정으로 조회한다.
- //공용단어"C"로 조회하려면 첫번째 파라미처를 "C"로, 부서는 "D"로, 개인은 "P"로...
- var awttype = agv_objAppBottomPath.form.fGetUserAwtGrpCd();
-
- AwtSend("P", AwtMode, sendWord);
- }
- function AwtSearchOne(sendWord) {
- AwtMode = "conv";
- AwtxmlHttpPost();
- AwtSend(agv_objAppBottomPath.form.fGetUserAwtGrpCd(), AwtMode, sendWord);
- //위줄의 함수가 경북대병원은 fGetUserAwtGrpCd() ㄴ일수도 있음
- //(AwtSearchOne 함수 바로 윗줄에 같은 함수를 부르니 정확한 명칭은 참고..
- }
- //화면ID별로 awt를 사용할지 여부를 가져오는 함수
- function awtf_AwtUseThisWindow() {
- var screenid = frmf_getScreenID();
- if (screenid == "form") //form으로 시작하는 himainxp 프로젝트안의 화면은 사용X
- return '0';
- else if (screenid == "SMZWT00000") //Awt 조회 화면 자체(이 부분이 없어지면 SMZWT00000안에 SMZWT00000가 계속 생기는 무한루프 발생하므로 꼭 return '0')
- return '0';
- else if (screenid == "SMZUM00100") //himed상단에 환자정보를 표시하는 TF화면은 awt를 적용안함(적용시 불필요한 스크롤바가 생김)
- return '0';
- else if (screenid == "SMZUM00200") //Main화면 화면 영역은 사용X
- return '0';
- else if (screenid == "SMZUM00300") //상태표시줄 화면 영역은 사용X
- return '0';
- else if (screenid == "SMZSN00200") //공지사항 화면은 사용X
- return '0';
- else if (screenid == "SSZSN00100") //공지사항 화면은 사용X
- return '0';
-
- ///////// 화면별 설정을 DB로 별도 관리할때 DB에서 가져온 결과를 적용하는 부분을 여기에 추가해야 함
- var awtUse = '0';
- var awtyn;
- try{
- awtyn = isAwtScrnYN(screenid);
- if(awtyn == "Y"){
- awtUse = '1';
- }
- }catch(e){
- // alert('Awt 화면별 On/Off 설정을 가져오는데 오류가 발생했습니다.' + e.toString());
- }
-
- return awtUse;
- }
- //화면ID에 대해 AWT사용여부 확인
- function isAwtScrnYN(scrncd){
- if(gds_awtInfo.rowcount <= 0) return 'N';
-
- if (scrncd == "") {
-
- //if(awtList.indexOf("SMZWT00009")>=0){ // "com/awtweb/xrw/SMZWT00009_AWT DB서식 기록지에서 사용 여부.xrw" 가 AWT 미사용 화면리스트에 있으면
- if( gds_awtInfo.findRow("scrncd", "SMZWT00009") >= 0 ){
- return 'N';
- }
- return 'Y';
- }
-
- if(gds_awtInfo.findRow("scrncd", scrncd) >= 0){ // AWT 미사용 화면리스트에 있으면
- return 'N';
- }
- return 'Y';
- }
- function awtf_AwtSearchLike(sendWord,sendtype)
- {
- AwtMode = "list";
- AwtxmlHttpPost();
- if (sendtype == null)
- {
- sendtype = sysf_getUserInfo("awtgrpcd");
- }
- AwtSend(sendtype, AwtMode, sendWord);
- }
- //Awt ajax통신 객체 생성
- function AwtxmlHttpPost()
- {
- var objActiveX = new ActiveX();
- AwtxmlHttpRequest = objActiveX.createObject("Microsoft.XMLHTTP");
- }
- //Awt서버에 ajax요청을 보내는 함수
- function AwtSend(awtType, awtMode, strSpell)
- {
- var strPostValue=AwtXMLPattern(awtType, awtMode, strSpell);
- AwtxmlHttpRequest.open("POST", AwtAjaxUrl, false);
- AwtxmlHttpRequest.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
- AwtxmlHttpRequest.setRequestHeader("Cache-Control:", "no-cache");
- AwtxmlHttpRequest.setRequestHeader("Pragma:", "no-cache");
- //AwtxmlHttpRequest.onreadystatechange = handleStateChange;
- try
- {
- AwtxmlHttpRequest.send(strPostValue);
- } catch(e) {
- alert("AWT 통신오류:"+e);
- return;
- }
- handleStateChange();
- }
- function handleStateChange()
- {
- if(AwtxmlHttpRequest.readyState == 1 || AwtxmlHttpRequest.readyState == 2 || AwtxmlHttpRequest.readyState == 3)
- {
- alert("처리중입니다");
- }
-
- if(AwtxmlHttpRequest.readyState == 4)
- {
- switch (AwtxmlHttpRequest.status)
- {
- case 404:
- //alert('오류: ' + AwtAjaxUrl + '이 존재하지 않음');
- break;
- case 200:
- AwtOnResult(AwtxmlHttpRequest.responseText.trim());
- break;
- default:
- //alert('오류: ' + AwtxmlHttpRequest.responseText);
- break;
- }
- }
- }
- //Awt서버에 보낼 구문 패턴을 만드는 함수
- function AwtXMLPattern(awtType, awtMode, strSpell)
- {
- var strXML = null;
- strXML = encodeURI("awtType="+awtType+"&userid="+sysf_getUserInfo("userid")+"&deptcd="+sysf_getUserInfo("dutplcecd")+"&strSpell="+strSpell+"&strFlag="+awtMode);
- return strXML;
- }
- function AwtOnResult(strVal)
- {
- if (strVal == null || strVal == "" || strVal == "null"){
- fChkGrid();
- return;
- }
- //AwtSearchLog("changed\t'" + strVal + "'\t" + AwtMode);
- nCurrent=0;
-
- // TF와 동일 하게 되어 있으나 XP에서는 기본 데이터가 \r\n이라 안나오는 경우가 발생하여 이 부분 주석 처리함
- //strVal = strVal.replace(/\r\n/g,"");
- if(AwtMode=="conv" || AwtMode=="sent" || AwtMode=="sentNconv")
- {
- if (strVal != null && strVal.length != 0) {
- awtf_AwtSetResult(strVal, AwtMode);
- }
- }
- else if(AwtMode=="list")
- {
- //frmf_modal("SMZWT00000", "SMZWT00000");
- var cnt = 0;
- if(strVal.length>0 && strVal.indexOf("□□□")>=0)
- {
- var strArr = strVal.split("□□□");
-
- this.ds_awt_grd.enableevent = false;
- for (var i = 0; i < strArr.length; i++) {
- if (strArr[i] != null && strArr[i] != "") {
- cnt++;
- var strToken = strArr[i].split("■■■");
- this.ds_awt_grd.addRow();
- var rowcnt = this.ds_awt_grd.rowcount - 1;
- this.ds_awt_grd.setColumn(rowcnt, "data", strToken[0]);
- this.ds_awt_grd.setColumn(rowcnt, "keyword", strToken[1]);
-
- }
- }
- this.ds_awt_grd.enableevent = true;
- this.ds_awt_grd.rowposition = 0;
- this.awt_grd.setFocus();
- }
- }
- }
- //Awt조회/변환된 결과를 입력중인 콤포넌트에 교체하는 함수 (Awt Browser에서 입력중인 화면으로 호출함)
- function awtf_AwtSetResult(awtResult, awtMode) {
- var result = null;
- var hanengmode = null;
- if (awtMode == "conv" || awtMode == "sent" || awtMode == "sentNconv") {
- var tokens = awtResult.split("||");
- hanengmode = tokens[0];
- result = tokens[1];
- } else {
- result = awtResult;
- }
- if (awtMode == "list") {
- }
- if (result == AwtSendWord) {
- // AwtHide();
- return;
- }
- var first = AwtTolText.substr(0, AwtWordBegin);
- var last = AwtTolText.substr(AwtWordEnd, AwtTolText.length);
- var cnt = 1;
- if (awtMode == "list")
- cnt = 0;
- AwtWordEnd = (first + result).length + cnt;
- //trace("최종 :" +first + result + last);
- if( AwtObjName == "Grid" ){
- var oDs = null;
- var sDs = AwtObj.binddataset;
-
- if(!utlf_isNull(sDs)) oDs = eval(sDs);
-
- if(!utlf_isNull(oDs)) oDs.enableevent = false;
-
- // // 변환 후 자동 한글 입력 되도록 수정
- // AwtObj.setCellProperty("body", AwtObj.getCellPos(), "editimemode", "hangul");
- // AwtObj.setCellProperty("body", AwtObj.getCellPos(), "editimemode", "none");
-
- AwtObj.showEditor(true);
- AwtObj.setEditText(first + result);
- AwtObj.setEditCaret(-1); // first와 result의 length로는 캐럿의 위치가 파악이 안됨(아마 개행문자가 계산되어버리는듯)
- var pos = AwtObj.getEditCaret() + ((awtMode == "conv") ? 1 : 0);// 그래서 뒤의 내용 붙히기 전에 끝으로 커서 보내놓고 그 다음에 그 뒤에 내용을 붙혀서 처리함
-
- AwtObj.setEditText(first + result + last);
- if(isEnter) {
- AwtObj.setEditCaret(pos + 1);
- } else {
- AwtObj.setEditCaret(pos);
- }
-
- // awt 변환 후 엔터키 눌렀을 때 저장 안되는 현상 수정(2016.04.07)
- //AwtObj.updateToDataset();
- if(!utlf_isNull(oDs)) oDs.enableevent = true;
- } else {
- AwtObj.setFocus();
-
- AwtObj.value = first + result;
- AwtObj.setCaretPos(-1); // first와 result의 length로는 캐럿의 위치가 파악이 안됨(아마 개행문자가 계산되어버리는듯)
- var pos = AwtObj.getCaretPos() + ((awtMode == "conv") ? 1 : 0); // 그래서 뒤의 내용 붙히기 전에 끝으로 커서 보내놓고 그 다음에 그 뒤에 내용을 붙혀서 처리함
-
- AwtObj.value = first + result + last;
- if(isEnter) {
- AwtObj.setCaretPos(pos + 1);
- } else {
- AwtObj.setCaretPos(pos);
- }
-
- // TextArea 일때 구문변환 후 키보드로 커서 위로 올릴때 위치 오류 나는 현상 수정 (2017.08.23 smkim)
- if(AwtObjName == "TextArea") {
- AwtObj.insertText(" ", pos);
- AwtObj.deleteText(pos, 1);
- }
-
- // 변환 후 자동 한글 입력 되도록 수정
- oriIMEmode = AwtObj.imemode;
- if(utlf_isNull(oriIMEmode)) oriIMEmode = "none";
-
- if(engCheck(result))
- AwtObj.imemode = "alpha";
- else
- AwtObj.imemode = "hangul";
- AwtObj.onkillfocus.addHandler(killFocuseHandler);
-
- // 해당 화면에서는 awt 동작 후 ontextchanged 이벤트 강제 발생하도록 함
- // 2016.04.05 화면체크에서 이벤트 유무로 변경.
- //var screenid = frmf_getScreenID();
- if( !utlf_isNull(AwtObj.ontextchanged.getHandler(0)) ){
- // if(screenid == "SMMMR00100" || screenid == "SMMMR02900"
- // || screenid == "SMMMR05000" || screenid == "SSMMR01100") { // SMMMR00100 : 진료기록메인, SMMMR02900 : 제증명, SMMMR05000 : 의뢰, SSMMR01100 : 서식로더
- AwtObj.ontextchanged.fireEvent(AwtObj, new TextChangedEventInfo);
- }
-
- // if(!utlf_isNull(result)) {
- // var fontStyle = AwtObj.currentstyle.font.toString().split(',');
- // var bold = false;
- // if(fontStyle.length > 2 && fontStyle[2] == "bold") bold = true;
- //
- // var objFont = utlf_getObjFont(fontStyle[1], fontStyle[0], bold); // 실제 폰트의 너비
- //
- // var rr = result.split('\n');
- // var height = 0;
- //
- // for(var i = 0; i < rr.length; i++) {
- // var objFontSize = utlf_getTextSize(rr[i], objFont);
- //
- // height += objFontSize.cy;
- // }
- //
- // sysf_trace("objFontSize.cy : " + objFontSize.cx + ", " + objFontSize.cy + ", " + height);
- if(!utlf_isNull(AwtObj.vscrollbar)) {
- var maxVal= AwtObj.vscrollbar.max;
- AwtObj.vscrollbar.pos += maxVal;
- //AwtObj.vscrollbar.pos += height;//maxVal;
- }
- //}
- }
-
- isEnter = false;
-
- if (AwtCtrl != null) {
- //if (awtMode == "matchone") {
- // if (awtMode == "conv" || awtMode == "sent" || awtMode == "sentNconv") {
- // if (hanengmode == "1") {
- // AwtCtrl.attribute("imemode") = "alpha";
- // body.attribute("imemode") = "alpha";
- // } else if (hanengmode == "2") {
- // AwtCtrl.attribute("imemode") = "hangul";
- // body.attribute("imemode") = "hangul";
- // }
- //
- // if (AwtCtrlType != "gridinput" && AwtCtrlType != "gridinput") {
- // model.setFocus("body");
- // model.setFocus(AwtCtrl.attribute("id"));
- // }
- // } else {
- // if (AwtCtrlType == "datagrid") {
- // if (AwtCtrlDatagrid != null) {
- // AwtCtrlDatagrid.editCell();
- // }
- // } else if (AwtCtrlType == "gridinput") {
- // if (AwtCtrlDatagrid != null) {
- // AwtCtrlDatagrid.editCell();
- // }
- // } else {
- // //do nothing
- // }
- // }
- }
-
- // AwtHide();
-
- //if (model.getFocus().substring(0, 4) != 'awt_')
- // return;
- // AwtSearchLog(AwtWordBegin + " " + AwtWordEnd);
- }
- function killFocuseHandler(obj, e:KillFocusEventInfo) {
- obj.imemode = oriIMEmode;
- obj.onkillfocus.removeHandler(killFocuseHandler);
- }
- function engCheck(str) {
- for (i = 0; i < str.length; i++) {
- ch = escape(str.charAt(i)); //ISO-Latin-1 문자셋으로 변경
- if (strCharByte(ch) == 2) {
- return false; // 한글
- }
- }
- return true; // 영어
- }
- function strCharByte(chStr) {
- if (chStr.substring(0, 2) == '%u') {
- if (chStr.substring(2,4) == '00')
- return 1;
- else
- return 2; //한글
- } else if (chStr.substring(0,1) == '%') {
- if (parseInt(chStr.substring(1,3), 16) > 127)
- return 2; //한글
- else
- return 1;
- } else {
- return 1;
- }
- }
- //Awt목록조회를 하는 함수
- function AwtGetSearchWordPopup(obj:Form, e:KeyEventInfo) {
- var cp = obj.getFocus();
- var cpName = (new String(cp)).replace("[object ", "");
- cpName = (new String(cpName)).replace("]", "");
-
- AwtObj = cp;
- AwtObjName = cpName;
- if (cp == null)
- return false;
- if( cpName == "Grid" ){
- var oDs = null;
- var sDs = AwtObj.binddataset;
-
- if(!utlf_isNull(sDs)) oDs = this.objects[sDs];
- if(!utlf_isNull(oDs)) {
- oDs.enableevent = false;
- } else {
- return false;
- }
-
- AwtCurrentPos = cp.getEditCaret();
- cp.showEditor(true);
- AwtTolText = (cp.currentrow < 0 || cp.currentcol < 0) ? "" : cp.getEditText();
- cp.showEditor(false);
-
- AwtObj.updateToDataset();
- if(!utlf_isNull(oDs)) oDs.enableevent = true;
- } else if( cpName == "Edit" || cpName == "TextArea" ){
- AwtTolText = cp.value;
- AwtCurrentPos = cp.getCaretPos();
- } else {
- return false;
- }
- // 입력하지 않고 F2 눌러도 awt 관리창 열리도록 수정
- if(AwtTolText == undefined || AwtTolText == null)
- AwtTolText = "";
- //return false;
-
- AwtWordEnd = AwtTolText.length;
- var foundC = false;
-
- var nowWordStartPos = AwtCurrentPos - 1; //space를 못찾으면 그냥 첫 위치(0)가 들어감
- for (j = nowWordStartPos; j >= 0; j--) {
- if (AwtTolText.charAt(j) == ' ' //space
- || AwtTolText.charAt(j) == ' ' //tab
- || AwtTolText.charAt(j) == '\n' //enter
- || AwtTolText.charAt(j) == '.' //.
- || AwtTolText.charAt(j) == ',' //,
- || AwtTolText.charAt(j) == '\'' //'
- || AwtTolText.charAt(j) == '"' //"
- ) {
- nowWordStartPos = j + 1;
- foundC = true;
- break;
- }
- }
- if (!foundC)
- nowWordStartPos = 0; //구문의 첫 글자부터 찾을 단어의 시작임
-
- foundC = false;
- for (k = nowWordStartPos; k < AwtTolText.length; k++) {
- if (AwtTolText.charAt(k) == ' ' //space
- || AwtTolText.charAt(k) == ' ' //tab
- || AwtTolText.charAt(k) == '.' //.
- || AwtTolText.charAt(k) == ',' //,
- || AwtTolText.charAt(k) == '\'' //'
- || AwtTolText.charAt(k) == '"' //"
- ) {
- nowWordEndPos = k;
- foundC = true;
- break;
- } else if(AwtTolText.charAt(k) == '\n') { //enter
- nowWordEndPos = k - 1;
- foundC = true;
- break;
- }
- }
- if (!foundC)
- nowWordEndPos = AwtTolText.length; //구문의 끝 글자까지 찾을 단어임
-
- if (nowWordStartPos == nowWordEndPos) {
- AwtSendWord = "";
- }
-
- AwtSendWord = AwtTolText.substring(nowWordStartPos, nowWordEndPos);
- AwtWordBegin = nowWordStartPos;
- AwtWordEnd = nowWordEndPos;
- //trace("nowWordStartPos : "+nowWordStartPos+"\nnowWordEndPos : "+nowWordEndPos+"\nAwtSendWord : "+AwtSendWord);
-
- return true;
- }
- //Awt단어 조회/변환을 실제로 수행하는 함수
- function AwtGetSearchWord(obj:Form, e:KeyEventInfo) {
-
- var cp = obj.getFocus();
- var cpName = (new String(cp)).replace("[object ", "");
- cpName = (new String(cpName)).replace("]", "");
-
- AwtObj = cp;
- AwtObjName = cpName;
-
- if (cp == null)
- return false;
- if( cpName == "Grid" ){
- var edittype = AwtObj.getCellProperty("body", AwtObj.getCellPos(), "edittype");
- if(!e.ctrlKey && e.keycode == 13 && (edittype == "text" || edittype == "textarea")) {
- return false;
- }
- var oDs = null;
- var sDs = AwtObj.binddataset;
-
- if(!utlf_isNull(sDs)) oDs = eval(sDs);
-
- // 스페이스바 연속 두번 누를 때 포커스 사라지는 현상 수정을 위해 이벤트 처리 주석
- // 현재 필요도 없는 로직인듯 (smkim - 16.10.27)
- //if(!utlf_isNull(oDs)) oDs.enableevent = false;
-
- AwtCurrentPos = cp.getEditCaret();
- //cp.showEditor(true); // 불필요해서 주석(2016.04.07)
- // getCellValue 편집중인 텍스트를 가져오지 못해서 getEditText로 변경함(2016.04.07)
- AwtTolText = cp.getEditText();//cp.getCellValue(cp.currentrow, cp.currentcol);
- if(utlf_isNull(AwtTolText)) AwtTolText = "";
- //AwtObj.setEditText(AwtTolText); // 불필요해서 주석(2016.04.07)
- //AwtObj.setEditCaret(-1); // 불필요해서 주석(2016.04.07)
- //cp.showEditor(false);
- //AwtObj.updateToDataset(); // 미리 데이터셋에 반영 해버리면 엔터키 눌렀을 때 저장 하는 로직이 처리 불가하여 주석(2016.04.07)
- //if(!utlf_isNull(oDs)) oDs.enableevent = true;
- } else if( cpName == "Edit" || cpName == "TextArea" ){
- AwtTolText = cp.value;
- if(utlf_isNull(AwtTolText)) AwtTolText = "";
- AwtCurrentPos = cp.getCaretPos();//cp.getSelect();//cp.getCaretPos();
- } else {
- return false;
- }
- if(AwtTolText == undefined || AwtTolText == null || AwtTolText == "")
- return false;
-
- AwtWordEnd = AwtTolText.length;
-
- var beforeIsGubun = false;
- var found1 = false;
- var foundC = false;
-
- var nowWordStartPos = AwtCurrentPos - 1; //space를 못찾으면 그냥 첫 위치(0)가 들어감
- for (j = nowWordStartPos; j >= 0; j--) {
- //alert(j + " " + text.charAt(j) + " " + foundC);
- if (AwtTolText.charAt(j) == ' ' //space
- || AwtTolText.charAt(j) == ' ' //tab
- || AwtTolText.charAt(j) == '\n' //enter
- || AwtTolText.charAt(j) == '.' //.
- || AwtTolText.charAt(j) == ',' //,
- || AwtTolText.charAt(j) == '\'' //'
- || AwtTolText.charAt(j) == '"' //"
- ) {
- if (j == nowWordStartPos) { //처음부터 구분자가 나오면
- if (beforeIsGubun == true) //좀전에 찾앗던 단어가 구분자이면...
- return false; //구분자가 두번연속으로 나온 경우리므로 return
- nowWordStartPos = j - 1; //구분자가 두번 반복될때를 대비해서 처음시작을 하나 이동시킴
- beforeIsGubun = true; //지금 찾은 단어가 구분자였음을 기록하고
- } else {
- if (foundC) {
- found1 = true;
- nowWordStartPos = j + 1;
- break;
- }
- }
- } else
- foundC = true;
- }
- if (!found1)
- if (nowWordStartPos == -1)
- return false; //내용이 모두 구분자임, 찾을 단어가 없음
- else
- nowWordStartPos = 0; //구문의 첫 글자부터 찾을 단어의 시작임
-
- var found2 = false;
- var nowWordEndPos = 0;
- for (k = nowWordStartPos; k < AwtTolText.length; k++) {
- if (AwtTolText.charAt(k) == ' ' //space
- || AwtTolText.charAt(k) == ' ' //tab
- || AwtTolText.charAt(k) == '.' //.
- || AwtTolText.charAt(k) == ',' //,
- || AwtTolText.charAt(k) == '\'' //'
- || AwtTolText.charAt(k) == '"' //"
- ) {
- found2 = true;
- nowWordEndPos = k;
- break;
- } else if( AwtTolText.charAt(k) == '\n') { //enter
- found2 = true;
- nowWordEndPos = k - 1;
- break;
- }
- }
- if (found2)
- nowWordEndPos; //찾아진 구분자까지
- else {
- if (AwtTolText.charAt(AwtTolText.length - 1) == ' ' //space
- || AwtTolText.charAt(AwtTolText.length - 1) == ' ' //tab
- || AwtTolText.charAt(AwtTolText.length - 1) == '\n' //enter
- || AwtTolText.charAt(AwtTolText.length - 1) == '.' //.
- || AwtTolText.charAt(AwtTolText.length - 1) == ',' //,
- || AwtTolText.charAt(AwtTolText.length - 1) == '\'' //'
- || AwtTolText.charAt(AwtTolText.length - 1) == '"' //"
- )
- nowWordEndPos = AwtTolText.length - 1; //마지막 글자까지
- else
- nowWordEndPos = AwtTolText.length; //마지막 글자까지
- }
-
- AwtSendWord = AwtTolText.substring(nowWordStartPos, nowWordEndPos);
- AwtWordBegin = nowWordStartPos;
- AwtWordEnd = nowWordEndPos;
-
- // 엔터키로 입력시에도 변환되도록 추가
- isEnter = (e.keycode == 13) ? true : false;
- return true;
- }
- function fChkGrid()
- {
- if(AwtObjName == "Grid"){
- // AwtObj.showEditor(true);
- // AwtObj.setEditCaret(-1); // 커서가 제일 뒤로 이동하는 현상 수정(2016.04.07)
- }
- }]]></Script>
|