| 1 | TIUFL1 ; SLC/MAM - Library of Modules and Functions: RIGHT, LEFT ;10/25/95  11:50
 | 
|---|
| 2 |  ;;1.0;TEXT INTEGRATION UTILITIES;;Jun 20, 1997
 | 
|---|
| 3 |  ;
 | 
|---|
| 4 | RIGHT(TIUFXNOD) ; Action Move View to right: resets VALM("FIXED"), VALMLFT; Sets Type into truncated Name. If in a template, not a subtemplate, sets TIUFLFT to VALMLFT for the template.
 | 
|---|
| 5 |  ; Requires TIUFXNOD = XQORNOD(0) if doing Action Right, = 0^0^PL if doing Action Print List
 | 
|---|
| 6 |  N TYPE,MOVE,GOINGEND,RMSUFFIX,NEXTSTND,FIXED,WHO,FIELD
 | 
|---|
| 7 |  N DTOUT,DIRUT,DIROUT,DUOUT,RM
 | 
|---|
| 8 |  S WHO=$S(TIUFWHO="N":"M",1:TIUFWHO)
 | 
|---|
| 9 |  S RMSUFFIX=$S($D(TIUFSTMP):TIUFSTMP,1:TIUFTMPL),RMSUFFIX=RMSUFFIX_$S("TD"'[RMSUFFIX:WHO,1:"")
 | 
|---|
| 10 |  S GOINGEND=0,MOVE=$P($P(TIUFXNOD,U,4),"=",3)
 | 
|---|
| 11 |  I $G(TIUFSTMP)="D"!($G(TIUFSTMP)="X") W $C(7) S VALMBCK="" Q
 | 
|---|
| 12 |  S FIXED=VALM("FIXED") S:$G(TIUFSTMP)="" FIXED=20 ; Template H, A,C, or J
 | 
|---|
| 13 |  S RM=TIUF("RM"_RMSUFFIX)-80+FIXED ;RM= a sort of 'right margin' for VALMLFT, ie Max that VALMLFT can be without going beyond LM Template RM.
 | 
|---|
| 14 |  I VALMLFT=RM W $C(7) S VALMBCK="" Q  ;already at right
 | 
|---|
| 15 |  D  ; Mark all cases where go to end:
 | 
|---|
| 16 |  . I MOVE?1">".E S GOINGEND=1 Q
 | 
|---|
| 17 |  . I MOVE,VALMLFT+MOVE'<RM S GOINGEND=1 Q
 | 
|---|
| 18 |  . S NEXTSTND=+$$STND("R") I 'MOVE,NEXTSTND'<RM S GOINGEND=1
 | 
|---|
| 19 |  I GOINGEND S VALMLFT=RM D  G RIGHX
 | 
|---|
| 20 |  . I $G(TIUFSTMP)="" S VALM("FIXED")=20 D:(TIUFTMPL'="J") INSTYPE D:TIUFTMPL="J" INSBLNK
 | 
|---|
| 21 |  ; NOT Going to End:
 | 
|---|
| 22 |  ; If HACJ, if move just a bit from beg so Type (J:Status) will still show, then move to next stnd position to prevent NAME2 from scrolling behind NAME1:
 | 
|---|
| 23 |  S FIELD=$S(TIUFTMPL="J":"STATUS",1:"TYPE")
 | 
|---|
| 24 |  I $G(TIUFSTMP)="",MOVE,(VALMLFT+MOVE)'>$P(VALMDDF(FIELD),U,2) S MOVE=0
 | 
|---|
| 25 |  I $G(TIUFSTMP)="" D:(TIUFTMPL'="J") INSTYPE D:(TIUFTMPL="J") INSBLNK
 | 
|---|
| 26 |  S VALMLFT=$S(MOVE:VALMLFT+MOVE,1:NEXTSTND)
 | 
|---|
| 27 | RIGHX I $P(TIUFXNOD,U,3)=">" S VALMBCK="R"
 | 
|---|
| 28 |  I $D(TIUFTMPL),'$D(TIUFSTMP) S TIUFLFT=+$G(VALMLFT)
 | 
|---|
| 29 |  Q
 | 
|---|
| 30 |  ;
 | 
|---|
| 31 | INSTYPE ; Insert Type into end of truncated Names:
 | 
|---|
| 32 |  ; Needs GOINGEND
 | 
|---|
| 33 |  N LINENO,TIUREC
 | 
|---|
| 34 |  F LINENO=1:1:VALMCNT  D  S ^TMP("TIUF1",$J,LINENO,0)=TIUREC
 | 
|---|
| 35 |  . S TIUREC=^TMP("TIUF1",$J,LINENO,0),TYPE=" "_$E(TIUREC,77,80)_" "
 | 
|---|
| 36 |  . I GOINGEND S TIUREC=$$SETSTR^VALM1(TYPE,TIUREC,15,6) Q
 | 
|---|
| 37 |  . I VALMLFT=49 S TIUREC=$$SETSTR^VALM1(TYPE,TIUREC,43,6)
 | 
|---|
| 38 |  I GOINGEND D CHGCAP^VALM("NAME1","Name    Type") Q
 | 
|---|
| 39 |  I VALMLFT=49 D CHGCAP^VALM("NAME1","Name                                Type")
 | 
|---|
| 40 |  Q
 | 
|---|
| 41 |  ;
 | 
|---|
| 42 | INSBLNK ; Insert Blank into end of truncated Names:
 | 
|---|
| 43 |  ; Needs GOINGEND
 | 
|---|
| 44 |  N LINENO,TIUREC
 | 
|---|
| 45 |  F LINENO=1:1:VALMCNT  D  S ^TMP("TIUF1",$J,LINENO,0)=TIUREC
 | 
|---|
| 46 |  . S TIUREC=^TMP("TIUF1",$J,LINENO,0)
 | 
|---|
| 47 |  . I GOINGEND S TIUREC=$$SETSTR^VALM1(" ",TIUREC,20,1) Q
 | 
|---|
| 48 |  . I VALMLFT=49 S TIUREC=$$SETSTR^VALM1(" ",TIUREC,48,1)
 | 
|---|
| 49 |  Q
 | 
|---|
| 50 |  ;
 | 
|---|
| 51 | LEFT(TIUFXNOD) ; Action Move View to left: resets VALM("FIXED"), VALMLFT; Takes Type out of Name, refills the hole.
 | 
|---|
| 52 |  ; Requires TIUFXNOD = XQORNOD(0) if doing Action Left, = 0^0^PL if doing Action Print List
 | 
|---|
| 53 |  N TYPE,GOINGBEG,MOVE,STND,LM,NEXTSTND,FIELD,DTOUT,DIRUT,DIROUT
 | 
|---|
| 54 |  S GOINGBEG=0,MOVE=$P($P(TIUFXNOD,U,4),"=",3)
 | 
|---|
| 55 |  I $G(TIUFSTMP)="D"!($G(TIUFSTMP)="X") W $C(7) S VALMBCK="" Q
 | 
|---|
| 56 |  S STND=$$STND("L"),NEXTSTND=+STND,LM=$P(STND,U,2) ; A kind of 'Left Margin for VALMLFT, ie, minumum value
 | 
|---|
| 57 |  I VALMLFT=LM W $C(7) S VALMBCK="" Q  ;already at right
 | 
|---|
| 58 |  D  ; Mark all cases where go to beg:
 | 
|---|
| 59 |  . I MOVE?1"<".E S GOINGBEG=1 Q
 | 
|---|
| 60 |  . I $P(TIUFXNOD,U,3)="PL" S GOINGBEG=1 Q
 | 
|---|
| 61 |  . ; If HACJ, if Type (J:Status) will show then move to beg to prevent NAME2 from scrolling behind NAME1:
 | 
|---|
| 62 |  . S FIELD=$S(TIUFTMPL="J":"STATUS",1:"TYPE")
 | 
|---|
| 63 |  . I $G(TIUFSTMP)="",MOVE,(VALMLFT-MOVE)<$P(VALMDDF(FIELD),U,2) S GOINGBEG=1 Q
 | 
|---|
| 64 |  . I 'MOVE,NEXTSTND=LM S GOINGBEG=1
 | 
|---|
| 65 |  I $G(TIUFSTMP)="" D REFILL
 | 
|---|
| 66 |  I VALM("FIXED")=20 S VALM("FIXED")=48
 | 
|---|
| 67 |  I GOINGBEG S VALMLFT=LM G LEFTX
 | 
|---|
| 68 |  ; NOT Going to beg:
 | 
|---|
| 69 |  S VALMLFT=$S(MOVE:VALMLFT-MOVE,1:NEXTSTND)
 | 
|---|
| 70 | LEFTX I $P(TIUFXNOD,U,3)="<" S VALMBCK="R"
 | 
|---|
| 71 |  I $D(TIUFTMPL),'$D(TIUFSTMP) S TIUFLFT=+$G(VALMLFT)
 | 
|---|
| 72 |  Q
 | 
|---|
| 73 |  ;
 | 
|---|
| 74 | STND(DIRECTN) ; Function returns NEXTSTND^STND(0), where NEXTSTND = next Standard Position to the RIGHT/LEFT, STND(0) = leftmost position for VALMLFT ( = VLAM("FIXED")+1)
 | 
|---|
| 75 |  N TIUFI,TIUFJ,NEXTSTND,STND,START,MOVE
 | 
|---|
| 76 |  S START=$S($G(TIUFSTMP)="T":34,1:49) ; "HACJ"[TIUFTMPL:49
 | 
|---|
| 77 |  S MOVE=80-START+1
 | 
|---|
| 78 |  F TIUFI=0:1:5 S STND(TIUFI)=START+(TIUFI*MOVE)
 | 
|---|
| 79 |  I DIRECTN="R" F TIUFJ=1:1:5 S STND=STND(TIUFJ) S:TIUFJ=5 NEXTSTND=STND I STND>VALMLFT S NEXTSTND=STND_U_STND(0) Q
 | 
|---|
| 80 |  I DIRECTN="L" F TIUFJ=5:-1:0 S STND=STND(TIUFJ) S:'TIUFJ NEXTSTND=STND I STND<VALMLFT S NEXTSTND=STND_U_STND(0) Q
 | 
|---|
| 81 |  Q NEXTSTND_U_STND(0)
 | 
|---|
| 82 |  ;
 | 
|---|
| 83 | REFILL ; Fill in holes in Name
 | 
|---|
| 84 |  ; Needs GOINGBEG
 | 
|---|
| 85 |  N LINENO,TIUREC,HOLE
 | 
|---|
| 86 |  F LINENO=1:1:VALMCNT  D  S ^TMP("TIUF1",$J,LINENO,0)=TIUREC
 | 
|---|
| 87 |  . S TIUREC=^TMP("TIUF1",$J,LINENO,0)
 | 
|---|
| 88 |  . I VALM("FIXED")=20 D
 | 
|---|
| 89 |  . . I TIUFTMPL="J" S HOLE=$E(TIUREC,220),TIUREC=$$SETSTR^VALM1(HOLE,TIUREC,20,1) I 'GOINGBEG S TIUREC=$$SETSTR^VALM1(" ",TIUREC,48,1) Q
 | 
|---|
| 90 |  . . S HOLE=$E(TIUREC,215,220),TIUREC=$$SETSTR^VALM1(HOLE,TIUREC,15,6) I 'GOINGBEG S TYPE=" "_$E(TIUREC,77,80)_" ",TIUREC=$$SETSTR^VALM1(TYPE,TIUREC,43,6)
 | 
|---|
| 91 |  . I GOINGBEG D
 | 
|---|
| 92 |  . . I TIUFTMPL="J" S HOLE=$E(TIUREC,248),TIUREC=$$SETSTR^VALM1(HOLE,TIUREC,48,1) Q
 | 
|---|
| 93 |  . . S HOLE=$E(TIUREC,243,248),TIUREC=$$SETSTR^VALM1(HOLE,TIUREC,43,6)
 | 
|---|
| 94 |  I GOINGBEG,TIUFTMPL'="J" D CHGCAP^VALM("NAME1","Name") Q
 | 
|---|
| 95 |  I TIUFTMPL'="J" D CHGCAP^VALM("NAME1","Name                                Type")
 | 
|---|
| 96 |  Q
 | 
|---|
| 97 |  ;
 | 
|---|