SPMMP01900_OutlineView.xfdl 200 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877287828792880288128822883288428852886288728882889289028912892289328942895289628972898289929002901290229032904290529062907290829092910291129122913291429152916291729182919292029212922292329242925292629272928292929302931293229332934293529362937293829392940294129422943294429452946294729482949295029512952295329542955295629572958295929602961296229632964296529662967296829692970297129722973297429752976297729782979298029812982298329842985298629872988298929902991299229932994299529962997299829993000300130023003300430053006300730083009301030113012301330143015301630173018301930203021302230233024302530263027302830293030303130323033303430353036303730383039304030413042304330443045304630473048304930503051305230533054305530563057305830593060306130623063306430653066306730683069307030713072307330743075307630773078307930803081308230833084308530863087308830893090309130923093309430953096309730983099310031013102310331043105310631073108310931103111311231133114311531163117311831193120312131223123312431253126312731283129313031313132313331343135313631373138313931403141314231433144314531463147314831493150315131523153315431553156315731583159316031613162316331643165316631673168316931703171317231733174317531763177317831793180318131823183318431853186318731883189319031913192319331943195319631973198319932003201320232033204320532063207320832093210321132123213321432153216321732183219322032213222322332243225322632273228322932303231323232333234323532363237323832393240324132423243324432453246324732483249325032513252325332543255325632573258325932603261326232633264326532663267326832693270327132723273327432753276327732783279328032813282328332843285328632873288328932903291329232933294329532963297329832993300330133023303330433053306330733083309331033113312331333143315331633173318331933203321332233233324332533263327332833293330333133323333333433353336333733383339334033413342334333443345334633473348334933503351335233533354335533563357335833593360336133623363336433653366336733683369337033713372337333743375337633773378337933803381338233833384338533863387338833893390339133923393339433953396339733983399340034013402340334043405340634073408340934103411341234133414341534163417341834193420342134223423342434253426342734283429343034313432343334343435343634373438343934403441344234433444344534463447344834493450345134523453345434553456345734583459346034613462346334643465346634673468346934703471347234733474347534763477347834793480348134823483348434853486348734883489349034913492349334943495349634973498349935003501350235033504350535063507350835093510351135123513351435153516351735183519352035213522352335243525352635273528352935303531353235333534353535363537353835393540354135423543354435453546354735483549355035513552355335543555355635573558355935603561356235633564356535663567356835693570357135723573357435753576357735783579358035813582358335843585358635873588358935903591359235933594359535963597359835993600360136023603360436053606360736083609361036113612361336143615361636173618361936203621362236233624362536263627362836293630363136323633363436353636363736383639364036413642364336443645364636473648364936503651365236533654365536563657365836593660366136623663366436653666366736683669367036713672367336743675367636773678367936803681368236833684368536863687368836893690369136923693369436953696369736983699370037013702370337043705370637073708370937103711371237133714371537163717371837193720372137223723372437253726372737283729373037313732373337343735373637373738373937403741374237433744374537463747374837493750375137523753375437553756375737583759376037613762376337643765376637673768376937703771377237733774377537763777377837793780378137823783378437853786378737883789379037913792379337943795379637973798379938003801380238033804380538063807380838093810381138123813381438153816381738183819382038213822382338243825382638273828382938303831383238333834383538363837383838393840384138423843384438453846384738483849385038513852385338543855385638573858385938603861386238633864386538663867386838693870387138723873387438753876387738783879388038813882388338843885388638873888388938903891389238933894389538963897389838993900390139023903390439053906390739083909391039113912391339143915391639173918391939203921392239233924392539263927392839293930393139323933393439353936393739383939394039413942394339443945394639473948394939503951395239533954395539563957395839593960396139623963396439653966396739683969397039713972397339743975397639773978397939803981398239833984398539863987398839893990399139923993399439953996399739983999400040014002400340044005400640074008400940104011401240134014401540164017401840194020402140224023402440254026402740284029403040314032403340344035403640374038403940404041404240434044404540464047404840494050405140524053405440554056405740584059406040614062406340644065406640674068406940704071407240734074407540764077407840794080408140824083408440854086408740884089409040914092409340944095409640974098409941004101410241034104410541064107410841094110411141124113411441154116411741184119412041214122412341244125412641274128412941304131413241334134413541364137413841394140414141424143414441454146414741484149415041514152415341544155415641574158415941604161416241634164416541664167416841694170417141724173417441754176417741784179418041814182418341844185418641874188418941904191419241934194419541964197419841994200420142024203420442054206420742084209421042114212421342144215421642174218421942204221422242234224422542264227422842294230423142324233423442354236423742384239424042414242424342444245424642474248424942504251425242534254425542564257425842594260426142624263426442654266426742684269427042714272427342744275427642774278427942804281428242834284428542864287428842894290429142924293429442954296429742984299430043014302430343044305430643074308430943104311431243134314431543164317431843194320432143224323432443254326432743284329433043314332433343344335433643374338433943404341434243434344434543464347434843494350435143524353435443554356435743584359436043614362436343644365436643674368436943704371437243734374437543764377437843794380438143824383438443854386438743884389439043914392439343944395439643974398439944004401440244034404440544064407440844094410441144124413441444154416441744184419442044214422442344244425442644274428442944304431443244334434443544364437443844394440444144424443444444454446444744484449445044514452445344544455445644574458445944604461446244634464446544664467446844694470447144724473447444754476447744784479448044814482448344844485448644874488448944904491449244934494449544964497449844994500450145024503450445054506450745084509451045114512451345144515451645174518451945204521452245234524452545264527452845294530453145324533453445354536453745384539454045414542454345444545454645474548454945504551455245534554455545564557455845594560456145624563456445654566456745684569457045714572457345744575457645774578457945804581458245834584458545864587458845894590459145924593459445954596459745984599460046014602460346044605460646074608460946104611461246134614461546164617461846194620462146224623462446254626462746284629463046314632463346344635463646374638463946404641464246434644464546464647464846494650465146524653465446554656465746584659466046614662466346644665466646674668466946704671467246734674467546764677467846794680468146824683468446854686468746884689469046914692469346944695469646974698469947004701470247034704470547064707470847094710471147124713471447154716471747184719472047214722472347244725472647274728472947304731473247334734473547364737473847394740474147424743474447454746474747484749475047514752475347544755475647574758475947604761476247634764476547664767476847694770477147724773477447754776477747784779478047814782478347844785478647874788
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <FDL version="1.5">
  3. <TypeDefinition url="..\..\..\default_typedef.xml"/>
  4. <Form id="SPMMP01900" position="absolute 0 0 835 800" titletext="Outline View" onload="SPMMP01900_onload" oninit="SPMMP01900_oninit">
  5. <Layouts>
  6. <Layout>
  7. <Div position="absolute 0 0 835 800" id="grp_swimline" onlbuttondown="grp_swimline_comn_buttondown" onrbuttondown="grp_swimline_comn_buttondown" anchor="all">
  8. <Layouts>
  9. <Layout>
  10. <Div position="absolute 0 0 835 800" id="ivw_detail" visible="false" anchor="all" class="div_DA" scrollbars="none">
  11. <Layouts>
  12. <Layout/>
  13. </Layouts>
  14. </Div>
  15. <Edit position="absolute 793 45 813 64" id="ipt_swimlineno" visible="false" anchor="top right"/>
  16. <Div position="absolute 0 445 420 650" id="grp_dcsgrid" visible="false">
  17. <Layouts>
  18. <Layout>
  19. <Shape position="absolute 0 0 420 205" id="roundrect1" class="roundrect_btnset" type="roundrectangle"/>
  20. <ImageViewer position="absolute 7 10 17 23" id="img1" image="URL('theme://images/com/commonxp/icon_n.png')"/>
  21. <Static text="결정할 Step을 선택한 후 '확인'을 눌러주세요!" position="absolute 20 5 400 28" id="caption2"/>
  22. <Button position="absolute 323 180 365 199" id="button2" class="btn2" text="확인"/>
  23. <Button position="absolute 368 180 410 199" id="button3" class="btn2" text="취소"/>
  24. <Grid position="absolute 10 30 410 175" id="grd_decision" binddataset="ds_main_seldecision_info">
  25. <Formats>
  26. <Format id="default">
  27. <Columns>
  28. <Column size="383"/>
  29. <Column size="0"/>
  30. <Column size="0"/>
  31. </Columns>
  32. <Rows>
  33. <Row size="24" band="head"/>
  34. <Row size="24"/>
  35. </Rows>
  36. <Band id="head">
  37. <Cell text="stepmemo"/>
  38. <Cell col="1" text="stepno"/>
  39. <Cell col="2" text="lnkstepno"/>
  40. </Band>
  41. <Band id="body">
  42. <Cell text="bind:stepnm"/>
  43. <Cell col="1" text="bind:stepno"/>
  44. <Cell col="2" text="bind:lnkstepno"/>
  45. </Band>
  46. </Format>
  47. </Formats>
  48. </Grid>
  49. <Grid position="absolute 305 100 410 175" id="grd_decision_answlist" binddataset="ds_main_seldecisionlist_info">
  50. <Formats>
  51. <Format id="default">
  52. <Columns>
  53. <Column size="0"/>
  54. <Column size="0"/>
  55. </Columns>
  56. <Rows>
  57. <Row size="24" band="head"/>
  58. <Row size="24"/>
  59. </Rows>
  60. <Band id="head">
  61. <Cell text="stepno"/>
  62. <Cell col="1" text="lnkstep"/>
  63. </Band>
  64. <Band id="body">
  65. <Cell text="bind:stepno"/>
  66. <Cell col="1" text="bind:lnkstepno"/>
  67. </Band>
  68. </Format>
  69. </Formats>
  70. </Grid>
  71. <Edit position="absolute 380 80 410 99" id="ipt_dcs_stepno" visible="false"/>
  72. </Layout>
  73. </Layouts>
  74. </Div>
  75. <Div position="absolute 720 45 790 65" id="group1" visible="false" anchor="top right">
  76. <Layouts>
  77. <Layout>
  78. <Static text="M" position="absolute 16 0 31 20" align="align:center middle;" id="cap_monitoringyn" style="background:#ffcc99ff;"/>
  79. <Static text="O" position="absolute 0 0 15 20" align="align:center middle;" id="cap_orderyn" style="background:#ffcc99ff;"/>
  80. <Static text="T" position="absolute 32 0 47 20" align="align:center middle;" id="cap_limtmyn" style="background:#ffcc99ff;"/>
  81. <Static text="MO" position="absolute 48 0 70 20" align="align:center middle;" id="cap_monitoringorderyn" style="background:#ffcc99ff;color:#c0c0c0ff;"/>
  82. </Layout>
  83. </Layouts>
  84. </Div>
  85. <Div position="absolute 685 65 810 120" id="grp_msgbox" visible="false">
  86. <Layouts>
  87. <Layout>
  88. <Static text="결정할 Action 스텝을&#13;&#10;선택하십시오." position="absolute 5 5 122 50" align="align:center middle;" id="cap_msgbox" style="color:#ff0000ff;align:center middle;" anchor="top right"/>
  89. </Layout>
  90. </Layouts>
  91. </Div>
  92. </Layout>
  93. </Layouts>
  94. </Div>
  95. <Div position="absolute 557 4 813 47" id="grp_button" visible="false" anchor="top right">
  96. <Layouts>
  97. <Layout>
  98. <Button position="absolute 205 20 247 39" id="btn_branch" class="btn2_letter2" visible="false" text="D" anchor="default"/>
  99. <Button position="absolute 62 1 101 20" id="btn_action" text="A" anchor="default" onclick="grp_button_btn_onclick"/>
  100. <Button position="absolute 104 1 143 20" id="btn_decision" text="D" anchor="default" onclick="grp_button_btn_onclick"/>
  101. <Button position="absolute 146 1 187 20" id="btn_start" text="S" anchor="default" onclick="grp_button_btn_onclick"/>
  102. <Button position="absolute 188 1 227 20" id="btn_end" text="E" anchor="default" onclick="grp_button_btn_onclick"/>
  103. <Button position="absolute 62 22 101 41" id="btn_connection" text="입력" anchor="default" class="btn2" onclick="grp_button_btn_onclick"/>
  104. <Button position="absolute 186 22 239 41" id="btn_initialize" class="btn2" visible="false" text="초기화" anchor="default"/>
  105. <Button position="absolute 146 22 210 41" id="btn_addline" class="btn2" text="라인추가" anchor="default" onclick="grp_button_btn_onclick"/>
  106. <Button position="absolute 212 22 254 41" id="btn_remove" text="삭제" anchor="default" class="btn2" onclick="grp_button_btn_onclick"/>
  107. <Button position="absolute 104 22 143 41" id="btn_disconnection" class="btn2" text="해제" anchor="default" onclick="grp_button_btn_onclick"/>
  108. <Static text="a" position="absolute 243 4 253 24" id="caption1" visible="false" anchor="default"/>
  109. </Layout>
  110. </Layouts>
  111. </Div>
  112. <PopupMenu id="pmn_menu1" innerdataset="@ds_popupmenu1" idcolumn="func" captioncolumn="name" onmenuclick="pmn_menu_onmenuclick" position="absolute 840 2 1033 220" levelcolumn="level" visible="true"/>
  113. <PopupMenu id="pmn_menu2" innerdataset="@ds_popupmenu2" idcolumn="func" captioncolumn="name" levelcolumn="level" onmenuclick="pmn_menu_onmenuclick" position="absolute 840 226 1033 292"/>
  114. <PopupMenu id="pmn_menu3" innerdataset="@ds_popupmenu3" idcolumn="func" captioncolumn="name" levelcolumn="level" onmenuclick="pmn_menu_onmenuclick" position="absolute 840 298 1033 324"/>
  115. <PopupMenu id="pmn_menu4" innerdataset="@ds_popupmenu4" idcolumn="func" captioncolumn="name" levelcolumn="level" onmenuclick="pmn_menu_onmenuclick" position="absolute 840 330 1033 420"/>
  116. <PopupMenu id="pmn_menu5" innerdataset="@ds_popupmenu5" idcolumn="func" captioncolumn="name" levelcolumn="level" onmenuclick="pmn_menu_onmenuclick" position="absolute 840 426 1033 492"/>
  117. <PopupMenu id="pmn_menu6" innerdataset="@ds_popupmenu6" idcolumn="func" captioncolumn="name" levelcolumn="level" onmenuclick="pmn_menu_onmenuclick" position="absolute 840 498 1033 524"/>
  118. <PopupMenu id="pmn_menu7" innerdataset="@ds_popupmenu7" idcolumn="func" captioncolumn="name" levelcolumn="level" onmenuclick="pmn_menu_onmenuclick" position="absolute 840 530 1033 556"/>
  119. <PopupMenu id="pmn_menu8" innerdataset="@ds_popupmenu8" idcolumn="func" captioncolumn="name" levelcolumn="level" onmenuclick="pmn_menu_onmenuclick" position="absolute 840 562 1033 588"/>
  120. <TextArea id="TextArea00" taborder="1" onrbuttondown="TextArea00_onrbuttondown" position="absolute 238 294 544 400" ontextchanged="TextArea00_ontextchanged" onsetfocus="TextArea00_onsetfocus" onmouseenter="TextArea00_onmouseenter" style="caretcolor:red;selectcolor:red;selectbackground:red;compositecolor:red;border:4 double red blue;color:red;" visible="false"/>
  121. <Shape id="Shape00" text="Shape00" position="absolute 167 218 560 262" style="strokepen:3 solid #9ebed4ff;border:3 none #ffffff59 ;" visible="false"/>
  122. </Layout>
  123. </Layouts>
  124. <Objects>
  125. <Dataset id="ds_main_seldecision_info" firefirstcount="0" firenextcount="0" useclientlayout="false" updatecontrol="true" enableevent="true" loadkeymode="keep" reversesubsum="false">
  126. <ColumnInfo>
  127. <Column id="stepnm" type="STRING"/>
  128. <Column id="stepno" type="STRING"/>
  129. <Column id="lnkstepno" type="STRING"/>
  130. </ColumnInfo>
  131. </Dataset>
  132. <Dataset id="ds_main_seldecisionlist_info" firefirstcount="0" firenextcount="0" useclientlayout="false" updatecontrol="true" enableevent="true" loadkeymode="keep" reversesubsum="false">
  133. <ColumnInfo>
  134. <Column id="stepno" type="STRING"/>
  135. <Column id="lnkstepno" type="STRING"/>
  136. </ColumnInfo>
  137. </Dataset>
  138. <Dataset id="ds_main_outlineinfo_info" firefirstcount="0" firenextcount="0" useclientlayout="false" updatecontrol="true" enableevent="true" loadkeymode="keep" loadfiltermode="keep" reversesubsum="false">
  139. <ColumnInfo>
  140. <Column id="cpgno" type="STRING" size="256"/>
  141. <Column id="cpghistseq" type="STRING" size="256"/>
  142. <Column id="cpgnm" type="STRING" size="256"/>
  143. <Column id="swimlineno" type="STRING" size="256"/>
  144. <Column id="cpgflagcd" type="STRING" size="256"/>
  145. <Column id="cpgorddeptcd" type="STRING" size="256"/>
  146. <Column id="settype" type="STRING" size="256"/>
  147. </ColumnInfo>
  148. <Rows>
  149. <Row>
  150. <Col id="cpgno"/>
  151. <Col id="cpghistseq"/>
  152. <Col id="cpgnm"/>
  153. <Col id="swimlineno">0</Col>
  154. <Col id="cpgflagcd"/>
  155. <Col id="cpgorddeptcd"/>
  156. <Col id="settype"/>
  157. </Row>
  158. </Rows>
  159. </Dataset>
  160. <Dataset id="ds_temp_getdata" firefirstcount="0" firenextcount="0" useclientlayout="false" updatecontrol="true" enableevent="true" loadkeymode="keep" loadfiltermode="keep" reversesubsum="false">
  161. <ColumnInfo>
  162. <Column id="authflag" type="STRING" size="256"/>
  163. </ColumnInfo>
  164. <Rows>
  165. <Row/>
  166. </Rows>
  167. </Dataset>
  168. <Dataset id="ds_popupmenu1" firefirstcount="0" firenextcount="0" useclientlayout="false" updatecontrol="true" enableevent="true" loadkeymode="keep" loadfiltermode="keep" reversesubsum="false">
  169. <ColumnInfo>
  170. <Column id="name" type="STRING" size="256"/>
  171. <Column id="func" type="STRING" size="256"/>
  172. <Column id="level" type="STRING" size="256"/>
  173. </ColumnInfo>
  174. <Rows>
  175. <Row>
  176. <Col id="name">연결설정</Col>
  177. <Col id="func">fSetLink</Col>
  178. <Col id="level">0</Col>
  179. </Row>
  180. <Row>
  181. <Col id="name">연결해제</Col>
  182. <Col id="func">fDelLink</Col>
  183. <Col id="level">0</Col>
  184. </Row>
  185. <Row>
  186. <Col id="name">-</Col>
  187. <Col id="func"/>
  188. <Col id="level">0</Col>
  189. </Row>
  190. <Row>
  191. <Col id="name">시작스텝</Col>
  192. <Col id="func">fSetStartStep</Col>
  193. <Col id="level">0</Col>
  194. </Row>
  195. <Row>
  196. <Col id="name">종료스텝</Col>
  197. <Col id="func">fSetEndStep</Col>
  198. <Col id="level">0</Col>
  199. </Row>
  200. <Row>
  201. <Col id="name">-</Col>
  202. <Col id="func"/>
  203. <Col id="level">0</Col>
  204. </Row>
  205. <Row>
  206. <Col id="name">입원필요 스텝</Col>
  207. <Col id="func">fSetInHospStep</Col>
  208. <Col id="level">0</Col>
  209. </Row>
  210. <Row>
  211. <Col id="name">퇴원필요 스텝</Col>
  212. <Col id="func">fSetDschHospStep</Col>
  213. <Col id="level">0</Col>
  214. </Row>
  215. <Row>
  216. <Col id="name">-</Col>
  217. <Col id="func"/>
  218. <Col id="level">0</Col>
  219. </Row>
  220. <Row>
  221. <Col id="name">외래예약필요 스텝</Col>
  222. <Col id="func">fSetOutHospStep</Col>
  223. <Col id="level">0</Col>
  224. </Row>
  225. <Row>
  226. <Col id="name">DSC필요 스텝</Col>
  227. <Col id="func">fSetDSCHospStep</Col>
  228. <Col id="level">0</Col>
  229. </Row>
  230. <Row>
  231. <Col id="name">-</Col>
  232. <Col id="func"/>
  233. <Col id="level">0</Col>
  234. </Row>
  235. <Row>
  236. <Col id="name">삭제</Col>
  237. <Col id="func">fDelCntl</Col>
  238. <Col id="level">0</Col>
  239. </Row>
  240. <Row>
  241. <Col id="name">-</Col>
  242. <Col id="func"/>
  243. <Col id="level">0</Col>
  244. </Row>
  245. <Row>
  246. <Col id="name">스텝 상세정보</Col>
  247. <Col id="func">fViewDetailPopup</Col>
  248. <Col id="level">0</Col>
  249. </Row>
  250. </Rows>
  251. </Dataset>
  252. <Dataset id="ds_popupmenu2" firefirstcount="0" firenextcount="0" useclientlayout="false" updatecontrol="true" enableevent="true" loadkeymode="keep" loadfiltermode="keep" reversesubsum="false">
  253. <ColumnInfo>
  254. <Column id="name" type="STRING" size="256"/>
  255. <Column id="func" type="STRING" size="256"/>
  256. <Column id="level" type="STRING" size="256"/>
  257. </ColumnInfo>
  258. <Rows>
  259. <Row>
  260. <Col id="name">스윔라인추가</Col>
  261. <Col id="func">fAddSwimLine</Col>
  262. <Col id="level">0</Col>
  263. </Row>
  264. <Row>
  265. <Col id="name">스윔라인삭제</Col>
  266. <Col id="func">fDelSwimLine</Col>
  267. <Col id="level">0</Col>
  268. </Row>
  269. <Row>
  270. <Col id="name">-</Col>
  271. <Col id="func"/>
  272. <Col id="level">0</Col>
  273. </Row>
  274. <Row>
  275. <Col id="name">초기화</Col>
  276. <Col id="func">fOutlineCntlInit</Col>
  277. <Col id="level">0</Col>
  278. </Row>
  279. </Rows>
  280. </Dataset>
  281. <Dataset id="ds_popupmenu3" firefirstcount="0" firenextcount="0" useclientlayout="false" updatecontrol="true" enableevent="true" loadkeymode="keep" loadfiltermode="keep" reversesubsum="false">
  282. <ColumnInfo>
  283. <Column id="name" type="STRING" size="256"/>
  284. <Column id="func" type="STRING" size="256"/>
  285. <Column id="level" type="STRING" size="256"/>
  286. </ColumnInfo>
  287. <Rows>
  288. <Row>
  289. <Col id="name">결정하기</Col>
  290. <Col id="func">fDecision</Col>
  291. <Col id="level">0</Col>
  292. </Row>
  293. </Rows>
  294. </Dataset>
  295. <Dataset id="ds_popupmenu4" firefirstcount="0" firenextcount="0" useclientlayout="false" updatecontrol="true" enableevent="true" loadkeymode="keep" loadfiltermode="keep" reversesubsum="false">
  296. <ColumnInfo>
  297. <Column id="name" type="STRING" size="256"/>
  298. <Column id="func" type="STRING" size="256"/>
  299. <Column id="level" type="STRING" size="256"/>
  300. </ColumnInfo>
  301. <Rows>
  302. <Row>
  303. <Col id="name">D0 Step 추가</Col>
  304. <Col id="func">fAddD0Step</Col>
  305. <Col id="level">0</Col>
  306. </Row>
  307. <Row>
  308. <Col id="name">-</Col>
  309. <Col id="func"/>
  310. <Col id="level">0</Col>
  311. </Row>
  312. <Row>
  313. <Col id="name">스윔라인추가</Col>
  314. <Col id="func">fAddSwimLine</Col>
  315. <Col id="level">0</Col>
  316. </Row>
  317. <Row>
  318. <Col id="name">스윔라인삭제</Col>
  319. <Col id="func">fDelSwimLine</Col>
  320. <Col id="level">0</Col>
  321. </Row>
  322. <Row>
  323. <Col id="name">-</Col>
  324. <Col id="func"/>
  325. <Col id="level">0</Col>
  326. </Row>
  327. <Row>
  328. <Col id="name">초기화</Col>
  329. <Col id="func">fOutlineCntlInit</Col>
  330. <Col id="level">0</Col>
  331. </Row>
  332. </Rows>
  333. </Dataset>
  334. <Dataset id="ds_popupmenu5" firefirstcount="0" firenextcount="0" useclientlayout="false" updatecontrol="true" enableevent="true" loadkeymode="keep" loadfiltermode="keep" reversesubsum="false">
  335. <ColumnInfo>
  336. <Column id="name" type="STRING" size="256"/>
  337. <Column id="func" type="STRING" size="256"/>
  338. <Column id="level" type="STRING" size="256"/>
  339. </ColumnInfo>
  340. <Rows>
  341. <Row>
  342. <Col id="name">시작스텝 선택</Col>
  343. <Col id="func">fSetupStartStep</Col>
  344. <Col id="level">0</Col>
  345. </Row>
  346. <Row>
  347. <Col id="name">종료스텝 선택</Col>
  348. <Col id="func">fSetupEndStep</Col>
  349. <Col id="level">0</Col>
  350. </Row>
  351. <Row>
  352. <Col id="name">-</Col>
  353. <Col id="func"/>
  354. <Col id="level">0</Col>
  355. </Row>
  356. <Row>
  357. <Col id="name">단일 스텝 선택</Col>
  358. <Col id="func">fSetupOneStep</Col>
  359. <Col id="level">0</Col>
  360. </Row>
  361. </Rows>
  362. </Dataset>
  363. <Dataset id="ds_popupmenu6" firefirstcount="0" firenextcount="0" useclientlayout="false" updatecontrol="true" enableevent="true" loadkeymode="keep" loadfiltermode="keep" reversesubsum="false">
  364. <ColumnInfo>
  365. <Column id="name" type="STRING" size="256"/>
  366. <Column id="func" type="STRING" size="256"/>
  367. <Column id="level" type="STRING" size="256"/>
  368. </ColumnInfo>
  369. <Rows>
  370. <Row>
  371. <Col id="name">시작스텝 선택</Col>
  372. <Col id="func">fSetupStartStep</Col>
  373. <Col id="level">0</Col>
  374. </Row>
  375. </Rows>
  376. </Dataset>
  377. <Dataset id="ds_popupmenu7" firefirstcount="0" firenextcount="0" useclientlayout="false" updatecontrol="true" enableevent="true" loadkeymode="keep" loadfiltermode="keep" reversesubsum="false">
  378. <ColumnInfo>
  379. <Column id="name" type="STRING" size="256"/>
  380. <Column id="func" type="STRING" size="256"/>
  381. <Column id="level" type="STRING" size="256"/>
  382. </ColumnInfo>
  383. <Rows>
  384. <Row>
  385. <Col id="name">결정하기모드 취소</Col>
  386. <Col id="func">fCnclDecisionMode</Col>
  387. <Col id="level">0</Col>
  388. </Row>
  389. </Rows>
  390. </Dataset>
  391. <Dataset id="ds_popupmenu8" firefirstcount="0" firenextcount="0" useclientlayout="false" updatecontrol="true" enableevent="true" loadkeymode="keep" loadfiltermode="keep" reversesubsum="false">
  392. <ColumnInfo>
  393. <Column id="name" type="STRING" size="256"/>
  394. <Column id="func" type="STRING" size="256"/>
  395. <Column id="level" type="STRING" size="256"/>
  396. </ColumnInfo>
  397. <Rows>
  398. <Row>
  399. <Col id="name">CP 적용범위 선택</Col>
  400. <Col id="func">fSetupCPStep</Col>
  401. <Col id="level">0</Col>
  402. </Row>
  403. </Rows>
  404. </Dataset>
  405. <Dataset id="ds_main_temp_selectedstep" firefirstcount="0" firenextcount="0" useclientlayout="false" updatecontrol="true" enableevent="true" loadkeymode="keep" loadfiltermode="keep" reversesubsum="false">
  406. <ColumnInfo>
  407. <Column id="stepno" type="STRING" size="256"/>
  408. <Column id="stepflagcd" type="STRING" size="256"/>
  409. <Column id="csvlist" type="STRING" size="256"/>
  410. </ColumnInfo>
  411. <Rows>
  412. <Row>
  413. <Col id="stepno"/>
  414. <Col id="stepflagcd"/>
  415. <Col id="csvlist"/>
  416. </Row>
  417. </Rows>
  418. </Dataset>
  419. <Dataset id="ds_temp_deldecisionlist_info" firefirstcount="0" firenextcount="0" useclientlayout="false" updatecontrol="true" enableevent="true" loadkeymode="keep" loadfiltermode="keep" reversesubsum="false"/>
  420. <Dataset id="ds_main_steplist_info" firefirstcount="0" firenextcount="0" useclientlayout="false" updatecontrol="true" enableevent="true" loadkeymode="keep" loadfiltermode="keep" reversesubsum="false">
  421. <ColumnInfo>
  422. <Column id="stepno" type="STRING" size="256"/>
  423. <Column id="stepflagcd" type="STRING" size="256"/>
  424. <Column id="stepmemo" type="STRING" size="256"/>
  425. <Column id="lnkstepno" type="STRING" size="256"/>
  426. <Column id="times" type="STRING" size="256"/>
  427. <Column id="startendflag" type="STRING" size="256"/>
  428. <Column id="swimlineno" type="STRING" size="256"/>
  429. <Column id="refseq" type="STRING" size="256"/>
  430. <Column id="decirflag" type="STRING" size="256"/>
  431. <Column id="setno" type="STRING" size="256"/>
  432. <Column id="settypecd" type="STRING" size="256"/>
  433. <Column id="m" type="STRING" size="256"/>
  434. <Column id="stepnm" type="STRING" size="256"/>
  435. <Column id="formexistyn" type="STRING" size="256"/>
  436. <Column id="dcsnstep" type="STRING" size="256"/>
  437. <Column id="orgstepno" type="STRING" size="256"/>
  438. <Column id="stepattrflag" type="STRING" size="256"/>
  439. </ColumnInfo>
  440. </Dataset>
  441. <Dataset id="ds_main_decisionlist_info" firefirstcount="0" firenextcount="0" useclientlayout="false" updatecontrol="true" enableevent="true" loadkeymode="keep" loadfiltermode="keep" reversesubsum="false">
  442. <ColumnInfo>
  443. <Column id="cpgno" type="BIGDECIMAL" size="256"/>
  444. <Column id="cpghistseq" type="BIGDECIMAL" size="256"/>
  445. <Column id="stepno" type="BIGDECIMAL" size="256"/>
  446. <Column id="deciseq" type="BIGDECIMAL" size="256"/>
  447. <Column id="lnkstepno" type="BIGDECIMAL" size="256"/>
  448. <Column id="m" type="STRING" size="256"/>
  449. </ColumnInfo>
  450. </Dataset>
  451. <Dataset id="ds_main_seldecisionstep" firefirstcount="0" firenextcount="0" useclientlayout="false" updatecontrol="true" enableevent="true" loadkeymode="keep" loadfiltermode="keep" reversesubsum="false"/>
  452. <Dataset id="ds_main" firefirstcount="0" firenextcount="0" useclientlayout="false" updatecontrol="true" enableevent="true" loadkeymode="keep" loadfiltermode="keep" reversesubsum="false">
  453. <ColumnInfo>
  454. <Column id="decisionlist" type="STRING" size="256"/>
  455. <Column id="seldecision" type="STRING" size="256"/>
  456. <Column id="seldecisionstep" type="STRING" size="256"/>
  457. <Column id="seldecisionstepno" type="STRING" size="256"/>
  458. <Column id="seldecisionlist" type="STRING" size="256"/>
  459. <Column id="prcp" type="STRING" size="256"/>
  460. <Column id="sortedsteplist" type="STRING" size="256"/>
  461. </ColumnInfo>
  462. <Rows>
  463. <Row>
  464. <Col id="decisionlist"/>
  465. <Col id="seldecision"/>
  466. <Col id="seldecisionstep"/>
  467. <Col id="seldecisionstepno"/>
  468. <Col id="seldecisionlist"/>
  469. <Col id="prcp"/>
  470. <Col id="sortedsteplist"/>
  471. </Row>
  472. </Rows>
  473. </Dataset>
  474. <Dataset id="ds_main_temp_stepinfo_info" firefirstcount="0" firenextcount="0" useclientlayout="false" updatecontrol="true" enableevent="true" loadkeymode="keep" loadfiltermode="keep" reversesubsum="false">
  475. <ColumnInfo>
  476. <Column id="stepno" type="STRING" size="256"/>
  477. <Column id="stepflagcd" type="STRING" size="256"/>
  478. <Column id="stepmemo" type="STRING" size="256"/>
  479. <Column id="lnkstepno" type="STRING" size="256"/>
  480. <Column id="times" type="STRING" size="256"/>
  481. <Column id="startendflag" type="STRING" size="256"/>
  482. <Column id="swimlineno" type="STRING" size="256"/>
  483. <Column id="refseq" type="STRING" size="256"/>
  484. <Column id="decirflag" type="STRING" size="256"/>
  485. <Column id="setno" type="STRING" size="256"/>
  486. <Column id="settypecd" type="STRING" size="256"/>
  487. <Column id="m" type="STRING" size="256"/>
  488. <Column id="stepnm" type="STRING" size="256"/>
  489. <Column id="formexistyn" type="STRING" size="256"/>
  490. <Column id="dcsnstep" type="STRING" size="256"/>
  491. <Column id="orgstepno" type="STRING" size="256"/>
  492. <Column id="fixedStCntl" type="STRING" size="256"/>
  493. <Column id="tmpstepnm" type="STRING" size="256"/>
  494. <Column id="stepattrflag" type="STRING" size="256"/>
  495. <Column id="stepsettypecd" type="STRING" size="256"/>
  496. </ColumnInfo>
  497. <Rows>
  498. <Row>
  499. <Col id="stepno"/>
  500. <Col id="stepflagcd"/>
  501. <Col id="stepmemo"/>
  502. <Col id="lnkstepno"/>
  503. <Col id="times"/>
  504. <Col id="startendflag"/>
  505. <Col id="swimlineno"/>
  506. <Col id="refseq"/>
  507. <Col id="decirflag"/>
  508. <Col id="setno"/>
  509. <Col id="settypecd"/>
  510. <Col id="m"/>
  511. <Col id="stepnm"/>
  512. <Col id="formexistyn"/>
  513. <Col id="dcsnstep"/>
  514. <Col id="orgstepno"/>
  515. <Col id="fixedStCntl"/>
  516. <Col id="tmpstepnm"/>
  517. <Col id="stepattrflag"/>
  518. <Col id="stepsettypecd"/>
  519. </Row>
  520. </Rows>
  521. </Dataset>
  522. <Dataset id="ds_temp" firefirstcount="0" firenextcount="0" useclientlayout="false" updatecontrol="true" enableevent="true" loadkeymode="keep" loadfiltermode="keep" reversesubsum="false">
  523. <ColumnInfo>
  524. <Column id="getvalue" type="STRING" size="256"/>
  525. <Column id="delsteplist" type="STRING" size="256"/>
  526. <Column id="deldecisionlist" type="STRING" size="256"/>
  527. <Column id="decisionlist" type="STRING" size="256"/>
  528. <Column id="openeruid" type="STRING" size="256"/>
  529. <Column id="startstepno" type="STRING" size="256"/>
  530. <Column id="endstepno" type="STRING" size="256"/>
  531. </ColumnInfo>
  532. <Rows>
  533. <Row>
  534. <Col id="getvalue"/>
  535. <Col id="delsteplist"/>
  536. <Col id="deldecisionlist"/>
  537. <Col id="decisionlist"/>
  538. <Col id="openeruid"/>
  539. <Col id="startstepno"/>
  540. <Col id="endstepno"/>
  541. </Row>
  542. </Rows>
  543. </Dataset>
  544. <Dataset id="ds_main_sortedsteplist_info" firefirstcount="0" firenextcount="0" useclientlayout="false" updatecontrol="true" enableevent="true" loadkeymode="keep" loadfiltermode="keep" reversesubsum="false"/>
  545. <Dataset id="ds_temp_delsteplist_info" firefirstcount="0" firenextcount="0" useclientlayout="false" updatecontrol="true" enableevent="true" loadkeymode="keep" loadfiltermode="keep" reversesubsum="false" Info="ds_main_steplist_info Column"/>
  546. </Objects>
  547. <Bind>
  548. <BindItem id="item0" compid="grp_swimline.ipt_swimlineno" propid="value" datasetid="ds_main_outlineinfo_info" columnid="swimlineno"/>
  549. </Bind>
  550. <Script type="xscript4.0"><![CDATA[/***************************************************************************************
  551. * System Name :
  552. * Job Name :
  553. * Creator :
  554. * Make Date : 2015-04-15
  555. * Description :
  556. *---------------------------------------------------------------------------------------
  557. * Modify Date Modifier Modify Description
  558. *---------------------------------------------------------------------------------------
  559. * 2015-04-15 Live Converter TF->XP
  560. *
  561. *---------------------------------------------------------------------------------------
  562. ****************************************************************************************/
  563. //=======================================================================================
  564. // Lib Include
  565. //---------------------------------------------------------------------------------------
  566. include "com_commonxp::comm_main.xjs"
  567. // 아래 스크립트는 "SPMMP01900.js" 파일 import로 대체할 예정임!!
  568. var lineNo = ds_main_outlineinfo_info.getColumn(0,"swimlineno"); //총 스윔라인 수
  569. var cpgflagcd = "";
  570. var cpgflag = "";
  571. var settype = "";
  572. var grpControlCnt; //생성된 총 그룹 컨트롤 갯수(컨트롤 생성시 위치 재배치를 위해 따로 관리)
  573. var controlCnt = 0; //생성된 컨트롤 갯수(나머지 컨트롤 카운트)
  574. var dcsCntlCnt = 1; //decision 컨트롤의 총 갯수(인스턴수 마지막 인덱스가 된다)
  575. var lineYpos;
  576. var linesControlMaxCnt = new Array(); //스윔라인 영역의 갯수
  577. var swimlineControlArray = new Array(); //라인 컨트롤의 배열(라인종류를 담는다)
  578. var selectSectionsLine = new Array(); //4*1 의 변경된 색상을 갖는 라인배열...
  579. selectSectionsLine[0] = "";
  580. selectSectionsLine[1] = "";
  581. selectSectionsLine[2] = "";
  582. selectSectionsLine[3] = "";
  583. var swimLineHight = 165; //한 스윔라인의 높이 //<-210
  584. var swimLineWidth = 815; //스윔라인의 넓이 //<-792
  585. var selectedLineSection = ""; //선택된 라인(ex:1,2...)
  586. var selectedControl = null; //선택된 아이템(컨트롤)
  587. var currentStepCntl = null; //현재 포커스를 가진 아이템(그룹아이디)
  588. var changedCntl = null; //스텝의 개요를 변경할 때, 이전에 값이 변한 스텝의 id 가 필요함.
  589. var prevStepCntl = null; //부모가 될 아이템(그룹아이디)
  590. var childStepCntl = null; //자식이 될 아이템(그룹아이디)
  591. var maxControlCnt = 2; //한줄 단위로, 최대 default 컨트롤 갯수
  592. var initControlCnt = 0; //외곽 스윔라인 컨트롤 갯수(나머지 컨트롤을 초기화 할때 initControlCnt 부터 다시 카운트 한다)
  593. var stepRef = this.objects["ds_main_steplist_info"]; //"/root/main/steplist/info";
  594. var dcsRef = this.objects["ds_main_decisionlist_info"]; //"/root/main/decisionlist/info";
  595. var sortedStepRef = this.objects["ds_main_sortedsteplist_info"]; //"/root/main/sortedsteplist/info";
  596. var tmpIncreaseVal = 0; //임시변수, 스타트포인트의 감소 문제를 해결하고 나면, 삭제 필!
  597. var outsideControlCnt = 0; //바깥 아웃라인의 라인컨트롤 갯수(컨트롤 생성시, outsideControlCnt+1보다 큰 컨트롤들을 삭제한다)
  598. var transViewSize = 0;
  599. var connectionMode = "false";
  600. var decisionMode = "false";
  601. var readyPrcp = "N";
  602. var val_callfCreateControlYN = "N"; //약속처방/서식이 등록이 되었는지 여부, 스텝 좌측의 '*' 유무를 가린다
  603. var OpenerKind = "";
  604. var arErrorCode = new HashArray();
  605. var oOpener = null;
  606. var curStepCntl = null;
  607. var objExt = new ExtCommon();
  608. //=======================================================================================
  609. // Event
  610. //---------------------------------------------------------------------------------------
  611. /****************************************************************************************
  612. * Components : Form
  613. * Components ID : SPMMP01900
  614. * Event : oninit
  615. * Argument : 01.obj : Object Event has occurred
  616. * : 02.e : Event Object
  617. * Description : 화면 처음 초기화시 폼초기화
  618. ****************************************************************************************/
  619. function SPMMP01900_oninit(obj:Form, e:InitEventInfo)
  620. {
  621. frmf_initForm(obj); // 폼 초기화
  622. oOpener = frmf_getoOpener();
  623. //권한설정
  624. if(oOpener.OpenerKind == "GPS"){
  625. frmf_setSpclScrnAuth("R", false);
  626. //버튼 영역 보이지 않음
  627. grp_button.visible = false;
  628. grp_swimline.visible = true;
  629. //컨트롤 사이즈 변경
  630. // grp_swimline.position.width = 1205;
  631. // if( parseInt(oOpener.grp_biz.ivw_outline.position.height) == 766 ){
  632. // grp_swimline.position.height = 764;
  633. // }else if( parseInt(oOpener.ivw_outline.position.height) == 480 ){
  634. // grp_swimline.position.height = 478;
  635. // }else{ // ( parseInt(oOpener.ivw_outline.attribute("height")) == 883 )
  636. // grp_swimline.position.height = 811;
  637. // }
  638. }else{
  639. if( oOpener.frmf_getScreenAuth() == "10000000" ){
  640. frmf_setSpclScrnAuth("R", false);
  641. }else{
  642. //버튼 영역 보이지 않음
  643. grp_button.visible = true;
  644. frmf_setSpclScrnAuth("X", false);
  645. }
  646. }
  647. // frmf_createPopupMenuDs("pmn_menu", "pmn_menu_onmenuclick", ds_menu);
  648. }
  649. /****************************************************************************************
  650. * Components : Form
  651. * Components ID : SPMMP01900
  652. * Event : onload
  653. * Argument : 01.obj : Object Event has occurred
  654. * : 02.e : Event Object
  655. * Description : 화면오픈시 폼load이후 실행
  656. ****************************************************************************************/
  657. function SPMMP01900_onload(obj:Form, e:LoadEventInfo)
  658. {
  659. //return; // 허만호
  660. OpenerKind = oOpener.OpenerKind;
  661. fInitialize();
  662. if(OpenerKind == "GPS"){
  663. utlf_addLog("OpenerKind GPS >>>>>");
  664. oOpener.fInitializeOutline();
  665. }else{
  666. utlf_addLog("OpenerKind GPS else >>>>>");
  667. // ivw_detail.src= "../../../emr/cpgweb/xrw/SPMQP01400_STEP처방관리.xrw";
  668. grp_swimline.ivw_detail.url = "emr_cpgxp::SPMQP01400_STEP처방관리.xfdl";
  669. }
  670. }
  671. /****************************************************************************************
  672. * Components : PopupMenu
  673. * Components ID : pmn_menu_all
  674. * Event : onmenuclick
  675. * Argument : 01.obj : Object Event has occurred
  676. * : 02.e : Event Object
  677. * Description : 팝업메뉴 호출후 선택시 실행
  678. ****************************************************************************************/
  679. function pmn_menu_onmenuclick(obj:PopupMenu, e:MenuClickEventInfo)
  680. {
  681. eval(e.id + "()");
  682. }
  683. /****************************************************************************************
  684. * Components : Button
  685. * Components ID : grp_button.btn
  686. * Event : onclick
  687. * Argument : 01.obj : Object Event has occurred
  688. * : 02.e : Event Object
  689. * Description : 버튼 그룹 내 버튼 클릭시 실행
  690. ****************************************************************************************/
  691. function grp_button_btn_onclick(obj:Button, e:ClickEventInfo)
  692. {
  693. var ctrl = null;
  694. ctrl = obj.name;
  695. var selControl = obj;
  696. var controlText = obj.text;
  697. var controlID = obj.name;
  698. sysf_trace("ctrl : " + ctrl + " / selControl : " + selControl + " / controlText : " + controlText + " / controlID : " + controlID);
  699. // if(event.button == 1){
  700. if(ctrl.substr(0, 4) == "btn_"){
  701. switch( controlID ){
  702. case "btn_remove" :
  703. fDelCntl();
  704. break;
  705. case "btn_start" :
  706. if ( utlf_isNull(currentStepCntl) ){
  707. sysf_messageBox("스텝을", "C002");
  708. return;
  709. }
  710. fSetStartStep();
  711. break;
  712. case "btn_end" :
  713. if ( utlf_isNull(currentStepCntl) ){
  714. sysf_messageBox("스텝을", "C002");
  715. return;
  716. }
  717. fSetEndStep();
  718. break;
  719. case "btn_connection" :
  720. if(controlText == "입력"){
  721. selControl.text = "연결";
  722. connectionMode = "true";
  723. grp_button.btn_disconnection.enable = false;
  724. }else{
  725. selControl.text = "입력";
  726. connectionMode = "false";
  727. currentStepCntl = null;
  728. grp_button.btn_disconnection.enable = true;
  729. }
  730. // model.refresh();
  731. break;
  732. case "btn_disconnection" :
  733. if ( utlf_isNull(currentStepCntl) ){
  734. sysf_messageBox("스텝을", "C002");
  735. return;
  736. }
  737. var curID = currentStepCntl.name;
  738. var curNo = parseInt( curID.substr(12, curID.length-12) ) ;
  739. fDelLink();
  740. break;
  741. case "btn_detailinfo" :
  742. if(!utlf_isNull(currentStepCntl))
  743. fViewDetailInfo();
  744. break;
  745. case "btn_addline" :
  746. fAddSwimLine();
  747. break;
  748. case "btn_initialize" :
  749. //fOutlineCntlInit();
  750. oOpener.ds_main_masterinfo_info.enableevent = false;
  751. oOpener.ds_main_masterinfo_info.setColumn(0,"swimlineno", "");
  752. lineNo = "";
  753. // oOpener.ipt_swimlineno.redraw();
  754. oOpener.fCreateOutLineView();
  755. oOpener.ds_main_masterinfo_info.enableevent = true;
  756. break;
  757. default :
  758. if ( utlf_isNull(selectedLineSection) ){
  759. sysf_messageBox("스윔라인을", "C002");
  760. return;
  761. }
  762. if(selectedLineSection > lineNo){
  763. sysf_messageBox("스윔라인을", "C002");
  764. return;
  765. }
  766. if(controlText == "A"){
  767. var rtnNum = fMakeNode("A", selectedLineSection);
  768. } else if(controlText == "D"){
  769. var rtnNum = fMakeNode("D", selectedLineSection);
  770. } else if(controlText == "B"){
  771. var rtnNum = fMakeNode("B", selectedLineSection);
  772. }
  773. fCreateControl(); //컨트롤 재배치를 위해 컨트롤을 모두 삭제한 후, 다시 생성한다.
  774. currentStepCntl = this.grp_swimline.components[ "xforms_group" + (rtnNum-1) ]; //모든 컨트롤이 다시생되면, 방금 전 생성한 컨트롤에 포커스를 맞춘다.
  775. break;
  776. }
  777. }
  778. // }
  779. }
  780. //=======================================================================================
  781. // Function
  782. //---------------------------------------------------------------------------------------
  783. /****************************************************************************************
  784. * Function : fInitialize
  785. * Description : 초기화
  786. * Argument :
  787. * return type :
  788. * Creator :
  789. ****************************************************************************************/
  790. function fInitialize() {
  791. ds_temp_getdata.setColumn(0,"authflag",oOpener.ds_temp_getdata.getColumn(0,"authflag"));
  792. lineNo = ds_main_outlineinfo_info.getColumn(0,"swimlineno");
  793. cpgflagcd = oOpener.ds_main_masterinfo_info.getColumn(0,"cpgflagcd");
  794. cpgflag = ds_main_outlineinfo_info.getColumn(0,"cpgflagcd");
  795. if(cpgflagcd == "01") settype = "W";
  796. else settype = "G";
  797. if( !(lineNo == "0" || utlf_isNull(lineNo)) ){
  798. arrNum = parseInt(lineNo) - 1;
  799. linesControlMaxCnt = new Array(arrNum);
  800. }else{
  801. linesControlMaxCnt = new Array(lineNo);
  802. }
  803. //linesControlMaxCnt.slice(0, linesControlMaxCnt.length-1);
  804. for(var i = 0; i < lineNo; i++){
  805. linesControlMaxCnt[i] = 0;
  806. }
  807. var y = 0;
  808. var cy = swimLineHight;
  809. controlCnt = 0;
  810. grpControlCnt = 0;
  811. //if( maxControlCnt > 2 ) swimLineWidth = 392 * maxControlCnt; //최대 갯수에 따라 변경됨...
  812. // ctrlID = "xforms:line" + (controlCnt++);
  813. // ctrl = grp_swimline.createChild("xforms:line", "id:"+ctrlID + "; x1:0px; y1:0px ; x2:" + swimLineWidth + "px; y2: 0px; ");
  814. //shape 컴포넌트 동적 생성
  815. var objShpTitle = new Shape();
  816. ctrlID = "xforms_line" + (controlCnt++);
  817. if(!utlf_isNull(this.grp_swimline.components[ctrlID])) this.grp_swimline.removeChild(ctrlID);
  818. objShpTitle.init(ctrlID, 0, 0, swimLineWidth, 2);
  819. this.grp_swimline.addChild(ctrlID, objShpTitle);
  820. objShpTitle.show();
  821. objShpTitle.anchor = "left top right";
  822. swimlineControlArray[controlCnt-1] = ctrlID+"_UW"; //up+width
  823. for(var i = 1; i <= lineNo; i++){
  824. fCreateSwimLine(y, cy);
  825. y = cy; //세로 아웃라인의 y1
  826. cy = cy + swimLineHight; //세로 아웃라인의 y2
  827. }
  828. //초기화 시, 아이뷰어의 대상 화면을 결정한다.
  829. //model.setValue("/root/main/temp/uid", getOpenerUID());
  830. }
  831. /****************************************************************************************
  832. * Function : fCreateSwimLine
  833. * Description : 라인을 생성한다.
  834. * Argument : y - y1좌표
  835. * : cy - y2좌표
  836. * return type :
  837. * Creator :
  838. ****************************************************************************************/
  839. function fCreateSwimLine(y, cy) {
  840. utlf_addLog("fCreateSwimLine y : " + y + " || cy : " + cy );
  841. var line1 = "xforms_line";
  842. var ctrlID;
  843. var ctrl = null;
  844. var x = 0;
  845. var cx = swimLineWidth -2;
  846. var objShpTitle = new Shape();
  847. ctrlID = line1 + (controlCnt++);
  848. if(!utlf_isNull(this.grp_swimline.components[ctrlID])) this.grp_swimline.removeChild(ctrlID);
  849. objShpTitle.init(ctrlID, x, y, (x+2), cy);
  850. this.grp_swimline.addChild(ctrlID, objShpTitle);
  851. objShpTitle.show();
  852. objShpTitle.style.strokepen = "1 solid #000000";
  853. objShpTitle.linetype = "vertical";
  854. objShpTitle.anchor = "left top";
  855. swimlineControlArray[controlCnt-1] = ctrlID+"_LH"; //left+height
  856. objShpTitle = new Shape();
  857. ctrlID = line1 + (controlCnt++);
  858. utlf_addLog(cx + " || " + y + " || " + (cx+2) + " || " + cy);
  859. if(!utlf_isNull(this.grp_swimline.components[ctrlID])) this.grp_swimline.removeChild(ctrlID);
  860. objShpTitle.init(ctrlID, cx, y, (cx+2), cy);
  861. this.grp_swimline.addChild(ctrlID, objShpTitle);
  862. objShpTitle.show();
  863. objShpTitle.style.strokepen = "1 solid #000000";
  864. objShpTitle.linetype = "vertical";
  865. objShpTitle.anchor = "top right";
  866. swimlineControlArray[controlCnt-1] = ctrlID+"_RH"; //right+height
  867. objShpTitle = new Shape();
  868. ctrlID = line1 + (controlCnt++);
  869. if(!utlf_isNull(this.grp_swimline.components[ctrlID])) this.grp_swimline.removeChild(ctrlID);
  870. objShpTitle.init(ctrlID, x, cy, cx, (cy+2));
  871. this.grp_swimline.addChild(ctrlID, objShpTitle);
  872. objShpTitle.show();
  873. objShpTitle.style.strokepen = "1 solid #000000";
  874. objShpTitle.anchor = "left top right";
  875. swimlineControlArray[controlCnt-1] = ctrlID+"_DW"; //down+width
  876. outsideControlCnt = controlCnt;
  877. }
  878. /****************************************************************************************
  879. * Function : fChgDschTimes
  880. * Description : 스텝 컨트롤을 삭제한다.
  881. * Argument : flag - C:control / L:line
  882. * : no - 라인 넘버
  883. * return type :
  884. * Creator :
  885. ****************************************************************************************/
  886. function fDelStep(flag, no){
  887. if(flag == "C"){
  888. var curID = currentStepCntl.name; //currentStepCntl.attribute("id");
  889. var curNo = parseInt( curID.substr(12, curID.length-12) );
  890. var lineNumber = parseInt( stepRef.getColumn(curNo,"swimlineno" ) );
  891. var stepRefSeq = parseInt( stepRef.getColumn(curNo,"refseq" ) );
  892. var curStepNo = parseInt( stepRef.getColumn(curNo,"stepno" ) );
  893. //삭제하려는 라인이 최대갯수의 컨트롤을 갖는 줄이라면, 스윔라인 길이 축소
  894. //동일갯수를 갖던 라인이 그대로 있으면 길이 축소 안해야 함.
  895. var adjustLineYN = "N";
  896. if(maxControlCnt == curRowCtrlMaxCnt){
  897. adjustLineYN = "Y";
  898. var curRowCtrlMaxCnt = linesControlMaxCnt[lineNumber-1];
  899. for( var i = 0; i < linesControlMaxCnt.length; i++ ){
  900. if( linesControlMaxCnt[i] > curRowCtrlMaxCnt ){
  901. adjustLineYN = "N";
  902. break;
  903. }
  904. }
  905. }
  906. if( adjustLineYN == "Y" ){
  907. if( grp_swimline.position.width != 835 ){
  908. if(maxControlCnt > 3){
  909. fAdjustLine("re", "392");
  910. maxControlCnt--;
  911. }
  912. }else{
  913. if(maxControlCnt > 2){
  914. fAdjustLine("re", "392");
  915. maxControlCnt--;
  916. }
  917. }
  918. }
  919. //저장된 데이터 이므로, 삭제할 step 정보를 따로 담아두었다가 한꺼번에 삭제한다. (1건이므로 for 필요 없음..)
  920. var arrTemp = new Array();
  921. arrTemp = objExt.findRows(stepRef, "stepno", (curNo+1));
  922. for(var i = 0; i < arrTemp.length; i++){
  923. var iNode = stepRef.getColumn(arrTemp[i],"m"); //node.selectSingleNode("m");
  924. if(iNode != "i"){
  925. stepRef.setColumn(arrTemp[i],"m","d")
  926. var nRow = ds_temp_delsteplist_info.addRow();
  927. ds_temp_delsteplist_info.copyRow(nRow, stepRef, arrTemp[i]);
  928. ds_temp_delsteplist_info.setColumn(nRow, "stepno", ds_temp_delsteplist_info.getColumn(nRow,"orgstepno"));
  929. }
  930. }
  931. fDelLink( curNo ); //선택된 스텝에 연결된 모든 라인을 없앤다.(하위스텝번호를 없앤다)
  932. stepRef.deleteRow(stepRef.findRow("stepno", (curNo+1)));
  933. grpControlCnt = grpControlCnt -1;
  934. for(var i = curNo; i < stepRef.rowcount; i++){
  935. var iSwimlineno = parseInt(stepRef.getColumn(i,"swimlineno"));
  936. var iRefseq = parseInt(stepRef.getColumn(i,"refseq"));
  937. var iStepno = stepRef.getColumn(i,"stepno");
  938. if( lineNumber == iSwimlineno && stepRefSeq < iRefseq ){
  939. //삭제된 컨트롤과 같은 스윔라인에 존재하는 다음 컨트롤들은 라인당 컨트롤 순번도 -1 씩 감소한다.
  940. stepRef.setColumn(i,"refseq", parseInt( iRefseq ) - 1 );
  941. }
  942. arrTemp = objExt.findRows(stepRef, "lnkstepno", iStepno);
  943. for(var k = 0; k < arrTemp.length; k++){
  944. stepRef.setColumn(arrTemp[k], "lnkstepno", i);
  945. }
  946. if( iStepno > curNo ){
  947. dcsRef.filter("lnkstepno == '" + iStepno + "'");
  948. for(var k = 0; k < dcsRef.rowcount; k++){
  949. dcsRef.setColumn(k, "lnkstepno", i);
  950. }
  951. //@@
  952. stepRef.setColumn(i, "stepno", parseInt(iStepno)-1 );
  953. dcsRef.filter("stepno == '" + iStepno + "'");
  954. for(var k = 0; k < dcsRef.rowcount ; k++){
  955. dcsRef.setColumn(k, "stepno", i);
  956. }
  957. dcsRef.filter("");
  958. }
  959. }
  960. linesControlMaxCnt[lineNumber-1] = linesControlMaxCnt[lineNumber-1] - 1;
  961. utlf_addLog("461 currentStepCntl set null")
  962. currentStepCntl = null;
  963. selectedControl = null;
  964. //선택 스텝 정보를 비운 후 disable
  965. oOpener.ds_main_stepinfo_info.enableevent = false;
  966. oOpener.ds_main_stepinfo_info.clearData();
  967. oOpener.ds_main_stepinfo_info.addRow();
  968. oOpener.ds_main_stepinfo_info.enableevent = true;
  969. oOpener.grp_biz.tar_stepmemo.enable = false;
  970. oOpener.grp_biz.ipt_times.enable = false;
  971. oOpener.grp_biz.cmb_stepnm.enable = false; //2008.08.19 pymi
  972. }else if(flag == "L"){
  973. var org_CurrentStepCntl = currentStepCntl;
  974. var org_SelectedLineSection = selectedLineSection;
  975. //delNodeList
  976. var arrTemp = new Array();
  977. arrTemp = objExt.findRows(stepRef, "swimlineno", no);
  978. var delCount = stepRef.getCaseCount("swimlineno", no);
  979. fChgDschTimes(parseInt(no)+1); //2008.11.12
  980. //상위 스텝의 연결스텝번호 수정, 위 아래간의 스텝 연결선 유지 (2008.07.02 추가)
  981. if( arrTemp.length == 1 && no > 1 ){ //삭제되는 스텝이 1개일 경우 (A버튼)
  982. var lnkNo = stepRef.getColumn(arrTemp[0],"lnkstepno");
  983. var rowNo = parseInt( stepRef.getColumn(stepRef.findRow("swimlineno",parseInt(no)-1),"stepno") );
  984. stepRef.setColumn(rowNo,"lnkstepno", lnkNo);
  985. if( stepRef.getColumn(rowNo,"m") != "i" ){
  986. stepRef.setColumn(rowNo,"m", "u");
  987. }
  988. }else if( arrTemp.length >= 2 && no > 1 ){ //삭제되는 스텝이 2개 이상일 경우 (D버튼)
  989. for( var i = 0; i < arrTemp.length; i++ ){
  990. var deltStepNo = stepRef.getColumn(arrTemp[i], "stepno");
  991. var deltLnkNo = stepRef.getColumn(arrTemp[i], "lnkstepno");
  992. var nFindRow = dcsRef.findRow("lnkstepno", deltStepNo);
  993. if( nFindRow > -1 ){
  994. if( dcsRef.getColumn(nFindRow, "m" ) != "i" ){
  995. dcsRef.setColumn(nFindRow, "m", "u" );
  996. }
  997. dcsRef.setColumn(nFindRow, "lnkstepno", deltLnkNo );
  998. }
  999. }
  1000. }
  1001. var delStepNoListTxt = "";
  1002. //저장된 데이터 이므로, 삭제할 step 정보를 따로 담아두었다가 한꺼번에 삭제한다.
  1003. for(var i = 0; i < arrTemp.length; i++){
  1004. var curNo = stepRef.getColumn(arrTemp[i],"stepno");
  1005. var iNode = stepRef.getColumn(arrTemp[i],"m");
  1006. var StepNoNode = stepRef.getColumn(arrTemp[i],"stepno"); // orgstepno
  1007. delStepNoListTxt = delStepNoListTxt + StepNoNode + "|";
  1008. if(iNode != "i"){
  1009. stepRef.setColumn(i, "m", "d");
  1010. var nRow = ds_temp_delsteplist_info.addRow();
  1011. ds_temp_delsteplist_info.copyRow(nRow, stepRef, arrTemp[i]);
  1012. var stpNo = ds_temp_delsteplist_info.getColumn(nRow,"stepno");
  1013. var orgNo = ds_temp_delsteplist_info.getColumn(nRow,"orgstepno");
  1014. ds_temp_delsteplist_info.setColumn(nRow,"stepno", orgNo);
  1015. ds_temp_delsteplist_info.setColumn(nRow,"orgstepno", stpNo);
  1016. }
  1017. //연결선 정보 및 컨트롤 삭제
  1018. fDelLink( curNo );
  1019. }
  1020. var delNodeLngth = delStepNoListTxt.split("|");
  1021. fDeleteRowFilterd(stepRef,"swimlineno",no);
  1022. var a = linesControlMaxCnt.slice(0, parseInt(no)-1);
  1023. var b = linesControlMaxCnt.slice(no, linesControlMaxCnt.length);
  1024. linesControlMaxCnt = new Array();
  1025. linesControlMaxCnt = a.concat(b);
  1026. grpControlCnt = grpControlCnt - delCount;
  1027. //삭제 스텝 제거 후, 전체 스텝 리스트 loop
  1028. for(var i = stepRef.rowcount-1 ; i >= 0; i--){
  1029. var dstFcsNode = stepRef.getColumn(i, "swimlineno");
  1030. if( dstFcsNode > no ){
  1031. stepRef.setColumn(i, "swimlineno", parseInt(dstFcsNode) - 1);
  1032. }
  1033. var dstFcsNode = stepRef.getColumn(i, "stepno");
  1034. var lnkFcsNode = stepRef.getColumn(i, "lnkstepno");
  1035. var mFcsNode = stepRef.getColumn(i, "m");
  1036. var org_dstFcsVal = dstFcsNode; //비교대상인 스텝의 원 스텝번호(노드 객체로 비교하면, setvalue로 인해 값이 변한다)
  1037. for(var k = delNodeLngth.length-1; k >= 0; k--){
  1038. var delFcsNode = delStepNoListTxt.split("|")[k];
  1039. if( parseInt(delFcsNode) < parseInt(org_dstFcsVal) ){
  1040. stepRef.setColumn(i, "stepno", parseInt(dstFcsNode)-1)
  1041. mFcsNode = stepRef.getColumn(i, "m");
  1042. if( mFcsNode != "i" ){
  1043. stepRef.setColumn(i, "m", "u");
  1044. }
  1045. }
  1046. if( parseInt(delFcsNode) < parseInt(lnkFcsNode) ){
  1047. stepRef.setColumn(i, "lnkstepno", parseInt(lnkFcsNode)-1);
  1048. mFcsNode = stepRef.getColumn(i, "m");
  1049. if( mFcsNode != "i" ){
  1050. stepRef.setColumn(i, "m", "u");
  1051. }
  1052. }
  1053. }
  1054. }
  1055. if(dcsRef.rowcount > 0 ){
  1056. for(var i = dcsRef.rowcount-1 ; i >= 0; i--){
  1057. var dstFcsNode = dcsRef.getColumn(i,"stepno");
  1058. var lnkFcsNode = dcsRef.getColumn(i,"lnkstepno");
  1059. var mFcsNode = dcsRef.getColumn(i,"m");
  1060. var org_dstFcsVal = dstFcsNode; //비교대상인 스텝의 원 스텝번호(노드 객체로 비교하면, setvalue로 인해 값이 변한다)
  1061. for(var k = delNodeLngth.length-1; k >= 0; k--){
  1062. var delFcsNode = delStepNoListTxt.split("|")[k];
  1063. if( parseInt(delFcsNode) < parseInt(dstFcsNode) ){
  1064. dcsRef.setColumn(i,"stepno",parseInt(dstFcsNode)-1);
  1065. mFcsNode = dcsRef.getColumn(i,"m");
  1066. if( mFcsNode != "i" ){
  1067. dcsRef.setColumn(i,"m","u");
  1068. }
  1069. }
  1070. if( parseInt(delFcsNode) < parseInt(lnkFcsNode) ){
  1071. dcsRef.setColumn(i,"lnkstepno",parseInt(lnkFcsNode)-1);
  1072. if( mFcsNode != "i" ){
  1073. dcsRef.setColumn(i,"m","u");
  1074. }
  1075. }
  1076. }
  1077. }
  1078. }
  1079. //마지막 스윔라인을 삭제한다.
  1080. fDelLastSwimLine();
  1081. lineNo--;
  1082. ds_main_outlineinfo_info.setColumn(0,"swimlineno",lineNo); //총 스윔라인 수
  1083. if(org_SelectedLineSection > lineNo){
  1084. selectedLineSection = "";
  1085. utlf_addLog("613 currentStepCntl set null")
  1086. currentStepCntl = null;
  1087. selectSectionsLine[0] = "";
  1088. selectSectionsLine[1] = "";
  1089. selectSectionsLine[2] = "";
  1090. selectSectionsLine[3] = "";
  1091. fChangeOutLineCntl("reset", lineNo);
  1092. }else if( org_SelectedLineSection <= lineNo ){
  1093. utlf_addLog("621 currentStepCntl set org_CurrentStepCntl")
  1094. currentStepCntl = org_CurrentStepCntl;
  1095. selectedLineSection = org_SelectedLineSection;
  1096. }
  1097. }
  1098. fCreateControl();
  1099. selectedControl = null;
  1100. prevStepCntl = null;
  1101. }
  1102. /****************************************************************************************
  1103. * Function : fCreateSwimLine
  1104. * Description : 외곽 스윔라인의 길이를 연장한다.
  1105. * Argument : flag - extention/reduction
  1106. * : width - 길이
  1107. * : alpha - 추가 길이(MGPS에서 열때는 width가 더 넓다)
  1108. * return type :
  1109. * Creator :
  1110. ****************************************************************************************/
  1111. function fAdjustLine( flag, width, alpha ){
  1112. //alert( swimLineWidth, + " , " + width, alpha );
  1113. var asLineControl = null;
  1114. var lngth = swimlineControlArray.length;
  1115. var str;
  1116. var width = parseInt(width);
  1117. if(flag == "allEx"){
  1118. if( utlf_isNull(alpha) ) {
  1119. var alphaValue = 0;
  1120. } else {
  1121. var alphaValue = parseInt(alpha);
  1122. //detail view의 그리드에 대한 사이즈 설정
  1123. if(oOpener.OpenerKind == "GEN"){
  1124. grp_swimline.ivw_detail.url = "emr_cpgxp::SPMMP02200_DetailView.xfdl";
  1125. }
  1126. }
  1127. if(maxControlCnt <= 3){
  1128. width = 1190 - swimLineWidth - 20 + alphaValue; //20:우측 세로스크롤이 생길 영역의 넓이
  1129. } else {
  1130. width = (maxControlCnt * width) - swimLineWidth; //최대 max 스텝수가 3개 이상일 때 벗어나는 오류 조치 (2009.02.25)
  1131. }
  1132. transViewSize = width;
  1133. flag = "ex";
  1134. } else if(flag == "allRe"){
  1135. width = transViewSize;
  1136. flag = "re";
  1137. }
  1138. if(flag == "ex"){
  1139. for (var i = 0; i < lngth; i++){
  1140. str = swimlineControlArray[i];
  1141. if( !utlf_isNull(str) ){
  1142. if( str.substr(str.length-2, 2) == "UW" ){
  1143. asLineControl = this.grp_swimline.components[ str.substr(0, str.length-3) ];
  1144. //alert(asLineControl);
  1145. asLineControl.position.width = parseInt(asLineControl.position.width) + width;
  1146. swimLineWidth = parseInt(asLineControl.position.width);
  1147. } else if(str.substr(str.length-2, 2) == "DW" ){
  1148. asLineControl = this.grp_swimline.components[ str.substr(0, str.length-3) ];
  1149. asLineControl.position.width = parseInt(asLineControl.position.width) + width;
  1150. } else if(str.substr(str.length-2, 2) == "RH" ){
  1151. asLineControl = this.grp_swimline.components[ str.substr(0, str.length-3) ];
  1152. asLineControl.position.x = parseInt(asLineControl.position.x) + width;
  1153. //asLineControl.position.width = parseInt(asLineControl.position.width) + width;
  1154. }
  1155. }
  1156. }
  1157. } else if(flag == "re"){
  1158. for (var i = 0; i < lngth; i++){
  1159. str = swimlineControlArray[i];
  1160. if( !utlf_isNull(str) ){
  1161. if( str.substr(str.length-2, 2) == "UW" ){
  1162. asLineControl = this.grp_swimline.components[ str.substr(0, str.length-3) ];
  1163. asLineControl.position.width = parseInt(asLineControl.position.width) - width;
  1164. swimLineWidth = asLineControl.position.width;
  1165. } else if(str.substr(str.length-2, 2) == "DW" ){
  1166. asLineControl = this.grp_swimline.components[ str.substr(0, str.length-3) ];
  1167. asLineControl.position.width = parseInt(asLineControl.position.width) - width;
  1168. } else if(str.substr(str.length-2, 2) == "RH" ){
  1169. asLineControl = this.grp_swimline.components[ str.substr(0, str.length-3) ];
  1170. asLineControl.position.x = parseInt(asLineControl.position.x) - width;
  1171. //asLineControl.position.width = parseInt(asLineControl.position.width) - width;
  1172. }
  1173. }
  1174. }
  1175. }
  1176. selectedControl = null;
  1177. if(oOpener.OpenerKind == "GPS"){
  1178. fCreateControl();
  1179. fInitLoadingForm();
  1180. }
  1181. }
  1182. /**
  1183. * @group :
  1184. * @ver : 2007.07
  1185. * @by : 전지은
  1186. * @---------------------------------------------------
  1187. * @type : function
  1188. * @access : public
  1189. * @desc : 컨트롤을 생선한다.
  1190. * @param :
  1191. * @return :
  1192. * @---------------------------------------------------
  1193. */
  1194. function fCreateControl() {
  1195. var ctrlID;
  1196. var ctrl = null;
  1197. var grpWidth = 392; //좌표를 기준으로 한 영역의 사이즈 (실제 컨트롤 width=290)
  1198. var halfpoint = grpWidth/2;
  1199. var marginX = 38; //영역 안의 왼쪽 여백 ( 38+ 290 + 38 = 392 )
  1200. var pntCnt = 0; //기준점의 갯수
  1201. var cntlCnt = 0; //해당 라인의 컨트롤 총 갯수
  1202. var y = 0;
  1203. var psition = 0; //k 번째 컨트롤 포지션(포커스된 컨트롤의 라인 내 순서)
  1204. var startPoint = 0; //라인당 컨트롤들을 위치시킬 시작x위치
  1205. stepCnt = parseInt(grpControlCnt); //새로 그릴 스텝(컨트롤) 갯수
  1206. var lngth = swimlineControlArray.length - 1;
  1207. var cntlID;
  1208. var fcstinhospdayno = oOpener.ds_main_masterinfo_info.getColumn(0,"fcstinhospdayno");
  1209. //아웃라인을 제외한 컨트롤을 모두 삭제 (스텝 추가/삭제 후 계속 전체 재생성하므로, 아웃라인 제외한 컨트롤 삭제 처리)
  1210. for(var i = outsideControlCnt; i <= lngth; i++){
  1211. cntlID = swimlineControlArray[i];
  1212. if( !utlf_isNull(cntlID) && cntlID.substr(cntlID.length-3, 1) == "_" ){
  1213. cntlID = cntlID.substr(0, cntlID.length-3);
  1214. }
  1215. if( !utlf_isNull(cntlID) )
  1216. this.grp_swimline.removeChild(cntlID);
  1217. swimlineControlArray[i] = "";
  1218. }
  1219. controlCnt = outsideControlCnt;
  1220. swimlineControlArray.slice(0, outsideControlCnt);
  1221. grpControlCnt = 0;
  1222. if( utlf_isNull(stepRef.getColumnInfo("tmpstepnm")) ){
  1223. stepRef.addColumn("tmpstepnm", "string");
  1224. }
  1225. if( utlf_isNull(stepRef.getColumnInfo("fixedStCntl")) ){
  1226. stepRef.addColumn("fixedStCntl", "string");
  1227. }
  1228. dsf_setDefaultVal(stepRef, "tmpstepnm:,fixedStCntl:");
  1229. for(var i = 1; i <= stepCnt ; i++){
  1230. var flag = stepRef.getColumn(i-1,"stepflagcd");
  1231. var lineno = parseInt(stepRef.getColumn(i-1,"swimlineno"));
  1232. var position = parseInt(stepRef.getColumn(i-1,"refseq"));
  1233. var kind = stepRef.getColumn(i-1,"startendflag");
  1234. var times = stepRef.getColumn(i-1,"times");
  1235. var stepnm = utlf_transNullToEmpty(stepRef.getColumn(i-1,"stepnm"));
  1236. var stepno = stepRef.getColumn(i-1,"stepno");
  1237. var tmpstepnm = stepRef.getColumn(i-1,"tmpstepnm");
  1238. var stepattrflag = stepRef.getColumn(i-1,"stepattrflag"); //CP는 표시해줄 필요 없고, CPG일 경우 0이 아니면 O/M/T/MO 존재 표시
  1239. cntlCnt = linesControlMaxCnt[lineno-1];
  1240. y = ( (lineno-1) * swimLineHight ) + 20; //122 + 20 + 20 = 165
  1241. startPoint = ( (swimLineWidth - (392 * cntlCnt) ) / 2 + 1 ) + ((position-1) * 392); // ★ 문제... 좌표가 -1씩 줄어든다...
  1242. startPoint = startPoint - (position-2);
  1243. //1. 마름모 모양의 라인들과 그리드를 담을 그룹을 생성한다.
  1244. // controlCnt++;
  1245. // ctrlID = "xforms:group" + (grpControlCnt++);
  1246. // ctrlID = "Div" + (grpControlCnt++);
  1247. // var ctrlGrp = grp_swimline.createChild("xforms:group", "id:" + ctrlID + ";left:" + startPoint + "px; top:" + y + "px; width:" + 392 + " px; height:" + 122 + "px; background-color:transparent;"); //290*135
  1248. // swimlineControlArray[outsideControlCnt + (grpControlCnt-1)] = ctrlID;
  1249. controlCnt++;
  1250. var objDivTitle = new Div();
  1251. ctrlID = "xforms_group" + (grpControlCnt++);
  1252. if(!utlf_isNull(this.grp_swimline.components[ctrlID])) this.grp_swimline.removeChild(ctrlID);
  1253. objDivTitle.init(ctrlID, startPoint, y, startPoint + 392, y+122);
  1254. this.grp_swimline.addChild(ctrlID, objDivTitle);
  1255. var ctrlGrp = objDivTitle;
  1256. objDivTitle.show();
  1257. swimlineControlArray[outsideControlCnt + (grpControlCnt-1)] = ctrlID;
  1258. if( flag == "D" ) {
  1259. //2. 결정스텝의 textarea를 생성한다.
  1260. // var text1 = "xforms:textarea";
  1261. var objTxtTitle = new TextArea();
  1262. ctrlID = "xforms_textarea" + (controlCnt++);
  1263. //그림그리기
  1264. objTxtTitle.init(ctrlID, marginX+60, 40, (marginX+60)+175, 40+43);
  1265. ctrlGrp.addChild(ctrlID, objTxtTitle);
  1266. var txtareactrl = objTxtTitle;
  1267. objTxtTitle.show();
  1268. objTxtTitle.value = stepRef.getColumn(grpControlCnt-1, "stepmemo");
  1269. //ds 바인딩
  1270. // var objBindItem = new BindItem();
  1271. // objBindItem.init("item"+grpControlCnt, ctrlID, "value", stepRef, "stepmemo");
  1272. // this.addChild("item"+grpControlCnt, objBindItem);
  1273. // objBindItem.bind();
  1274. //표시될 ds row 지정
  1275. stepRef.rowposition = grpControlCnt;
  1276. if(oOpener.OpenerKind == "GPS"){
  1277. //GPS 창에서는 조회모임 (editable 속성은 디자인 시점에 결정되므로 두가지 케이스로 나눔)
  1278. // var txtareactrl = ctrlGrp.createChild(text1, "id:"+ ctrlID + "; ref:" + stepRef + "[" + grpControlCnt + "]/stepmemo; editable:false; left:" + (marginX+60) + "px; top:" + 40 + "px; width:" + 175 + "px; height:" + 43+ "px; border-width:0px; border-style:solid; scroll:autovscroll; ");
  1279. txtareactrl.readonly = true;
  1280. }
  1281. else{
  1282. // var txtareactrl = ctrlGrp.createChild(text1, "id:"+ ctrlID + "; ref:" + stepRef + "[" + grpControlCnt + "]/stepmemo; left:" + (marginX+60) + "px; top:" + 40 + "px; width:" + 175 + "px; height:" + 43+ "px; border-width:0px; border-style:solid; scroll:autovscroll; ");
  1283. txtareactrl.readonly = false;
  1284. }
  1285. // txtareactrl.refresh();
  1286. //이벤트와 컨트롤을 연결하는 동적 이벤트
  1287. // txtareactrl.attribute("onmousedown") = "fPopupMenuEvent()";
  1288. txtareactrl.onlbuttondown.addHandler(fPopupMenuEvent2);
  1289. txtareactrl.onrbuttonup.addHandler(fPopupMenuEvent);
  1290. // txtareactrl.attribute("xforms-value-changed") = "fSetMemo()";
  1291. txtareactrl.ontextchanged.addHandler(fSetMemo);
  1292. // txtareactrl.attribute("DOMFocusIn") = "fFocusIn()";
  1293. txtareactrl.onsetfocus.addHandler(fFocusIn);
  1294. //txtareactrl.attribute("DOMFocusOut") = "fFocusOut()";
  1295. // txtareactrl.attribute("onmouseover") = "fMouseOverEvent()"; //함수를 보고 이벤트 선택
  1296. txtareactrl.onmouseenter.addHandler(fMouseOverEvent);
  1297. //3. 마름모 라인을 생성한다.
  1298. var line1 = "xforms_line";
  1299. if( oOpener.OpenerKind == "GPS" && oOpener.ds_main_steppath_info.findRowExpr("stepno == '" + stepno + "' && stepstat == '30'") > -1 ){
  1300. var objShpTitle = new Shape();
  1301. ctrlID = "xforms_line" + (controlCnt++);
  1302. objShpTitle.init(ctrlID, marginX, 60, (marginX+145), 0);
  1303. ctrlGrp.addChild(ctrlID, objShpTitle);
  1304. objShpTitle.show();
  1305. objShpTitle.style.strokepen = "2 solid #c8e67b";
  1306. objShpTitle.linetype = "ascent";
  1307. objShpTitle = new Shape();
  1308. ctrlID = "xforms_line" + (controlCnt++);
  1309. objShpTitle.init(ctrlID, (marginX+145), 120, marginX, 60);
  1310. ctrlGrp.addChild(ctrlID, objShpTitle);
  1311. objShpTitle.show();
  1312. objShpTitle.style.strokepen = "2 solid #c8e67b";
  1313. objShpTitle.linetype = "descent";
  1314. objShpTitle = new Shape();
  1315. ctrlID = "xforms_line" + (controlCnt++);
  1316. objShpTitle.init(ctrlID, (marginX+290), 60, (marginX+145), 120);
  1317. ctrlGrp.addChild(ctrlID, objShpTitle);
  1318. objShpTitle.show();
  1319. objShpTitle.style.strokepen = "2 solid #c8e67b";
  1320. objShpTitle.linetype = "ascent";
  1321. objShpTitle = new Shape();
  1322. ctrlID = "xforms_line" + (controlCnt++);
  1323. objShpTitle.init(ctrlID, (marginX+145), 0, (marginX+290), 60);
  1324. ctrlGrp.addChild(ctrlID, objShpTitle);
  1325. objShpTitle.show();
  1326. objShpTitle.style.strokepen = "2 solid #c8e67b";
  1327. objShpTitle.linetype = "descent";
  1328. }else if( oOpener.OpenerKind == "GPS" && !utlf_isNull(oOpener.ds_main_steppath_info.findRowExpr("stepno == '" + stepno + "' && stepstat == '20'")) ){
  1329. var objShpTitle = new Shape();
  1330. ctrlID = "xforms_line" + (controlCnt++);
  1331. objShpTitle.init(ctrlID, marginX, 60, (marginX+145), 0);
  1332. ctrlGrp.addChild(ctrlID, objShpTitle);
  1333. objShpTitle.show();
  1334. objShpTitle.style.strokepen = "2 solid #e5f3c2";
  1335. objShpTitle.linetype = "ascent";
  1336. objShpTitle = new Shape();
  1337. ctrlID = "xforms_line" + (controlCnt++);
  1338. objShpTitle.init(ctrlID, (marginX+145), 120, marginX, 60);
  1339. ctrlGrp.addChild(ctrlID, objShpTitle);
  1340. objShpTitle.show();
  1341. objShpTitle.style.strokepen = "2 solid #e5f3c2";
  1342. objShpTitle.linetype = "descent";
  1343. objShpTitle = new Shape();
  1344. ctrlID = "xforms_line" + (controlCnt++);
  1345. objShpTitle.init(ctrlID, (marginX+290), 60, (marginX+145), 120);
  1346. ctrlGrp.addChild(ctrlID, objShpTitle);
  1347. objShpTitle.show();
  1348. objShpTitle.style.strokepen = "2 solid #e5f3c2";
  1349. objShpTitle.linetype = "ascent";
  1350. objShpTitle = new Shape();
  1351. ctrlID = "xforms_line" + (controlCnt++);
  1352. objShpTitle.init(ctrlID, (marginX+145), 0, (marginX+290), 60);
  1353. ctrlGrp.addChild(ctrlID, objShpTitle);
  1354. objShpTitle.show();
  1355. objShpTitle.style.strokepen = "2 solid #e5f3c2";
  1356. objShpTitle.linetype = "descent";
  1357. }else{
  1358. var objShpTitle = new Shape();
  1359. ctrlID = "xforms_line" + (controlCnt++);
  1360. objShpTitle.init(ctrlID, marginX, 60, (marginX+145), 0);
  1361. ctrlGrp.addChild(ctrlID, objShpTitle);
  1362. objShpTitle.show();
  1363. objShpTitle.style.strokepen = "2 solid #000000";
  1364. objShpTitle.linetype = "ascent";
  1365. objShpTitle = new Shape();
  1366. ctrlID = "xforms_line" + (controlCnt++);
  1367. objShpTitle.init(ctrlID, (marginX+145), 120, marginX, 60);
  1368. ctrlGrp.addChild(ctrlID, objShpTitle);
  1369. objShpTitle.show();
  1370. objShpTitle.style.strokepen = "2 solid #000000";
  1371. objShpTitle.linetype = "descent";
  1372. objShpTitle = new Shape();
  1373. ctrlID = "xforms_line" + (controlCnt++);
  1374. objShpTitle.init(ctrlID, (marginX+290), 60, (marginX+145), 120);
  1375. ctrlGrp.addChild(ctrlID, objShpTitle);
  1376. objShpTitle.show();
  1377. objShpTitle.style.strokepen = "2 solid #000000";
  1378. objShpTitle.linetype = "ascent";
  1379. objShpTitle = new Shape();
  1380. ctrlID = "xforms_line" + (controlCnt++);
  1381. objShpTitle.init(ctrlID, (marginX+145), 0, (marginX+290), 60);
  1382. ctrlGrp.addChild(ctrlID, objShpTitle);
  1383. objShpTitle.show();
  1384. objShpTitle.style.strokepen = "2 solid #000000";
  1385. objShpTitle.linetype = "descent";
  1386. }
  1387. //day 정보를 표시한다.
  1388. if( !utlf_isNull(fcstinhospdayno) || !utlf_isNull(tmpstepnm) || cpgflagcd == "02" ){
  1389. var leftPos = 270;
  1390. var topPos = 52;
  1391. var cntl;
  1392. // var ctrlType = "xforms:img";
  1393. // var ctrlID = ctrlType + (controlCnt++);
  1394. // ctrlGrp.createChild(ctrlType, "id:"+ ctrlID + "; src:../../../com/commonweb/images/icon_startend.gif; left:" + 66 + "; top:" + 51 + "; width:20px; height:20px; background-stretch:stretch;");
  1395. var objImageViewer = new ImageViewer();
  1396. ctrlID = "xforms_img" + (controlCnt++);
  1397. //alert(this.grp_swimline.components[ctrlID]);
  1398. if(!utlf_isNull(ctrlGrp.components[ctrlID])) ctrlGrp.removeChild(ctrlID);
  1399. objImageViewer.init(ctrlID, 66, 51, 86, 71);
  1400. ctrlGrp.addChild(ctrlID, objImageViewer);
  1401. objImageViewer.show();
  1402. objImageViewer.image = "IMG::mis/icon_startend.png";
  1403. objImageViewer.stretch = "fit";
  1404. // ctrlType = "xforms:caption";
  1405. // ctrlID = ctrlType + (controlCnt++);
  1406. // cntl = ctrlGrp.createChild(ctrlType, "id:"+ ctrlID + "; left:" + 66 + "; top:" + 52 + "; width:100px; height:20px; font-size:8pt; font-weight:bolder;");
  1407. var objStatic = new Static();
  1408. ctrlID = "xforms_caption" + (controlCnt++);
  1409. //alert(this.grp_swimline.components[ctrlID]);
  1410. if(!utlf_isNull(ctrlGrp.components[ctrlID])) ctrlGrp.removeChild(ctrlID);
  1411. objStatic.init(ctrlID, 66, 52, 166, 72);
  1412. ctrlGrp.addChild(ctrlID, objStatic);
  1413. objStatic.show();
  1414. objStatic.font = "Dotum,8,bold";
  1415. cntl = objStatic;
  1416. // 2008.07.30 pymi
  1417. //cntl.attribute("text") = "D" + times;
  1418. if( stepRef.getColumn(i-1, "fixedStCntl") != null || stepRef.getColumn(i-1, "fixedStCntl") != "null" ) { // cp 검색의 경우
  1419. cntl.text = stepnm;
  1420. stepRef.setColumn(i-1, "fixedStCntl", ctrlID);
  1421. } else {
  1422. cntl.text = oOpener.ds_temp_daylist_day.lookup("id", times, "nm");// oOpener.model.getValue("/root/temp/daylist/day[id = '"+ times +"']/nm]");
  1423. stepRef.setColumn(i-1, "stepnm", cntl.text);
  1424. }
  1425. //2008.08.19 pymi (e)
  1426. }
  1427. } else if( flag == "A" || flag == "B" ) {
  1428. //액션, 브런치 스텝의 textarea를 생성한다.
  1429. // var text2 = "xforms:textarea";
  1430. // ctrlID = text2 + (controlCnt++);
  1431. if(oOpener.OpenerKind == "GPS"){
  1432. var objTextArea = new TextArea();
  1433. ctrlID = "xforms_textarea" + (controlCnt++);
  1434. //alert(this.grp_swimline.components[ctrlID]);
  1435. if(!utlf_isNull(ctrlGrp.components[ctrlID])) ctrlGrp.removeChild(ctrlID);
  1436. objTextArea.init(ctrlID, marginX, 1, marginX+290, 121);
  1437. ctrlGrp.addChild(ctrlID, objTextArea);
  1438. objTextArea.show();
  1439. objTextArea.readonly = true;
  1440. objTextArea.border = "2 solid #000000";
  1441. objTextArea.scrollbars = "autovert";
  1442. objTextArea.padding = "20 18 10 10";
  1443. objTextArea.value = stepRef.getColumn(grpControlCnt-1, "stepmemo");
  1444. // var objBindItem = new BindItem();
  1445. // objBindItem.init("item"+grpControlCnt, ctrlID, "value", stepRef, "stepmemo");
  1446. // this.addChild("item"+grpControlCnt, objBindItem);
  1447. // objBindItem.bind();
  1448. var txtareactrl = objTextArea;
  1449. if( oOpener.ds_main_steppath_info.findRowExpr("stepno=='"+stepno+"' && stepstat=='30'") > -1 ){
  1450. txtareactrl.background = "#c8e67b";
  1451. //var txtareactrl = ctrlGrp.createChild(text2, "id:"+ ctrlID + "; ref:" + stepRef+ "[" + grpControlCnt + "]/stepmemo; editable:false; left:" + marginX + "px; top:" + 1 + "px; width:" + 290 + "px; height:" + 120+ "px; border-width:2px; border-style:solid; scroll:autovscroll; padding-left:10; padding-top:18; padding-right:10; padding-bottom:10; border-color:#000000; background-color:#c8e67b");
  1452. }else if( oOpener.ds_main_steppath_info.findRowExpr("stepno=='"+stepno+"' && stepstat=='20'") > -1 ){
  1453. txtareactrl.background = "#e5f3c2";
  1454. //var txtareactrl = ctrlGrp.createChild(text2, "id:"+ ctrlID + "; ref:" + stepRef+ "[" + grpControlCnt + "]/stepmemo; editable:false; left:" + marginX + "px; top:" + 1 + "px; width:" + 290 + "px; height:" + 120+ "px; border-width:2px; border-style:solid; scroll:autovscroll; padding-left:10; padding-top:18; padding-right:10; padding-bottom:10; border-color:#000000; background-color:#e5f3c2");
  1455. }else{
  1456. //var txtareactrl = ctrlGrp.createChild(text2, "id:"+ ctrlID + "; ref:" + stepRef+ "[" + grpControlCnt + "]/stepmemo; left:" + marginX + "px; top:" + 1 + "px; width:" + 290 + "px; height:" + 120+ "px; border-width:2px; border-style:solid; scroll:autovscroll; padding-left:10; padding-top:18; padding-right:10; padding-bottom:10; border-color:#000000;");
  1457. }
  1458. }else{
  1459. var objTextArea = new TextArea();
  1460. ctrlID = "xforms_textarea" + (controlCnt++);
  1461. //alert(this.grp_swimline.components[ctrlID]);
  1462. if(!utlf_isNull(ctrlGrp.components[ctrlID])) ctrlGrp.removeChild(ctrlID);
  1463. objTextArea.init(ctrlID, marginX, 1, marginX+290, 121);
  1464. ctrlGrp.addChild(ctrlID, objTextArea);
  1465. objTextArea.show();
  1466. objTextArea.border = "2 solid #000000";
  1467. objTextArea.scrollbars = "autovert";
  1468. objTextArea.padding = "20 18 10 10";
  1469. objTextArea.value = stepRef.getColumn(grpControlCnt-1, "stepmemo");
  1470. // var objBindItem = new BindItem();
  1471. // objBindItem.init("item"+grpControlCnt, ctrlID, "value", stepRef, "stepmemo");
  1472. // this.addChild("item"+grpControlCnt, objBindItem);
  1473. // objBindItem.bind();
  1474. var txtareactrl = objTextArea;
  1475. //var txtareactrl = ctrlGrp.createChild(text2, "id:"+ ctrlID + "; ref:" + stepRef+ "[" + grpControlCnt + "]/stepmemo; left:" + marginX + "px; top:" + 1 + "px; width:" + 290 + "px; height:" + 120+ "px; border-width:2px; border-style:solid; scroll:autovscroll; padding-left:10; padding-top:18; padding-right:10; padding-bottom:10; border-color:#000000; ");
  1476. }
  1477. txtareactrl.onlbuttondown.addHandler(fPopupMenuEvent2);
  1478. txtareactrl.onrbuttonup.addHandler(fPopupMenuEvent);
  1479. txtareactrl.ontextchanged.addHandler(fSetMemo);
  1480. txtareactrl.onsetfocus.addHandler(fFocusIn);
  1481. txtareactrl.onmouseenter.addHandler(fMouseOverEvent);
  1482. //txtareactrl.bringToFront();
  1483. //day 정보를 표시한다.
  1484. if( !utlf_isNull(fcstinhospdayno) || !utlf_isNull(tmpstepnm) || cpgflagcd == "02" ){
  1485. var leftPos =308;
  1486. var topPos = 1;
  1487. var cntl;
  1488. // var ctrlType = "xforms:img";
  1489. // var ctrlID = ctrlType + (controlCnt++);
  1490. // ctrlGrp.createChild(ctrlType, "id:"+ ctrlID + "; src:../../../com/commonweb/images/icon_startend.gif; left:" + 32 + "; top:" + 0 + "; width:20px; height:20px; background-stretch:stretch;");
  1491. var objImageViewer = new ImageViewer();
  1492. ctrlID = "xforms_img" + (controlCnt++);
  1493. //alert(this.grp_swimline.components[ctrlID]);
  1494. if(!utlf_isNull(ctrlGrp.components[ctrlID])) ctrlGrp.removeChild(ctrlID);
  1495. objImageViewer.init(ctrlID, 32, 0, 52, 20);
  1496. ctrlGrp.addChild(ctrlID, objImageViewer);
  1497. objImageViewer.show();
  1498. objImageViewer.image = "IMG::mis/icon_startend.png";
  1499. objImageViewer.stretch = "fit";
  1500. objImageViewer.border = "0 none #e5e5e5ff";
  1501. // ctrlType = "xforms:caption";
  1502. // ctrlID = ctrlType + (controlCnt++);
  1503. // cntl = ctrlGrp.createChild(ctrlType, "id:"+ ctrlID + "; left:" + 32 + "; top:" + 1 + "; width:100px; height:20px; font-size:8pt; font-weight:bolder;");
  1504. //cntl.attribute("text") = "D" + times + " : "+stepnm;
  1505. var objStatic = new Static();
  1506. ctrlID = "xforms_caption" + (controlCnt++);
  1507. //alert(this.grp_swimline.components[ctrlID]);
  1508. if(!utlf_isNull(ctrlGrp.components[ctrlID])) ctrlGrp.removeChild(ctrlID);
  1509. objStatic.init(ctrlID, 32, 1, 132, 21);
  1510. ctrlGrp.addChild(ctrlID, objStatic);
  1511. objStatic.show();
  1512. objStatic.font = "Dotum,8,bold";
  1513. cntl = objStatic;
  1514. //2008.07.30 pymi (s)
  1515. if( stepRef.getColumn(i-1, "fixedStCntl") != null || stepRef.getColumn(i-1, "fixedStCntl") != "null" ) { // cp 검색의 경우
  1516. cntl.text = stepnm;
  1517. stepRef.setColumn(i-1, "fixedStCntl", ctrlID);
  1518. } else { // 생성기에서 재원일수만 넣고 자동으로 outline을 그렸을 경우
  1519. cntl.text = oOpener.ds_temp_daylist_day.lookup("id", times, "nm");//oOpener.model.getValue("/root/temp/daylist/day[id = '"+ times +"']/nm]");
  1520. stepRef.setColumn(i-1, "stepnm", cntl.text);
  1521. // cntl.attribute("text") = oOpener.model.getValue("/root/temp/daylist/day[id = '"+ times +"']/nm]");
  1522. // model.setValue(stepRef + "["+ i + "]/stepnm", cntl.attribute("text"));
  1523. }
  1524. //2008.08.19 pymi (e)
  1525. }
  1526. }
  1527. //시작, 스텝여부를 표시한다.
  1528. if( kind == "S" || kind == "E" ){ //oOpener.window.javascript.OpenerKind != "GPS" 조건 제거 (2008.12.15)
  1529. fChangeSelectCntl("#ff9900", txtareactrl);
  1530. }
  1531. if( stepRef.getColumn(i-1, "decirflag") == "I" ){
  1532. // decirflag : 입원필요 스텝
  1533. var leftPos =330;
  1534. var topPos = 20;
  1535. var cntl;
  1536. // var ctrlType = "xforms:caption";
  1537. // var ctrlID = ctrlType + (controlCnt++);
  1538. // cntl = ctrlGrp.createChild(ctrlType, "id:"+ ctrlID + "; left:" + leftPos + "; top:" + topPos + "; width:50px; height:50px; font-size:8pt; color:#ff0000; font-weight:bolder; ");
  1539. // cntl.attribute("text") = "[입원\n필요]";
  1540. var objStatic = new Static();
  1541. ctrlID = "xforms_caption" + (controlCnt++);
  1542. //alert(this.grp_swimline.components[ctrlID]);
  1543. if(!utlf_isNull(ctrlGrp.components[ctrlID])) ctrlGrp.removeChild(ctrlID);
  1544. objStatic.init(ctrlID, leftPos, topPos, leftPos+50, topPos+50);
  1545. ctrlGrp.addChild(ctrlID, objStatic);
  1546. objStatic.show();
  1547. cntl = objStatic;
  1548. cntl.font = "Dotum,8,bold";
  1549. cntl.color = "#ff0000";
  1550. cntl.text = "[입원\n필요]";
  1551. }
  1552. //2008.06.17 pymi(추가)
  1553. if( stepRef.getColumn(i-1, "decirflag") == "D" ){
  1554. // decirflag : 퇴원필요 스텝
  1555. var leftPos =330;
  1556. var topPos = 20;
  1557. var cntl;
  1558. // var ctrlType = "xforms:caption";
  1559. // var ctrlID = ctrlType + (controlCnt++);
  1560. // cntl = ctrlGrp.createChild(ctrlType, "id:"+ ctrlID + "; left:" + leftPos + "; top:" + topPos + "; width:50px; height:50px; font-size:8pt; color:#ff0000; font-weight:bolder; ");
  1561. // cntl.attribute("text") = "[퇴원\n필요]";
  1562. var objStatic = new Static();
  1563. ctrlID = "xforms_caption" + (controlCnt++);
  1564. //alert(this.grp_swimline.components[ctrlID]);
  1565. if(!utlf_isNull(ctrlGrp.components[ctrlID])) ctrlGrp.removeChild(ctrlID);
  1566. objStatic.init(ctrlID, leftPos, topPos, leftPos+50, topPos+50);
  1567. ctrlGrp.addChild(ctrlID, objStatic);
  1568. objStatic.show();
  1569. cntl = objStatic;
  1570. cntl.font = "Dotum,8,bold";
  1571. cntl.color = "#ff0000";
  1572. cntl.text = "[퇴원\n필요]";
  1573. }
  1574. if( stepRef.getColumn(i-1, "decirflag") == "O" ){
  1575. // decirflag : 외래예약필요 스텝
  1576. var leftPos =330;
  1577. var topPos = 20;
  1578. var cntl;
  1579. // var ctrlType = "xforms:caption";
  1580. // var ctrlID = ctrlType + (controlCnt++);
  1581. // cntl = ctrlGrp.createChild(ctrlType, "id:"+ ctrlID + "; left:" + leftPos + "; top:" + topPos + "; width:50px; height:50px; font-size:8pt; color:#ff0000; font-weight:bolder; ");
  1582. // cntl.attribute("text") = "[외래\n예약\n필요]";
  1583. var objStatic = new Static();
  1584. ctrlID = "xforms_caption" + (controlCnt++);
  1585. //alert(this.grp_swimline.components[ctrlID]);
  1586. if(!utlf_isNull(ctrlGrp.components[ctrlID])) ctrlGrp.removeChild(ctrlID);
  1587. objStatic.init(ctrlID, leftPos, topPos, (leftPos+50), (topPos+50));
  1588. ctrlGrp.addChild(ctrlID, objStatic);
  1589. objStatic.show();
  1590. cntl = objStatic;
  1591. cntl.font = "Dotum,8,bold";
  1592. cntl.color = "#ff0000";
  1593. cntl.text = "[외래\n예약\n필요]";
  1594. }
  1595. //2008.06.17 pymi(종료)
  1596. // 2008.08.06 pymi(추가)
  1597. if( stepRef.getColumn(i-1, "decirflag") == "C" ){
  1598. // decirflag : DSC 필요 스텝
  1599. var leftPos =330;
  1600. var topPos = 20;
  1601. var cntl;
  1602. // var ctrlType = "xforms:caption";
  1603. // var ctrlID = ctrlType + (controlCnt++);
  1604. // cntl = ctrlGrp.createChild(ctrlType, "id:"+ ctrlID + "; left:" + leftPos + "; top:" + topPos + "; width:50px; height:50px; font-size:8pt; color:#ff0000; font-weight:bolder; ");
  1605. // cntl.attribute("text") = "[DSC\n필요]";
  1606. var objStatic = new Static();
  1607. ctrlID = "xforms_caption" + (controlCnt++);
  1608. //alert(this.grp_swimline.components[ctrlID]);
  1609. if(!utlf_isNull(ctrlGrp.components[ctrlID])) ctrlGrp.removeChild(ctrlID);
  1610. objStatic.init(ctrlID, leftPos, topPos, (leftPos+50), (topPos+50));
  1611. ctrlGrp.addChild(ctrlID, objStatic);
  1612. objStatic.show();
  1613. cntl = objStatic;
  1614. cntl.font = "Dotum,8,bold";
  1615. cntl.color = "#ff0000";
  1616. cntl.text = "[DSC\n필요]";
  1617. }
  1618. // 2008.08.06 pymi(종료)
  1619. /*
  1620. if( oOpener.window.javascript.OpenerKind == "GPS" ){
  1621. if( oOpener.instance1.selectSingleNode("/root/main/steppath/info[stepno = '" + i + "' and prcpdd = '" + getCurrentDate() + "']/stepno") ){
  1622. fChangeSelectCntl("#FF0000", txtareactrl); //당일=빨강색
  1623. }else if( oOpener.instance1.selectSingleNode("/root/main/steppath/info[stepno = '" + i + "' and (stepstat = '20' or stepstat = '30' )]/stepno") ){
  1624. fChangeSelectCntl("#8EBCFF", txtareactrl); //진행중=하늘색
  1625. }else{
  1626. if( kind == "S" || kind == "E" ) //2008.12.06
  1627. fChangeSelectCntl("#ff9900", txtareactrl); //시작/종료=주황색
  1628. }
  1629. }
  1630. */
  1631. //서식존재 여부를 표시한다.
  1632. if( cpgflagcd == "01" ){
  1633. if( stepRef.getColumn(i-1, "formexistyn") != "Y" ){
  1634. var objImageViewer = new ImageViewer();
  1635. var cntl;
  1636. var ctrlType = "xforms_img";
  1637. var ctrlID = ctrlType + (controlCnt++);
  1638. if(!utlf_isNull(ctrlGrp.components[ctrlID])) ctrlGrp.removeChild(ctrlID);
  1639. if( flag == "D" ) {
  1640. //Decision
  1641. var leftPos = 330;
  1642. var topPos = 52;
  1643. }else{
  1644. //Action
  1645. var leftPos =330;
  1646. var topPos = 1;
  1647. }
  1648. // ctrl = ctrlGrp.createChild(ctrlType, "id:"+ ctrlID + "; src:../../../com/commonweb/images/input_s_essential.gif; left:" + leftPos + "; top:" + topPos + "; background-stretch:stretch;");
  1649. // ctrl.hint = "처방 및 서식이 등록되지 않은 스텝입니다.";
  1650. objImageViewer.init(ctrlID, leftPos, topPos, (leftPos+10), (topPos+10));
  1651. ctrlGrp.addChild(ctrlID, objImageViewer);
  1652. objImageViewer.show();
  1653. objImageViewer.image = "IMG::com/input_essential.png";
  1654. objImageViewer.stretch = "fit";
  1655. objImageViewer.border = "0 none #e5e5e5ff";
  1656. ctrl = objImageViewer;
  1657. ctrl.tooltiptext = "처방 및 서식이 등록되지 않은 스텝입니다.";
  1658. ctrl.tooltiptype = "hover";
  1659. }
  1660. }
  1661. //@CPG 속성의 존재 여부 표시한다.
  1662. else if( cpgflagcd == "02" ){
  1663. if( stepRef.getColumn(i-1, "formexistyn") == "Y" ){
  1664. var objImageViewer = new ImageViewer();
  1665. var cntl;
  1666. var ctrlType = "xforms_img";
  1667. var ctrlID = ctrlType + (controlCnt++);
  1668. if(!utlf_isNull(ctrlGrp.components[ctrlID])) ctrlGrp.removeChild(ctrlID);
  1669. if( flag == "D" ) {
  1670. //Decision
  1671. var leftPos = 330;
  1672. var topPos = 52;
  1673. }else{
  1674. //Action
  1675. var leftPos =330;
  1676. var topPos = 1;
  1677. }
  1678. // ctrl = ctrlGrp.createChild(ctrlType, "id:"+ ctrlID + "; src:../../../com/commonweb/images/input_essential.gif; left:" + leftPos + "; top:" + topPos + "; background-stretch:stretch;");
  1679. // ctrl.hint = "작성해야 할 서식이 등록되어 있습니다.";
  1680. objImageViewer.init(ctrlID, leftPos, topPos, (leftPos+10), (topPos+10));
  1681. ctrlGrp.addChild(ctrlID, objImageViewer);
  1682. objImageViewer.show();
  1683. objImageViewer.image = "IMG::com/input_essential.png";
  1684. objImageViewer.stretch = "fit";
  1685. objImageViewer.border = "0 none #e5e5e5ff";
  1686. ctrl = objImageViewer;
  1687. ctrl.tooltiptext = "작성해야 할 서식이 등록되어 있습니다.";
  1688. ctrl.tooltiptype = "hover";
  1689. }
  1690. var iAttrFlag = stepattrflag.split("/");
  1691. var cntl;
  1692. var topPos = 4;
  1693. var kWidth = 15;
  1694. //var ctrlType = "xforms_caption";
  1695. var attrFlagNm = "";
  1696. var attrFlagCd = "";
  1697. for( var k=0; k<iAttrFlag.length; k++ ){
  1698. var leftPos = 238 + ((k+1)*15) + (k+2);
  1699. if( iAttrFlag[k] != "0" ) var colorCd = "#000000"; //검정
  1700. else var colorCd = "#c0c0c0"; //회색
  1701. if(k==0) {
  1702. attrFlagNm = "O";
  1703. attrFlagCd = "@O"; //처방 (@O)
  1704. }
  1705. else if(k==1) {
  1706. attrFlagNm = "M";
  1707. attrFlagCd = "@M"; //모니터링 (@M)
  1708. }
  1709. else if(k==2) {
  1710. attrFlagNm = "T";
  1711. attrFlagCd = "@T"; //제한시간 (@T)
  1712. }
  1713. else if(k==3) {
  1714. attrFlagNm = "MO";
  1715. attrFlagCd = "@D"; //약속처방모니터링오더 (@Dummy)
  1716. kWidth = 22;
  1717. }
  1718. // var ctrlID = ctrlType + (controlCnt++) + "_" + attrFlagCd; //CPG 속성 정보 아이콘 버튼 => xforms:caption00_@X
  1719. // cntl = ctrlGrp.createChild(ctrlType, "id:"+ ctrlID + "; left:" + leftPos + "; top:" + topPos + "; width:" + kWidth + "px; height:20px; color:" + colorCd + "; text-align:center; background-color:#ffcc99;");
  1720. var objStatic = new Static();
  1721. var ctrlID = "xforms_caption" + (controlCnt++) + "_" + attrFlagCd;
  1722. if(!utlf_isNull(ctrlGrp.components[ctrlID])) ctrlGrp.removeChild(ctrlID);
  1723. objStatic.init(ctrlID, leftPos, topPos, (leftPos+kWidth), (topPos+20));
  1724. ctrlGrp.addChild(ctrlID, objStatic);
  1725. objStatic.show();
  1726. cntl = objStatic;
  1727. cntl.color = colorCd;
  1728. cntl.align = "center middle";
  1729. cntl.background = "#ffcc99";
  1730. cntl.text = attrFlagNm;
  1731. cntl.onmouseenter.addHandler(fMouseOverEvent);
  1732. //cntl.onkillfocus.addHandler(fFocusOut);
  1733. cntl.onlbuttondown.addHandler(fPopupMenuEvent2);
  1734. cntl.onrbuttonup.addHandler(fPopupMenuEvent);
  1735. }
  1736. //CPG+CP 인 경우, CP스텝을 표시해줌 (2010.06.28)
  1737. if( stepRef.getColumn(i-1, "settypecd") == "W"){
  1738. var leftPos =0;
  1739. var topPos = 0;
  1740. var cntl;
  1741. // var ctrlType = "xforms:caption";
  1742. // var ctrlID = ctrlType + (controlCnt++);
  1743. // cntl = ctrlGrp.createChild(ctrlType, "id:"+ ctrlID + "; left:" + leftPos + "; top:" + topPos + "; width:50px; height:23px; font-size:8pt; font-weight:bolder; "); //; color:#ff0000
  1744. var objStatic = new Static();
  1745. var ctrlID = "xforms_caption" + (controlCnt++);
  1746. if(!utlf_isNull(ctrlGrp.components[ctrlID])) ctrlGrp.removeChild(ctrlID);
  1747. objStatic.init(ctrlID, leftPos, topPos, (leftPos+50), (topPos+23));
  1748. ctrlGrp.addChild(ctrlID, objStatic);
  1749. objStatic.show();
  1750. cntl = objStatic;
  1751. cntl.fond = "Dotum,8,bold";
  1752. cntl.text = "[CP]";
  1753. }
  1754. } //end CPG 속성
  1755. }
  1756. //스텝 구간의 시작과 끝 설정 (2010.06.03)
  1757. /*var appScopStartNo = "";
  1758. var appScopEndNo = "";
  1759. var appScopYN = "N";
  1760. if(oOpener.window.javascript.OpenerKind == "GPS"){
  1761. var appStepScopList = oOpener.instance1.selectNodes("/root/main/steppath/info[stepstat='30']");
  1762. if( appStepScopList.length > 0 ){
  1763. for(var k=0; k<appStepScopList.length; k++){
  1764. var node = appStepScopList.item(k);
  1765. if(k == 0) appScopStartNo = node.selectSingleNode("stepno").text;
  1766. else if(k == appStepScopList.length-1){
  1767. appScopEndNo = node.selectSingleNode("stepno").text;
  1768. }
  1769. }
  1770. }
  1771. }*/
  1772. // 라인 연결 재설정
  1773. for(var i=1; i<=stepCnt ; i++){
  1774. var cntlKind = stepRef.getColumn(i-1, "stepflagcd");
  1775. var cntlno = stepRef.getColumn(i-1, "stepno");
  1776. //var stepstat = oOpener.instance1.selectSingleNode("/root/main/steppath/info[stepno = '" + cntlno + "' and stepstat='30']/stepstat");
  1777. if( cntlKind == "D" ) {
  1778. var dcsnstep = oOpener.ds_main_steppath_info.lookup("stepno", cntlno, "answstepno");
  1779. nodeList = dcsRef;
  1780. dcsCntlCnt = nodeList.rowcount;
  1781. for(var k=0; k<dcsCntlCnt; k++){
  1782. //var node = nodeList.item(k);
  1783. var stepNode = nodeList.getColumn(k, "stepno");
  1784. var lnkNode = nodeList.getColumn(k, "lnkstepno");
  1785. if( !utlf_isNull(lnkNode) && cntlno == stepNode ){ //2919 line에서 설정됨..
  1786. if( !utlf_isNull(dcsnstep) ){
  1787. if( !utlf_isNull(dcsnstep) && dcsnstep == lnkNode)
  1788. fCreateControl_Line( stepNode, lnkNode, "#FF0000" );
  1789. else
  1790. fCreateControl_Line( stepNode, lnkNode );
  1791. } else {
  1792. fCreateControl_Line( stepNode, lnkNode );
  1793. }
  1794. }
  1795. //if( cntlno == appScopStartNo ) appScopYN = "Y"; //적용 구간 시작
  1796. //else if( cntlno == appScopEndNo ) appScopYN = "N"; //적용 구간 종료
  1797. }
  1798. dcsCntlCnt++;
  1799. } else {
  1800. var lnkno = stepRef.getColumn(i-1, "lnkstepno");
  1801. if( !utlf_isNull(lnkno) ){
  1802. /*
  1803. if( cntlno == appScopStartNo ) appScopYN = "Y"; //적용 구간 시작
  1804. if( cntlno == appScopEndNo ) appScopYN = "N"; //적용 구간 종료
  1805. if( appScopYN == "N" ){
  1806. fCreateControl_Line( cntlno, lnkno );
  1807. }else{
  1808. if( lnkno != appScopEndNo )
  1809. fCreateControl_Line( cntlno, lnkno, "#FF0000" );
  1810. else{
  1811. if( stepstat != null && oOpener.instance1.selectSingleNode("/root/main/steppath/info[stepno = '" + lnkno + "' and stepstat='30']") != null )
  1812. fCreateControl_Line( cntlno, lnkno, "#FF0000" );
  1813. else fCreateControl_Line( cntlno, lnkno );
  1814. }
  1815. }
  1816. if( lnkno == appScopEndNo ) appScopYN = "N"; //적용 구간 종료
  1817. */
  1818. if( oOpener.objects["ds_main_steppath_info"] != null
  1819. && !utlf_isNull(oOpener.ds_main_steppath_info.lookupExpr("stepno=='"+cntlno+"' && stepstat=='30'"))
  1820. && !utlf_isNull(oOpener.ds_main_steppath_info.lookupExpr("stepno=='"+lnkno+"' && stepstat=='30'")) )
  1821. fCreateControl_Line( cntlno, lnkno, "#FF0000" );
  1822. else
  1823. fCreateControl_Line( cntlno, lnkno );
  1824. }
  1825. }
  1826. }
  1827. // 스크롤 초기화
  1828. if( grp_swimline.scrollbars != "none" ){
  1829. grp_swimline.resetScroll();
  1830. }
  1831. if( oOpener.frmf_getScreenID() == "SMMQP00600" || oOpener.name == "SMMQP00600" ){ // CP 생성기
  1832. if(oOpener.grp_biz.btn_action_tab.getSelectStatus() == true){
  1833. grp_swimline.ivw_detail.bringToFront();
  1834. }
  1835. }
  1836. }
  1837. /**
  1838. * @group :
  1839. * @ver : 2007.07
  1840. * @by : 전지은
  1841. * @---------------------------------------------------
  1842. * @type : function
  1843. * @access : public
  1844. * @desc : 컨트롤간의 연결라인을 그려준다.
  1845. * @param : cntlno, lnkno
  1846. * @return :
  1847. * @---------------------------------------------------
  1848. */
  1849. function fCreateControl_Line( cntlno, lnkno, color ){
  1850. utlf_addLog("fCreateControl_Line>>>");
  1851. currentStepCntl = this.grp_swimline.components["xforms_group" + (parseInt(cntlno)-1)];
  1852. prevStepCntl = this.grp_swimline.components["xforms_group" + (parseInt(lnkno)-1)];
  1853. if( !utlf_isNull(currentStepCntl) && !utlf_isNull(prevStepCntl) ){
  1854. var frXPoint = parseInt(currentStepCntl.position.left) + (parseInt(currentStepCntl.position.width) / 2 ) -15; //★ 오류발생
  1855. var frYPoint = parseInt(currentStepCntl.position.top) + parseInt(currentStepCntl.position.height);
  1856. var toXPoint = parseInt(prevStepCntl.position.left) + (parseInt(prevStepCntl.position.width) / 2 ) -15; // err
  1857. var toYPoint = parseInt(prevStepCntl.position.top);
  1858. // ctrlID = "xforms:line" + (controlCnt++);
  1859. // var ctrl = grp_swimline.createChild("xforms:line", "id:"+ ctrlID + "; x1:" + frXPoint + "px; y1:" + frYPoint + "px; x2:" + toXPoint + "px; y2:" + toYPoint + "px; border-width:2;");
  1860. var objShpTitle = new Shape();
  1861. ctrlID = "xforms_line" + (controlCnt++);
  1862. if(!utlf_isNull(this.grp_swimline.components[ctrlID])) this.grp_swimline.removeChild(ctrlID);
  1863. objShpTitle.init(ctrlID, frXPoint, frYPoint, toXPoint+2, toYPoint);
  1864. grp_swimline.addChild(ctrlID, objShpTitle);
  1865. objShpTitle.show();
  1866. var ctrl = objShpTitle;
  1867. if( !utlf_isNull(color) ){
  1868. //objShpTitle.border = "2 solid "+color;
  1869. objShpTitle.style.strokepen = "2 solid "+color;
  1870. }else{
  1871. //objShpTitle.border = "2 solid #000000";
  1872. objShpTitle.style.strokepen = "2 solid #000000";
  1873. }
  1874. objShpTitle.linetype = "vertical";
  1875. //connection line
  1876. swimlineControlArray[controlCnt-1] = ctrlID+"_CN";
  1877. /*
  1878. //복잡한 CPG는 연결이 한눈에 들어오지 않으므로, 화살표 표시 추가 (2009.02.26)
  1879. if( cpgflagcd == "02" ){
  1880. var lftXPoint = toXPoint - 5;
  1881. var lftYPoint = toYPoint - 5;
  1882. var rgtXPoint = toXPoint + 5;
  1883. var rgtYPoint = toYPoint + 5;
  1884. ctrlID = "xforms:line" + (controlCnt++);
  1885. var ctrl = grp_swimline.createChild("xforms:line", "id:"+ ctrlID + "; x1:" + toXPoint + "px; y1:" + toYPoint + "px; x2:" + frXPoint2 + "px; y2:" + frYPoint2 + "px; border-width:2;");
  1886. if( !isNull(color) ){
  1887. ctrl.attribute("border-color") = color;
  1888. }
  1889. ctrlID = "xforms:line" + (controlCnt++);
  1890. var ctrl = grp_swimline.createChild("xforms:line", "id:"+ ctrlID + "; x1:" + toXPoint + "px; y1:" + toYPoint + "px; x2:" + toXPoint2 + "px; y2:" + toYPoint2 + "px; border-width:2;");
  1891. if( !isNull(color) ){
  1892. ctrl.attribute("border-color") = color;
  1893. }
  1894. }
  1895. */
  1896. prevStepCntl = null;
  1897. currentStepCntl = null;
  1898. }
  1899. }
  1900. /****************************************************************************************
  1901. * Function : fPopupMenuEvent2
  1902. * Description : textarea 의 왼쪽 마우스 버튼 이벤트 생성(팝업메뉴 허용 이벤트)
  1903. * Argument :
  1904. * return type :
  1905. * Creator :
  1906. ****************************************************************************************/
  1907. function fPopupMenuEvent2(obj:TextArea, e:MouseEventInfo){
  1908. utlf_addLog(">>> fPopupMenuEvent2 >>> obj.name : " + obj.name);
  1909. // var curStepCntl = null;
  1910. if( utlf_isNull(curStepCntl) ){
  1911. // var ctrl = obj.name;
  1912. // ctrl = (event.target);
  1913. // var selControl = document.controls(ctrl);
  1914. // var id = selControl.parent.attribute("id");
  1915. // currentStepCntl = document.controls(id);
  1916. var ctrl = obj.name; //(event.target);
  1917. var selControl = obj; //document.controls(ctrl); //현재 선택한 컨트롤(textarea)
  1918. var id = selControl.parent.name; //selControl.parent.attribute("id");
  1919. currentStepCntl = this.grp_swimline.components[id]; //선택한 컨트롤을 담고 있는 그룹 컨트롤(group)
  1920. }else{
  1921. currentStepCntl = this.grp_swimline.components[curStepCntl]; //선택한 컨트롤을 담고 있는 그룹 컨트롤(group)
  1922. curStepCntl = null;
  1923. }
  1924. utlf_addLog("1563 currentStepCntl : " + currentStepCntl);
  1925. var curID = currentStepCntl.name;
  1926. var curNo = parseInt( curID.substr(12, curID.length-12) );
  1927. utlf_addLog("1599 curNo : " + curNo);
  1928. oOpener.ds_main_stepinfo_info.enableevent = false;
  1929. oOpener.ds_main_stepinfo_info.setColumn(0,"stepno" , stepRef.getColumn(curNo,"stepno"));
  1930. oOpener.ds_main_stepinfo_info.setColumn(0,"times" , stepRef.getColumn(curNo,"times"));
  1931. oOpener.ds_main_stepinfo_info.setColumn(0,"stepnm" , stepRef.getColumn(curNo,"stepnm"));
  1932. oOpener.ds_main_stepinfo_info.setColumn(0,"stepmemo" , stepRef.getColumn(curNo,"stepmemo"));
  1933. // 2008.08.21 pymi
  1934. //oOpener.model.setValue( "/root/main/stepinfo/info/daynm", model.getValue(stepRef + "[" + curNo + "]/tmpstepnm") );
  1935. ds_main_temp_selectedstep.setColumn(0,"stepno" , stepRef.getColumn(curNo,"stepno"));
  1936. ds_main_temp_selectedstep.setColumn(0,"stepflagcd" , stepRef.getColumn(curNo,"stepflagcd"));
  1937. oOpener.ds_main_stepinfo_info.setColumn(0,"stepflagcd" , stepRef.getColumn(curNo,"stepflagcd"));
  1938. oOpener.ds_main_stepinfo_info.setColumn(0,"setno" , stepRef.getColumn(curNo,"setno"));
  1939. oOpener.ds_main_stepinfo_info.enableevent = true;
  1940. //return true;
  1941. // }
  1942. }
  1943. /****************************************************************************************
  1944. * Function : fPopupMenuEvent
  1945. * Description : textarea 의 오른쪽 마우스 버튼 이벤트 생성(팝업메뉴 허용 이벤트)
  1946. * Argument :
  1947. * return type :
  1948. * Creator :
  1949. ****************************************************************************************/
  1950. function fPopupMenuEvent(obj:TextArea, e:MouseEventInfo){
  1951. // var curStepCntl = null;
  1952. if( utlf_isNull(curStepCntl) ){
  1953. // var ctrl = obj.name;
  1954. // ctrl = (event.target);
  1955. // var selControl = document.controls(ctrl);
  1956. // var id = selControl.parent.attribute("id");
  1957. // currentStepCntl = document.controls(id);
  1958. var ctrl = obj.name; //(event.target);
  1959. var selControl = obj; //document.controls(ctrl); //현재 선택한 컨트롤(textarea)
  1960. var id = selControl.parent.name; //selControl.parent.attribute("id");
  1961. utlf_addLog("selControl : " + selControl);
  1962. utlf_addLog("id : " + id );
  1963. currentStepCntl = this.grp_swimline.components[id]; //선택한 컨트롤을 담고 있는 그룹 컨트롤(group)
  1964. trace("currentStepCntl : " + currentStepCntl.name);
  1965. }else{
  1966. currentStepCntl = this.grp_swimline.components[curStepCntl]; //선택한 컨트롤을 담고 있는 그룹 컨트롤(group)
  1967. curStepCntl = null;
  1968. }
  1969. var curID = currentStepCntl.name;
  1970. var curNo = parseInt( curID.substr(12, curID.length-12) ) ;
  1971. utlf_addLog("curNo : " + curNo );
  1972. oOpener.ds_main_stepinfo_info.enableevent = false;
  1973. oOpener.ds_main_stepinfo_info.setColumn(0,"stepno" , stepRef.getColumn(curNo,"stepno"));
  1974. oOpener.ds_main_stepinfo_info.setColumn(0,"times" , stepRef.getColumn(curNo,"times"));
  1975. // oOpener.ipt_times.refresh();
  1976. // oOpener.ipt_times_old.refresh();
  1977. oOpener.ds_main_stepinfo_info.setColumn(0,"stepnm" , stepRef.getColumn(curNo,"stepnm"));
  1978. // oOpener.ipt_stepnm.refresh();
  1979. oOpener.ds_main_stepinfo_info.setColumn(0,"stepmemo" , stepRef.getColumn(curNo,"stepmemo"));
  1980. // oOpener.tar_stepmemo.refresh();
  1981. // 2008.08.21 pymi
  1982. //oOpener.model.setValue( "/root/main/stepinfo/info/daynm", model.getValue(stepRef + "[" + curNo + "]/tmpstepnm") );
  1983. //oOpener.cmb_stepnm.refresh();
  1984. ds_main_temp_selectedstep.setColumn(0,"stepno" , stepRef.getColumn(curNo,"stepno"));
  1985. ds_main_temp_selectedstep.setColumn(0,"stepflagcd" , stepRef.getColumn(curNo,"stepflagcd"));
  1986. oOpener.ds_main_stepinfo_info.setColumn(0,"stepflagcd" , stepRef.getColumn(curNo,"stepflagcd"));
  1987. oOpener.ds_main_stepinfo_info.setColumn(0,"setno" , stepRef.getColumn(curNo,"setno"));
  1988. oOpener.ds_main_stepinfo_info.enableevent = true;
  1989. // if(event.button == 3){
  1990. // event.preventDefault();
  1991. if( oOpener.OpenerKind != "GPS" ){
  1992. if( oOpener.ds_temp_getdata.getColumn(0,"authflag") == "M" || oOpener.ds_temp1_getdata.getColumn(0,"authflag") == "M" )
  1993. // window.setPopupMenu(true, "/root/main/outlineinfo/menu/popupmenu1/item", "name", "func", false);
  1994. pmn_menu1.trackPopup(e.screenX,e.screenY);
  1995. return true;
  1996. }else{
  1997. if( ds_temp_getdata.getColumn(0,"authflag") != "U" ) return true;
  1998. if( ds_main_outlineinfo_info.getColumn(0,"cpgflagcd") == "02" ){
  1999. if( stepRef.getColumn(curNo,"stepflagcd") == "D"){
  2000. if( decisionMode == "false" ){
  2001. // window.setPopupMenu(true, "/root/main/outlineinfo/menu/popupmenu3/item", "name", "func", false);
  2002. pmn_menu3.trackPopup(e.screenX,e.screenY);
  2003. }else{
  2004. // window.setPopupMenu(true, "/root/main/outlineinfo/menu/popupmenu7/item", "name", "func", false);
  2005. pmn_menu7.trackPopup(e.screenX,e.screenY);
  2006. }
  2007. }else{
  2008. if( stepRef.getColumn(curNo,"settypecd") == "W" ){
  2009. if( oOpener.ds_main_steppath_info.getColumn(curNo,"stepstat") == "10" )
  2010. // window.setPopupMenu(true, "/root/main/outlineinfo/menu/popupmenu8/item", "name", "func", false);
  2011. pmn_menu8.trackPopup(e.screenX,e.screenY);
  2012. // else initPopupMenu();
  2013. }else{
  2014. // window.setPopupMenu(true, "/root/main/outlineinfo/menu/popupmenu5/item", "name", "func", false);
  2015. pmn_menu5.trackPopup(e.screenX,e.screenY);
  2016. }
  2017. }
  2018. }else{
  2019. //중간타기 CP 허용에 따른 시작스텝 설정 메뉴 추가 (2009.02.19)
  2020. var D0stepNode = oOpener.ds_main_steppath_info.getColumn(oOpener.ds_main_steppath_info.findRow("times",0),"stepno");
  2021. if( oOpener.ds_temp1_getdata.getColumn(0,"appstat") < "10" && utlf_isNull(D0stepNode) ){ //D0 CP이거나 이미 진행중인 경우 중간타기 불가
  2022. // window.setPopupMenu(true, "/root/main/outlineinfo/menu/popupmenu6/item", "name", "func", false);
  2023. pmn_menu6.trackPopup(e.screenX,e.screenY);
  2024. }else{
  2025. // initPopupMenu();
  2026. }
  2027. }
  2028. }
  2029. return true;
  2030. // }
  2031. }
  2032. /****************************************************************************************
  2033. * Function : fSetMemo
  2034. * Description : 스텝 안의 내용을 처음 입력하거나 변경하면, Opener의 memo 란에 내용이 함께 반영된다.
  2035. * Argument :
  2036. * return type :
  2037. * Creator :
  2038. ****************************************************************************************/
  2039. function fSetMemo(obj:TextArea, e:TextChangedEventInfo){
  2040. //현재 선택된 스텝이 아니라, 이전에 선택되어 수정된 스텝의 내용을 반영해야 함.
  2041. //var curID = currentStepCntl.attribute("id");
  2042. var ctrl = obj; //(event.target);
  2043. var curID = changedCntl.name; //changedCntl.attribute("id");
  2044. var curNo = parseInt( curID.substr(12, curID.length-12) );
  2045. stepRef.setColumn(curNo, "stepmemo", obj.value);
  2046. var checkChar = utlf_transNullToEmpty(stepRef.getColumn(curNo,"stepmemo"));
  2047. //alert ( checkChar.isByteSize(300) );
  2048. if(checkChar.isByteSize(2048) == false){
  2049. //messageBox("한글 300자, ", "E003");
  2050. }
  2051. if( oOpener.grp_biz.tar_stepmemo.enable == true ){
  2052. //글자 길이 체크한다
  2053. var checkChar = stepRef.getColumn(curNo,"stepmemo");
  2054. if( utlf_getStringLength(checkChar) > 2048 ){
  2055. stepRef.setColumn(curNo,"stepmemo", checkChar.substr(0, 2048) );
  2056. sysf_messageBox("문자열의 길이가 2048 Byte를", "E003");
  2057. }
  2058. oOpener.ds_main_stepinfo_info.enableevent = false;
  2059. oOpener.ds_main_stepinfo_info.setColumn(0,"stepmemo", stepRef.getColumn(curNo,"stepmemo") );
  2060. // 선택된 스텝이 없을 때 상단의 스텝정보에 데이터 입력을 막기 위해 처리함 (2007.12.17 수정)
  2061. if( curID.substr(0, 15) == "xforms_textarea" ){
  2062. var curID2 = currentStepCntl.name; //currentStepCntl.attribute("id");
  2063. var curNo2 = parseInt( curID2.substr(12, curID2.length-12) );
  2064. oOpener.ds_main_stepinfo_info.setColumn(0,"stepmemo", stepRef.getColumn(curNo2,"stepmemo") );
  2065. }
  2066. oOpener.ds_main_stepinfo_info.enableevent = true;
  2067. oOpener.grp_biz.tar_stepmemo.redraw();
  2068. changedCntl.redraw();
  2069. }
  2070. if( stepRef.getColumn(curNo,"m") != "i" ){
  2071. stepRef.setColumn(curNo,"m", "u");
  2072. }
  2073. }
  2074. /****************************************************************************************
  2075. * Function : fFocusIn
  2076. * Description :
  2077. * Argument :
  2078. * return type :
  2079. * Creator :
  2080. ****************************************************************************************/
  2081. function fFocusIn(obj:TextArea, e:SetFocusEventInfo){
  2082. utlf_addLog(">>> fFocusIn >>>" + obj.name);
  2083. if( utlf_isNull(currentStepCntl) ){
  2084. var ctrl = obj.name; //(event.target);
  2085. var selControl = obj; //document.controls(ctrl); //현재 선택한 컨트롤(textarea)
  2086. var curID = selControl.parent.name; //selControl.parent.attribute("id");
  2087. currentStepCntl = this.grp_swimline.components[curID]; //선택한 컨트롤을 담고 있는 그룹 컨트롤(group)
  2088. if( utlf_isNull(selectedControl) ){
  2089. selectedControl = currentStepCntl;
  2090. }
  2091. }
  2092. changedCntl = currentStepCntl;
  2093. oOpener.grp_biz.ipt_stepnm.enable = true;
  2094. oOpener.grp_biz.tar_stepmemo.enable = true;
  2095. //if(cpgflagcd == "01"){
  2096. oOpener.grp_biz.ipt_times.enable = true;
  2097. oOpener.grp_biz.ipt_times_old.enable = true;
  2098. //}
  2099. // 2008.08.21 pymi
  2100. if(oOpener.OpenerKind == "GPS"){
  2101. oOpener.grp_biz.cmb_stepnm.enable = false;
  2102. } else {
  2103. if( oOpener.grp_biz.rdo_ioflagcd.value != "O") oOpener.grp_biz.cmb_stepnm.enable = true;
  2104. }
  2105. }
  2106. /****************************************************************************************
  2107. * Function : fMouseOverEvent
  2108. * Description : 연결설정 모드일 경우, 컨트롤에 마우스를 over 하면 마우스 커서가 바뀐다.
  2109. * Argument :
  2110. * return type :
  2111. * Creator :
  2112. ****************************************************************************************/
  2113. function fMouseOverEvent(obj:TextArea, e:MouseEventInfo) {
  2114. var ctrl = obj.name; //(event.target);
  2115. var selControl = obj; //document.controls(ctrl); //현재 선택한 컨트롤(textarea)
  2116. var cntlID = obj.name; //selControl.attribute("id");
  2117. var selMode = connectionMode;
  2118. //xforms:caption00_@X
  2119. //cntlID.substr(cntlID.length-3, 1)
  2120. if( cntlID.substr(cntlID.length-3, 2) == "_@" ){ //????? 골뱅이는 무엇?
  2121. if( selControl.style.color == "#000000" ){
  2122. selMode = "true";
  2123. }
  2124. }
  2125. if(selMode == "true"){
  2126. selControl.style.cursor = "pointer";
  2127. } else {
  2128. selControl.style.cursor = "default";
  2129. }
  2130. }
  2131. /*↓↓↓↓↓↓↓↓↓↓↓ 팝업메뉴 선택시 실행함수 시작 ↓↓↓↓↓↓↓↓↓↓↓*/
  2132. /****************************************************************************************
  2133. * Function : fSetLink
  2134. * Description : 하위 스텝을 선택하면, 연결한다.
  2135. * Argument :
  2136. * return type :
  2137. * Creator :
  2138. ****************************************************************************************/
  2139. function fSetLink(){
  2140. var prntID = currentStepCntl.name; //.attribute("id");
  2141. var prntControl = this.grp_swimline.components[prntID];
  2142. prevStepCntl = prntControl; //하위
  2143. //setStepLink(prntControl, null);
  2144. }
  2145. /****************************************************************************************
  2146. * Function : fDelLink
  2147. * Description : 컨트롤을 연결하는 연결선을 삭제한다.
  2148. * Argument : trgNo - 삭제대상 Line번호
  2149. * return type :
  2150. * Creator :
  2151. ****************************************************************************************/
  2152. function fDelLink( trgNo ){
  2153. if(utlf_isNull(currentStepCntl)){
  2154. // sysf_messageBox("삭제할 대상을", "C002");
  2155. // return;
  2156. }
  2157. //현재 컨트롤의 인스턴스에서 lnkstepno 를 삭제한 후, fCreateControl() 를 호출한다.
  2158. if( utlf_isNull(trgNo) ){
  2159. var curID = currentStepCntl.name;
  2160. var curNo = parseInt( curID.substr(12, curID.length-12) );
  2161. var delYN = "N";
  2162. } else {
  2163. var curNo = trgNo;
  2164. var delYN = "Y";
  2165. }
  2166. var type = stepRef.getColumn(curNo,"stepflagcd" );
  2167. var cntlNo = stepRef.getColumn(curNo,"stepno");
  2168. //1. 선택한 스텝의 하위 스텝과의 연결을 해제한다.
  2169. if( type == "D"){
  2170. //저장된 데이터 이므로, 삭제할 step 정보를 따로 담아두었다가 한꺼번에 삭제한다.
  2171. var arrTmp = new Array();
  2172. arrTmp = objExt.findRows(dcsRef, "stepno", curNo+1);
  2173. for(var i = 0; i < arrTmp.length; i++){
  2174. var iNode = dcsRef.getColumn(arrTmp[i], "m");
  2175. if(iNode != "i"){
  2176. var stepNode = dcsRef.getColumn(arrTmp[i], "stepno");
  2177. dcsRef.setColumn(arrTmp[i], "m", "d");
  2178. var nAddRow = ds_temp_deldecisionlist_info.addRow();
  2179. ds_temp_deldecisionlist_info.copyRow(nAddRow, dcsRef,arrTmp[i]);
  2180. }
  2181. }
  2182. fDeleteRowFilterd(dcsRef,"stepno",curNo+1);
  2183. } else {
  2184. //"A"나 "B"는 해당노드의 lnkstepno만 비워준다.
  2185. stepRef.setColumn(curNo,"lnkstepno", "" );
  2186. if( stepRef.getColumn(curNo,"m") != "i"){ //model.getValue( stepRef + "[" + curNo + "]/m") != "i" && delYN == "N"
  2187. stepRef.setColumn(curNo,"m", "u" );
  2188. }
  2189. }
  2190. //2. 선택한 스텝의 상위 스텝과의 연결을 해제한다.
  2191. var arrTmp = new Array();
  2192. arrTmp = objExt.findRows(stepRef, "lnkstepno", curNo+1);
  2193. for(var i= 0; i<arrTmp.length; i++){
  2194. stepRef.setColumn(arrTmp[i], "lnkstepno", "");
  2195. iNode = stepRef.getColumn(arrTmp[i], "m");
  2196. if(iNode != "i"){
  2197. stepRef.setColumn(arrTmp[i], "u" );
  2198. }
  2199. }
  2200. //저장된 데이터 이므로, 삭제할 step 정보를 따로 담아두었다가 한꺼번에 삭제한다.
  2201. var arrTmp = new Array();
  2202. arrTmp = objExt.findRows(dcsRef, "lnkstepno", curNo+1);
  2203. if(arrTmp.length > 0 ){
  2204. for(var i= 0; i<arrTmp.length; i++){
  2205. var iNode = dcsRef.getColumn(arrTmp[i], "m");
  2206. if(iNode != "i"){
  2207. var stepNode = dcsRef.getColumn(arrTmp[i], "stepno");
  2208. dcsRef.setColumn(arrTmp[i], "m", "d");
  2209. var nAddRow = ds_temp_deldecisionlist_info.addRow();
  2210. ds_temp_deldecisionlist_info.copyRow(nAddRow, dcsRef,arrTmp[i]);
  2211. }
  2212. }
  2213. }
  2214. fDeleteRowFilterd(dcsRef, "lnkstepno", curNo+1);
  2215. dcsCntlCnt = dcsRef.rowcount + 1;
  2216. //오른쪽 버튼의 연결삭제를 선택한 경우
  2217. if( utlf_isNull(trgNo) ){
  2218. //controlCnt = initControlCnt;
  2219. fCreateControl();
  2220. }
  2221. utlf_addLog("1904 currentStepCntl set Null");
  2222. selectedControl = null;
  2223. currentStepCntl = null;
  2224. prevStepCntl = null;
  2225. selectedLineSection = "";
  2226. }
  2227. /****************************************************************************************
  2228. * Function : fSetStartStep
  2229. * Description : 시작 스텝으로 설정한다.
  2230. * Argument :
  2231. * return type :
  2232. * Creator :
  2233. ****************************************************************************************/
  2234. function fSetStartStep(){
  2235. var curID = currentStepCntl.name; //currentStepCntl.attribute("id");
  2236. fChildrenCtrlToSelCtrl(curID, "S");
  2237. }
  2238. /****************************************************************************************
  2239. * Function : fSetEndStep
  2240. * Description : 종료 스텝으로 설정한다.
  2241. * Argument :
  2242. * return type :
  2243. * Creator :
  2244. ****************************************************************************************/
  2245. function fSetEndStep(){
  2246. var curID = currentStepCntl.name;
  2247. fChildrenCtrlToSelCtrl(curID, "E");
  2248. }
  2249. /****************************************************************************************
  2250. * Function : fSetInHospStep
  2251. * Description : 입원으로 전환되는 스텝임을 정한다
  2252. * Argument :
  2253. * return type :
  2254. * Creator :
  2255. ****************************************************************************************/
  2256. function fSetInHospStep(){
  2257. var curID = currentStepCntl.name;
  2258. fChildrenCtrlToSelCtrl(curID, "H");
  2259. }
  2260. /****************************************************************************************
  2261. * Function : fSetDschHospStep
  2262. * Description : 퇴원으로 전환되는 스텝임을 정한다
  2263. * Argument :
  2264. * return type :
  2265. * Creator :
  2266. ****************************************************************************************/
  2267. function fSetDschHospStep(){
  2268. var curID = currentStepCntl.name;
  2269. fChildrenCtrlToSelCtrl(curID, "D");
  2270. }
  2271. /****************************************************************************************
  2272. * Function : fSetOutHospStep
  2273. * Description : 외래예약 스텝임을 정한다
  2274. * Argument :
  2275. * return type :
  2276. * Creator :
  2277. ****************************************************************************************/
  2278. function fSetOutHospStep(){
  2279. var curID = currentStepCntl.name;
  2280. fChildrenCtrlToSelCtrl(curID, "O");
  2281. }
  2282. /****************************************************************************************
  2283. * Function : fSetDSCHospStep
  2284. * Description : DSC 필요 스텝임을 정한다
  2285. * Argument :
  2286. * return type :
  2287. * Creator :
  2288. ****************************************************************************************/
  2289. function fSetDSCHospStep(){
  2290. var curID = currentStepCntl.name;
  2291. fChildrenCtrlToSelCtrl(curID, "C");
  2292. }
  2293. /****************************************************************************************
  2294. * Function : fDelCntl
  2295. * Description : 컨트롤이나 스윔라인을 삭제한다.
  2296. * Argument :
  2297. * return type :
  2298. * Creator :
  2299. ****************************************************************************************/
  2300. function fDelCntl(){
  2301. var header = "supsetno▦deptcd▦updtdd▦updttm▦setno▦settypecd▦m▩";
  2302. var delSetInfoCSV = "";
  2303. if( utlf_isNull(currentStepCntl) && utlf_isNull(selectedLineSection) ){
  2304. sysf_messageBox("삭제할 대상을", "C002");
  2305. return;
  2306. }
  2307. utlf_addLog("selectedLineSection : " + selectedLineSection);
  2308. if( !utlf_isNull(selectedLineSection) ){
  2309. //스윔라인을 삭제한다.
  2310. var nCnt = stepRef.getCaseCount("swimlineno == '" + selectedLineSection + "' && formexistyn == 'Y'");
  2311. if(nCnt > 0){
  2312. var msg = sysf_messageBox("저장된 처방 혹은 서식 정보가 존재합니다.\nStep을 삭제하면 처방 및 서식도 함께 삭제됩니다.\n\n정말로 ", "Q001");
  2313. if(msg == 6){
  2314. for(var i = 0; i < stepRef.rowcount; i++){
  2315. var nTemp1 = stepRef.getColumn(i, "swimlineno");
  2316. var nTemp2 = stepRef.getColumn(i, "formexistyn");
  2317. if( nTemp1 == selectedLineSection && nTemp2 == "Y" ){
  2318. var deptcd = ds_main_outlineinfo_info.getColumn(0,"cpgorddeptcd");
  2319. var setno = stepRef.getColumn(i, "setno");
  2320. if(cpgflagcd == "01"){
  2321. var settypecd = "W";
  2322. } else if(cpgflagcd == "02"){
  2323. var settypecd = "G";
  2324. }
  2325. delSetInfoCSV = delSetInfoCSV + "1▦"+deptcd+"▦OOOOOOOO▦OOOO▦"+setno+"▦"+settypecd+"▦d▩";
  2326. }
  2327. }
  2328. oOpener.delPrmsPrcpSetInfo(header+delSetInfoCSV);
  2329. fDelStep("L", selectedLineSection);
  2330. oOpener.ds_main_masterinfo_info.enableevent = false;
  2331. oOpener.ds_main_masterinfo_info.setColumn(0,"swimlineno", lineNo );
  2332. oOpener.ds_main_masterinfo_info.enableevent = true;
  2333. } else if(msg == 7) {
  2334. return false;
  2335. }
  2336. } else {
  2337. fDelStep("L", selectedLineSection);
  2338. oOpener.ds_main_masterinfo_info.enableevent = false;
  2339. oOpener.ds_main_masterinfo_info.setColumn(0,"swimlineno", lineNo );
  2340. oOpener.ds_main_masterinfo_info.enableevent = true;
  2341. }
  2342. }else {
  2343. //스텝 컨트롤을 삭제한다.
  2344. var curID = currentStepCntl.name;
  2345. var curNo = parseInt( curID.substr(12, curID.length-12) ) + 1;
  2346. utlf_addLog("curNo : " + curNo);
  2347. if( stepRef.getColumn(curNo,"formexistyn" ) == "Y" ){
  2348. var msg = sysf_messageBox("저장된 처방 혹은 서식 정보가 존재합니다. \nStep을 삭제하면 처방 및 서식도 함께 삭제됩니다. \n정말로 ", "Q001");
  2349. if(msg == 6){
  2350. //yes
  2351. // var nodeList = instance1.selectNodes(stepRef + "[" + curNo + "]");
  2352. var deptcd = ds_main_outlineinfo_info.getColumn(0,"cpgorddeptcd");
  2353. var setno = stepRef.getColumn(curNo,"setno");
  2354. if(cpgflagcd == "01"){
  2355. var settypecd = "W";
  2356. } else if(cpgflagcd == "02"){
  2357. var settypecd = "G";
  2358. }
  2359. delSetInfoCSV = "1▦"+deptcd+"▦OOOOOOOO▦OOOO▦"+setno+"▦"+settypecd+"▦d▩";
  2360. oOpener.delPrmsPrcpSetInfo(header+delSetInfoCSV);
  2361. fDelStep("C");
  2362. } else if(msg == 7) {
  2363. return false;
  2364. }
  2365. } else {
  2366. fDelStep("C");
  2367. }
  2368. // ★ selectedControl 과 동일하다면 selectedControl를 null 로 셋팅한다.
  2369. // selectedControl = null;
  2370. }
  2371. }
  2372. /****************************************************************************************
  2373. * Function : fViewDetailPopup
  2374. * Description : 선택한 스텝의 상세정보를 팝업으로 본다.
  2375. * Argument :
  2376. * return type :
  2377. * Creator :
  2378. ****************************************************************************************/
  2379. function fViewDetailPopup(){
  2380. // oOpener.btn_detailpopup.dispatch("DOMActivate");
  2381. var ev = new ClickEventInfo;
  2382. oOpener.frmf_inputEnterKey("grp_biz.btn_detailpopup", "onclick", ev );
  2383. }
  2384. /****************************************************************************************
  2385. * Function : fAddSwimLine
  2386. * Description : 선택한 지점에 스임라인을 추가한다.
  2387. * Argument :
  2388. * return type :
  2389. * Creator :
  2390. ****************************************************************************************/
  2391. function fAddSwimLine(){
  2392. if( !utlf_isNull(selectedLineSection) ){
  2393. var trgline;
  2394. var trgStepNo;
  2395. var org_CurrentStepCntl = currentStepCntl;
  2396. //스윔라인을 추가한다.
  2397. var y = parseInt(lineNo) * swimLineHight; //세로 아웃라인의 y1
  2398. var cy = y + swimLineHight; //세로 아웃라인의 y2
  2399. var lngth = swimlineControlArray.length - 1;
  2400. //아웃라인을 제외한 나머지 컨트롤을 삭제
  2401. for(var i = outsideControlCnt; i <= lngth; i++){
  2402. var cntlID = swimlineControlArray[i];
  2403. if( !utlf_isNull(cntlID) && cntlID.substr(cntlID.length-3, 1) == "_" ){
  2404. cntlID = cntlID.substr(0, cntlID.length-3);
  2405. }
  2406. //this.grp_swimline.components[cntlID].destroy() //.removeChild(cntlID);
  2407. if(!utlf_isNull(this.grp_swimline.components[ctrlID])) this.grp_swimline.removeChild(ctrlID);
  2408. swimlineControlArray[i] = "";
  2409. }
  2410. lineNo = parseInt(lineNo) + 1;
  2411. ds_main_outlineinfo_info.setColumn(0,"swimlineno", lineNo);
  2412. oOpener.ds_main_masterinfo_info.enableevent = false;
  2413. oOpener.ds_main_masterinfo_info.setColumn(0,"swimlineno", lineNo );
  2414. oOpener.ds_main_masterinfo_info.enableevent = true;
  2415. //oOpener.grp_biz.ipt_swimlineno.redraw();
  2416. //배열 인덱스를 하나 더 생성
  2417. linesControlMaxCnt[linesControlMaxCnt.length] = 0;
  2418. if( lineNo != parseInt(selectedLineSection)+1 ){
  2419. for(var i = 0; i < grpControlCnt; i++ ){
  2420. trgline = stepRef.getColumn(i,"swimlineno");
  2421. trgStepNo = stepRef.getColumn(i,"stepno");
  2422. if( trgline > selectedLineSection ){
  2423. stepRef.setColumn(i,"swimlineno", parseInt(trgline)+1 );
  2424. }
  2425. }
  2426. var start = parseInt(selectedLineSection)-1;
  2427. var end = linesControlMaxCnt.length-1;
  2428. var a = linesControlMaxCnt.slice(0, selectedLineSection);
  2429. var b = linesControlMaxCnt.slice(selectedLineSection, end);
  2430. var c = linesControlMaxCnt[linesControlMaxCnt.length-1];
  2431. linesControlMaxCnt.slice(0, linesControlMaxCnt.length);
  2432. linesControlMaxCnt = a.concat(c, b);
  2433. //추가할 라인의 바로 윗줄 스텝의 연결번호를 지운다.
  2434. var arrTmp = new Array();
  2435. arrTmp = objExt.findRows(stepRef, "swimlineno", selectedLineSection);
  2436. for(var i=0; i<arrTmp.length; i++){
  2437. stepRef.setColumn(arrTmp[i], "lnkstepno", "");
  2438. var stepNo = stepRef.getColumn(arrTmp[i], "stepno");
  2439. fDeleteRowFilterd(dcsRef,"stepno",stepNo);
  2440. }
  2441. dcsCntlCnt = dcsRef.rowcount + 1;
  2442. }
  2443. //aaaaaa:
  2444. var org_grpControlCnt = grpControlCnt;
  2445. var org_controlCnt = controlCnt;
  2446. var org_linesControlMaxCnt = linesControlMaxCnt;
  2447. sysf_trace("fAddSwimLine_controlCnt : "+controlCnt);
  2448. fInitialize();
  2449. grpControlCnt = org_grpControlCnt;
  2450. controlCnt = org_controlCnt;
  2451. linesControlMaxCnt = org_linesControlMaxCnt;
  2452. fCreateControl();
  2453. selectedControl = null;
  2454. //currentStepCntl = null;
  2455. prevStepCntl = null;
  2456. //20071120 추가 시작 (라인을 추가하면 추가된 라인에 포커스를 맞춘다)
  2457. utlf_addLog("2169 currentStepCntl set org_CurrentStepCntl : " + org_CurrentStepCntl);
  2458. currentStepCntl = org_CurrentStepCntl;
  2459. selectedLineSection = parseInt(selectedLineSection) + 1;
  2460. fChangeOutLineCntl("reset"); //전체 선의 색상을 다시 셋팅...
  2461. fChangeOutLineCntl("select", selectedLineSection-1); //전체 선의 색상을 다시 셋팅...
  2462. //20071120 추가 끝
  2463. }else {
  2464. return;
  2465. }
  2466. }
  2467. /****************************************************************************************
  2468. * Function : fDelSwimLine
  2469. * Description : 스윔라인을 삭제한다.
  2470. * Argument :
  2471. * return type :
  2472. * Creator :
  2473. ****************************************************************************************/
  2474. function fDelSwimLine(){
  2475. fDelStep("L", selectedLineSection);
  2476. oOpener.ds_main_masterinfo_info.enableevent = false;
  2477. oOpener.ds_main_masterinfo_info.setColumn(0,"swimlineno", lineNo );
  2478. oOpener.ds_main_masterinfo_info.enableevent = true;
  2479. // oOpener.grp_biz.ipt_swimlineno.redraw();
  2480. }
  2481. /****************************************************************************************
  2482. * Function : fOutlineCntlInit
  2483. * Description : opener에서 스윔라인 수를 수정할 경우, outline 및 모든 컨틀롤 초기화
  2484. * Argument :
  2485. * return type :
  2486. * Creator :
  2487. ****************************************************************************************/
  2488. function fOutlineCntlInit(){
  2489. for(var i = 0; i <= controlCnt; i++){
  2490. var cntlID = swimlineControlArray[i];
  2491. //cntlID = this.grp_swimline.components[cntlID];
  2492. if( !utlf_isNull( cntlID ) ){
  2493. if( cntlID.substr(cntlID.length-3, 1) == "_" ){
  2494. cntlID = cntlID.substr(0, cntlID.length-3);
  2495. }
  2496. if(!utlf_isNull(this.grp_swimline.components[ctrlID])) this.grp_swimline.removeChild(ctrlID);
  2497. }
  2498. }
  2499. outsideControlCnt = 0;
  2500. tmpIncreaseVal = 0;
  2501. controlCnt = 0;
  2502. grpControlCnt = 0;
  2503. //maxControlCnt = 2;
  2504. //swimlineControlArray.slice(0, swimlineControlArray.length);
  2505. swimlineControlArray = new Array();
  2506. //linesControlMaxCnt.slice(0, linesControlMaxCnt.length);
  2507. //인스턴스를 비운다.
  2508. // model.removeNodeset("/root/main/steplist");
  2509. // model.removeNodeset("/root/main/decisionlist");
  2510. // model.makeNode("/root/main/decisionlist");
  2511. ds_main_steplist_info.clearData();
  2512. ds_main_decisionlist_info.clearData();
  2513. ds_main_decisionlist_info.addRow();
  2514. selectSectionsLine[0] = "";
  2515. selectSectionsLine[1] = "";
  2516. selectSectionsLine[2] = "";
  2517. selectSectionsLine[3] = "";
  2518. selectedLineSection = "";
  2519. selectedControl = null;
  2520. utlf_addLog("2238 currentStepCntl set null ");
  2521. currentStepCntl = null;
  2522. changedCntl = null;
  2523. prevStepCntl = null;
  2524. dcsCntlCnt = 1;
  2525. swimLineHight = 165; //한 스윔라인의 높이 //<-210
  2526. swimLineWidth = 815; //스윔라인의 넓이
  2527. maxControlCnt = 2;
  2528. connectionMode = "false";
  2529. }
  2530. /****************************************************************************************
  2531. * Function : fDecision
  2532. * Description : M-GPS에서 일괄 발행을 위한 decision 스텝의 대답을 얻는다.
  2533. * Argument :
  2534. * return type :
  2535. * Creator :
  2536. ****************************************************************************************/
  2537. function fDecision(){
  2538. var curID = currentStepCntl.name;
  2539. var curNo = parseInt( curID.substr(12, curID.length-12) ) ;
  2540. var trgStep = stepRef.getColumn(curNo,"stepno"); //현재 선택한 스텝
  2541. // grd_decision.rowHidden(0) = true;
  2542. grp_swimline.grp_dcsgrid.grd_decision.setFormatRowProperty(-1,"size",0);
  2543. if(decisionMode == "false"){
  2544. ds_main.setColumn(0,"seldecisionstep" , trgStep);
  2545. ds_main.setColumn(0,"seldecisionstepno" , curNo);
  2546. decisionMode = "true";
  2547. //currentStepCntl.attribute("id")
  2548. grp_swimline.grp_msgbox.position.top = parseInt(currentStepCntl.position.top) + 90;
  2549. grp_swimline.grp_msgbox.position.left = parseInt(currentStepCntl.position.left) + 250;
  2550. grp_swimline.grp_msgbox.visible = true;
  2551. return;
  2552. }
  2553. grp_swimline.grp_msgbox.visible = false;
  2554. if(oOpener.grp_biz.btn_detail_tab.tabindex == 2){
  2555. var srcStep = ds_main.getColumn(0,"seldecisionstep"); //바로 이전에 선택된 (상위 스텝)
  2556. //이전 선택된 결정의 상태를 조회하여야 함. 2010.04.28 KHJ
  2557. var appStepStatNode = oOpener.ds_main_steppath_info.getColumn(oOpener.ds_main_steppath_info.findRow("stepno",srcStep),"stepstat");
  2558. //결정된 스텝이 있는지 확인.
  2559. var decisionYNNode = oOpener.ds_main_steppath_info.getColumn(oOpener.ds_main_steppath_info.findRow("stepstat",30),"stepno");
  2560. var appStepStat = "";
  2561. //결정된 스텝이 있다면 30 없다면 10
  2562. if( !utlf_isNull(decisionYNNode) ) appStepStat = "30";
  2563. else appStepStat = "10";
  2564. //스텝 경로에 있는 스텝의 경우 스텝 경로 상태 사용
  2565. if( !utlf_isNull(appStepStatNode) ) appStepStat = appStepStatNode;
  2566. var currDcsnStep = stepRef.getColumn(stepRef.findRow("stepno",srcStep),"dcsnstep"); //결정된 스텝
  2567. var currDcsnStepNo = 0;
  2568. if( !utlf_isNull(currDcsnStep) ) currDcsnStepNo = parseInt(currDcsnStep); //결정된 스텝 번호
  2569. //이미 결정되어 발행된 스텝인 경우 재설정 불가능 처리
  2570. //if( appStepStat > "10" ){
  2571. if( appStepStat == "30" ){
  2572. sysf_messageBox("이미 발행된 스텝은 결정을 변경", "E001"); //불가
  2573. decisionMode = "false";
  2574. return;
  2575. }
  2576. //연결된 스텝들 중에서만 선택하도록 처리, 그외에는 return (dcsRef 이용)
  2577. // if( instance1.selectSingleNode( dcsRef + "[stepno='"+srcStep+"' and lnkstepno='"+trgStep+"']/stepno" ) == null ){
  2578. if( utlf_isNull(dcsRef.getColumn(dcsRef.findRowExpr("stepno == '"+srcStep+"' && lnkstepno == '"+trgStep+"'"),"stepno")) ) {
  2579. if( srcStep == trgStep ) sysf_messageBox("결정할 스텝을 선택", "I008"); //하시오
  2580. else sysf_messageBox("연결된 스텝 외에는 선택", "E001"); //불가
  2581. decisionMode = "false";
  2582. return;
  2583. }
  2584. // grp_swimline.grp_dcsgrid.grd_decision_answlist.addRow(true, true);
  2585. var nRow = ds_main_seldecisionlist_info.addRow();
  2586. ds_main_seldecisionlist_info.setColumn(nRow,"stepno" , srcStep);
  2587. ds_main_seldecisionlist_info.setColumn(nRow,"lnkstepno" , trgStep);
  2588. //CP적용환자 테이블( MMPHAPPT )에 저장한다.
  2589. var tSwimlineno = stepRef.getColumn(curNo,"swimlineno");
  2590. if( !oOpener.fInsCPGAppPatInfo( "D", srcStep, trgStep, tSwimlineno) ){
  2591. return;
  2592. }
  2593. ds_main.setColumn(0,"seldecisionstep" , "");
  2594. ds_main.setColumn(0,"seldecisionstepno" , "");
  2595. decisionMode = "false";
  2596. // model.makeValue(stepRef + "[stepno='"+srcStep+"']/dcsnstep", trgStep);
  2597. dsf_makeValue(stepRef,"dcsnstep","string",trgStep,stepRef.findRow("stepno",srcStep));
  2598. oOpener.dsf_makeValue(stepRef,"dcsnstep","string",trgStep,stepRef.findRow("stepno",srcStep));
  2599. oOpener.ds_main_steppath_info.setColumn(oOpener.ds_main_steppath_info.findRow("stepno",srcStep),"answstepno",trgStep);
  2600. }
  2601. oOpener.ds_temp1_refresh_obj.setColumn(0,"change_gps", "Y");
  2602. //적용스템 경로 출력 (2010.05.18 JJE)
  2603. var flag = stepRef.getColumn(stepRef.findRow("stepno",trgStep),"settypecd");
  2604. if( utlf_isNull(flag) ) flag = "G";
  2605. oOpener.fGetAppScopList( flag );
  2606. }
  2607. /****************************************************************************************
  2608. * Function : fAddD0Step
  2609. * Description : 선택한 지점에 스임라인 윗줄에 D0 swimline과 step을 추가한다.
  2610. * Argument :
  2611. * return type :
  2612. * Creator :
  2613. ****************************************************************************************/
  2614. function fAddD0Step(){
  2615. if( !utlf_isNull(selectedLineSection) ){
  2616. var trgline;
  2617. var trgStepNo;
  2618. var org_CurrentStepCntl = currentStepCntl;
  2619. var lngth = swimlineControlArray.length - 1;
  2620. if( utlf_isNull(stepRef.getColumn(0,"stepno")) ){
  2621. return;
  2622. }
  2623. //아웃라인을 제외한 나머지 컨트롤을 삭제
  2624. for(var i = outsideControlCnt; i <= lngth; i++){
  2625. var cntlID = swimlineControlArray[i];
  2626. if( !utlf_isNull(cntlID) && cntlID.substr(cntlID.length-3, 1) == "_" ){
  2627. cntlID = cntlID.substr(0, cntlID.length-3);
  2628. }
  2629. this.grp_swimline.components[cntlID].destroy();
  2630. swimlineControlArray[i] = "";
  2631. }
  2632. //mian viewer의 스윔라인수 값(+1) 변경
  2633. lineNo = parseInt(lineNo) + 1;
  2634. ds_main_outlineinfo_info.setColumn(0,"swimlineno", lineNo);
  2635. oOpener.ds_main_masterinfo_info.enableevent = false;
  2636. oOpener.ds_main_masterinfo_info.setColumn(0,"swimlineno", lineNo);
  2637. oOpener.ds_main_masterinfo_info.enableevent = true;
  2638. // oOpener.grp_biz.ipt_swimlineno.redraw();
  2639. //<steplist>에 <stepinfo>를 맨 앞에 생성
  2640. // model.resetInstanceNode("/root/main/temp/stepinfo/info");
  2641. // model.makeNode("/root/main/temp/stepform/info");
  2642. // model.copyNode("/root/main/temp/stepform/info", "/root/main/temp/stepinfo/info");
  2643. ds_main_temp_stepinfo_info.clearData();
  2644. dsf_createDs("ds_main_temp_stepform_info");
  2645. dsf_copyColInfo(ds_main_temp_stepform_info, ds_main_temp_stepinfo_info);
  2646. var srcNode = ds_main_temp_stepform_info; //instance1.selectSingleNode("/root/main/temp/stepform/info");
  2647. var desNode = stepRef; //instance1.selectSingleNode(stepRef);
  2648. // var lastrow = stepRef.rowcount; //instance1.selectNodes(stepRef).length;
  2649. // var pdesNode = instance1.selectSingleNode(stepRef + "[" + lastrow + "]");
  2650. // desNode.insertAfter(srcNode, pdesNode);
  2651. dsf_mergeColumn(desNode, srcNode);
  2652. // lastrow++;
  2653. // model.removeNodeset("/root/main/temp/stepform/info"); //copy를 위해 임시로 만든 노드 삭제
  2654. dsf_deleteDs("ds_main_temp_stepform_info");
  2655. var nRow = stepRef.addRow();
  2656. stepRef.setColumn(nRow,"stepno" , ++grpControlCnt); //D0 step 정보 셋팅
  2657. stepRef.setColumn(nRow,"stepflagcd" , "A");
  2658. stepRef.setColumn(nRow,"swimlineno" , "1");
  2659. stepRef.setColumn(nRow,"refseq" , "1");
  2660. stepRef.setColumn(nRow,"times" , "0");
  2661. stepRef.setColumn(nRow,"m" , "i");
  2662. stepRef.setColumn(nRow,"orgstepno" , grpControlCnt);
  2663. stepRef.setColumn(nRow,"startendflag", "S");
  2664. stepRef.setColumn(nRow,"stepnm" , "외래");
  2665. //if( instance1.selectSingleNode("/root/main/sortedsteplist/info/stepno") != null ){
  2666. //다음줄의 Step과 자동 연결
  2667. if( !utlf_isNull(ds_main_steplist_info.getColumn(ds_main_steplist_info.findRowExpr("swimlineno=='1' && refseq=='1'"),"stepno")) ){
  2668. // model.setValue(stepRef + "[" + lastrow + "]/lnkstepno", model.getValue("/root/main/steplist/info[swimlineno='1' and refseq='1']/stepno"));
  2669. stepRef.setColumn(nRow,"lnkstepno",ds_main_steplist_info.getColumn(ds_main_steplist_info.findRowExpr("swimlineno=='1' && refseq=='1'"),"stepno"));
  2670. }
  2671. //}
  2672. //모든 step의 swimline 수를 +1 늘림
  2673. for(var i = grpControlCnt-1; i >= 1; i-- ){
  2674. trgline = stepRef.getColumn(i,"swimlineno");
  2675. stepRef.setColumn(i,"swimlineno", parseInt(trgline)+1 );
  2676. if( stepRef.getColumn(i,"m") != "i" ){
  2677. stepRef.setColumn(i,"m", "u");
  2678. }
  2679. //시작 스텝 존재시, 시작스텝 취소
  2680. if( stepRef.getColumn(i,"startendflag") == "S" ){
  2681. stepRef.setColumn(i,"startendflag", "");
  2682. }
  2683. //라인의 수와, 컨트롤의 수가 일치하지 않기때문에 밑에서 따로 수행해야 함
  2684. //linesControlMaxCnt[i] = linesControlMaxCnt[i-1];
  2685. }
  2686. for( var i = linesControlMaxCnt.length; i >= 1; i-- ){
  2687. linesControlMaxCnt[i] = linesControlMaxCnt[i-1];
  2688. }
  2689. //linesControlMaxCnt[] 마지막 index 에 step1개 셋팅
  2690. linesControlMaxCnt[0] = 1;
  2691. //alert( linesControlMaxCnt );
  2692. var org_grpControlCnt = grpControlCnt;
  2693. var org_controlCnt = controlCnt;
  2694. var org_linesControlMaxCnt = linesControlMaxCnt;
  2695. sysf_trace("fAddD0Step_controlCnt : "+controlCnt);
  2696. fInitialize();
  2697. grpControlCnt = org_grpControlCnt;
  2698. controlCnt = org_controlCnt;
  2699. linesControlMaxCnt = org_linesControlMaxCnt;
  2700. fCreateControl();
  2701. selectedControl = null;
  2702. prevStepCntl = null;
  2703. //라인을 추가하면 추가된 라인에 포커스를 맞춘다
  2704. currentStepCntl = org_CurrentStepCntl;
  2705. selectedLineSection = 1;
  2706. fChangeOutLineCntl("reset"); //전체 선의 색상을 다시 셋팅...
  2707. fChangeOutLineCntl("select", selectedLineSection-1); //전체 선의 색상을 다시 셋팅...
  2708. }
  2709. }
  2710. /****************************************************************************************
  2711. * Function : fSetupStartStep
  2712. * Description : M-GPS에서 시작 스텝 설정 시 값 설정
  2713. * Argument :
  2714. * return type :
  2715. * Creator :
  2716. ****************************************************************************************/
  2717. function fSetupStartStep(){
  2718. fSetupStartEndStep("S");
  2719. }
  2720. /****************************************************************************************
  2721. * Function : fSetupEndStep
  2722. * Description : M-GPS에서 종료 스텝 설정 시 값 설정
  2723. * Argument :
  2724. * return type :
  2725. * Creator :
  2726. ****************************************************************************************/
  2727. function fSetupEndStep(){
  2728. fSetupStartEndStep("E");
  2729. }
  2730. /****************************************************************************************
  2731. * Function : fSetupOneStep
  2732. * Description : M-GPS에서 해당 스텝만 발행되도록 스텝 설정 시 값 설정
  2733. * Argument :
  2734. * return type :
  2735. * Creator :
  2736. ****************************************************************************************/
  2737. function fSetupOneStep(){
  2738. //fSetupStartEndStep("S");
  2739. var startFlag1 = oOpener.ds_main_steppath_info.getColumn(oOpener.ds_main_steppath_info.findRow("startendflag","S"),"startendflag");
  2740. var startFlag2 = stepRef.getColumn(stepRef.findRow("startendflag","S"),"startendflag");
  2741. if( !utlf_isNull(startFlag1) ) oOpener.ds_main_steppath_info.setColumn(oOpener.ds_main_steppath_info.findRow("startendflag","S"),"startendflag","");
  2742. if( !utlf_isNull(startFlag2) ) stepRef.setColumn(stepRef.findRow("startendflag","S"),"startendflag","");
  2743. fSetupStartEndStep("E");
  2744. }
  2745. /****************************************************************************************
  2746. * Function : fCnclDecisionMode
  2747. * Description : M-GPS에서 CPG의 decision 취소
  2748. * Argument :
  2749. * return type :
  2750. * Creator :
  2751. ****************************************************************************************/
  2752. function fCnclDecisionMode(){
  2753. grp_swimline.grp_msgbox.visible = false;
  2754. decisionMode = "false";
  2755. }
  2756. /****************************************************************************************
  2757. * Function : fSetupCPStep
  2758. * Description : CPG+CP 에서, CP 스텝을 적용범위로 지정
  2759. * Argument :
  2760. * return type :
  2761. * Creator :
  2762. ****************************************************************************************/
  2763. function fSetupCPStep(){
  2764. var OpenPath_StartStep = oOpener.ds_main_steppath_info.getColumn(oOpener.ds_main_steppath_info.findRow("startendflag","S"),"startendflag");
  2765. var OpenPath_EndStep = oOpener.ds_main_steppath_info.getColumn(oOpener.ds_main_steppath_info.findRow("startendflag","E"),"startendflag");
  2766. var Open_StartStep = oOpener.ds_main_steplist_info.getColumn(oOpener.ds_main_steplist_info.findRow("startendflag","S"),"startendflag");
  2767. var Open_EndStep = oOpener.ds_main_steplist_info.getColumn(oOpener.ds_main_steplist_info.findRow("startendflag","E"),"startendflag");
  2768. var StartStep = ds_main_steplist_info.getColumn(ds_main_steplist_info.findRow("startendflag","S"),"startendflag");
  2769. var EndStep = ds_main_steplist_info.getColumn(ds_main_steplist_info.findRow("startendflag","E"),"startendflag");
  2770. if( !utlf_isNull(OpenPath_StartStep)) oOpener.ds_main_steppath_info.setColumn(oOpener.ds_main_steppath_info.findRow("startendflag","S"),"startendflag","");
  2771. if( !utlf_isNull(OpenPath_EndStep) ) oOpener.ds_main_steppath_info.setColumn(oOpener.ds_main_steppath_info.findRow("startendflag","E"),"startendflag","");
  2772. if( !utlf_isNull(Open_StartStep) ) oOpener.ds_main_steplist_info.setColumn(oOpener.ds_main_steplist_info.findRow("startendflag","S"),"startendflag","");
  2773. if( !utlf_isNull(Open_EndStep) ) oOpener.ds_main_steplist_info.setColumn(oOpener.ds_main_steplist_info.findRow("startendflag","E"),"startendflag","");
  2774. if( !utlf_isNull(StartStep) ) ds_main_steplist_info.setColumn(ds_main_steplist_info.findRow("startendflag","S"),"startendflag","");
  2775. if( !utlf_isNull(EndStep) ) ds_main_steplist_info.setColumn(ds_main_steplist_info.findRow("startendflag","E"),"startendflag","");
  2776. oOpener.ds_main_steppath_info.filter("settypecd=='W'");
  2777. var cpNodeList = oOpener.ds_main_steppath_info;
  2778. if( cpNodeList.rowcount > 0 ){
  2779. // var node = null;
  2780. // var startendflagNode = null;
  2781. var stepnoNode = null;
  2782. // node = cpNodeList.item(0);
  2783. // startendflagNode = node.selectSingleNode("startendflag");
  2784. stepnoNode = cpNodeList.getColumn(0,"stepno");
  2785. // model.setValue(startendflagNode, "S");
  2786. cpNodeList.setColumn(0,"startendflag","S");
  2787. // oOpener.model.makeValue("/root/main/steplist/info[stepno='"+stepnoNode.text+"']/startendflag", "S");
  2788. dsf_makeValue(oOpener.ds_main_steplist_info,"startendflag","string","S",oOpener.ds_main_steplist_info.findRow("stepno",stepnoNode));
  2789. // model.makeValue(stepRef + "[stepno='"+stepnoNode.text+"']/startendflag", "S");
  2790. // model.setValue("/root/temp/startstepno", stepnoNode.text);
  2791. dsf_makeValue(stepRef,"startendflag","string","S",stepRef.findRow("stepno",stepnoNode));
  2792. ds_temp.setColumn(0,"startstepno", stepnoNode);
  2793. // node = cpNodeList.item(cpNodeList.length-1);
  2794. // startendflagNode = node.selectSingleNode("startendflag");
  2795. var endRow = cpNodeList.rowcount-1
  2796. stepnoNode = cpNodeList.getColumn(endRow,"stepno");
  2797. cpNodeList.setColumn(endRow,"startendflag","E");
  2798. // oOpener.model.makeValue("/root/main/steplist/info[stepno='"+stepnoNode.text+"']/startendflag", "E");
  2799. dsf_makeValue(oOpener.ds_main_steplist_info,"startendflag","string","E",oOpener.ds_main_steplist_info.findRow("stepno",stepnoNode));
  2800. // model.makeValue(stepRef + "[stepno='"+stepnoNode.text+"']/startendflag", "E");
  2801. // model.setValue("/root/temp/endstepno", stepnoNode.text);
  2802. dsf_makeValue(stepRef,"startendflag","string","E",stepRef.findRow("stepno",stepnoNode));
  2803. ds_temp.setColumn(0,"endstepno", stepnoNode);
  2804. oOpener.ds_temp1_refresh_obj.setColumn(0,"change_gps","Y");
  2805. //적용스템 경로 출력 (2010.05.18 JJE)
  2806. oOpener.fGetAppScopList("W");
  2807. //직접 refresh 수행
  2808. fCreateControl();
  2809. selectedControl = null;
  2810. //currentStepCntl = document.controls(id);
  2811. fChangeSelectCntl("#A683B1", currentStepCntl);
  2812. }
  2813. oOpener.ds_main_steppath_info.filter("");
  2814. }
  2815. /*↑↑↑↑↑↑↑↑↑↑↑ 팝업메뉴 선택시 실행함수 끝 ↑↑↑↑↑↑↑↑↑↑↑↑*/
  2816. /****************************************************************************************
  2817. * Function : fDeleteRowFilterd
  2818. * Description : 데이터셋 조건에 맞는 행 삭제
  2819. * Argument : objDs - 대상 데이터셋ID
  2820. * : colnm - 조건비교 컬럼
  2821. * : expr - 조건값
  2822. * return type :
  2823. * Creator :
  2824. ****************************************************************************************/
  2825. function fDeleteRowFilterd(objDs,colnm,expr) {
  2826. for(var i = objDs.rowcount-1 ; i >= 0 ; i--) {
  2827. if(objDs.getColumn(i,colnm) == expr){
  2828. objDs.deleteRow(i);
  2829. }
  2830. }
  2831. }
  2832. /****************************************************************************************
  2833. * Description : 선택한 하나의 스텝만 저장한다. (앞으로 중점적으로 정리한다!)
  2834. * Argument : N/A
  2835. * return type :
  2836. ****************************************************************************************/
  2837. function fSaveStep(stepNumber){
  2838. utlf_addLog("fSaveStep(stepNumber : " + stepNumber + " )");
  2839. //★ 선택된 스텝만 저장(수정)하고, 해당 스텝의 저장 flag 만 바꾼다.
  2840. dsf_createDs("ds_tmpCSV");
  2841. ds_tmpCSV.assign(stepRef);
  2842. ds_tmpCSV.clearData();
  2843. var nAddRow = ds_tmpCSV.addRow();
  2844. ds_tmpCSV.copyRow(nAddRow, stepRef, (stepNumber-1));
  2845. var stepCSV = ds_tmpCSV.saveCSV();
  2846. //저장으로 넘겼기 때문에, 알아서 상태를 바꿔준다
  2847. stepRef.setColumn((stepNumber-1), "m", "");
  2848. oOpener.fSaveStepInfo(stepCSV);
  2849. //특정 스텝의 프로토콜 변경사항 저장 후, mainviewer의 steplist 노드에도 변경된 setno 정보 변경 (2009.03.02 추가)
  2850. var nFindRow = stepRef.findRow("stepno", stepNumber);
  2851. var iSettypecd = stepRef.getColumnInfo("settypecd");
  2852. var iSetno = stepRef.getColumnInfo("setno");
  2853. if( iSettypecd != null && iSetno != null ){
  2854. iSettypecdVal = stepRef.getColumn(nFindRow, "settypecd");
  2855. iSetnoVal = stepRef.getColumn(nFindRow, "setno");
  2856. nFindRow = oOpener.ds_main_steplist_info.findRow("stepno", stepNumber);
  2857. oOpener.ds_main_steplist_info.setColumn(nFindRow, "settypecd", iSettypecdVal);
  2858. oOpener.ds_main_steplist_info.setColumn(nFindRow, "setno", iSetnoVal);
  2859. nFindRow = oOpener.ds_main_sortedsteplist_info.findRow("stepno", stepNumber);
  2860. oOpener.ds_main_sortedsteplist_info.setColumn(nFindRow, "settypecd", iSettypecdVal);
  2861. oOpener.ds_main_sortedsteplist_info.setColumn(nFindRow, "setno", iSetnoVal);
  2862. }
  2863. }
  2864. /****************************************************************************************
  2865. * Description : 저장 후, status 값이 I 이거나 U 인 것들을 - 상태로 변환, D 인 것은 삭제한다.
  2866. * Argument : N/A
  2867. * return type :
  2868. ****************************************************************************************/
  2869. function fChangeStatus(){
  2870. for(var i= 0; i<stepRef.rowcount; i++){
  2871. var nStatus = stepRef.getColumn(i, "m");
  2872. if( nStatus == "i" || nStatus == "u" ){
  2873. stepRef.setColumn(i, "m", "");
  2874. stepRef.setColumn(i, "orgstepno", stepRef.getColumn(i, "stepno"));
  2875. }
  2876. }
  2877. for(var i= 0; i<dcsRef.rowcount; i++){
  2878. var nStatus = dcsRef.getColumn(i, "m");
  2879. if( nStatus == "i" || nStatus == "u" ){
  2880. dcsRef.setColumn(i, "m", "");
  2881. }
  2882. }
  2883. ds_temp_delsteplist_info.clearData();
  2884. ds_temp_deldecisionlist_info.clearData();
  2885. }
  2886. /****************************************************************************************
  2887. * Function : fChildrenCtrlToSelCtrl
  2888. * Description : 그룹 컨트롤 아이디를 받아서, currentStepCntl을 설정하고,
  2889. * : 자식 컨트롤 중 textarea 컨트롤을 반환받아 selControl로 설정,
  2890. * : fChangeSelectCntl()를 호출한다.
  2891. * Argument : ctrl - 그룹컨트롤ID(string)
  2892. * : flag - 시작, 종료스텝 구분, null이면 그외 스텝
  2893. * return type :
  2894. * Creator :
  2895. ****************************************************************************************/
  2896. function fChildrenCtrlToSelCtrl(ctrl, flag){
  2897. utlf_addLog(" fChildrenCtrlToSelCtrl ");
  2898. if( flag != "SET" ){
  2899. var selControl = this.grp_swimline.components[ctrl]; //현재 선택한 컨트롤(그룹)
  2900. var childrens = selControl != null ? selControl.components : ""; //selControl.children;
  2901. }else{
  2902. currentStepCntl = this.grp_swimline.components[ctrl]; //현재 선택한 컨트롤(그룹)
  2903. var childrens = currentStepCntl != null ? currentStepCntl.components : ""; //currentStepCntl.children;
  2904. }
  2905. var elNm = "";
  2906. var curNo = parseInt( ctrl.substr(12, ctrl.length-12) ) ;
  2907. for(var i = 0; i < childrens.length; i++){
  2908. if(sysf_getObjType(childrens[i]) == "TextArea"){
  2909. elNm = childrens[i].name;
  2910. }
  2911. }
  2912. var selControl = this.grp_swimline.components[elNm];
  2913. if( flag != "SET" ){
  2914. selectedControl = this.grp_swimline.components[elNm]; //2007.12.16 추가(OPS 탭에서 Outline탭으로 옮기고 스텝 선택 시 발생하는 오류때문)
  2915. }
  2916. if(flag == "S" && oOpener.OpenerKind != "GPS" ){
  2917. //시작 스텝 설정
  2918. if( utlf_isNull(stepRef.getColumn(curNo,"startendflag")) ){
  2919. if( stepRef.findRow("startendflag","S") > -1 ){
  2920. sysf_messageBox("시작 Step을 2개 이상 설정", "E001");
  2921. return;
  2922. }
  2923. stepRef.setColumn(curNo,"startendflag", "S" );
  2924. fChangeSelectCntl("#ff9900", selectedControl);
  2925. } else {
  2926. stepRef.setColumn(curNo,"startendflag", "" );
  2927. fChangeSelectCntl("#000000", selControl);
  2928. }
  2929. if( stepRef.getColumn(curNo,"m") != "i" ){
  2930. stepRef.setColumn(curNo,"m", "u" );
  2931. }
  2932. } else if(flag == "E" && oOpener.OpenerKind != "GPS" ){
  2933. //종료 스텝 설정
  2934. if( utlf_isNull(stepRef.getColumn(curNo,"startendflag")) ){
  2935. stepRef.setColumn(curNo,"startendflag", "E" );
  2936. fChangeSelectCntl("#ff9900", selectedControl);
  2937. } else {
  2938. stepRef.setColumn(curNo,"startendflag", "" );
  2939. fChangeSelectCntl("#000000", selControl);
  2940. }
  2941. if( stepRef.getColumn(curNo,"m") != "i" ){
  2942. stepRef.setColumn(curNo,"m", "u" );
  2943. }
  2944. } else if(flag == "H" && oOpener.OpenerKind != "GPS" ){
  2945. //종료 스텝 설정
  2946. if( cpgflagcd == "01" && utlf_isNull(stepRef.getColumn(curNo,"decirflag")) ){
  2947. stepRef.setColumn(curNo,"decirflag", "I" );
  2948. //fChangeSelectCntl("#ff9900", selectedControl);
  2949. var leftPos = 330;
  2950. var topPos = 20;
  2951. var cntl;
  2952. var ctrlType = "xforms_caption";
  2953. var ctrlID = ctrlType + (controlCnt++);
  2954. // cntl = currentStepCntl.createChild(ctrlType, "id:"+ ctrlID + "; left:" + leftPos + "; top:" + topPos + "; width:50px; height:50px; font-size:8pt; color:#ff0000; font-weight:bolder; ");
  2955. // cntl.attribute("text") = "[입원\n필요]";
  2956. var objStaTitle = new Static();
  2957. objStaTitle.init(ctrlID, leftPos, topPos, leftPos+50, topPos+50);
  2958. this.currentStepCntl.addChild(ctrlID, objStaTitle);
  2959. objStaTitle.show();
  2960. objStaTitle.text = "[입원\n필요]";
  2961. objStaTitle.font = "Dotum,8,bold";
  2962. objStaTitle.color = "#ff0000";
  2963. } else {
  2964. //2008.06.18 pymi(추가)
  2965. if( (stepRef.getColumn(curNo,"decirflag") == "D") || (stepRef.getColumn(curNo,"decirflag") == "O") || (stepRef.getColumn(curNo,"decirflag") == "C")) {
  2966. stepRef.setColumn(curNo,"decirflag", "I" );
  2967. //2008.06.18 pymi(종료)
  2968. } else {
  2969. stepRef.setColumn(curNo,"decirflag", "" );
  2970. }
  2971. //fChangeSelectCntl("#000000", selControl);
  2972. fCreateControl();
  2973. }
  2974. if( stepRef.getColumn(curNo,"m") != "i" ){
  2975. stepRef.setColumn(curNo,"m", "u" );
  2976. }
  2977. //2008.06.16 pymi(추가)
  2978. } else if(cpgflagcd == "01" && flag == "D" && oOpener.OpenerKind != "GPS" ){
  2979. if( utlf_isNull(stepRef.getColumn(curNo,"decirflag")) ){
  2980. stepRef.setColumn(curNo,"decirflag", "D" );
  2981. //fChangeSelectCntl("#ff9900", selectedControl);
  2982. var leftPos = 330;
  2983. var topPos = 20;
  2984. var cntl;
  2985. var ctrlType = "xforms:caption";
  2986. var ctrlID = ctrlType + (controlCnt++);
  2987. // cntl = currentStepCntl.createChild(ctrlType, "id:"+ ctrlID + "; left:" + leftPos + "; top:" + topPos + "; width:50px; height:50px; font-size:8pt; color:#ff0000; font-weight:bolder; ");
  2988. // cntl.attribute("text") = "[퇴원\n필요]";
  2989. var objStaTitle = new Static();
  2990. objStaTitle.init(ctrlID, leftPos, topPos, leftPos+50, topPos+50);
  2991. this.currentStepCntl.addChild(ctrlID, objStaTitle);
  2992. objStaTitle.show();
  2993. objStaTitle.text = "[퇴원\n필요]";
  2994. objStaTitle.font = "Dotum,8,bold";
  2995. objStaTitle.color = "#ff0000";
  2996. } else {
  2997. if( (stepRef.getColumn(curNo,"decirflag") == "I") || (stepRef.getColumn(curNo,"decirflag") == "O") || (stepRef.getColumn(curNo,"decirflag") == "C")) {
  2998. stepRef.setColumn(curNo,"decirflag", "D" );
  2999. } else {
  3000. stepRef.setColumn(curNo,"decirflag", "" );
  3001. }
  3002. //fChangeSelectCntl("#000000", selControl);
  3003. fCreateControl();
  3004. }
  3005. if( stepRef.getColumn( curNo, "m") != "i" ){
  3006. stepRef.setColumn(curNo,"m", "u" );
  3007. }
  3008. } else if(cpgflagcd == "01" && flag == "O" && oOpener.OpenerKind != "GPS" ){
  3009. //외래예약필요 step 처리
  3010. if( utlf_isNull(stepRef.getColumn(curNo,"decirflag")) ){
  3011. stepRef.setColumn(curNo,"decirflag", "O" );
  3012. //fChangeSelectCntl("#ff9900", selectedControl);
  3013. var leftPos = 330;
  3014. var topPos = 20;
  3015. var cntl;
  3016. var ctrlType = "xforms_caption";
  3017. var ctrlID = ctrlType + (controlCnt++);
  3018. // cntl = currentStepCntl.createChild(ctrlType, "id:"+ ctrlID + "; left:" + leftPos + "; top:" + topPos + "; width:50px; height:50px; font-size:8pt; color:#ff0000; font-weight:bolder; ");
  3019. // cntl.attribute("text") = "[외래\n예약\n필요]";
  3020. var objStaTitle = new Static();
  3021. objStaTitle.init(ctrlID, leftPos, topPos, leftPos+50, topPos+50);
  3022. this.currentStepCntl.addChild(ctrlID, objStaTitle);
  3023. objStaTitle.show();
  3024. objStaTitle.text = "[외래\n예약\n필요]";
  3025. objStaTitle.font = "Dotum,8,bold";
  3026. objStaTitle.color = "#ff0000";
  3027. } else {
  3028. if( (stepRef.getColumn(curNo,"decirflag") == "I") || (stepRef.getColumn(curNo,"decirflag") == "D") || (stepRef.getColumn(curNo,"decirflag") == "C")) {
  3029. stepRef.setColumn(curNo,"decirflag", "O" );
  3030. } else {
  3031. stepRef.setColumn(curNo,"decirflag", "" );
  3032. }
  3033. //fChangeSelectCntl("#000000", selControl);
  3034. fCreateControl();
  3035. }
  3036. if( stepRef.getColumn(curNo,"m") != "i" ){
  3037. stepRef.setColumn(curNo,"m", "u" );
  3038. }
  3039. //2008.06.16 pymi(종료)
  3040. //2008.08.06 pymi(s)
  3041. } else if(flag == "C" && oOpener.OpenerKind != "GPS" ){
  3042. //DSC 필요 step 처리
  3043. if( utlf_isNull(stepRef.getColumn(curNo,"decirflag")) ){
  3044. stepRef.setColumn(curNo,"decirflag", "C" );
  3045. //fChangeSelectCntl("#ff9900", selectedControl);
  3046. var leftPos = 330;
  3047. var topPos = 20;
  3048. var cntl;
  3049. var ctrlType = "xforms_caption";
  3050. var ctrlID = ctrlType + (controlCnt++);
  3051. // cntl = currentStepCntl.createChild(ctrlType, "id:"+ ctrlID + "; left:" + leftPos + "; top:" + topPos + "; width:50px; height:50px; font-size:8pt; color:#ff0000; font-weight:bolder; ");
  3052. // cntl.attribute("text") = "[DSC\n필요]";
  3053. var objStaTitle = new Static();
  3054. objStaTitle.init(ctrlID, leftPos, topPos, leftPos+50, topPos+50);
  3055. this.currentStepCntl.addChild(ctrlID, objStaTitle);
  3056. objStaTitle.show();
  3057. objStaTitle.text = "[DSC\n필요]";
  3058. objStaTitle.font = "Dotum,8,bold";
  3059. objStaTitle.color = "#ff0000";
  3060. } else {
  3061. if( (stepRef.getColumn(curNo,"decirflag") == "I" ) || ( stepRef.getColumn(curNo,"decirflag") == "D") || (stepRef.getColumn(curNo,"decirflag") == "O")) {
  3062. stepRef.setColumn(curNo,"decirflag", "C" );
  3063. } else {
  3064. stepRef.setColumn(curNo,"decirflag", "" );
  3065. }
  3066. //fChangeSelectCntl("#000000", selControl);
  3067. fCreateControl();
  3068. }
  3069. if( stepRef.getColumn(curNo,"m") != "i" ){
  3070. stepRef.setColumn(curNo,"m", "u" );
  3071. }
  3072. }
  3073. //2008.08.06 pymi(e)
  3074. else {
  3075. if( flag != "SET" ){
  3076. currentStepCntl = selControl;
  3077. }
  3078. if(!utlf_isNull(selectedControl)){
  3079. //alert("selectedControl = " + selectedControl.attribute("id"));
  3080. if( oOpener.OpenerKind == "GPS" ){
  3081. fChangeSelectCntl("#000000", selectedControl);
  3082. }else if( oOpener.OpenerKind != "GPS" && utlf_isNull(stepRef.getColumn(curNo,"startendflag")) ){
  3083. fChangeSelectCntl("#000000", selectedControl);
  3084. }else{
  3085. fChangeSelectCntl("#ff9900", selectedControl);
  3086. }
  3087. }
  3088. //alert("selControl = " + selControl.attribute("id"));
  3089. fChangeSelectCntl("#A683B1", selControl);
  3090. }
  3091. selectedControl = selControl;
  3092. var stepnm = oOpener.ds_main_stepinfo_info.getColumn(0,"stepnm");
  3093. var stepmemo = oOpener.ds_main_stepinfo_info.getColumn(0,"stepmemo");
  3094. var steptimes = oOpener.ds_main_stepinfo_info.getColumn(0,"times");
  3095. return (stepnm+"|"+stepmemo+"|"+steptimes);
  3096. }
  3097. /****************************************************************************************
  3098. * Description : 연결 이벤트시, 목적 컨트롤을 클릭했을 경우, 해당하는 두개의 컨트롤 사이를에 라인을 생성한다.
  3099. * Argument : prevStepCntl - 그룹컨트롤ID(string)
  3100. * : currentStepCntl -
  3101. * return type :
  3102. ****************************************************************************************/
  3103. function fConnectToLine(prevStepCntl, currentStepCntl){
  3104. var ctrlID;
  3105. var ctrl = null;
  3106. //비교 대상인 두개 컨트롤 ID
  3107. var prevStepCntlID = prevStepCntl.name; //하위(자식)
  3108. var currentCntlID = currentStepCntl.name; //상위(부모)
  3109. if( !utlf_isNull(currentCntlID) && !utlf_isNull(prevStepCntlID) && currentCntlID.substr(0, 12) == "xforms_group" && prevStepCntlID.substr(0, 12) == "xforms_group" ){
  3110. prevStepCntlID = parseInt( prevStepCntlID.substr(12, prevStepCntlID.length-12) ) ;
  3111. currentCntlID = parseInt( currentCntlID.substr(12, currentCntlID.length-12) ) ;
  3112. utlf_addLog( "prevStepCntlID : " + prevStepCntlID + " || currentCntlID : " + currentCntlID);
  3113. //비교 대상인 두개 컨트롤 top과 높이
  3114. var prevStepCntlTop = parseInt(prevStepCntl.position.top);
  3115. var prevStepCntlHigh = parseInt(prevStepCntl.position.height);
  3116. var prevStepCntlBottom = parseInt(prevStepCntl.position.bottom);
  3117. var currentCntlTop = parseInt(currentStepCntl.position.top);
  3118. var currentCntlHigh = parseInt(currentStepCntl.height);
  3119. var currentCntlBottom = parseInt(currentStepCntl.position.bottom);
  3120. if ( prevStepCntlTop == currentCntlTop ) {
  3121. //동일한 컨트롤을 선택한 경우
  3122. prevStepCntl = null;
  3123. return;
  3124. } else {
  3125. var curcntlType = stepRef.getColumn(currentCntlID, "stepflagcd");
  3126. var preCntlType = stepRef.getColumn(prevStepCntlID, "stepflagcd");
  3127. var frXPoint = parseInt(prevStepCntl.position.left) + (parseInt(prevStepCntl.position.width) / 2 ) -15;
  3128. var toXPoint = parseInt(currentStepCntl.position.left) + (parseInt(currentStepCntl.position.width) / 2 ) -15;
  3129. var frYPoint;
  3130. var toYPoint;
  3131. //하위를 먼저 클릭하고 연결을 결정한 다음, 상단을 클릭한 경우,
  3132. if( prevStepCntlTop > currentCntlTop ) {
  3133. frYPoint = prevStepCntlTop - 1;
  3134. //toYPoint = currentCntlTop + currentCntlHigh;
  3135. toYPoint = currentCntlBottom;
  3136. if( stepRef.getColumn(currentCntlID, "startendflag") == "E" ){
  3137. stepRef.setColumn(currentCntlID, "startendflag", "");
  3138. }
  3139. if( stepRef.getColumn(prevStepCntlID, "startendflag") == "S" ){
  3140. stepRef.setColumn(prevStepCntlID, "startendflag", "");
  3141. }
  3142. if(curcntlType == "D"){
  3143. stepRef.setColumn(currentCntlID, "lnkstepno", "" );
  3144. ds_main_decisionlist_info.appendData(ds_main_temp_decisioninfo_info, true, false);
  3145. utlf_addLog("dcsCntlCnt : " + dcsCntlCnt + " dcsRef.rowcount : " + dcsRef.rowcount);
  3146. dcsRef.setColumn(dcsCntlCnt, "stepno", stepRef.getColumn(currentCntlID, "stepno"));
  3147. dcsRef.setColumn(dcsCntlCnt, "lnkstepno", stepRef.getColumn(prevStepCntlID, "stepno"));
  3148. dcsRef.setColumn(dcsCntlCnt, "m", "i");
  3149. dcsCntlCnt++;
  3150. } else {
  3151. if( utlf_isNull(stepRef.getColumn(currentCntlID, "lnkstepno")) ) {
  3152. stepRef.setColumn(currentCntlID, "lnkstepno", stepRef.getColumn(prevStepCntlID, "stepno") );
  3153. if(stepRef.getColumn(currentCntlID, "m") != "i"){
  3154. stepRef.setColumn(currentCntlID, "m", "u");
  3155. }
  3156. } else {
  3157. grp_button.btn_connection.text = "입력";
  3158. connectionMode = "false";
  3159. return;
  3160. }
  3161. }
  3162. //현재 스텝을 부모 스텝과 연결한다.
  3163. ctrlID = "xforms_line" + (controlCnt++);
  3164. //grp_swimline.createChild("xforms:line", "id:"+ ctrlID + "; x1:" + frXPoint + "px; y1:" + frYPoint + "px; x2:" + toXPoint + "px; y2:" + toYPoint + "px; border-width:2;");
  3165. var objShpTitle = new Shape();
  3166. if(!utlf_isNull(this.grp_swimline.components[ctrlID])) this.grp_swimline.removeChild(ctrlID);
  3167. objShpTitle.init(ctrlID, frXPoint, toYPoint, toXPoint+2, frYPoint);
  3168. this.grp_swimline.addChild(ctrlID, objShpTitle);
  3169. objShpTitle.show();
  3170. objShpTitle.style.strokepen = "2 solid #000000";
  3171. objShpTitle.linetype = "vertical";
  3172. swimlineControlArray[controlCnt-1] = ctrlID+"_CN"; //connection line
  3173. //상단을 먼저 클릭하고 연결을 결정한 다음, 하위를 클릭한 경우
  3174. } else if( prevStepCntlTop < currentCntlTop ) {
  3175. //frYPoint = prevStepCntlTop + prevStepCntlHigh - 1;
  3176. frYPoint = prevStepCntlBottom;
  3177. toYPoint = currentCntlTop;
  3178. if( stepRef.getColumn(prevStepCntlID, "startendflag") == "E" ){
  3179. stepRef.setColumn(prevStepCntlID, "startendflag", "");
  3180. }
  3181. if( stepRef.getColumn(currentCntlID, "startendflag") == "S" ){
  3182. stepRef.setColumn(currentCntlID, "startendflag", "");
  3183. }
  3184. if(preCntlType == "D"){
  3185. stepRef.setColumn(prevStepCntlID, "lnkstepno" , "" );
  3186. ds_main_decisionlist_info.appendData(ds_main_temp_decisioninfo_info, true, false);
  3187. utlf_addLog("dcsCntlCnt : " + dcsCntlCnt + " dcsRef.rowcount : " + dcsRef.rowcount);
  3188. dcsRef.setColumn(dcsCntlCnt, "stepno", stepRef.getColumn(prevStepCntlID, "stepno"));
  3189. dcsRef.setColumn(dcsCntlCnt, "lnkstepno", stepRef.getColumn(currentCntlID, "stepno"));
  3190. dcsRef.setColumn(dcsCntlCnt, "m", "i");
  3191. dcsCntlCnt++;
  3192. } else {
  3193. if( utlf_isNull(stepRef.getColumn(prevStepCntlID, "lnkstepno")) ) {
  3194. stepRef.setColumn(prevStepCntlID, "lnkstepno", stepRef.getColumn(currentCntlID, "stepno") );
  3195. if(stepRef.getColumn(prevStepCntlID, "m") != "i"){
  3196. stepRef.setColumn(prevStepCntlID, "m", "u");
  3197. }
  3198. } else {
  3199. grp_button.btn_connection.text = "입력";
  3200. connectionMode = "false";
  3201. return;
  3202. }
  3203. }
  3204. ctrlID = "xforms_line" + (controlCnt++);
  3205. //grp_swimline.createChild("xforms:line", "id:"+ ctrlID + "; x1:" + frXPoint + "px; y1:" + frYPoint + "px; x2:" + toXPoint + "px; y2:" + toYPoint + "px; border-width:2;");
  3206. var objShpTitle = new Shape();
  3207. if(!utlf_isNull(this.grp_swimline.components[ctrlID])) this.grp_swimline.removeChild(ctrlID);
  3208. objShpTitle.init(ctrlID, frXPoint, frYPoint, toXPoint+2, toYPoint);
  3209. this.grp_swimline.addChild(ctrlID, objShpTitle);
  3210. objShpTitle.show();
  3211. objShpTitle.style.strokepen = "2 solid #000000";
  3212. objShpTitle.linetype = "vertical";
  3213. swimlineControlArray[controlCnt-1] = ctrlID+"_CN"; //connection line
  3214. }
  3215. }
  3216. }
  3217. }
  3218. /****************************************************************************************
  3219. * Function : fChangeSelectCntl
  3220. * Description : 포커스를 갖는 컨트롤의 외곽선 색상을 변경한다.
  3221. * Argument : lineColor - 외곽선 색
  3222. * : cntl - 컨트롤(textarea)
  3223. * return type :
  3224. * Creator :
  3225. ****************************************************************************************/
  3226. function fChangeSelectCntl(lineColor, cntl){
  3227. trace("fChangeSelectCntl lineColor : " + lineColor + " || cntl : " + cntl );
  3228. if( !utlf_isNull(cntl) ){
  3229. var controlSize = cntl.position.width; //175px or 290px //추가된 서식(저장 전)이 있을때, fullsize->축소 때 err
  3230. var cntlID = cntl.name;
  3231. var num = parseInt(cntlID.substr(15, (cntlID.length-1)))+1;
  3232. var parentCtrlID = cntl.parent.name; //textarea의 parent 컨트롤인 그룹
  3233. var parentNum = parseInt( parentCtrlID.substr(12, parentCtrlID.length-12) ) + 1;
  3234. if(lineColor == "#000000") lineColor = getStepBaseColor(parentNum);
  3235. trace("controlSize : " + controlSize);
  3236. if( controlSize == 175 ) {
  3237. var line1 = this.grp_swimline.components["xforms_line" + num ];
  3238. var line2 = this.grp_swimline.components["xforms_line" + (num+1)] ;
  3239. var line3 = this.grp_swimline.components["xforms_line" + (num+2)] ;
  3240. var line4 = this.grp_swimline.components["xforms_line" + (num+3)] ;
  3241. line1.style.strokepen.color = lineColor;
  3242. line2.style.strokepen.color = lineColor;
  3243. line3.style.strokepen.color = lineColor;
  3244. line4.style.strokepen.color = lineColor;
  3245. } else if( controlSize == 290 ){
  3246. cntl.style.border.style = "solid";
  3247. cntl.style.border.color = lineColor;
  3248. }
  3249. }
  3250. }
  3251. /****************************************************************************************
  3252. * Function : getStepBaseColor
  3253. * Description : GPS일 경우, 기본 스텝 색상으로 복귀할 때, 스텝 적용 상태에 따라 색상을 달리한다.
  3254. * Argument : stepNumber
  3255. * return type :
  3256. * Creator :
  3257. ****************************************************************************************/
  3258. function getStepBaseColor(stepNumber){
  3259. if( oOpener.OpenerKind == "GPS" && oOpener.ds_main_steppath_info.findRowExpr("stepno == '" + stepNumber + "' && stepstat == '30' && stepflagcd == 'D'")) {
  3260. //return "#8EBCFF";
  3261. return "#c8e67b";
  3262. }else if( oOpener.OpenerKind == "GPS" && oOpener.ds_main_steppath_info.findRowExpr("stepno == '" + stepNumber + "' && stepstat == '20' && stepflagcd == 'D'")) {
  3263. return "#e5f3c2";
  3264. }else{
  3265. return "#000000";
  3266. }
  3267. }
  3268. /****************************************************************************************
  3269. * Function : fChangeOutLineCntl
  3270. * Description : 클릭한 지점의 영역에 해당하는 외곽선의 색상을 변경한다.
  3271. * Argument : flag - 동작 구분(reset/select)
  3272. * : no
  3273. * return type :
  3274. * Creator :
  3275. ****************************************************************************************/
  3276. function fChangeOutLineCntl(flag, no){
  3277. utlf_addLog("fChangeOutLineCntl(flag : " + flag + " , no : " + no + " )");
  3278. var asLineControl = null;
  3279. var str;
  3280. var count = 0;
  3281. if( !utlf_isNull( selectSectionsLine[0] ) && flag == "reset"){
  3282. for(var i = 0; i < 4; i++){
  3283. str = selectSectionsLine[i];
  3284. if(!utlf_isNull(str)){
  3285. asLineControl = this.grp_swimline.components[ str.substr(0, str.length-3) ];
  3286. asLineControl.style.strokepen = "1 solid #000000";
  3287. //asLineControl.border = "1 solid #000000";
  3288. selectSectionsLine[i] = "";
  3289. } else{
  3290. return;
  3291. }
  3292. }
  3293. } else if(flag == "select"){
  3294. var lngth = swimlineControlArray.length;
  3295. for(var i = 0; i < lngth; i++){
  3296. str = swimlineControlArray[i];
  3297. if( !utlf_isNull(str) ){
  3298. if( str.substr(str.length-2, 2) == "LH" ){
  3299. if(no == count){
  3300. str = swimlineControlArray[i];
  3301. asLineControl = this.grp_swimline.components[ str.substr(0, str.length-3) ];
  3302. //asLineControl.linetype = "vertical";
  3303. asLineControl.style.strokepen = "2 solid #A683B1";
  3304. //asLineControl.border = "2 solid #A683B1";
  3305. selectSectionsLine[0] = str;
  3306. str = swimlineControlArray[i+1];
  3307. asLineControl = this.grp_swimline.components[ str.substr(0, str.length-3) ];
  3308. asLineControl.style.strokepen = "2 solid #A683B1";
  3309. //asLineControl.border = "2 solid #A683B1";
  3310. selectSectionsLine[1] = str;
  3311. str = swimlineControlArray[i+2];
  3312. asLineControl = this.grp_swimline.components[ str.substr(0, str.length-3) ];
  3313. asLineControl.style.strokepen = "2 solid #A683B1";
  3314. //asLineControl.border = "2 solid #A683B1";
  3315. selectSectionsLine[2] = str;
  3316. str = swimlineControlArray[i-1];
  3317. asLineControl = this.grp_swimline.components[ str.substr(0, str.length-3) ];
  3318. asLineControl.style.strokepen = "2 solid #A683B1";
  3319. //asLineControl.border = "2 solid #A683B1";
  3320. selectSectionsLine[3] = str;
  3321. return;
  3322. }
  3323. count++;
  3324. }
  3325. }
  3326. }
  3327. }
  3328. }
  3329. /****************************************************************************************
  3330. * Function : fSetupStartEndStep
  3331. * Description : M-GPS에서 시작/종료 스텝 설정 시 값 설정 및 취소
  3332. * Argument : flag - S:시작스텝, E:종료스텝
  3333. * return type :
  3334. * Creator :
  3335. ****************************************************************************************/
  3336. function fSetupStartEndStep( flag ){
  3337. var nFlag = "";
  3338. if( flag == "S" ) nFlag = "E";
  3339. else nFlag = "S";
  3340. var curID = currentStepCntl.name;
  3341. var curNo = parseInt( curID.substr(12, curID.length-12) );
  3342. var srcStep = "";
  3343. var trgStep = stepRef.getColumn(curNo,"stepno"); //현재 선택한 시작될 스텝
  3344. var startEndFlag = oOpener.ds_main_steppath_info.getColumn(curNo,"startendflag");
  3345. //시작스텝 설정 or 취소-종료스텝 설정
  3346. var sFlag = oOpener.ds_main_steppath_info.findRow("stepno",trgStep);
  3347. if( sFlag == -1 ){
  3348. var orgStartStepNo = oOpener.ds_main_steppath_info.getColumn(oOpener.ds_main_steppath_info.findRow("startendflag",flag),"stepno"); //원래 시작 스텝
  3349. if( !utlf_isNull(orgStartStepNo) ){
  3350. srcStep = orgStartStepNo;
  3351. }
  3352. if( !utlf_isNull(srcStep) ){
  3353. dsf_makeValue(stepRef,"startendflag","string","",stepRef.findRow("stepno",srcStep)); //이전 시작스텝 - 설정 취소
  3354. if( !utlf_isNull(oOpener.ds_main_steppath_info.getColumn(oOpener.ds_main_steppath_info.findRow("stepno",srcStep),"startendflag")) ){
  3355. oOpener.ds_main_steppath_info.setColumn(oOpener.ds_main_steppath_info.findRow("stepno",srcStep),"startendflag","");
  3356. }
  3357. }
  3358. //server에서 decision을 미리 내린다(자동결정기능)
  3359. var tSwimlineno = stepRef.getColumn(curNo,"swimlineno");
  3360. if( !oOpener.fInsCPGAppPatInfo( "A", trgStep, "", tSwimlineno) ){
  3361. return;
  3362. }
  3363. ds_main.setColumn(0,"seldecisionstep" , "");
  3364. ds_main.setColumn(0,"seldecisionstepno" , "")
  3365. dsf_createDs("ds_temp_stepptah_info");
  3366. oOpener.ds_main_steppath_info.filter("stepflagcd=='D'");
  3367. ds_temp_stepptah_info.copyData(oOpener.ds_main_steppath_info,true);
  3368. // var stepPathList = oOpener.instance1.selectNodes("/root/main/steppath/info" + "[stepflagcd='D']"); //원래 시작 스텝
  3369. var stepPathList = ds_temp_stepptah_info;
  3370. oOpener.ds_main_steppath_info.filter("");
  3371. for( var i = 0; i < stepPathList.rowcount; i++ ){
  3372. // var node = stepPathList.item(i);
  3373. var decNode = stepPathList.getColumn(i,"stepno");
  3374. var ansNode = stepPathList.getColumn(i,"answstepno");
  3375. stepRef.setColumn(stepRef.findRow("stepno",decNode),"dcsnstep", ansNode);
  3376. oOpener.dsf_makeValue(stepRef,"dcsnstep","string",ansNode,stepRef.findRow("stepno",decNode));
  3377. }
  3378. dsf_deleteDs("ds_temp_stepptah_info");
  3379. //## 스텝 경로 수정 후, 기존 선택된 결정값 초기화 2010.04.30 KHJ
  3380. // var DStepNodeList = instance1.selectNodes(stepRef + "[stepflagcd='D']");
  3381. stepRef.filter("stepflagcd=='D'");
  3382. var DStepNodeList = stepRef;
  3383. // var openerDStepNodeList = oOpener.instance1.selectNodes("/root/main/steppath/info" + "[stepflagcd='D']");
  3384. oOpener.ds_main_steppath_info.filter("stepflagcd=='D'");
  3385. var openerDStepNodeList = oOpener.ds_main_steppath_info;
  3386. for (var i = 0; i < DStepNodeList.rowcount; i++) {
  3387. // var DStepNode = DStepNodeList.item(i);
  3388. var DStepNo = DStepNodeList.getColumn(i,"stepno"); //DStepNode.selectSingleNode("stepno");
  3389. var sameYN = "N";
  3390. for (var j = 0; j < openerDStepNodeList.rowcount; j++) {
  3391. // var openerDStepNode = openerDStepNodeList.item(j);
  3392. var openerDStepNo = openerDStepNodeList.getColumn(j,"stepno");
  3393. if (DStepNo == openerDStepNo) sameYN = "Y";
  3394. }
  3395. // 스텝 경로에 없는 결정(Decision)은 dcsnstep을 0 처리
  3396. if (sameYN == "N") {
  3397. stepRef.setColumn(stepRef.findRow("stepno",DStepNo),"dcsnstep", "");
  3398. dsf_makeValue(oOpener.stepRef,"dcsnstep","string","",oOpener.stepRef.findRow("stepno",DStepNo));
  3399. }
  3400. }
  3401. oOpener.ds_main_steppath_info.filter("");
  3402. stepRef.filter("");
  3403. }
  3404. var orgStartStepNo = oOpener.ds_main_steppath_info.getColumn(oOpener.ds_main_steppath_info.findRow("startendflag",flag),"stepno"); //원래 시작 스텝
  3405. if( !utlf_isNull(orgStartStepNo) ){
  3406. srcStep = orgStartStepNo;
  3407. }
  3408. if( !utlf_isNull(srcStep) ){
  3409. dsf_makeValue(stepRef,"startendflag","string","",stepRef.findRow("stepno",srcStep)); //이전 시작스텝 - 설정 취소
  3410. //if( !utlf_isNull(oOpener.ds_main_steppath_info.getColumn(oOpener.ds_main_steppath_info.findRow("stepno",srcStep),"startendflag")) ) {
  3411. oOpener.ds_main_steppath_info.setColumn(oOpener.ds_main_steppath_info.findRow("stepno",srcStep),"startendflag","");
  3412. //}
  3413. }
  3414. dsf_makeValue(stepRef,"startendflag","string",flag,stepRef.findRow("stepno",trgStep));
  3415. //if( !utlf_isNull(oOpener.ds_main_steppath_info.getColumn(oOpener.ds_main_steppath_info.findRow("stepno",trgStep),"startendflag")) ){
  3416. oOpener.ds_main_steppath_info.setColumn(oOpener.ds_main_steppath_info.findRow("stepno",trgStep),"startendflag",flag);
  3417. //}
  3418. oOpener.ds_temp1_refresh_obj.setColumn(0,"change_gps", "Y");
  3419. //적용스템 경로 출력 (2010.05.18 JJE)
  3420. oOpener.fGetAppScopList();
  3421. if( flag == "S" ) ds_temp.setColumn(0,"startstepno", trgStep);
  3422. else ds_temp.setColumn(0,"endstepno", trgStep);
  3423. //직접 refresh 수행
  3424. fCreateControl();
  3425. selectedControl = null;
  3426. fChangeSelectCntl("#A683B1", currentStepCntl);
  3427. }
  3428. /****************************************************************************************
  3429. * Function : fInitLoadingForm
  3430. * Description :
  3431. * Argument :
  3432. * return type :
  3433. * Creator :
  3434. ****************************************************************************************/
  3435. function fInitLoadingForm(){
  3436. //-------------------------------서식(main) 호출(2008.09.05)---------------------------//
  3437. if(oOpener.OpenerKind != "GPS" ) return;
  3438. //if( oOpener.window.javascript.cpgflagcd != "02" ) return;
  3439. if(oOpener.loadFormTab != "O") return;
  3440. //전처방 로딩이 완료되면 진료대상자에서 진료기록을 호출하는 로직
  3441. var mainObj = frmf_getMainViewer();
  3442. var srcOrdPatListwnd = mainObj.frmf_findPopup("SMMMO04100");
  3443. //마취기록지에서 처방창을 열경우 마취기록지를 initialize 시키지 않는 로직
  3444. var srcAnstRecwnd = mainObj.frmf_findPopup("SMMMR03700");
  3445. var anstrereload = mainObj.frmf_getParameter("SMMMR03700_refresh");
  3446. if( !utlf_isNull(srcAnstRecwnd) ) {
  3447. var anstrereload = srcAnstRecwnd.frmf_getParameter("SMMMR03700_refresh");
  3448. }
  3449. //최초 적용 시, 처방창에서 이미 기록지 호출이 되었으므로, 재호출 안함 -> oOpener.window.javascript.appstepstatflag != "i" 조건 추가 (2008.09.29)
  3450. if ( anstrereload != "false" && !utlf_isNull(srcOrdPatListwnd) && oOpener.appstepstatflag != "i" ) {
  3451. var fstopenflag = oOpener.ds_temp1_refresh_obj.getColumn(0,"refreshyn"); //처방화면이 최초 생성 여부
  3452. //alert( "Refresy_YN = " + fstopenflag );
  3453. if( fstopenflag == "N") {
  3454. oOpener.ds_init.setColumn(0,"fstopenflag", "Y"); //잠시, 값 치환
  3455. srcOrdPatListwnd.fChngMainEMRScrn();
  3456. var scrnwnd = frmf_findPopup("SPMMB08400");
  3457. if(!utlf_isNull(scrnwnd)){
  3458. scrnwnd.fCloseOpenEmrWnd();
  3459. }
  3460. }else return;
  3461. }else return;
  3462. oOpener.ds_temp1_refresh_obj.setColumn(0,"refreshyn", "Y"); //최초조회가 아닌경우, refresh 여부 "Y"
  3463. oOpener.ds_init.setColumn(0,"fstopenflag", "N"); //처방최초 open여부를 재설정, 진료기록을 열기위해
  3464. //--------------------------------------------------------------------------------//
  3465. //2008.09.04 순서 변경
  3466. oOpener.fMssg(); //Drop 및 퇴원예고 유도... 알림 Message 출력
  3467. }
  3468. /****************************************************************************************
  3469. * Function : fChgDschTimes
  3470. * Description : 삭제하는 라인의 다음 라인이 퇴원일이라면, 퇴원일스텝의 times를 조정해주어야 함. (2008.11.12)
  3471. * Argument : no - 마지막라인넘버
  3472. * return type :
  3473. * Creator :
  3474. ****************************************************************************************/
  3475. function fChgDschTimes(no){
  3476. var ioflag = oOpener.ds_main_masterinfo_info.getColumn(0,"ioflagcd");
  3477. if( cpgflagcd == "01" && ioflag == "I" ){
  3478. stepRef.filter("swimlineno == '" + no + "' && stepnm == '퇴원일'");
  3479. if(stepRef.rowcount > 0){
  3480. for(var i = 0; i < stepRef.rowcount; i++){
  3481. var dschTimesNode = stepRef.getColumn(i,"times");
  3482. var mNode = stepRef.getColumn(i,"m");
  3483. stepRef.setColumn(i, "times", parseInt(dschTimesNode)-1 );
  3484. if(mNode != "i") stepRef.setColumn(i,"m","u");
  3485. }
  3486. }
  3487. stepRef.filter("");
  3488. }
  3489. }
  3490. /****************************************************************************************
  3491. * Function : fDelLastSwimLine
  3492. * Description : 마지막 스윔라인을 삭제한다.
  3493. * Argument :
  3494. * return type :
  3495. * Creator :
  3496. ****************************************************************************************/
  3497. function fDelLastSwimLine(){
  3498. var endPnt = parseInt(outsideControlCnt);
  3499. var cnt = 0;
  3500. for (var i = endPnt; i >= 0; i--){
  3501. var str = swimlineControlArray[i];
  3502. if(!utlf_isNull(str)){
  3503. if(str.substr(0,12) != "xforms_group"){
  3504. var cntlStr = str.substr(str.length-2, 2);
  3505. if( cnt < 3 && (cntlStr == "DW" || cntlStr == "RH" || cntlStr == "LH") ){
  3506. var oNm = str.substr(0, str.length-3);
  3507. utlf_addLog(" fDelLastSwimLine name : " + oNm + " || full name : " + str);
  3508. if( grp_swimline.components[oNm] != null )
  3509. grp_swimline.removeChild( str.substr(0, str.length-3) );
  3510. // this.grp_swimline.components[str.substr(0, str.length-3)].destroy();
  3511. swimlineControlArray[i] = "";
  3512. cnt++;
  3513. }else {
  3514. return;
  3515. }
  3516. }
  3517. }
  3518. }
  3519. var a = swimlineControlArray.slice(0, (endPnt-3));
  3520. var b = swimlineControlArray.slice(endPnt, swimlineControlArray.length);
  3521. swimlineControlArray.slice(0, swimlineControlArray.length);
  3522. swimlineControlArray = a.concat(b);
  3523. outsideControlCnt = outsideControlCnt - 3;
  3524. //(요기) 마지막 라인을 삭제 하고 다시 마지막에 라인을 추가했을 때, 라인 선택을 하면 스크립트 오류 발생, 전체 컨트롤을 처음부터 다시 그려줘야 오류가 안 생긴다
  3525. /*
  3526. var stepNodeList = instance1.selectNodes(stepRef);
  3527. var nodeListCSV = getNodeListCSV(stepNodeList);
  3528. oOpener.window.javascript.fCreateOutLineView(); //fOutlineCntlInit(), fInitialize()
  3529. var agr1 = model.getValue("/root/outlineinfo/swimlineno"); //그려야 할 컨트롤 갯수
  3530. var agr2 = (parseInt(model.getValue("/root/outlineinfo/swimlineno")) * 3) - 1; //아웃라인을 구성하는 라인 컨트롤 갯수
  3531. initGlobalVariant(agr1, agr2);
  3532. setCSVToNode("/root/main/steplist", nodeListCSV, "info");
  3533. */
  3534. }
  3535. /****************************************************************************************
  3536. * Function : fViewDetailInfo
  3537. * Description : Detail 정보를 조회, 저장한다.
  3538. * Argument :
  3539. * return type :
  3540. * Creator :
  3541. ****************************************************************************************/
  3542. function fViewDetailInfo(OpenerKind){
  3543. if( allInfoSave() ){
  3544. //oOpener.window.javascript.fSizeControl();
  3545. if(cpgflagcd == "01"){
  3546. ds_main_outlineinfo_info.setColumn(0,"cpgflagcd", "W");
  3547. } else if(cpgflagcd == "02"){
  3548. ds_main_outlineinfo_info.setColumn(0,"cpgflagcd", "G");
  3549. }
  3550. var nodeList = stepRef; //instance1.selectNodes(stepRef);
  3551. //var nodeList = instance1.selectNodes(sortedStepRef);
  3552. var csv = dsf_getDsCSV(nodeList); //getNodeListCSV(nodeList);
  3553. // model.setValue("/root/main/temp/selectedstep/csvlist", csv);
  3554. ds_main_temp_selectedstep.setColumn(0,"csvlist",csv);
  3555. if(oOpener.grp_biz.btn_action_tab.getSelectStatus() == true){
  3556. //grp_swimline.vscroll.attribute("pos") = "0";
  3557. //grp_swimline.hscroll.attribute("pos") = "0"
  3558. /* 대응하는 함수가 맞는지 확인필요 */
  3559. var vscrollPos = grp_swimline.vscrollbar.pos; //grp_swimline.vscroll.attribute("pos");
  3560. var hscrollPos = grp_swimline.hscrollbar.pos; //grp_swimline.hscroll.attribute("pos");
  3561. // grp_swimline.ivw_detail.position.top = vscrollPos;
  3562. // grp_swimline.ivw_detail.position.left = hscrollPos;
  3563. /* 대응하는 함수가 맞는지 확인필요 */
  3564. if( utlf_isNull(currentStepCntl) && grpControlCnt == 0 && OpenerKind != "GPS" ){
  3565. var msg = sysf_messageBox("스텝을 ", "C002");
  3566. return;
  3567. }else{
  3568. if(utlf_isNull(currentStepCntl)){ //currentStepCntl == null && grpControlCnt > 0
  3569. utlf_addLog("3427 currentStepCntl set xforms_group0");
  3570. currentStepCntl = this.grp_swimline.components["xforms_group0"];
  3571. // model.setValue("/root/main/temp/selectedstep/stepno", model.getValue(stepRef + "[1]/stepno"));
  3572. ds_main_temp_selectedstep.setColumn(0,"stepno",stepRef.getColumn(0,"stepno"));
  3573. // model.setValue("/root/main/temp/selectedstep/stepflagcd", model.getValue(stepRef + "[1]/stepflagcd"));
  3574. ds_main_temp_selectedstep.setColumn(0,"stepflagcd",stepRef.getColumn(0,"stepflagcd"));
  3575. }
  3576. // grp_swimline.attribute("overflow") = "hidden";
  3577. grp_swimline.vscrollbar.pos = 0;
  3578. grp_swimline.scrollbars = "none";
  3579. oOpener.grp_biz.cap_outlineinfo.text = "OCS 정보";
  3580. var setno = null;
  3581. var selectedDay = null;
  3582. var saveStatus = null;
  3583. var nodelist = null;
  3584. if(OpenerKind != "GPS"){
  3585. if( utlf_isNull(prevStepCntl) ){
  3586. grp_swimline.ivw_detail.fInitData();
  3587. grp_swimline.ivw_detail.visible = true;
  3588. grp_swimline.ivw_detail.bringToFront();
  3589. grp_swimline.enableevent = false;
  3590. if( grp_button.visible == true ){
  3591. grp_button.setVisible = grp_button.visible;
  3592. grp_button.visible = false;
  3593. }
  3594. }else{
  3595. if( prevStepCntl.name != currentStepCntl.name ){
  3596. // ivw_detail.attribute("src") = "../../../emr/cpgweb/xrw/SPMQP01400_STEP처방관리.xrw";
  3597. grp_swimline.ivw_detail.url = "emr_cpgxp::SPMQP01400_STEP처방관리.xfdl";
  3598. }
  3599. }
  3600. }
  3601. }
  3602. return;
  3603. }else if(oOpener.grp_biz.btn_outline_tab.getSelectStatus() == true){
  3604. // grp_swimline.attribute("overflow") = "scroll";
  3605. grp_swimline.scrollbars = "autoboth";
  3606. //grp_swimline.attribute("height") = swimLineHight * parseInt(lineNo) ;
  3607. //ivw_detail.attribute("height") = swimLineHight * parseInt(lineNo) ;
  3608. //grp_swimline.refresh();
  3609. if( OpenerKind != "GPS" && grp_swimline.ivw_detail.visible == true ){
  3610. if( val_callfCreateControlYN == "Y" ){
  3611. var org_currentStepCntl = currentStepCntl.name;
  3612. utlf_addLog("org_currentStepCntl : " + org_currentStepCntl);
  3613. fCreateControl();
  3614. currentStepCntl = this.grp_swimline.components[org_currentStepCntl];
  3615. utlf_addLog("currentStepCntl : " + currentStepCntl);
  3616. var currentStepCntlID = currentStepCntl.name;
  3617. fChildrenCtrlToSelCtrl(currentStepCntlID);
  3618. // fChangeSelectCntl("#A683B1", currentStepCntl);
  3619. val_callfCreateControlYN = "N";
  3620. }
  3621. }
  3622. if(oOpener.preSelectedTab == "btn_action_tab" && grp_swimline.ivw_detail.url == "emr_cpgxp::SPMQP01400_STEP처방관리.xfdl" ){
  3623. if( grp_swimline.ivw_detail.ds_main_prcplist.findRowExpr("status != 'S' && status != '-'") > -1
  3624. || grp_swimline.ivw_detail.ds_main_formlist.findRowExpr("status == 'i' || status == 'd' || status == 'u'") > -1){
  3625. if( oOpener.ds_temp_getdata.getColumn(0,"authflag") == "M" ){ //조회모드일 때에는 저장하지 않는다 (!= 'S')
  3626. oOpener.grp_btn.btn_newver.click();
  3627. }
  3628. }
  3629. }
  3630. oOpener.grp_biz.cap_outlineinfo.text = "OutLine 정보";
  3631. grp_swimline.ivw_detail.visible = false;
  3632. grp_swimline.enableevent = true;
  3633. if( !utlf_isNull(grp_button.setVisible) && grp_button.setVisible == true ){
  3634. grp_button.setVisible = "";
  3635. grp_button.visible = true;
  3636. }
  3637. return;
  3638. } else if(oOpener.grp_biz.btn_detail_tab.getSelectStatus() == true ){
  3639. if( grp_swimline.ivw_detail.url != "emr_prcpmngtxp::SMMMO00100_처방.xfdl"
  3640. || (grp_swimline.ivw_detail.url == "emr_prcpmngtxp::SMMMO00100_처방.xfdl" && readyPrcp == "Y") ){
  3641. if(OpenerKind != "GPS"){
  3642. if(oOpener.preSelectedTab == "btn_action_tab" && grp_swimline.ivw_detail.url == "emr_cpgxp::SPMQP01400_STEP처방관리.xfdl" ){
  3643. oOpener.grp_btn.btn_newver.click();
  3644. }
  3645. }
  3646. //grp_swimline.vscroll.attribute("pos") = "0";
  3647. //grp_swimline.hscroll.attribute("pos") = "0";
  3648. // var vscrollPos = grp_swimline.vscroll.attribute("pos");
  3649. // var hscrollPos = grp_swimline.hscroll.attribute("pos");
  3650. // ivw_detail.attribute("top") = vscrollPos;
  3651. // ivw_detail.attribute("left") = hscrollPos;
  3652. var vscrollPos = grp_swimline.vscrollbar.pos;
  3653. var hscrollPos = grp_swimline.hscrollbar.pos;
  3654. // grp_swimline.ivw_detail.position.top = vscrollPos;
  3655. // grp_swimline.ivw_detail.position.left = hscrollPos;
  3656. var stepinfo = oOpener.frmf_getParameter("stepinfo");
  3657. frmf_setParameter("stepinfo", stepinfo);
  3658. grp_swimline.ivw_detail.url = "emr_cpgxp::SPMMP02200_DetailView.xfdl"; //"../../../emr/prcpmngtweb/xrw/SPMMP02200_DetailView.xrw";
  3659. // grp_swimline.attribute("overflow") = "hidden";
  3660. grp_swimline.scrollbars = "none";
  3661. oOpener.grp_biz.cap_outlineinfo.text = "환자계획표";
  3662. }else{
  3663. oOpener.lf_btn_Selected("btn_action_tab");
  3664. }
  3665. grp_swimline.ivw_detail.visible = true;
  3666. return;
  3667. }
  3668. }else{
  3669. return false;
  3670. }
  3671. }
  3672. /****************************************************************************************
  3673. * Function : allInfoSave
  3674. * Description : Master 정보를 저장한다.
  3675. * Argument :
  3676. * return type :
  3677. * Creator :
  3678. ****************************************************************************************/
  3679. function allInfoSave(){
  3680. if( oOpener.ds_temp_getdata.getColumn(0,"authflag") != "M" ){
  3681. return true;
  3682. }
  3683. if( utlf_isNull(oOpener.ds_main_masterinfo_info.getColumn(0,"cpgno")) && utlf_isNull(oOpener.ds_main_masterinfo_info.getColumn(0,"cpgflagcd")) ){
  3684. sysf_messageBox("Master 정보가 존재하지 않아 실행 ", "E001");
  3685. return;
  3686. }else if( utlf_isNull(oOpener.ds_main_masterinfo_info.getColumn(0,"cpgno")) && !utlf_isNull(oOpener.ds_main_masterinfo_info.getColumn(0,"cpgflagcd")) ){
  3687. var msg = sysf_messageBox("Master 정보가 저장되지 않았습니다. 임시", "Q002");
  3688. if(msg == 6){
  3689. if( !fCheckEssVal("N") ){
  3690. return;
  3691. if( oOpener.preSelectedTab == "btn_action_tab" ){
  3692. oOpener.btn_detail_tab.tabindex = 1; //oOpener.btn_action_tab.selected = true;
  3693. }else if( oOpener.preSelectedTab == "btn_detail_tab" ){
  3694. oOpener.btn_detail_tab.tabindex = 0; //oOpener.btn_detail_tab.selected = true;
  3695. }
  3696. }
  3697. if( oOpener.ds_temp_getdata.getColumn(0,"authflag") == "M" ){
  3698. oOpener.grp_btn.btn_newver.click();
  3699. return true;
  3700. }
  3701. } else if(msg == 7) {
  3702. return false;
  3703. }
  3704. }else{
  3705. var nFindRow = stepRef.findRowExpr("m == 'i' || m == 'u'");
  3706. var nFindRow2 = dcsRef.findRowExpr("m == 'i' || m == 'u'");
  3707. if( (!utlf_isNull(stepRef.getColumn(nFindRow,"stepno")) || !utlf_isNull(dcsRef.getColumn(nFindRow2,"stepno"))
  3708. || !utlf_isNull(ds_temp_delsteplist_info.getColumn(0,"stepno")) || !utlf_isNull(ds_temp_deldecisionlist_info.getColumn(0,"stepno")) )
  3709. || (grp_swimline.ivw_detail.visible == true
  3710. && (grp_swimline.ivw_detail.objects["ds_main_prcplist"] != null && grp_swimline.ivw_detail.ds_main_prcplist.findRowExpr("status != 'S' && status != '-'") > -1)
  3711. || (grp_swimline.ivw_detail.objects["ds_main_formlist"] != null && grp_swimline.ivw_detail.ds_main_formlist.findRowExpr("status == 'i' || status == 'd' || status == 'u'") > -1 )
  3712. ) ){
  3713. var msg = sysf_messageBox("저장되지 않은 정보가 존재합니다. 임시", "Q002");
  3714. if(msg == 6){
  3715. if( !fCheckEssVal("N") ){
  3716. return;
  3717. if( oOpener.preSelectedTab == "btn_action_tab" ){
  3718. oOpener.btn_detail_tab.tabindex = 1; //oOpener.btn_action_tab.selected = true;
  3719. }else if( oOpener.preSelectedTab == "btn_detail_tab" ){
  3720. oOpener.btn_detail_tab.tabindex = 0; //oOpener.btn_detail_tab.selected = true;
  3721. }
  3722. }
  3723. oOpener.grp_btn.btn_newver.click();
  3724. return true;
  3725. } else if(msg == 7) {
  3726. return false;
  3727. }
  3728. }
  3729. return true;
  3730. }
  3731. }
  3732. /****************************************************************************************
  3733. * Function : fCheckEssVal
  3734. * Description : 스텝 저장 전, 필수 값 체크를 한다
  3735. * Argument :
  3736. * return type :
  3737. * Creator :
  3738. ****************************************************************************************/
  3739. function fCheckEssVal( essYN, stepNo ){
  3740. cpgflagcd = oOpener.ds_main_masterinfo_info.getColumn(0,"cpgflagcd");
  3741. var fcstinhospdayno = oOpener.ds_main_masterinfo_info.getColumn(0,"fcstinhospdayno"); //ds_main_masterinfo_info.getColumn(0,"fcstinhospdayno");
  3742. if( ds_main_steplist_info.rowcount > 0 ){
  3743. if( (cpgflagcd == "01" && essYN == "Y") || (cpgflagcd == "02" && !utlf_isNull(fcstinhospdayno)) ){
  3744. // 저장 필수체크
  3745. // 1. Day 체크
  3746. if( stepRef.findRow("times","") > -1 ){
  3747. sysf_messageBox("모든 Step의 Day는 ", "I003");
  3748. return false;
  3749. }
  3750. }
  3751. // 임시저장+저장 필수체크
  3752. // 2. 시작스텝 체크
  3753. var nodeList = stepRef;
  3754. // var startNodeList = instance1.selectNodes(stepRef + "[startendflag = 'S']");
  3755. dsf_createDs("ds_temp_stepRef1");
  3756. stepRef.filter("startendflag == 'S'");
  3757. ds_temp_stepRef1.copyData(stepRef,true);
  3758. var startNodeList = ds_temp_stepRef1;
  3759. // var endNodeList = instance1.selectNodes(stepRef + "[startendflag = 'E']");
  3760. dsf_createDs("ds_temp_stepRef2");
  3761. stepRef.filter("startendflag == 'E'");
  3762. ds_temp_stepRef2.copyData(stepRef,true);
  3763. var endNodeList = ds_temp_stepRef2;
  3764. stepRef.filter("");
  3765. if( nodeList.rowcount > 1 && startNodeList.rowcount <= 0 ){
  3766. if( stepRef.findRowExpr("swimlineno == '1' && refseq == '1'") > -1 ){
  3767. stepRef.setColumn(stepRef.findRowExpr("swimlineno == '1' && refseq == '1'"),"startendflag", "S");
  3768. }else{
  3769. var minLineNo = nodeList.rowcount;
  3770. for(var i = 0; i < nodeList.rowcount; i++){
  3771. // var node = nodeList.item(i);
  3772. var iSwimLineNo = parseInt(nodeList.getColumn(i,"swimlineno"));
  3773. if( iSwimLineNo <= minLineNo ){
  3774. minLineNo = iSwimLineNo;
  3775. }
  3776. }
  3777. // model.setValue(stepRef + "[swimlineno='"+minLineNo+"' and refseq='1']/startendflag", "S");
  3778. stepRef.setColumn(stepRef.findRowExpr("swimlineno=='"+minLineNo+"' && refseq=='1'"),"startendflag","S");
  3779. }
  3780. }else if( nodeList.rowcount > 1 && startNodeList.rowcount > 1 ){
  3781. sysf_messageBox("시작스텝은 둘 이상 존재할 수", "I004");
  3782. return false;
  3783. }
  3784. dsf_createDs("ds_temp_stepRef3");
  3785. stepRef.filter("startendflag != 'S'");
  3786. ds_temp_stepRef3.copyData(stepRef,true);
  3787. stepRef.filter("");
  3788. var notStartNodeList = ds_temp_stepRef3; //instance1.selectNodes(stepRef + "[startendflag != 'S']");
  3789. if( notStartNodeList.rowcount > 1 ){
  3790. for(var i = 0; i < notStartNodeList.rowcount; i++){
  3791. // var node = notStartNodeList.item(i);
  3792. var stepNode = notStartNodeList.getColumn(i,"stepno");
  3793. var role1 = stepRef.findRow("lnkstepno",stepNode); //instance1.selectSingleNode(stepRef + "[lnkstepno='" + stepNode.text + "']");
  3794. var role2 = dcsRef.findRow("lnkstepno",stepNode); //instance1.selectSingleNode(dcsRef + "[lnkstepno='" + stepNode.text + "']");
  3795. if( role1 < 0 && role2 < 0 ){
  3796. sysf_messageBox("시작스텝은 둘 이상 존재할 수", "I004");
  3797. return false;
  3798. }
  3799. }
  3800. }
  3801. // 3. 스텝간의 연결 체크(종료스텝 필)
  3802. if( cpgflagcd == "01" && nodeList.rowcount > 1 && endNodeList.rowcount <= 0 ){
  3803. //end스텝 강제 설정 방법 변경 (2008.12.09)
  3804. var maxLineNo = ds_main_outlineinfo_info.getColumn(0,"swimlineno");
  3805. dsf_createDs("ds_temp_stepRef4");
  3806. stepRef.filter("swimlineno='"+ maxLineNo +"'");
  3807. ds_temp_stepRef4.copyData(stepRef,true);
  3808. stepRef.filter("");
  3809. var notEndNodeList = ds_temp_stepRef4; //instance1.selectNodes(stepRef + "[swimlineno='"+ maxLineNo +"']");
  3810. for(var i = 0; i < notEndNodeList.rowcount; i++){
  3811. // var node = notEndNodeList.item(i);
  3812. // var startendflagNode = node.selectSingleNode("startendflag");
  3813. // model.setValue(startendflagNode, "E");
  3814. notEndNodeList.setColumn(i,"startendflag","E");
  3815. }
  3816. }
  3817. //CPG end스텝 자동 설정 (2009.03.02)
  3818. if( cpgflagcd == "02" && nodeList.rowcount > 1){
  3819. for( var i = nodeList.rowcount-1; i >= 0; i-- ){
  3820. // var iNode = nodeList.item(i);
  3821. var lnkNode = nodeList.getColumn(i,"stepno");
  3822. var startendflag = nodeList.getColumn(i,"startendflag");
  3823. var lnkstepno = nodeList.getColumn(i,"lnkstepno");
  3824. var stepflagcd = nodeList.getColumn(i,"stepflagcd");
  3825. if( utlf_isNull(lnkstepno) && startendflag != "S" && stepflagcd == "A" ){
  3826. var lnkNodes = stepRef.findRow("lnkstepno",lnkNode); //instance1.selectNodes(stepRef + "[lnkstepno='"+lnkNode.text+"']");
  3827. var dcsNodes = dcsRef.findRow("lnkstepno",lnkNode); //instance1.selectNodes(dcsRef + "[lnkstepno='" + +lnkNode.text + "']");
  3828. if(lnkNodes > -1 || dcsNodes > -1 ){
  3829. nodeList.setColumn(i,"startendflag","E");
  3830. }
  3831. }
  3832. }
  3833. }
  3834. // if( instance1.selectSingleNode(stepRef + "[stepflagcd='A' and startendflag!='E' and lnkstepno='']") != null ){
  3835. if( !utlf_isNull(fcstinhospdayno) && fcstinhospdayno != "1") { // 하루짜리 CP는 체크 하지 않도록 수정. 2016.03.31 엄영만
  3836. if( stepRef.findRowExpr("stepflagcd == 'A' && startendflag != 'E' && utlf_isNull(lnkstepno)") > -1 ){
  3837. sysf_messageBox("스텝간의 연결 혹은 종료스텝 설정을", "I007") ;
  3838. return false;
  3839. }
  3840. }
  3841. //등록일 경우만 check
  3842. if( essYN == "Y" ){
  3843. if( cpgflagcd == "01" ){
  3844. //4. 퇴원필요 Step 처리 여부
  3845. //2008.07.29 pymi 저장시 퇴원필요 step 처리여부
  3846. if(grp_swimline.ivw_detail.visible == true) {
  3847. var dschStep = grp_swimline.ivw_detail.ds_main_prcplist.findRowExpr("prcpkindcd == '60' || prcpkindcd == '70'"); //instance1.selectNodes("/root/main/prcp/prcplist[prcpkindcd = '60' or prcpkindcd = '70']");
  3848. if( dschStep > -1 ) {
  3849. curSetno = grp_swimline.ivw_detail.ds_hidden_prmsprcpsetdetlset.getColumn(0,"setno");
  3850. curStepno = grp_swimline.ivw_detail.ds_temp_steplist_stepinfo.getColumn(grp_swimline.ivw_detail.ds_temp_steplist_stepinfo.findRow("setno",curSetno),"stepno"); //instance1.selectSingleNode("root/temp/steplist/stepinfo[setno ='" + curSetno + "']/stepno");
  3851. if( "D" != ds_main_steplist_info.getColumn(ds_main_steplist_info.findRow("stepno",curStepno),"decirflag") ) { //instance1.selectSingleNode("/root/main/steplist/info[stepno = '" + curStepno.text + "']/decirflag").text ) {
  3852. sysf_messageBox("퇴원필요step을 지정", "I008");
  3853. return false;
  3854. }
  3855. }
  3856. }
  3857. }
  3858. }
  3859. }else{
  3860. fcstinhospdayno = oOpener.ds_main_masterinfo_info.getColumn(0,"fcstinhospdayno");
  3861. if( cpgflagcd != "01" && !utlf_isNull(fcstinhospdayno) && fcstinhospdayno != oOpener.ds_main_masterinfo_info.getColumn(0,"swimlineno") ){
  3862. if( sysf_messageBox("스윔라인수와 재원일수가 일치하지 않아서\n회차 정보를 자동입력할 수 없습니다.\n\n", "Q003") == 7 ){
  3863. return false;
  3864. }
  3865. }
  3866. }
  3867. return true;
  3868. }
  3869. /****************************************************************************************
  3870. * Description : 저장 후 셋번호 바뀌면, 스텝에 바뀐 셋 번호를 매핑시킨다
  3871. * Argument :
  3872. * return type :
  3873. ****************************************************************************************/
  3874. function fSetStepSetNo(){
  3875. var prmsDs = oOpener.objects["ds_temp_tempnode_prms"];
  3876. var trgNode = null;
  3877. var prmsSetNode = null;
  3878. for( var i=0; i<prmsDs.rowcount; i++ ){
  3879. var oldSetNo = prmsDs.getColumn(i, "oldsetno");
  3880. var newSetNo = prmsDs.getColumn(i, "newsetno");
  3881. var nFindRow = stepRef.findRow("setno", oldSetNo);
  3882. if( nFindRow > -1 ){
  3883. stepRef.setColumn(nFindRow, "setno", newSetNo);
  3884. }
  3885. //2007.10.30 추가 (임시저장 할 때, 이전 버전의 셋번호에 업데이트하는 오류 처리)
  3886. if( grp_swimline.ivw_detail.visible == true ){
  3887. nFindRow = grp_swimline.ivw_detail.ds_hidden_prmsprcpsetdetlset.findRow("setno", oldSetNo);
  3888. if( nFindRow > -1 ){
  3889. grp_swimline.ivw_detail.ds_hidden_prmsprcpsetdetlset.setColumn(nFindRow, "setno", newSetNo);
  3890. }
  3891. }
  3892. }
  3893. var csv = dsf_getDsCSV(stepRef);
  3894. ds_main_temp_selectedstep.setColumn(0,"csvlist",csv);
  3895. if( grp_swimline.ivw_detail.visible == true ){
  3896. grp_swimline.ivw_detail.fSetStepSetNo();
  3897. }
  3898. }
  3899. /****************************************************************************************
  3900. * Function : fMakeNode
  3901. * Description : 해당 스텝에 대한 노드(인스턴스)를 먼저 생성한다.
  3902. * Argument : flag - A/D/B
  3903. * return type : no - selectedLineSection
  3904. * Creator :
  3905. ****************************************************************************************/
  3906. function fMakeNode( flag, no ){
  3907. if( utlf_isNull(oOpener.ds_main_masterinfo_info.getColumn(0,"swimlineno")) ){
  3908. sysf_messageBox ( "스윔라인 수를", "C001" );
  3909. return;
  3910. }
  3911. no = parseInt(no);
  3912. grpControlCnt = parseInt(grpControlCnt) + 1;
  3913. linesControlMaxCnt[no-1] = parseInt( linesControlMaxCnt[no-1] ) + 1; // no = 라인수
  3914. // model.resetInstanceNode("/root/main/temp/stepinfo/info");
  3915. ds_main_temp_stepinfo_info.clearData();
  3916. ds_main_temp_stepinfo_info.addRow();
  3917. ds_main_temp_stepinfo_info.setColumn(0,"stepno" , grpControlCnt);
  3918. ds_main_temp_stepinfo_info.setColumn(0,"stepflagcd" , flag);
  3919. ds_main_temp_stepinfo_info.setColumn(0,"swimlineno" , no);
  3920. ds_main_temp_stepinfo_info.setColumn(0,"refseq" , linesControlMaxCnt[no-1]);
  3921. ds_main_temp_stepinfo_info.setColumn(0,"stepmemo" , "");
  3922. ds_main_temp_stepinfo_info.setColumn(0,"m" , "i");
  3923. ds_main_temp_stepinfo_info.setColumn(0,"orgstepno" , ds_main_temp_stepinfo_info.getColumn(0,"stepno"));
  3924. if( cpgflagcd == "02" ) {
  3925. ds_main_temp_stepinfo_info.setColumn(0,"stepnm" , flag + grpControlCnt); //2009.03.03 디폴트 추가
  3926. ds_main_temp_stepinfo_info.setColumn(0,"times" , "1"); //CPG는 모든 스텝이 1일차임.
  3927. }
  3928. ds_main_temp_stepinfo_info.setColumn(0,"stepattrflag", "0/0/0/0"); //CPG의 속성 정보 컬럼
  3929. //2008.07.30 pymi control 생성시 control id를 담음
  3930. //model.setNode("/root/main/temp/stepinfo/info/fixedStCntl");
  3931. if( maxControlCnt < linesControlMaxCnt[no-1] ){
  3932. maxControlCnt = linesControlMaxCnt[no-1];
  3933. fAdjustLine("ex", "392");
  3934. }
  3935. // model.makeNode( stepRef + "[" + grpControlCnt + "]");
  3936. var nRow = stepRef.addRow();
  3937. // model.copyNode( stepRef + "[" + grpControlCnt + "]" , "/root/main/temp/stepinfo/info");
  3938. stepRef.copyRow(nRow,ds_main_temp_stepinfo_info,0);
  3939. //각 노드셋(stepRef) 마다 menu 를 생성하는 makeValue 문은 삭제했음.
  3940. if( !utlf_isNull(selectedControl) ){
  3941. var selID = selectedControl.name;
  3942. var curNo = parseInt( selID.substr(12, selID.length-12) );
  3943. }
  3944. return grpControlCnt;
  3945. }
  3946. /****************************************************************************************
  3947. * Function : initGlobalVariant
  3948. * Description : generater 로딩 후 cpg 조회시, outline을 구성하기 위해 초기 변수를 셋팅해준다.
  3949. * Argument : arg1 - 그려야 할 컨트롤 갯수
  3950. * : arg2 - 아웃라인을 구성하는 라인 컨트롤 갯수
  3951. * return type :
  3952. * Creator :
  3953. ****************************************************************************************/
  3954. function initGlobalVariant(arg1, arg2){
  3955. grpControlCnt = arg1;
  3956. outsideControlCnt = arg2;
  3957. linesControlMaxCnt = new Array();
  3958. for(var i = 0; i < parseInt(lineNo); i++){
  3959. var no = i + 1;
  3960. stepRef.filter("swimlineno == '" + no.toString() + "'");
  3961. var nodeList = stepRef; //instance1.selectNodes(stepRef + "[swimlineno = '" + no.toString() + "']");
  3962. linesControlMaxCnt[i] = nodeList.rowcount;
  3963. if(linesControlMaxCnt[i] > 2 && linesControlMaxCnt[i] > linesControlMaxCnt[i-1]){
  3964. maxControlCnt = linesControlMaxCnt[i];
  3965. }
  3966. stepRef.filter("");
  3967. }
  3968. nodeList = dcsRef //instance1.selectNodes(dcsRef);
  3969. dcsCntlCnt = nodeList.rowcount + 1;
  3970. if(maxControlCnt > 2){
  3971. //fAdjustLine("ex", "392");
  3972. fAdjustLine("allEx", "392");
  3973. }
  3974. }
  3975. /****************************************************************************************
  3976. * Description : Day 이미지를 생성한다.
  3977. * : 수정이력: 2008.08 pymi CP 표기법 변경으로 daynm, stepnm 함수 인자 추가
  3978. * Argument :
  3979. * return type :
  3980. ****************************************************************************************/
  3981. function fSetDayImage(stepno, days, daynm, stepnm){
  3982. var curID = currentStepCntl.name;
  3983. var curNo = parseInt( curID.substr(12, curID.length-12) );
  3984. var type = ds_main_steplist_info.getColumn(curNo, "stepflagcd" );
  3985. var times = ds_main_steplist_info.getColumn(curNo, "times" );
  3986. var no = parseInt(stepno)-1;
  3987. var curStepnm = "";
  3988. if( !utlf_isNull(stepnm) || !utlf_isNull(stepnm)) curStepnm = "(" +stepnm + ")";
  3989. if(!utlf_isNull(days)){
  3990. if(type == "D"){
  3991. var leftPos = 66; //200
  3992. var topPos = 51; //51
  3993. } else {
  3994. var leftPos = 32; //308
  3995. var topPos =0; //1
  3996. }
  3997. var cntl;
  3998. // var ctrlType = "xforms:img";
  3999. // var ctrlID = ctrlType + (controlCnt++);
  4000. // currentStepCntl.createChild(ctrlType, "id:"+ ctrlID + "; src:../../../com/commonweb/images/icon_startend.gif; left:" + leftPos + "; top:" + topPos + "; width:20px; height:20px; background-stretch:stretch;");
  4001. var objImageViewer = new ImageViewer();
  4002. var ctrlID = "xforms_img" + (controlCnt++);
  4003. //alert(this.grp_swimline.components[ctrlID]);
  4004. if(!utlf_isNull(currentStepCntl.components[ctrlID])) currentStepCntl.removeChild(ctrlID);
  4005. objImageViewer.init(ctrlID, leftPos, topPos, (leftPos+20), (topPos+20));
  4006. currentStepCntl.addChild(ctrlID, objImageViewer);
  4007. objImageViewer.show();
  4008. objImageViewer.image = "IMG::mis/icon_startend.png";
  4009. objImageViewer.stretch = "fit";
  4010. // 2008.07.30 pymi (s) 기존의 컨트롤을 삭제한다. : 삭제하지 않으면 text가 겹쳐져보임
  4011. var fixedStCntl = ds_main_steplist_info.lookup("stepno", stepno, "fixedStCntl");
  4012. if( !utlf_isNull(fixedStCntl) && !utlf_isNull(currentStepCntl.components[fixedStCntl])) currentStepCntl.removeChild(fixedStCntl);
  4013. // 2008.07.30 pymi (e)
  4014. // ctrlType = "xforms:caption";
  4015. // ctrlID = ctrlType + (controlCnt++);
  4016. // cntl = currentStepCntl.createChild(ctrlType, "id:"+ ctrlID + "; left:" + leftPos + "; top:" + (topPos+1) + "; width:100px; height:20px; font-size:8pt; color:#ff0000; font-weight:bolder; ");
  4017. var objStatic = new Static();
  4018. ctrlID = "xforms_caption" + (controlCnt++);
  4019. if(!utlf_isNull(currentStepCntl.components[ctrlID])) currentStepCntl.removeChild(ctrlID);
  4020. objStatic.init(ctrlID, leftPos, (topPos+1), (leftPos+100), (topPos+21));
  4021. currentStepCntl.addChild(ctrlID, objStatic);
  4022. objStatic.show();
  4023. objStatic.font = "Dotum,8,bold";
  4024. objStatic.color = "#ff0000";
  4025. cntl = objStatic;
  4026. // 2008.08.18 pymi CP 표기법을 display
  4027. cntl.text = daynm + curStepnm;
  4028. // 2008.07.30 pymi (s)기존의 컨트롤을 setting
  4029. var nFindRow = ds_main_steplist_info.findRow("stepno", stepno);
  4030. ds_main_steplist_info.setColumn(nFindRow , "fixedStCntl", ctrlID);
  4031. ds_main_steplist_info.setColumn(nFindRow , "stepnm", daynm + curStepnm);
  4032. ds_main_steplist_info.setColumn(nFindRow , "tmpstepnm", stepnm);
  4033. // 2008.07.30 pymi (e)
  4034. } else{
  4035. fCreateControl();
  4036. curID = "xforms_group" + no;
  4037. fChildrenCtrlToSelCtrl(curID);
  4038. }
  4039. var nFindRow = ds_main_steplist_info.findRow("stepno", stepno);
  4040. if( ds_main_steplist_info.getColumn(nFindRow , "m") != "i" ){
  4041. ds_main_steplist_info.setColumn(nFindRow , "m", "u" );
  4042. }
  4043. }
  4044. /****************************************************************************************
  4045. * Description : 생성기 Main의 속성 리스트 항목을 재조회
  4046. * Argument :
  4047. * return type :
  4048. ****************************************************************************************/
  4049. function fInitMainAttList( inqrflag ){
  4050. var title = "";
  4051. var guide = "";
  4052. if(inqrflag == "R"){
  4053. title = "필수처방 미발행 사유 문진";
  4054. guide = "용도 (미시행사유 입력용), 팝업시점 (퇴원예고)";
  4055. }else if(inqrflag == "D"){
  4056. title = "선택필수처방 미발행 사유 문진";
  4057. guide = "용도 (선택필수 미시행사유 입력용), 팝업시점 (퇴원예고)";
  4058. }
  4059. if( oOpener.ds_main_inqrinfo_inqrheader.getCaseCount("inqrflag=='"+inqrflag+"'") == 0 ){
  4060. oOpener.ds_main_inqrinfo_inqrheader.addColumn("inqrno", "string");
  4061. oOpener.ds_main_inqrinfo_inqrheader.addColumn("inqrhistno", "string");
  4062. oOpener.ds_main_inqrinfo_inqrheader.addColumn("cpgno", "string");
  4063. oOpener.ds_main_inqrinfo_inqrheader.addColumn("cpghistseq", "string");
  4064. oOpener.ds_main_inqrinfo_inqrheader.addColumn("title", "string");
  4065. oOpener.ds_main_inqrinfo_inqrheader.addColumn("inqrnm", "string");
  4066. oOpener.ds_main_inqrinfo_inqrheader.addColumn("guide", "string");
  4067. oOpener.ds_main_inqrinfo_inqrheader.addColumn("pntmflag", "string");
  4068. oOpener.ds_main_inqrinfo_inqrheader.addColumn("inqrflag", "string");
  4069. oOpener.ds_main_inqrinfo_inqrheader.addColumn("stepno", "string");
  4070. oOpener.ds_main_inqrinfo_inqrheader.addColumn("stepnm", "string");
  4071. oOpener.ds_main_inqrinfo_inqrheader.addColumn("qestcnts", "string");
  4072. oOpener.ds_main_inqrinfo_inqrheader.addColumn("cpgappno", "string");
  4073. oOpener.ds_main_inqrinfo_inqrheader.addColumn("inqrstatcd", "string");
  4074. oOpener.ds_main_inqrinfo_inqrheader.addColumn("inqroffyn", "string");
  4075. oOpener.ds_main_inqrinfo_inqrheader.addColumn("inqranswdd", "string");
  4076. var i = oOpener.ds_main_inqrinfo_inqrheader.addRow();
  4077. oOpener.ds_main_inqrinfo_inqrheader.setColumn(i, "inqrno", "");
  4078. oOpener.ds_main_inqrinfo_inqrheader.setColumn(i, "inqrhistno", "");
  4079. oOpener.ds_main_inqrinfo_inqrheader.setColumn(i, "cpgno", "");
  4080. oOpener.ds_main_inqrinfo_inqrheader.setColumn(i, "cpghistseq", "");
  4081. oOpener.ds_main_inqrinfo_inqrheader.setColumn(i, "title", title);
  4082. oOpener.ds_main_inqrinfo_inqrheader.setColumn(i, "inqrnm", title);
  4083. oOpener.ds_main_inqrinfo_inqrheader.setColumn(i, "guide", guide);
  4084. oOpener.ds_main_inqrinfo_inqrheader.setColumn(i, "pntmflag", "1");
  4085. oOpener.ds_main_inqrinfo_inqrheader.setColumn(i, "inqrflag", inqrflag);
  4086. oOpener.ds_main_inqrinfo_inqrheader.setColumn(i, "stepno", "0");
  4087. oOpener.ds_main_inqrinfo_inqrheader.setColumn(i, "stepnm", "");
  4088. oOpener.ds_main_inqrinfo_inqrheader.setColumn(i, "qestcnts", "");
  4089. oOpener.ds_main_inqrinfo_inqrheader.setColumn(i, "cpgappno", "");
  4090. oOpener.ds_main_inqrinfo_inqrheader.setColumn(i, "inqrstatcd", "-");
  4091. oOpener.ds_main_inqrinfo_inqrheader.setColumn(i, "inqroffyn", "-");
  4092. oOpener.ds_main_inqrinfo_inqrheader.setColumn(i, "inqranswdd", "-");
  4093. }
  4094. }
  4095. function grp_swimline_comn_buttondown(obj:Div, e:MouseEventInfo)
  4096. {
  4097. trace("grp_swimline_comn_buttondown");
  4098. trace("prevStepCntl : " + prevStepCntl);
  4099. var ctrl = null;
  4100. ctrl = e.fromreferenceobject.name;
  4101. //var selControl = document.controls(ctrl); //현재 선택한 컨트롤(textarea)
  4102. var selControl = e.fromreferenceobject;
  4103. trace("selControl : " + selControl + " || ctrl : " + ctrl);
  4104. if( selControl == null ) return;
  4105. var cX = selControl.parent.position.x;
  4106. var cY = selControl.parent.position.y;
  4107. var tY = e.clientY;
  4108. var onmouseX = parseInt(grp_swimline.position.width) - 18 ; //803 or ?
  4109. //1. 마우스 오른쪽 버튼을 클릭한 경우
  4110. var curID = selControl.parent.name;
  4111. currentStepCntl = selControl.parent; //선택한 컨트롤을 담고 있는 그룹 컨트롤(group)
  4112. trace("curID : " + curID + "cX : " + cX + " || onmouseX : " + onmouseX + " || cY : " + cY);
  4113. //그룹을 선택했을 경우,
  4114. if(ctrl.substr(0, 12) == "xforms_group" || ctrl.substr(0, 12) == "grp_swimline" && parseInt(cX) < onmouseX && parseInt(cY) < 638){
  4115. if(curID.substr(0, 12) == "grp_swimline"){
  4116. tY = parseInt( selControl.position.top );
  4117. }
  4118. //영역 선택 : 현재 Y 지점 위치 = 스크롤의 현재위치를 더한 targetY / 스윔라인 높이 + 1
  4119. var org_selectedLineSection = selectedLineSection;
  4120. var vPos = parseInt(grp_swimline.vscrollbar.pos);
  4121. if( vPos < 0 ) vPos = 0;
  4122. selectedLineSection = Math.floor( (parseInt(tY) + vPos ) / swimLineHight)+1;
  4123. if( ctrl.substr(0, 12) == "xforms_group" ){
  4124. selectedLineSection = Math.floor( parseInt(tY) / swimLineHight)+1;
  4125. }
  4126. //trace("selectedLineSection : " + selectedLineSection + " || lineNo : " + lineNo);
  4127. if(selectedLineSection > lineNo){
  4128. fChangeOutLineCntl("reset"); //전체 선의 색상을 다시 셋팅...
  4129. return;
  4130. } else {
  4131. fChangeOutLineCntl("reset"); //전체 선의 색상을 다시 셋팅...
  4132. fChangeOutLineCntl("select", (selectedLineSection-1)); //전체 선의 색상을 다시 셋팅...
  4133. if(selectedControl != null){
  4134. if( utlf_isNull(selectedControl.parent) ){ // parent.id
  4135. return;
  4136. }
  4137. var sCurID = selectedControl.parent.name; //error
  4138. sCurID = sCurID.substr(12, sCurID.length-12);
  4139. trace("sCurID : " + sCurID);
  4140. if( !utlf_isNull(stepRef.getColumn((parseInt(sCurID)), "startendflag")) ){ //조건삭제 (opener.window.javascript.OpenerKind != "GPS" && ) 2008.12.22
  4141. fChangeSelectCntl("#ff9900", selectedControl);
  4142. }else{
  4143. fChangeSelectCntl("#000000", selectedControl);
  4144. }
  4145. selectedControl = null;
  4146. }
  4147. }
  4148. if (e.eventid == "onrbuttondown" && (ctrl.substr(0, 12) == "xforms_group" || ctrl.substr(0, 12) == "grp_swimline") && parseInt(cX) < 790 && parseInt(cY) < 638){ //cX<795로 고쳐볼것..
  4149. if( oOpener.ds_temp_getdata.getColumn(0, "authflag") == "M" && oOpener.OpenerKind != "GPS" ){
  4150. if( selectedLineSection == 1 && !utlf_isNull(stepRef.getColumn(0, "stepno")) ){
  4151. pmn_menu4.trackPopup(e.screenX, e.screenY);
  4152. //window.setPopupMenu(true, "/root/main/outlineinfo/menu/popupmenu4/item", "name", "func", false); //첫번째 라인은 D0 step 추가 메뉴 있음
  4153. }else{
  4154. pmn_menu2.trackPopup(e.screenX, e.screenY);
  4155. //window.setPopupMenu(true, "/root/main/outlineinfo/menu/popupmenu2/item", "name", "func", false);
  4156. }
  4157. }
  4158. }
  4159. //버튼들의 enable/disable
  4160. //btn_initialize.disabled = false;
  4161. grp_button.btn_start.enable = false;
  4162. grp_button.btn_end.enable = false;
  4163. grp_button.btn_action.enable = true;
  4164. grp_button.btn_decision.enable = true;
  4165. grp_button.btn_branch.enable = true;
  4166. grp_button.btn_disconnection.enable = false;
  4167. grp_button.btn_connection.enable = true;
  4168. grp_button.btn_addline.enable = true;
  4169. grp_button.btn_remove.enable = true;
  4170. oOpener.ds_main_stepinfo_info.enableevent = false;
  4171. oOpener.grp_biz.ipt_stepnm.enable = false;
  4172. oOpener.grp_biz.tar_stepmemo.enable = false;
  4173. oOpener.grp_biz.ipt_times.enable = false;
  4174. oOpener.grp_biz.ipt_times_old.enable = false;
  4175. oOpener.grp_biz.cmb_stepnm.enable = false; // 2008.08.21 pymi
  4176. oOpener.grp_biz.ipt_stepnm.value = "";
  4177. oOpener.grp_biz.tar_stepmemo.value = "";
  4178. oOpener.grp_biz.ipt_times.value = "";
  4179. oOpener.grp_biz.ipt_times_old.value = "";
  4180. oOpener.grp_biz.cmb_stepnm.value = ""; // 2008.08.21 pymi
  4181. if( !utlf_isNull(oOpener.ds_main_stepinfo_info.getColumn(0, "stepno")) ){
  4182. oOpener.ds_main_stepinfo_info.setColumn(0, "stepno", "" );
  4183. oOpener.ds_main_stepinfo_info.setColumn(0, "stepmemo", "" );
  4184. oOpener.ds_main_stepinfo_info.setColumn(0, "stepflagcd", "" );
  4185. oOpener.ds_main_stepinfo_info.setColumn(0, "daynm", "" );
  4186. }
  4187. oOpener.ds_main_stepinfo_info.enableevent = true;
  4188. }
  4189. else if(ctrl.substr(0, 15) == "xforms_textarea"){
  4190. //fPopupMenuEvent() 후 실행된다.
  4191. if( prevStepCntl == null ) {
  4192. if(connectionMode == "true"){
  4193. prevStepCntl = currentStepCntl;
  4194. }
  4195. //단순 컨트롤 선택이라면, 라인의 색상을 바꾼다.
  4196. //trace("xforms_textarea selectedControl : " + selectedControl );
  4197. if(selectedControl != null){
  4198. if( utlf_isNull(selectedControl.parent) ){ // name null ??
  4199. return;
  4200. }
  4201. var sCurID = selectedControl.parent.name; //erroor
  4202. sCurID = sCurID.substr(12, sCurID.length-12);
  4203. //stepRef
  4204. if( !utlf_isNull(stepRef.getColumn((parseInt(sCurID)), "startendflag")) ){ //조건삭제 (opener.window.javascript.OpenerKind != "GPS" && ) 2008.12.22
  4205. fChangeSelectCntl("#ff9900", selectedControl);
  4206. } else {
  4207. fChangeSelectCntl("#000000", selectedControl);
  4208. }
  4209. selectedControl = null;
  4210. }
  4211. selectedControl = selControl;
  4212. fChangeSelectCntl("#A683B1", selControl); //현재 선택한 컨트롤의 외곽선 색상을 빨간색으로 설졍
  4213. if(!utlf_isNull(selectedLineSection)){
  4214. selectedLineSection = "";
  4215. fChangeOutLineCntl("reset"); //전체 선의 색상을 다시 셋팅...
  4216. }
  4217. //마우스 우측버튼(메뉴팝업 호출) 시, 수행안하는 action
  4218. if( e.eventid == "onrbuttondown" ) return;
  4219. //M-GPS가 opener 일 경우, 서식 코드를 조회한다.
  4220. if(oOpener.OpenerKind == "GPS"){
  4221. //결정하기 메뉴 선택 후, 대상 스텝을 선택할 경우, 선택 스텝에 대한 정보를 저장하고, 선의 색상을 바꾼다.
  4222. if(decisionMode == "true"){
  4223. var id = currentStepCntl.name;
  4224. fDecision();
  4225. fCreateControl();
  4226. selectedControl = null;
  4227. currentStepCntl = this.components[id];
  4228. fChangeSelectCntl("#A683B1", currentStepCntl);
  4229. }
  4230. }
  4231. // SetFocus에 사용하는 로직
  4232. oOpener.grp_biz.ipt_stepnm.enable = true;
  4233. oOpener.grp_biz.tar_stepmemo.enable = true;
  4234. oOpener.grp_biz.ipt_times.enable = true;
  4235. oOpener.grp_biz.ipt_times_old.enable = true;
  4236. if(oOpener.OpenerKind == "GPS"){
  4237. oOpener.grp_biz.cmb_stepnm.enable = false;
  4238. } else {
  4239. if( oOpener.grp_biz.rdo_ioflagcd.value != "O") oOpener.grp_biz.cmb_stepnm.enable = true;
  4240. }
  4241. } else {
  4242. //컨트롤 간의 연결 시,
  4243. fConnectToLine( prevStepCntl, currentStepCntl );
  4244. prevStepCntl = null ;
  4245. }
  4246. //버튼들의 enable/disable
  4247. grp_button.btn_action.enable = false;
  4248. grp_button.btn_decision.enable = false;
  4249. grp_button.btn_branch.enable = false;
  4250. grp_button.btn_addline.enable = false;
  4251. grp_button.btn_start.enable = true;
  4252. grp_button.btn_end.enable = true;
  4253. grp_button.btn_connection.enable = true;
  4254. grp_button.btn_remove.enable = true;
  4255. }
  4256. else if(ctrl.substr(0, 14) == "xforms_caption"){
  4257. //CPG의 속성 아이콘 선택 시
  4258. var sCurID = selControl.name;
  4259. if( sCurID.substr(sCurID.length-3, 2) == "_@" ){
  4260. if( selControl.color == "#000000" ){
  4261. var curNo = parseInt( curID.substr(12, curID.length-12) ) + 1;
  4262. var sAttrFlag = sCurID.substr(sCurID.length-1, 1);
  4263. switch( sAttrFlag ){
  4264. case "O" :
  4265. oOpener.fOpenStepDetlInfo();
  4266. break;
  4267. case "M" :
  4268. oOpener.frmf_setParameter("cpgattadmin", "A");
  4269. oOpener.frmf_setParameter("stepattadmin", curNo);
  4270. oOpener.fOpenAttAdm();
  4271. break;
  4272. case "T" :
  4273. oOpener.frmf_setParameter("cpgattadmin", "C");
  4274. oOpener.frmf_setParameter("stepattadmin", curNo);
  4275. oOpener.fOpenAttAdm();
  4276. break;
  4277. case "D" :
  4278. break;
  4279. default :
  4280. break;
  4281. }
  4282. }
  4283. }
  4284. }
  4285. }
  4286. //20180425 이돈희 : STEP 처방관리에서 STEP 변경시 저장 기능 실행 안됨
  4287. // 1.0에 맞추어 저장 함수 생성
  4288. function fTempletSave()
  4289. {
  4290. oOpener.grp_btn.btn_newver.click(); //마스터 정보 및 스텝들을 임시저장한다.
  4291. }]]></Script>
  4292. </Form>
  4293. </FDL>