123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432 |
- /*
-
- 간호일지I_문장 속성 입력(SMMNR01400.xfm - JScript )
- - Version :
- 1) : Ver.1.00.01
- */
- var sStmtList = "";
- var sPageTop = 26; // 최상위 여백 :3, 속성등록버튼 : 19, 하위 여백 : 3, 구분선 : 1) 시작위치
- var xStmtInfoPath = "/root/main/stmtinfo";
- var xAttrInfopath = "/root/init/attrinfo"; //속성정보
- /**
- * @group :
- * @ver : 2007.04.25
- * @by : 이은영
- * @---------------------------------------------------
- * @type : function
- * @access : public
- * @desc : 화면 초기화
- * @param :
- * @return :
- * @---------------------------------------------------
- */
- function fInit(){
- var sSMMNR014_Param = opener.javascript.getParameter("SMMNR014_Param");
- opener.javascript.setParameter("SMMNR014_Return","");
- if(sSMMNR014_Param == "") return;
- sStmtList = sSMMNR014_Param.split("▩");
- var sAttrInfo = "";
- var sStmtInfo = "";
- var sSendData = "";
- model.removenode("/root/send");
- model.makeNode("/root/send/attrinfo");
- var sStmtRow = 1; // 진술문장 인스턴스
- var sAttrRow = 1; // 속성 인스턴스
- var sAttrYN = "N";
-
-
- // 진술문장 별로 속성 가져오고 인스턴스 생성
- for(var i=0; i<sStmtList.length-1; i++){
- sStmtInfo = sStmtList[i].split("▦");
- model.makeNode(xStmtInfoPath+"["+sStmtRow+"]");
- model.makeValue(xStmtInfoPath+"["+sStmtRow+"]/stmtcd",sStmtInfo[0]);
- model.makeValue(xStmtInfoPath+"["+sStmtRow+"]/stmtcnts",sStmtInfo[1]);
- model.makeValue(xStmtInfoPath+"["+sStmtRow+"]/attrinfo1",sStmtInfo[2]);
- model.makeValue(xStmtInfoPath+"["+sStmtRow+"]/attrinfo2",sStmtInfo[3]);
- model.makeValue(xStmtInfoPath+"["+sStmtRow+"]/attressnyn",sStmtInfo[4]);
- model.makeValue(xStmtInfoPath+"["+sStmtRow+"]/dnarnm",model.getValue("/root/init/dnar/itemset[itemcd = '"+sStmtInfo[5]+"']/itemnm"));
- sAttrRow = 1;
-
- sAttrInfo = sStmtInfo[2].split("⊙");
- sAttrYN = "N";
- // 문장 내의 속성 가져오기
- for(var j=0; j<sAttrInfo.length-1; j++){
- model.makeNode(xStmtInfoPath+"["+sStmtRow+"]/attrinfo["+sAttrRow+"]");
- model.makeValue(xStmtInfoPath+"["+sStmtRow+"]/attrinfo["+sAttrRow+"]/attrseq",j);
- model.makeNode(xStmtInfoPath+"["+sStmtRow+"]/attrinfo["+sAttrRow+"]/attrval");
- model.makeNode(xStmtInfoPath+"["+sStmtRow+"]/attrinfo["+sAttrRow+"]/attrvalcd");
- model.makeValue(xStmtInfoPath+"["+sStmtRow+"]/attrinfo["+sAttrRow+"]/attrcd",sAttrInfo[j]);
- sAttrRow++;
- if(fExistAttrCd(sAttrInfo[j]) == "Y") continue;
- sSendData = model.getValue("/root/send/attrinfo");
- if(sSendData != "") sSendData += ",";
- sSendData += sAttrInfo[j];
- model.setValue("/root/send/attrinfo", sSendData);
-
- }
- sStmtRow++;
- }
- var lineCnt = 1;
- var sAttrFlag = "";
- var sAttrCD = "";
- var sPlnumChoiYN = "";
- var sStmtCnt = 0;
- var sStmtCnts= "";
- var sStmtCD = "";
- var sClass = "";
- var sClassCombo = "";
- var sDnarNm = "";
-
- if(submit("TRMNR01401")){
- sStmtRow = 1; // 진술문장 인스턴스
- sAttrRow = 1; // 속성 인스턴스
- sStmtCnt = instance1.selectNodes(xStmtInfoPath).length;
- for(var i=1; i<=sStmtCnt; i++){
- sStmtCnts = model.getValue(xStmtInfoPath+"["+i+"]/stmtcnts");
- sDnarNm = model.getValue(xStmtInfoPath+"["+i+"]/dnarnm");
-
- if(model.getValue(xStmtInfoPath+"["+i+"]/attressnyn") == "E"){
- sClass = "input_essential";
- sClassCombo = "combo_essential";
- }else{
- sClass = "input_default";
- sClassCombo = "combo_default";
- }
-
- sPageTop += 3; // 여백
-
- if(i > 0){
- fCretInputTool("line","line_3",lineCnt,sPageTop-1);
- lineCnt++;
- }
- fCretInputTool("cap","SS",i,sPageTop,sStmtCnts); // 진술문장
- fCretInputTool("cap","SA",i,sPageTop,sDnarNm); // dnar구분
- sPageTop += 46; // caption 크기만큼 추가
-
- sAttrInfo = model.getValue(xStmtInfoPath+"["+i+"]/attrinfo1").split("⊙");
- sAttrRow = 1;
- sStmtCD = model.getValue(xStmtInfoPath+"["+i+"]/stmtcd");
- for(var j=0; j<sAttrInfo.length-1; j++){
- sPageTop+=1; // 여백
- fCretInputTool("cap","A",sStmtRow+""+sAttrRow, sPageTop,model.getValue(xAttrInfopath+"[attrcd='"+sAttrInfo[j]+"']/attrnm"), xStmtInfoPath+"[stmtcd='"+sStmtCD+"']/attrinfo[attrseq='"+j+"']/attrval"); // 진술문장
-
- sAttrFlag = model.getValue(xAttrInfopath+"[attrcd='"+sAttrInfo[j]+"']/attrflag");
- if(sAttrFlag == "C" || sAttrFlag == "A"){ // C : 코드속성, A : 사정도구 -> 입력도구 : combo
- sPlnumChoiYN = model.getValue(xAttrInfopath+"[attrcd='"+sAttrInfo[j]+"']/plnumchoiyn");
- if(sPlnumChoiYN == "Y"){
- //fCretInputTool("opt","",sStmtRow+""+sAttrRow,sPageTop+1, sAttrInfo[j], xStmtInfoPath+"[stmtcd='"+sStmtCD+"']/attrinfo[attrseq='"+j+"']");
- fCretInputTool("opt",sClass,sStmtRow+""+sAttrRow,sPageTop+1, sAttrInfo[j], xStmtInfoPath+"[stmtcd='"+sStmtCD+"']/attrinfo[attrseq='"+j+"']");
- }else{
- fCretInputTool("cmb",sClassCombo,sStmtRow+""+sAttrRow,sPageTop+1, sAttrInfo[j], xStmtInfoPath+"[stmtcd='"+sStmtCD+"']/attrinfo[attrseq='"+j+"']/attrval");
- }
- }else if(sAttrFlag == "V" || sAttrFlag == "F"){ // V : 수치속성, F : 특수속성 -> 입력도구 : input
- fCretInputTool("ipt", sClass,sStmtRow+""+sAttrRow,sPageTop+1,sAttrInfo[j], xStmtInfoPath+"[stmtcd='"+sStmtCD+"']/attrinfo[attrseq='"+j+"']/attrval");
- }
- sPageTop+=23; // caption 크기만큼 추가
- if(j != sAttrInfo.length-1){
- fCretInputTool("line", "line_2",lineCnt,sPageTop-1);
- lineCnt++;
- }
- sAttrRow++;
- }
- fCretInputTool("line", "line_3",lineCnt,sPageTop-1);
- lineCnt++;
- sStmtRow++;
- sPageTop+=3;
- }
- sPageTop+=50;
- if(sPageTop < 600){
- window.setSize(520,sPageTop);
- }
- document.rebuild = true;
- document.body.refresh();
- }
- }
- /**
- * @group :
- * @ver : 2007.04.25
- * @by : 이은영
- * @---------------------------------------------------
- * @type : function
- * @access : public
- * @desc : 가져올 데이터의 속성 코드 존재 유무 check
- * @param :
- * @return :
- * @---------------------------------------------------
- */
- function fExistAttrCd(pAttrCD){
- var sAttrInfo = model.getValue("/root/send/attrinfo").split(",");
- for(var i=0; i<sAttrInfo.length; i++){
- if(sAttrInfo[i] == pAttrCD){
- return "Y";
- }
- }
- return "N";
- }
- /**
- * @group :
- * @ver : 2007.04.25
- * @by : 이은영
- * @---------------------------------------------------
- * @type : function
- * @access : public
- * @desc : caption 생성
- * @param : pContolFlag : cap(caption) 일 경우 pFlag ( S : 진술문장, A : 속성명), pSeq : caption 순서, pTop : top위치, pText : caption명
- * @param : pContolFlag : line 일 경우 pFlag : class 속성 pSeq : line 순서, pTop : top위치
- * @param : pContolFlag : ipt(input) 일 경우 pFlag : class 속성, pSeq : input 순서, pTop : top위치, pRefPath : 매핑 경로
- * @param : pContolFlag : cmb(combo) 일 경우 pFlag : class 속성, pSeq : combo 순서, pTop : top위치, pText : combolist, , pRefPath : 매핑 경로
- * @return :
- * @---------------------------------------------------
- */
- function fCretInputTool(pContolFlag, pFlag, pSeq, pTop, pText, pRefPath){
- var bodyobj = document.body;
- var sHeight = 0;
- var sWidth = 0;
- var sLeft = 0;
- switch(pContolFlag){
- case "cap":
- var sCapID = "";
- if(pFlag == "SS"){
- sCapID = "cap_stmtcnts"+pSeq;
- sHeight = 46;
- sWidth = 369;
- sLeft = 121;
- }else if(pFlag == "SA"){
- sCapID = "cap_dnarnm"+pSeq;
- sHeight = 46;
- sWidth = 120;
- sLeft = 0;
- }else if(pFlag == "A"){
- sCapID = "cap_attrnm"+pSeq;
- sHeight = 23;
- sWidth = 120;
- sLeft = 0;
- }
- bodyobj.createChild("xforms:caption", "id:"+sCapID+"; left:"+sLeft+"px; top:"+ pTop+"px; width:"+sWidth+"px; height:"+sHeight+"px; vertical-align:middle; text-align:center; class:cell_1; text:"+pText+";");
- break;
- case "line":
- bodyobj.createChild("xforms:line", "id:line"+pSeq+"; x1:0px; y1:"+ pTop+"px; x2:490px; y2:"+pTop+"px; class:"+pFlag+";");
- break;
- case "ipt" :
- bodyobj.createChild("xforms:input", "id:ipt_attrinfo"+pSeq+"; left:122px; top:"+ pTop+"px; width:368px; height:19px; class:"+pFlag+"; ref:"+pRefPath+";");
- break;
- case "cmb" :
- var sCmbCtrl = bodyobj.createChild("xforms:select1", "id:cmb_attrinfo"+pSeq+"; ref:"+pRefPath
- // +"; appearance:minimal; class:"+pFlag +"; left:122px; top:"+ pTop+"px; width:354px; height:19px;");멀티속성 입력 할 때 freetext 가능하도록 20080925 김홍점
- +"; appearance:minimal; editmode:input; class:"+pFlag +"; left:122px; top:"+ pTop+"px; width:354px; height:19px;");
- var sChoice = sCmbCtrl.createChild("xforms:choices", "id:cho_"+pSeq+";");
- var sItemset = sChoice.createChild("xforms:itemset", "id:iset_"+pSeq+"; nodeset:"+xAttrInfopath+"[supcd='"+pText+"'];");
- sItemset.createChild("xforms:label","ref:attrnm;");
- sItemset.createChild("xforms:value","ref:attrcd;");
-
- // clear 버튼
- var btnObj = bodyobj.createChild("xforms:button","id:btn_attrinfo"+pSeq+"; left:478px; top:"+(pTop+2)+"px; width:10px; height:15px; class:icon_pre");
- btnObj.attribute("DOMActivate") = "model.setValue(\""+pRefPath+"\",\"\"); model.refresh();";
- break;
- case "opt" :
- //bodyobj.createChild("xforms:output","id:opt_attrinfo"+pSeq+"; ref:"+pRefPath+"/attrval; left:122px; top:"+ pTop+"px; width:324px; height:23px; ");
- bodyobj.createChild("xforms:input","id:ipt_attrinfo"+pSeq+"; ref:"+pRefPath+"/attrval; left:122px; top:"+ pTop+"px; width:324px; height:23px; class:"+pFlag+"; ");
- // 하위 항목 입력창 호출 버튼
- var btnObj = bodyobj.createChild("xforms:button","id:btn_attrinfo"+pSeq+"; left:448px; top:"+pTop+"px; width:42px; height:19px; class:btn2_letter2");
- btnObj.attribute("text") = "입력";
- btnObj.attribute("DOMActivate") = "fCallDetlAttrInfo(\""+pRefPath+"\");";
- break;
- }
- }
- /**
- * @group :
- * @ver : 2007.04.26
- * @by : 이은영
- * @---------------------------------------------------
- * @type : function
- * @access : public
- * @desc : 속성 등록 버튼 이벤트 처리
- * @param :
- * @return :
- * @---------------------------------------------------
- */
- function fRgstAttrInfo(){
- var sStmtCnt = instance1.selectNodes(xStmtInfoPath).length;
- var sAttrEssnYN = ""; // 선택 : C, 필수 : E
- var sStmtCnts = "";
- var sStmtCd = "";
- var sRetnParamTitle = "stmtcd▦stmtcnts▦attrinfo▩";
- var sRetnParam = "";
- var sStmtInfo = "";
- var sRtn = messageBox("","Q004");
- if(sRtn != 6){
- return;
- }
- for(var iStmtRow=1; iStmtRow <= sStmtCnt; iStmtRow++){
- sAttrEssnYN = model.getValue(xStmtInfoPath+"["+iStmtRow+"]/attressnyn");
- sStmtCd = model.getValue(xStmtInfoPath+"["+iStmtRow+"]/stmtcd");
- sStmtCnts = model.getValue(xStmtInfoPath+"["+iStmtRow+"]/stmtcnts");
- // 속성 필수 입력 check
- if(sAttrEssnYN == "E" && fExistAttrInput(xStmtInfoPath+"["+iStmtRow+"]/attrinfo") == "N"){
- messageBox(sStmtCnts+" 진술문은 속성이","I003");
- return;
- }
- sStmtInfo = fMakeStmt(xStmtInfoPath+"["+iStmtRow+"]");
- sRetnParam += sStmtCd+"▦"
- + sStmtInfo+"▩";
- }
- opener.javascript.setParameter("SMMNR014_Return",sRetnParamTitle+sRetnParam);
- model.close();
- }
- /**
- * @group :
- * @ver : 2007.04.26
- * @by : 이은영
- * @---------------------------------------------------
- * @type : function
- * @access : public
- * @desc : 필수 입력 진술문 내의 속성이 모두 입력되었는지 여부
- * @param : pPath : 속성 path
- * @return :
- * @---------------------------------------------------
- */
- function fExistAttrInput(pPath){
- var sAttrCnt = instance1.selectNodes(pPath).length;
- for(var iAttrRow=1; iAttrRow<= sAttrCnt; iAttrRow++){
- if(model.getValue(pPath+"["+iAttrRow+"]/attrval") == ""){
- return "N";
- }
- }
- return "Y";
- }
- /**
- * @group :
- * @ver : 2007.04.26
- * @by : 이은영
- * @---------------------------------------------------
- * @type : function
- * @access : public
- * @desc : 입력받은 속성정보를 가지고 완성된 진술문장을 만든다.
- * @param :
- * @return :
- * @---------------------------------------------------
- */
- function fMakeStmt(pStmtPath){
-
- //속성입력 에러로 인한 추가 로직
- var sAttrCnt = 0; //속성 카운터 수
- var sAttrLength = 0; //속성 전체길이
- var sStmtInfo = "";
-
- //var sSplitBfStmt = model.getValue(pStmtPath+"/stmtcnts").split(" ");
- var sSplitBfStmt = model.getValue(pStmtPath+"/stmtcnts");
-
- for(var i=0 ; i < sSplitBfStmt.length ; i++ ){
- if( sSplitBfStmt.substr(i, 1) == "(" ) {
- sAttrCnt ++;
- }else if(sSplitBfStmt.substr(i, 1) == ")" ){
- sAttrCnt --;
- }
-
- if(sAttrCnt == 0){
- sStmtInfo += sSplitBfStmt.substr(i, 1);
- }else{
- if(sSplitBfStmt.substr(i, 1) == " "){
- sStmtInfo += "^";
- }else{
- sStmtInfo += sSplitBfStmt.substr(i, 1);
- }
- }
- }
-
- sStmtInfo = sStmtInfo.split(" ");
-
- var sAttrInfo1 = model.getValue(pStmtPath+"/attrinfo1").split("⊙");
- var sAttrInfo2 = model.getValue(pStmtPath+"/attrinfo2").split(" ");
- var sStmtCnts = ""; // 완성된 문장
- var sAttrInfo = ""; // 기록을 원하는 속성명
- var sAttrSeq = 0; // 속성 위치
- var sAttrCd = ""; // 속성코드
- var sAttrNM = ""; // 속성명 (combo)
- var sAttrFlag = ""; // 속성 구분
- var sAttrVal = ""; // 입력된 속성명
- var sUnitNM = ""; // 단위명
- var sPlNumChoiYN = ""; // 속성 멀티 입력 여부
- var sTmpAttrNM = ""; // 속성을 제외한 기호
-
-
- for(var i=0; i<sStmtInfo.length; i++){
- sStmtInfo[i] = sStmtInfo[i].replace("^", " ");
- if(sStmtInfo[i] == sAttrInfo2[i]){
- sStmtCnts += sStmtInfo[i]+" "; // 속성이 아닌 경우
-
- }else{
- sAttrSeq = sAttrInfo2[i].substr(1,1);
- sAttrCd = model.getValue(pStmtPath+"/attrinfo[attrseq='"+sAttrSeq+"']/attrcd"); // 속성 성격을 찾기 위해 사용 (combo인지, input 상자인지)
- sAttrFlag = model.getValue(xAttrInfopath+"[attrcd='"+sAttrCd+"']/attrflag");
- sAttrVal = model.getValue(pStmtPath+"/attrinfo[attrseq='"+sAttrSeq+"']/attrval");
- sTmpAttrNM = sStmtInfo[i].replace(model.getValue(xAttrInfopath+"[attrcd='"+sAttrCd+"']/attrnm"),"");
-
- if(sAttrFlag == "C" || sAttrFlag == "A"){ // C : 코드속성, A : 사정도구 -> 입력도구 : combo
- sPlNumChoiYN = model.getValue(xAttrInfopath+"[attrcd='"+sAttrCd+"']/plnumchoiyn");
- if(sPlNumChoiYN == "Y"){ // 멀티 입력 여부
- if(sAttrVal != "") sStmtCnts += sAttrVal+sTmpAttrNM+" ";
- sAttrInfo += sAttrVal+"⊙";
- }else{
- sAttrNM = model.getValue(xAttrInfopath+"[attrcd='"+sAttrVal+"']/attrnm");
- if(sAttrNM != ""){
- sStmtCnts += sAttrNM+sTmpAttrNM+" ";
- sAttrInfo += sAttrNM+"⊙";
- }else if(sAttrVal != "" && sAttrNM == ""){
- sStmtCnts += sAttrVal+sTmpAttrNM+" ";
- sAttrInfo += sAttrVal+"⊙";
- }
- }
- }else if(sAttrFlag == "F"){ // F : 특수속성 -> 입력도구 : input
- if(sAttrVal != "") sStmtCnts += sAttrVal +sTmpAttrNM+ " ";
- sAttrInfo += sAttrVal+"⊙";
- }else if(sAttrFlag == "V" ){ // V : 수치속성 -> 입력도구 : input값 + 단위명
- sUnitNM = model.getValue(xAttrInfopath+"[attrcd='"+sAttrCd+"']/unitnm");
- if(sAttrVal != ""){
- sStmtCnts += sAttrVal + sUnitNM +sTmpAttrNM+ " ";
- sAttrInfo += sAttrVal + sUnitNM +"⊙";
- }else{
- sAttrInfo += "⊙";
- }
- }
- }
- }
-
- sStmtCnts = sStmtCnts.replace(" ", " ");
- return sStmtCnts+"▦"+sAttrInfo;
- }
- /**
- * @group :
- * @ver : 2007.04.26
- * @by : 이은영
- * @---------------------------------------------------
- * @type : function
- * @access : public
- * @desc : 다중 선택의 속성코드의 경우 멀티 선택 가능 화면을 호출한다.
- * @param : pCode : 속성 코드
- * @return :
- * @---------------------------------------------------
- */
- function fCallDetlAttrInfo(pRefPath){
- var sRtn_Msg = "";
- var sAttrInfo = "";
- setParameter("SPMNR03000_Param",model.getValue(pRefPath+"/attrcd"));
- modal("SPMNR03000");
- setParameter("SPMNR03000_Param","");
- sRtn_Msg = getParameter("SPMNR03000_Return");
-
- if(sRtn_Msg == "" ) return;
- sAttrInfo = sRtn_Msg.split("▦");
- model.setValue(pRefPath+"/attrval",sAttrInfo[0]);
- model.setValue(pRefPath+"/attrvalcd",sAttrInfo[1]);
- model.refresh();
- }
|