[613] | 1 | KMPDUGV ;OAK/RAK - CM Tools Vertical Graph Utility ;2/17/04 10:00
|
---|
| 2 | ;;2.0;CAPACITY MANAGEMENT TOOLS;;Mar 22, 2002
|
---|
| 3 | ;
|
---|
| 4 | EN ;-- entry point.
|
---|
| 5 | D DRAW,TITLES,DATA W IOG0
|
---|
| 6 | I $D(KMPUTAR) D Q
|
---|
| 7 | .;D WP^KMPDU11(KMPUTAR,5,24,(RIGHT+5),IOM,0,$G(KMPUXIT))
|
---|
| 8 | .D WP^KMPDU11(KMPUTAR,18,22,5,IOM,0,$G(KMPUXIT))
|
---|
| 9 | D:'KMPUXIT CONT^KMPDUG
|
---|
| 10 | Q
|
---|
| 11 | ;
|
---|
| 12 | DATA ;-- display data in graph.
|
---|
| 13 | W IOG0 S DX=$S(KMPUOPT["D":9,1:10),BAR=0,I=""
|
---|
| 14 | F S I=$O(@KMPUAR@(I)) Q:I="" I $D(@KMPUAR@(I,0)) S DATA=@KMPUAR@(I,0) D
|
---|
| 15 | .S XCOORD=$P(DATA,U,2),END=(XCOORD-KMPUSTRT) ;-STEP)
|
---|
| 16 | .S DY=14,DX=DX+$S(KMPUOPT["D":2,1:1)
|
---|
| 17 | .; if no data quit
|
---|
| 18 | .Q:$P(@KMPUAR@(I,0),U,2)']""
|
---|
| 19 | .F I1=0:STEP:END X IOXY W @BAR(BAR),! S DY=DY-1 Q:DY=5
|
---|
| 20 | .S BAR=$S(BAR=1:0,1:1)
|
---|
| 21 | Q
|
---|
| 22 | ;
|
---|
| 23 | DRAW ;-- draw graph.
|
---|
| 24 | S RIGHT=$S(KMPUOPT["D":(YNUM*2),1:(YNUM+1))+10
|
---|
| 25 | W @IOF,!,IOG1 S DX=10
|
---|
| 26 | ; draw left line
|
---|
| 27 | F I=1:1:6 S DY=4+I X IOXY W IOVL S DY=15-I X IOXY W IOVL
|
---|
| 28 | ; draw left top corner ;and bottom corners
|
---|
| 29 | ;S DY=4 X IOXY W IOTLC ;S DY=15 X IOXY W IOBLC,!
|
---|
| 30 | ; draw top and bottom lines
|
---|
| 31 | ;F DX=(DX+1):1:(RIGHT-1) S DY=5 X IOXY W IOHL,! S DY=15 X IOXY W "s",!
|
---|
| 32 | F DX=(DX+1):1:(RIGHT-1) S DY=14 X IOXY W "s",!
|
---|
| 33 | ; draw right top corner ;and bottom corners
|
---|
| 34 | ;S DX=RIGHT,DY=5 X IOXY W IOTRC ;S DY=15 X IOXY W IOBRC,!
|
---|
| 35 | ; draw right line
|
---|
| 36 | S DX=RIGHT F I=1:1:6 S DY=4+I X IOXY W IOVL S DY=16-I X IOXY W IOVL
|
---|
| 37 | ; draw 'hash marks' on left line for relative values
|
---|
| 38 | S DX=9,DY=14 X IOXY W "s",! ;W IOLT,!
|
---|
| 39 | F DY=13:-1:4 X IOXY W "s",! ;W IOMT,!
|
---|
| 40 | ; print grid
|
---|
| 41 | I KMPUOPT["G" F DY=14:-1:4 F DX=11:1:(RIGHT-1) X IOXY W "s",!
|
---|
| 42 | W IOG0
|
---|
| 43 | Q
|
---|
| 44 | ;
|
---|
| 45 | TITLES ;-- print graph titles.
|
---|
| 46 | W IOG0
|
---|
| 47 | ; print first and second line of title
|
---|
| 48 | S DX=(IOM-$L($P(TITLE,U))\2+1),DY=0 X IOXY W $P(TITLE,U),!
|
---|
| 49 | S DX=(IOM-$L($P(TITLE,U,2))\2+1),DY=1 X IOXY W $P(TITLE,U,2),!
|
---|
| 50 | ; print x title at bottom
|
---|
| 51 | S DX=(10-$L(XTITLE)),DY=3 X IOXY W IOUON,XTITLE,IOUOFF
|
---|
| 52 | ; if div>1 write (x div)
|
---|
| 53 | W:DIV>1 " <x",DIVT,">"
|
---|
| 54 | W !
|
---|
| 55 | ; print y title
|
---|
| 56 | S DY=15,DX=$S(KMPUOPT["A":1,1:2)
|
---|
| 57 | F I=1:1:8 D
|
---|
| 58 | .X IOXY W IOUON,$E(YTITLE,I),IOUOFF,! S DY=DY+1
|
---|
| 59 | .I KMPUOPT["A" S DX=DX+1
|
---|
| 60 | ; print relative values next to hash marks
|
---|
| 61 | S NUM=(SCALE+KMPUSTRT)
|
---|
| 62 | S DY=14,DX=9-$L($FN((KMPUSTRT/DIV),"",DEC1))
|
---|
| 63 | X IOXY W $FN((KMPUSTRT/DIV),"",DEC1),!
|
---|
| 64 | F DY=13:-1:4 D
|
---|
| 65 | .S DX=(9-$L($FN((NUM/DIV),"",DEC1)))
|
---|
| 66 | .X IOXY W $FN((NUM/DIV),"",DEC1),! S NUM=NUM+SCALE
|
---|
| 67 | ; print data titles
|
---|
| 68 | S ZDX=11,I=""
|
---|
| 69 | F S I=$O(@KMPUAR@(I)) Q:I="" I $D(@KMPUAR@(I,0)) D
|
---|
| 70 | .S YTITLE=$E($P(@KMPUAR@(I,0),U),1,14),DX=ZDX
|
---|
| 71 | .I KMPUOPT["A" F I1=1:1:8 S DY=14+I1 X IOXY W $E(YTITLE,I1),! S DX=DX+1
|
---|
| 72 | .I KMPUOPT'["A" F I1=1:1:8 S DY=14+I1 X IOXY W $E(YTITLE,I1),!
|
---|
| 73 | .S ZDX=ZDX+$S(KMPUOPT["D":2,1:1)
|
---|
| 74 | Q
|
---|