#!/usr/bin/tclsh set starttime [clock clicks] puts "Starting..." package require Gdtclft proc ReadStats {channel} { if [file exists /home/berlin/tmp/.htDAT/PEAK.$channel.dat] { set fh [open /home/berlin/tmp/.htDAT/PEAK.$channel.dat r] set Peak_Last [gets $fh]; if ![info exists Peak_Last] { set Peak_Last [clock seconds] } elseif {$Peak_Last<1 || $Peak_Last==""} { set Peak_Last [clock seconds] } set Peak [gets $fh] close $fh } return [list $Peak_Last $Peak] } namespace eval ::UpdatePNG:: { variable SearchFolder major minor build run array set Times { } proc gdtext {gd col font size angel x y text} { global color gd text $gd $color(bg) $font $size $angel [expr $x-3] [expr $y-3] $text gd text $gd $color(bg) $font $size $angel [expr $x+3] [expr $y-3] $text gd text $gd $color(bg) $font $size $angel [expr $x-3] [expr $y+3] $text gd text $gd $color(bg) $font $size $angel [expr $x+3] [expr $y+3] $text gd text $gd $color(bg) $font $size $angel [expr $x+2] [expr $y-2] $text gd text $gd $color(bg) $font $size $angel [expr $x-2] [expr $y+2] $text gd text $gd $color(bg) $font $size $angel [expr $x+2] [expr $y] $text gd text $gd $color(bg) $font $size $angel [expr $x-2] [expr $y] $text gd text $gd $color(bg) $font $size $angel [expr $x] [expr $y+2] $text gd text $gd $color(bg) $font $size $angel [expr $x] [expr $y-2] $text gd text $gd $color(black) $font $size $angel [expr $x+2] [expr $y+2] $text gd text $gd $color(white) $font $size $angel [expr $x-2] [expr $y-2] $text gd text $gd $color(bg) $font $size $angel [expr $x+1] [expr $y-1] $text gd text $gd $color(bg) $font $size $angel [expr $x-1] [expr $y+1] $text gd text $gd $color(realblack) $font $size $angel [expr $x+1] [expr $y+1] $text gd text $gd $color(realwhite) $font $size $angel [expr $x-1] [expr $y-1] $text gd text $gd $col $font $size $angel [expr $x] [expr $y] $text } proc DayFile {file ImageFile {Facts 0}} { global color set MaxX 832; set MaxY 452; set FieldX 1440; set FieldY 800; set FieldX 720; set FieldY 400; set StepX [expr $FieldX/360.]; set StepY [expr $FieldY/200.] set gd_out [gd create $MaxX $MaxY] set font "/usr/local/share/ttf/arial.ttf"; set fontsize 17 set fontsize 11 set color(bg) [gd color new $gd_out 191 191 191]; #set color(transparent) [gd color transparent $gd_out $color(bg)]; set color(yellow) [gd color new $gd_out 191 191 000]; set color(red) [gd color new $gd_out 191 000 000]; set color(red2) [gd color new $gd_out 159 000 000]; set color(red3) [gd color new $gd_out 127 000 000]; set color(green) [gd color new $gd_out 000 191 000]; set color(green2) [gd color new $gd_out 000 159 000]; set color(green3) [gd color new $gd_out 000 127 000]; set color(blue) [gd color new $gd_out 000 000 191]; set color(blue2) [gd color new $gd_out 000 000 159]; set color(blue3) [gd color new $gd_out 000 000 127]; set color(black) [gd color new $gd_out 050 050 050]; set color(realblack) [gd color new $gd_out 000 000 000]; set color(grey) [gd color new $gd_out 127 127 127]; set color(lgrey) [gd color new $gd_out 205 205 205]; set color(white) [gd color new $gd_out 223 223 223]; set color(realwhite) [gd color new $gd_out 255 255 255]; set color(Limit2++) [gd color new $gd_out 63 255 63] set color(Limit2+) [gd color new $gd_out 47 223 47] set color(Limit2) [gd color new $gd_out 031 191 031] set color(Limit2-) [gd color new $gd_out 15 159 15] set color(Limit2--) [gd color new $gd_out 0 127 0] set color(Limit++) [gd color new $gd_out 47 191 47] set color(Limit+) [gd color new $gd_out 31 159 31] set color(Limit) [gd color new $gd_out 15 127 15] set color(Limit-) [gd color new $gd_out 7 95 7] set color(Limit--) [gd color new $gd_out 0 63 0] set color(aLimit) [gd color new $gd_out 031 159 031] set color(pLimit) [gd color new $gd_out 031 127 031] set color(Total++) [gd color new $gd_out 191 191 191]; set color(Total+) [gd color new $gd_out 159 159 159]; set color(Total) [gd color new $gd_out 127 127 127]; set color(Total-) [gd color new $gd_out 95 95 95]; set color(Total--) [gd color new $gd_out 63 63 63]; set color(aTotal) [gd color new $gd_out 95 95 95]; set color(pTotal) [gd color new $gd_out 63 63 63]; set color(OP++) [gd color new $gd_out 255 191 000]; set color(OP+) [gd color new $gd_out 223 159 000]; set color(OP) [gd color new $gd_out 191 127 000]; set color(OP-) [gd color new $gd_out 159 95 000]; set color(OP--) [gd color new $gd_out 127 63 000]; set color(aOP) [gd color new $gd_out 159 95 000]; set color(pOP) [gd color new $gd_out 127 63 000]; set color(Vlist) [gd color new $gd_out 95 95 205]; set color(Klist) [gd color new $gd_out 205 95 95]; set color(Voice++) [gd color new $gd_out 111 111 213]; set color(Voice+) [gd color new $gd_out 95 95 181]; set color(Voice) [gd color new $gd_out 63 63 159]; set color(Voice-) [gd color new $gd_out 31 31 127]; set color(Voice--) [gd color new $gd_out 15 15 95]; set color(aVoice) [gd color new $gd_out 31 31 127]; set color(pVoice) [gd color new $gd_out 0 0 95]; set color(User++) [gd color new $gd_out 191 0 255]; set color(User+) [gd color new $gd_out 159 0 223]; set color(User) [gd color new $gd_out 127 0 191]; set color(User-) [gd color new $gd_out 95 0 159]; set color(User--) [gd color new $gd_out 63 0 127]; set color(aUser) [gd color new $gd_out 95 0 159]; set color(pUser) [gd color new $gd_out 63 0 127]; set color(Invis++) [gd color new $gd_out 255 0 191]; set color(Invis+) [gd color new $gd_out 223 0 159]; set color(Invis) [gd color new $gd_out 191 0 127]; set color(Invis-) [gd color new $gd_out 159 0 95]; set color(Invis--) [gd color new $gd_out 127 0 63]; set color(aInvis) [gd color new $gd_out 159 0 159]; set color(pInvis) [gd color new $gd_out 127 0 63]; set color(Ulist++) [gd color new $gd_out 223 0 159]; set color(Ulist+) [gd color new $gd_out 191 0 127]; set color(Ulist) [gd color new $gd_out 159 0 95]; set color(Ulist-) [gd color new $gd_out 127 0 63]; set color(Ulist--) [gd color new $gd_out 95 0 31]; set color(aUlist) [gd color new $gd_out 127 0 63]; set color(pUlist) [gd color new $gd_out 95 0 31]; proc drawFrame {} {} gd line $gd_out $color(black) [expr $FieldX+5] 3 [expr $FieldX+5] [expr $MaxY-5] gd line $gd_out $color(white) [expr $FieldX+8] 3 [expr $FieldX+8] [expr $MaxY-5] gd line $gd_out $color(black) 4 [expr $FieldY+5] [expr $FieldX+5] [expr $FieldY+5] gd line $gd_out $color(white) 4 [expr $FieldY+8] [expr $FieldX+5] [expr $FieldY+8] gd line $gd_out $color(white) 0 0 [expr $MaxX-1] 0 gd line $gd_out $color(white) 3 3 [expr $MaxX-4] 3 gd line $gd_out $color(black) [expr $MaxX-1] 0 [expr $MaxX-1] [expr $MaxY-1] gd line $gd_out $color(black) [expr $MaxX-4] 3 [expr $MaxX-4] [expr $MaxY-4] gd line $gd_out $color(black) 0 [expr $MaxY-1] [expr $MaxX-1] [expr $MaxY-1] gd line $gd_out $color(black) 3 [expr $MaxY-4] [expr $MaxX-4] [expr $MaxY-4] gd line $gd_out $color(white) 0 0 0 [expr $MaxY-1] gd line $gd_out $color(white) 3 3 3 [expr $MaxY-4] gdtext $gd_out $color(Limit) $font $fontsize 0 [expr ($FieldX)+$fontsize*3] [expr 2*$fontsize] "Limit" gdtext $gd_out $color(green2) $font $fontsize 0 [expr ($FieldX)+$fontsize*6+2] [expr 2*$fontsize] "Chan" gdtext $gd_out $color(Total) $font $fontsize 0 [expr ($FieldX)+$fontsize*3] [expr 4*$fontsize] "Total" gdtext $gd_out $color(OP) $font $fontsize 0 [expr ($FieldX)+$fontsize*3] [expr 6*$fontsize] "OP" gdtext $gd_out $color(Voice) $font $fontsize 0 [expr ($FieldX)+$fontsize*3] [expr 10*$fontsize] "Voice" gdtext $gd_out $color(User) $font $fontsize 0 [expr ($FieldX)+$fontsize*3] [expr 12*$fontsize] "User" gdtext $gd_out $color(Invis) $font $fontsize 0 [expr ($FieldX)+$fontsize*3] [expr 8*$fontsize] "Invis" gdtext $gd_out $color(bg) $font $fontsize [expr -3.1415/2] [expr ($FieldX)+($fontsize)+2] [expr 44] "< *10" for {set i 1} {$i<=14} {incr i} { gd line $gd_out $color(grey) 4 [expr ($FieldY+5)-int($i*$StepY*10)] [expr $FieldX+5] [expr ($FieldY+5)-int($i*$StepY*10)] if {$i<10} { gdtext $gd_out $color(bg) $font $fontsize [expr -3.1415/2] [expr ($FieldX)+($fontsize)+2] [expr (($FieldY+5)-int($i*$StepY*10)-($fontsize/2)*1)+1] "${i}" } { if {$i<16} {gdtext $gd_out $color(bg) $font $fontsize [expr -3.1415/2] [expr ($FieldX)+($fontsize)+2] [expr (($FieldY+5)-int($i*$StepY*10)-($fontsize/1)*1)+1] "${i}"} } } gdtext $gd_out $color(bg) $font $fontsize 0 16 [expr (($FieldY+8)+$fontsize*2)] "> hours" for {set i 1} {$i<=23} {incr i} { if {$i<=23} { gd line $gd_out $color(grey) [expr (($FieldX/24)*$i)+5] [expr ($FieldY/20)*6+5] [expr (($FieldX/24)*$i)+5] [expr $FieldY+5] } if {$i>2} { if {$i<10} { gdtext $gd_out $color(bg) $font $fontsize [expr -3.1415/2] [expr (($FieldX/24)*$i)+($fontsize/4)] [expr (($FieldY+8)+$fontsize*1)+1] $i } { gdtext $gd_out $color(bg) $font $fontsize [expr -3.1415/2] [expr (($FieldX/24)*$i)+($fontsize/4)] [expr (($FieldY+8)+($fontsize/2)*1)+1] $i } } } set getdate [split $file .] set Date "[lindex $getdate 4].[lindex $getdate 3].[lindex $getdate 2]" gd text $gd_out $color(grey) $font [expr $fontsize*2] 0 [expr 24] [expr $fontsize*2+14] "Date: $Date" gd text $gd_out $color(grey) $font [expr $fontsize*2] 0 [expr 22] [expr $fontsize*2+12] "Date: $Date" gd text $gd_out $color(black) $font [expr $fontsize*2] 0 [expr 23] [expr $fontsize*2+13] "Date: $Date" gd text $gd_out $color(white) $font [expr $fontsize*2] 0 [expr 20] [expr $fontsize*2+10] "Date: $Date" gd text $gd_out $color(white) $font [expr $fontsize*2] 0 [expr 18] [expr $fontsize*2+8] "Date: $Date" gd text $gd_out $color(realwhite) $font [expr $fontsize*2] 0 [expr 19] [expr $fontsize*2+9] "Date: $Date" gd text $gd_out $color(bg) $font [expr $fontsize*2] 0 [expr 21] [expr $fontsize*2+11] "Date: $Date" set Date "#Berlin" gd text $gd_out $color(grey) $font [expr $fontsize*4] [expr -3.1415/2] [expr $MaxX-$fontsize*4-24] [expr $fontsize*4+($MaxY/3)+14] "$Date" gd text $gd_out $color(grey) $font [expr $fontsize*4] [expr -3.1415/2] [expr $MaxX-$fontsize*4-22] [expr $fontsize*4+($MaxY/3)+12] "$Date" gd text $gd_out $color(black) $font [expr $fontsize*4] [expr -3.1415/2] [expr $MaxX-$fontsize*4-23] [expr $fontsize*4+($MaxY/3)+13] "$Date" gd text $gd_out $color(white) $font [expr $fontsize*4] [expr -3.1415/2] [expr $MaxX-$fontsize*4-20] [expr $fontsize*4+($MaxY/3)+10] "$Date" gd text $gd_out $color(white) $font [expr $fontsize*4] [expr -3.1415/2] [expr $MaxX-$fontsize*4-18] [expr $fontsize*4+($MaxY/3)+8] "$Date" gd text $gd_out $color(realwhite) $font [expr $fontsize*4] [expr -3.1415/2] [expr $MaxX-$fontsize*4-19] [expr $fontsize*4+($MaxY/3)+9] "$Date" gd text $gd_out $color(bg) $font [expr $fontsize*4] [expr -3.1415/2] [expr $MaxX-$fontsize*4-21] [expr $fontsize*4+($MaxY/3)+11] "$Date" gd text $gd_out $color(bg) $font $fontsize 0 [expr $FieldX/2+19] [expr $fontsize+9] "Last Update [clock format [clock seconds]]" gd text $gd_out $color(bg) $font $fontsize 0 [expr $FieldX/2+20] [expr $fontsize+10] "Last Update [clock format [clock seconds]]" gd text $gd_out $color(bg) $font $fontsize 0 [expr $FieldX/2+21] [expr $fontsize+11] "Last Update [clock format [clock seconds]]" gd text $gd_out $color(bg) $font $fontsize 0 [expr $FieldX/2+20] [expr $fontsize+11] "Last Update [clock format [clock seconds]]" gd text $gd_out $color(bg) $font $fontsize 0 [expr $FieldX/2+21] [expr $fontsize+10] "Last Update [clock format [clock seconds]]" gd text $gd_out $color(bg) $font $fontsize 0 [expr $FieldX/2+22] [expr $fontsize+12] "Last Update [clock format [clock seconds]]" gd text $gd_out $color(realblack) $font $fontsize 0 [expr $FieldX/2+22] [expr $fontsize+12] "Last Update [clock format [clock seconds]]" gd text $gd_out $color(realwhite) $font $fontsize 0 [expr $FieldX/2+20] [expr $fontsize+10] "Last Update [clock format [clock seconds]]" gd text $gd_out $color(bg) $font $fontsize 0 [expr $FieldX/2+21] [expr $fontsize+11] "Last Update [clock format [clock seconds]]" #limit red set Peaks [ReadStats #berlin]; set PeakLast [lindex $Peaks 0]; array set Peak [lindex $Peaks 1]; unset Peaks; gdtext $gd_out $color(pUser) $font $fontsize 0 [expr 8] [expr $FieldY-int($Peak(User)*$StepY)-2] "UP $Peak(User)" gdtext $gd_out $color(pOP) $font $fontsize 0 [expr 8] [expr $FieldY-int($Peak(OP)*$StepY)-2] "OP $Peak(OP)" gdtext $gd_out $color(pInvis) $font $fontsize 0 [expr 8] [expr $FieldY-int($Peak(Invis)*$StepY)-2] "IP $Peak(Invis)" gdtext $gd_out $color(pVoice) $font $fontsize 0 [expr 8] [expr $FieldY-int($Peak(Voice)*$StepY)-2] "VP $Peak(Voice)" gdtext $gd_out $color(pTotal) $font $fontsize 0 [expr 8] [expr $FieldY-int($Peak(Total)*$StepY)-2] "Peak $Peak(Total)" #gdtext $gd_out $color(pUser) $font $fontsize 0 [expr $FieldX/2-20] [expr $FieldY-int($Peak(User)*$StepY)-2] "UP $Peak(User)" #gdtext $gd_out $color(pOP) $font $fontsize 0 [expr $FieldX/2-20] [expr $FieldY-int($Peak(OP)*$StepY)-2] "OP $Peak(OP)" #gdtext $gd_out $color(pInvis) $font $fontsize 0 [expr $FieldX/2-20] [expr $FieldY-int($Peak(Invis)*$StepY)-2] "IP $Peak(Invis)" #gdtext $gd_out $color(pVoice) $font $fontsize 0 [expr $FieldX/2-20] [expr $FieldY-int($Peak(Voice)*$StepY)-2] "VP $Peak(Voice)" #gdtext $gd_out $color(pTotal) $font $fontsize 0 [expr $FieldX/2-20] [expr $FieldY-int($Peak(Total)*$StepY)-2] "Peak $Peak(Total)" proc drawLines {} {} #total op voice user invis userlist limittick limit lastlimit set yTotalAvgTot 0 set yOPAvgTot 0 set yVoiceAvgTot 0 set yUserAvgTot 0 set yInvisAvgTot 0 set yUlistAvgTot 0 set yLimitAvgTot 0 set yLimitTAvgTot 0 set yLimitLAvgTot 0 set yKlistAvgTot 0 set yVlistAvgTot 0 set yTotalAvgNum 0 if {$file!=""} { if [file exists $file] { set fh [open $file r] while {![eof $fh]} { set line [gets $fh] if {$line!="" && $line!=[list]} { set hour [lindex $line 0]; if {[string index $hour 0]=="0"} {set hour [string replace $hour 0 0]} set min [lindex $line 1]; if {[string index $min 0]=="0"} {set min [string replace $min 0 0]} set xTotal [expr int((($hour*60)+$min)*($StepX/4))+5] incr yTotalAvgNum; set lTotal [lindex $line 2]; set yTotal [expr ($FieldY+5)-int($lTotal*$StepY)]; incr yTotalAvgTot $lTotal; set lOP [lindex $line 3]; set yOP [expr ($FieldY+5)-int($lOP*$StepY)]; incr yOPAvgTot $lOP set lVoice [lindex $line 4]; set yVoice [expr ($FieldY+5)-int($lVoice*$StepY)]; incr yVoiceAvgTot $lVoice set lUser [lindex $line 5]; set yUser [expr ($FieldY+5)-int($lUser*$StepY)]; incr yUserAvgTot $lUser set lInvis [lindex $line 6]; set yInvis [expr ($FieldY+5)-int($lInvis*$StepY)]; incr yInvisAvgTot $lInvis; set lUlist [lindex $line 7]; set yUlist [expr ($FieldY+5)-int($lUlist*$StepY)]; incr yUlistAvgTot $lUlist; set lLimitT [lindex $line 9]; set yLimitTick [expr ($FieldY+5)-int($lLimitT*$StepY)]; incr yLimitTAvgTot $lLimitT; set lLimit [lindex $line 9]; set yLimit [expr ($FieldY+5)-int($lLimit*$StepY)]; incr yLimitAvgTot $lLimit set lLimitL [lindex $line 10]; set yLimitLast [expr ($FieldY+5)-int($lLimitL*$StepY)]; incr yLimitLAvgTot $lLimitL set lKlist [lindex $line 11]; #incr lKlist [expr int(rand()*4)+10]; if {$lKlist==""} {set lKlist 0}; set yKlist [expr ($FieldY+5)-int($lKlist*$StepY)]; incr yKlistAvgTot $lKlist set lVlist [lindex $line 12]; #incr lVlist [expr int(rand()*4)+0]; if {$lVlist==""} {set lVlist 0}; set yVlist [expr ($FieldY+5)-int($lVlist*$StepY)]; incr yVlistAvgTot $lVlist #gd line $gd_out $color(green) $xTotal 4 $xTotal 723 if {$yLimitLast<=$yLimit} { #gd line $gd_out $color(green2) $xTotal 403 $xTotal $yLimitLast #gd line $gd_out $color(green2) [expr $xTotal-1] $yLimitLast [expr $xTotal+1] $yLimitLast #gd line $gd_out $color(green2) $xTotal [expr $yLimitLast-1] $xTotal [expr $yLimitLast+1] gd line $gd_out $color(Limit2-) [expr $xTotal+1] [expr $yLimitLast+1] [expr $xTotal+1] [expr $yLimitLast] gd line $gd_out $color(Limit2-) [expr $xTotal+1] [expr $yLimitLast+1] [expr $xTotal] [expr $yLimitLast+1] gd line $gd_out $color(Limit2+) [expr $xTotal-1] [expr $yLimitLast-1] [expr $xTotal+1] [expr $yLimitLast] gd line $gd_out $color(Limit2+) [expr $xTotal-1] [expr $yLimitLast-1] [expr $xTotal] [expr $yLimitLast+1] gd line $gd_out $color(Limit2++) [expr $xTotal-1] [expr $yLimitLast-1] [expr $xTotal-1] [expr $yLimitLast-1] gd line $gd_out $color(Limit2--) [expr $xTotal+1] [expr $yLimitLast+1] [expr $xTotal+1] [expr $yLimitLast+1] gd line $gd_out $color(Limit2) [expr $xTotal-1] [expr $yLimitLast] [expr $xTotal+1] [expr $yLimitLast] #gd line $gd_out $color(green) $xTotal 403 $xTotal $yLimit #gd line $gd_out $color(Limit) [expr $xTotal-1] $yLimit [expr $xTotal+1] $yLimit #gd line $gd_out $color(Limit) $xTotal [expr $yLimit-1] $xTotal [expr $yLimit+1] gd line $gd_out $color(Limit-) [expr $xTotal+1] [expr $yLimit+1] [expr $xTotal+1] [expr $yLimit] gd line $gd_out $color(Limit-) [expr $xTotal+1] [expr $yLimit+1] [expr $xTotal] [expr $yLimit+1] gd line $gd_out $color(Limit+) [expr $xTotal-1] [expr $yLimit-1] [expr $xTotal+1] [expr $yLimit] gd line $gd_out $color(Limit+) [expr $xTotal-1] [expr $yLimit-1] [expr $xTotal] [expr $yLimit+1] gd line $gd_out $color(Limit++) [expr $xTotal-1] [expr $yLimit-1] [expr $xTotal-1] [expr $yLimit-1] gd line $gd_out $color(Limit--) [expr $xTotal+1] [expr $yLimit+1] [expr $xTotal+1] [expr $yLimit+1] gd line $gd_out $color(Limit) [expr $xTotal-1] [expr $yLimit] [expr $xTotal+1] [expr $yLimit] } { #gd line $gd_out $color(green) $xTotal 403 $xTotal $yLimit #gd line $gd_out $color(Limit) [expr $xTotal-1] $yLimit [expr $xTotal+1] $yLimit #gd line $gd_out $color(Limit) $xTotal [expr $yLimit-1] $xTotal [expr $yLimit+1] gd line $gd_out $color(Limit-) [expr $xTotal+1] [expr $yLimit+1] [expr $xTotal+1] [expr $yLimit] gd line $gd_out $color(Limit-) [expr $xTotal+1] [expr $yLimit+1] [expr $xTotal] [expr $yLimit+1] gd line $gd_out $color(Limit+) [expr $xTotal-1] [expr $yLimit-1] [expr $xTotal+1] [expr $yLimit] gd line $gd_out $color(Limit+) [expr $xTotal-1] [expr $yLimit-1] [expr $xTotal] [expr $yLimit+1] gd line $gd_out $color(Limit++) [expr $xTotal-1] [expr $yLimit-1] [expr $xTotal-1] [expr $yLimit-1] gd line $gd_out $color(Limit--) [expr $xTotal+1] [expr $yLimit+1] [expr $xTotal+1] [expr $yLimit+1] gd line $gd_out $color(Limit) [expr $xTotal-1] [expr $yLimit] [expr $xTotal+1] [expr $yLimit] #gd line $gd_out $color(green2) $xTotal 403 $xTotal $yLimitLast #gd line $gd_out $color(green2) [expr $xTotal-1] $yLimitLast [expr $xTotal+1] $yLimitLast #gd line $gd_out $color(green2) $xTotal [expr $yLimitLast-1] $xTotal [expr $yLimitLast+1] gd line $gd_out $color(Limit2-) [expr $xTotal+1] [expr $yLimitLast+1] [expr $xTotal+1] [expr $yLimitLast] gd line $gd_out $color(Limit2-) [expr $xTotal+1] [expr $yLimitLast+1] [expr $xTotal] [expr $yLimitLast+1] gd line $gd_out $color(Limit2+) [expr $xTotal-1] [expr $yLimitLast-1] [expr $xTotal+1] [expr $yLimitLast] gd line $gd_out $color(Limit2+) [expr $xTotal-1] [expr $yLimitLast-1] [expr $xTotal] [expr $yLimitLast+1] gd line $gd_out $color(Limit2++) [expr $xTotal-1] [expr $yLimitLast-1] [expr $xTotal-1] [expr $yLimitLast-1] gd line $gd_out $color(Limit2--) [expr $xTotal+1] [expr $yLimitLast+1] [expr $xTotal+1] [expr $yLimitLast+1] gd line $gd_out $color(Limit2) [expr $xTotal-1] [expr $yLimitLast] [expr $xTotal+1] [expr $yLimitLast] } #gd line $gd_out $color(Total) [expr $xTotal-1] $yTotal [expr $xTotal+1] $yTotal #gd line $gd_out $color(Total) $xTotal [expr $yTotal-1] $xTotal [expr $yTotal+1] gd line $gd_out $color(Total-) [expr $xTotal+1] [expr $yTotal+1] [expr $xTotal+1] [expr $yTotal] gd line $gd_out $color(Total-) [expr $xTotal+1] [expr $yTotal+1] [expr $xTotal] [expr $yTotal+1] gd line $gd_out $color(Total+) [expr $xTotal-1] [expr $yTotal-1] [expr $xTotal+1] [expr $yTotal] gd line $gd_out $color(Total+) [expr $xTotal-1] [expr $yTotal-1] [expr $xTotal] [expr $yTotal+1] gd line $gd_out $color(Total++) [expr $xTotal-1] [expr $yTotal-1] [expr $xTotal-1] [expr $yTotal-1] gd line $gd_out $color(Total--) [expr $xTotal+1] [expr $yTotal+1] [expr $xTotal+1] [expr $yTotal+1] gd line $gd_out $color(Total) [expr $xTotal-1] [expr $yTotal] [expr $xTotal+1] [expr $yTotal] #gd line $gd_out $color(OP) $xTotal [expr $FieldY+5] $xTotal $yOP #gd line $gd_out $color(OP) [expr $xTotal-1] $yOP [expr $xTotal+1] $yOP #gd line $gd_out $color(OP) $xTotal [expr $yOP-1] $xTotal [expr $yOP+1] gd line $gd_out $color(OP-) [expr $xTotal+1] [expr $yOP+1] [expr $xTotal+1] [expr $yOP] gd line $gd_out $color(OP-) [expr $xTotal+1] [expr $yOP+1] [expr $xTotal] [expr $yOP+1] gd line $gd_out $color(OP+) [expr $xTotal-1] [expr $yOP-1] [expr $xTotal+1] [expr $yOP] gd line $gd_out $color(OP+) [expr $xTotal-1] [expr $yOP-1] [expr $xTotal] [expr $yOP+1] gd line $gd_out $color(OP++) [expr $xTotal-1] [expr $yOP-1] [expr $xTotal-1] [expr $yOP-1] gd line $gd_out $color(OP--) [expr $xTotal+1] [expr $yOP+1] [expr $xTotal+1] [expr $yOP+1] gd line $gd_out $color(OP) [expr $xTotal-1] [expr $yOP] [expr $xTotal+1] [expr $yOP] #gd line $gd_out $color(Ulist) [expr $xTotal-1] $yUlist [expr $xTotal+1] $yUlist #gd line $gd_out $color(Ulist) $xTotal [expr $yUlist-1] $xTotal [expr $yUlist+1] gd line $gd_out $color(Ulist-) [expr $xTotal+1] [expr $yUlist+1] [expr $xTotal+1] [expr $yUlist] gd line $gd_out $color(Ulist-) [expr $xTotal+1] [expr $yUlist+1] [expr $xTotal] [expr $yUlist+1] gd line $gd_out $color(Ulist+) [expr $xTotal-1] [expr $yUlist-1] [expr $xTotal+1] [expr $yUlist] gd line $gd_out $color(Ulist+) [expr $xTotal-1] [expr $yUlist-1] [expr $xTotal] [expr $yUlist+1] gd line $gd_out $color(Ulist++) [expr $xTotal-1] [expr $yUlist-1] [expr $xTotal-1] [expr $yUlist-1] gd line $gd_out $color(Ulist--) [expr $xTotal+1] [expr $yUlist+1] [expr $xTotal+1] [expr $yUlist+1] gd line $gd_out $color(Ulist) [expr $xTotal-1] [expr $yUlist] [expr $xTotal+1] [expr $yUlist] #gd line $gd_out $color(red) $xTotal 403 $xTotal $yInvis #gd line $gd_out $color(Invis) [expr $xTotal-1] $yInvis [expr $xTotal+1] $yInvis #gd line $gd_out $color(Invis) $xTotal [expr $yInvis-1] $xTotal [expr $yInvis+1] gd line $gd_out $color(Invis-) [expr $xTotal+1] [expr $yInvis+1] [expr $xTotal+1] [expr $yInvis] gd line $gd_out $color(Invis-) [expr $xTotal+1] [expr $yInvis+1] [expr $xTotal] [expr $yInvis+1] gd line $gd_out $color(Invis+) [expr $xTotal-1] [expr $yInvis-1] [expr $xTotal+1] [expr $yInvis] gd line $gd_out $color(Invis+) [expr $xTotal-1] [expr $yInvis-1] [expr $xTotal] [expr $yInvis+1] gd line $gd_out $color(Invis++) [expr $xTotal-1] [expr $yInvis-1] [expr $xTotal-1] [expr $yInvis-1] gd line $gd_out $color(Invis--) [expr $xTotal+1] [expr $yInvis+1] [expr $xTotal+1] [expr $yInvis+1] gd line $gd_out $color(Invis) [expr $xTotal-1] [expr $yInvis] [expr $xTotal+1] [expr $yInvis] #gd line $gd_out $color(blue) $xTotal 403 $xTotal $yUser #gd line $gd_out $color(User) [expr $xTotal-1] $yUser [expr $xTotal+1] $yUser #gd line $gd_out $color(User) $xTotal [expr $yUser-1] $xTotal [expr $yUser+1] gd line $gd_out $color(User-) [expr $xTotal+1] [expr $yUser+1] [expr $xTotal+1] [expr $yUser] gd line $gd_out $color(User-) [expr $xTotal+1] [expr $yUser+1] [expr $xTotal] [expr $yUser+1] gd line $gd_out $color(User+) [expr $xTotal-1] [expr $yUser-1] [expr $xTotal+1] [expr $yUser] gd line $gd_out $color(User+) [expr $xTotal-1] [expr $yUser-1] [expr $xTotal] [expr $yUser+1] gd line $gd_out $color(User++) [expr $xTotal-1] [expr $yUser-1] [expr $xTotal-1] [expr $yUser-1] gd line $gd_out $color(User--) [expr $xTotal+1] [expr $yUser+1] [expr $xTotal+1] [expr $yUser+1] gd line $gd_out $color(User) [expr $xTotal-1] [expr $yUser] [expr $xTotal+1] [expr $yUser] #gd line $gd_out $color(blue2) $xTotal 403 $xTotal $yVoice gd line $gd_out $color(Voice-) [expr $xTotal+1] [expr $yVoice+1] [expr $xTotal+1] [expr $yVoice] gd line $gd_out $color(Voice-) [expr $xTotal+1] [expr $yVoice+1] [expr $xTotal] [expr $yVoice+1] gd line $gd_out $color(Voice+) [expr $xTotal-1] [expr $yVoice-1] [expr $xTotal+1] [expr $yVoice] gd line $gd_out $color(Voice+) [expr $xTotal-1] [expr $yVoice-1] [expr $xTotal] [expr $yVoice+1] gd line $gd_out $color(Voice++) [expr $xTotal-1] [expr $yVoice-1] [expr $xTotal-1] [expr $yVoice-1] gd line $gd_out $color(Voice--) [expr $xTotal+1] [expr $yVoice+1] [expr $xTotal+1] [expr $yVoice+1] gd line $gd_out $color(Voice) [expr $xTotal-1] [expr $yVoice] [expr $xTotal+1] [expr $yVoice] #puts "if {$yVlist<=$yKlist}" if {$yVlist<=$yKlist} { #puts "if {$yVlist!=404} " if {$yVlist!="405"} { gd line $gd_out $color(Vlist) $xTotal [expr $FieldY+5] $xTotal $yVlist #gd line $gd_out $color(Vlist) [expr $xTotal-1] $yVlist [expr $xTotal+1] $yVlist #gd line $gd_out $color(Vlist) $xTotal [expr $yVlist-1] $xTotal [expr $yVlist+1] } #puts "if {$yKlist!=404} " if {$yKlist!="405"} { gd line $gd_out $color(Klist) $xTotal [expr $FieldY+5] $xTotal $yKlist #gd line $gd_out $color(Klist) [expr $xTotal-1] $yKlist [expr $xTotal+1] $yKlist #gd line $gd_out $color(Klist) $xTotal [expr $yKlist-1] $xTotal [expr $yKlist+1] } } { #puts "if {$yKlist!=404} " if {$yKlist!="405"} { gd line $gd_out $color(Klist) $xTotal [expr $FieldY+5] $xTotal $yKlist #gd line $gd_out $color(Klist) [expr $xTotal-1] $yKlist [expr $xTotal+1] $yKlist #gd line $gd_out $color(Klist) $xTotal [expr $yKlist-1] $xTotal [expr $yKlist+1] } #puts "if {$yVlist!=404} " if {$yVlist!="405"} { gd line $gd_out $color(Vlist) $xTotal [expr $FieldY+5] $xTotal $yVlist #gd line $gd_out $color(Vlist) [expr $xTotal-1] $yVlist [expr $xTotal+1] $yVlist #gd line $gd_out $color(Vlist) $xTotal [expr $yVlist-1] $xTotal [expr $yVlist+1] } } } } close $fh } } if {$yTotalAvgNum>0} { if {$yTotalAvgNum<288} { set AddX [expr $FieldX-(($fontsize*15)+8)] } {set AddX 0} #if {$yTotalAvgNum>4+($fontsize*20)} {set PosX [exür int($yTotalAvgNum/$StepX)]} {set PosX [expr 4+($fontsize*20)]} set PosX [expr int($yTotalAvgNum/$StepX)+5] set LimitAvg [expr int($yLimitAvgTot./$yTotalAvgNum+0.5)] if {$LimitAvg>$lLimit} {set tend " v"} elseif {$LimitAvg<$lLimit} {set tend " ^"} {set tend " -"} set LimitTend $tend set opAvg [expr int($yOPAvgTot./$yTotalAvgNum+0.5)] if {$opAvg>$lOP} {set tend " v"} elseif {$opAvg<$lOP} {set tend " ^"} {set tend " -"} set opTend $tend #gdtext $gd_out $color(aOP) $font $fontsize 0 [expr $AddX+5] [expr $FieldY-int($opAvg*$StepY)+($fontsize*2-6)] "Average OP [format %.2f [expr $yOPAvgTot/$yTotalAvgNum.]]" set UserAvg [expr int($yUserAvgTot./$yTotalAvgNum+0.5)] if {$UserAvg>$lUser} {set tend " v"} elseif {$UserAvg<$lUser} {set tend " ^"} {set tend " -"} set UserTend $tend #gdtext $gd_out $color(User) $font $fontsize 0 [expr $AddX+5] [expr $FieldY-int($UserAvg*$StepY)+($fontsize*2-6)] "Average User [format %.2f [expr $yUserAvgTot/$yTotalAvgNum.]]" set VoiceAvg [expr int($yVoiceAvgTot./$yTotalAvgNum+0.5)] if {$VoiceAvg>$lVoice} {set tend " v"} elseif {$VoiceAvg<$lVoice} {set tend " ^"} {set tend " -"} set VoiceTend $tend #gdtext $gd_out $color(Voice) $font $fontsize 0 [expr $AddX+5] [expr $FieldY-int($VoiceAvg*$StepY)+($fontsize*2-6)] "Average Voice [format %.2f [expr $yVoiceAvgTot/$yTotalAvgNum.]]" set InvisAvg [expr int($yInvisAvgTot./$yTotalAvgNum+0.5)] if {$InvisAvg>$lInvis} {set tend " v"} elseif {$InvisAvg<$lInvis} {set tend " ^"} {set tend " -"} set InvisTend $tend #gdtext $gd_out $color(Invis) $font $fontsize 0 [expr $AddX+5] [expr $FieldY-int($InvisAvg*$StepY)+($fontsize*2-6)] "Average Invisibles [format %.2f [expr $yInvisAvgTot/$yTotalAvgNum.]]" set Avg [expr int($yTotalAvgTot./$yTotalAvgNum+0.5)] if {$Avg>$lTotal} {set tend " v"} elseif {$Avg<$lTotal} {set tend " ^"} {set tend " -"} set TotalTend $tend #gdtext $gd_out $color(aTotal) $font $fontsize 0 [expr $AddX+5] [expr $FieldY-int($Avg*$StepY)+($fontsize*2-6)] "Average [format %.2f [expr $yTotalAvgTot/$yTotalAvgNum.]]" for {set i 1} {$i<=[expr $FieldX/$StepX]} {set i [expr $i+($StepX/2)]} { if {[expr int($i) & 1]=="1" && [expr int($i) & 2]=="2"} { gd line $gd_out $color(aLimit) [expr int($i*$StepX)-1] [expr ($FieldY+5)-int($LimitAvg*$StepY)+1] [expr int($i*$StepX)+1] [expr ($FieldY+5)-int($LimitAvg*$StepY)-1] gd line $gd_out $color(aLimit) [expr int($i*$StepX)-1] [expr ($FieldY+5)-int($LimitAvg*$StepY)-1] [expr int($i*$StepX)+1] [expr ($FieldY+5)-int($LimitAvg*$StepY)+1] gd line $gd_out $color(aUser) [expr int($i*$StepX)-1] [expr ($FieldY+5)-int($UserAvg*$StepY)+1] [expr int($i*$StepX)+1] [expr ($FieldY+5)-int($UserAvg*$StepY)-1] gd line $gd_out $color(aUser) [expr int($i*$StepX)-1] [expr ($FieldY+5)-int($UserAvg*$StepY)-1] [expr int($i*$StepX)+1] [expr ($FieldY+5)-int($UserAvg*$StepY)+1] gd line $gd_out $color(aOP) [expr int($i*$StepX)-2] [expr ($FieldY+5)-int($opAvg*$StepY)+2] [expr int($i*$StepX)+2] [expr ($FieldY+5)-int($opAvg*$StepY)-2] gd line $gd_out $color(aOP) [expr int($i*$StepX)-2] [expr ($FieldY+5)-int($opAvg*$StepY)-2] [expr int($i*$StepX)+2] [expr ($FieldY+5)-int($opAvg*$StepY)+2] gd line $gd_out $color(aInvis) [expr int($i*$StepX)-1] [expr ($FieldY+5)-int($InvisAvg*$StepY)+1] [expr int($i*$StepX)+1] [expr ($FieldY+5)-int($InvisAvg*$StepY)-1] gd line $gd_out $color(aInvis) [expr int($i*$StepX)-1] [expr ($FieldY+5)-int($InvisAvg*$StepY)-1] [expr int($i*$StepX)+1] [expr ($FieldY+5)-int($InvisAvg*$StepY)+1] gd line $gd_out $color(aVoice) [expr int($i*$StepX)-1] [expr ($FieldY+5)-int($VoiceAvg*$StepY)+1] [expr int($i*$StepX)+1] [expr ($FieldY+5)-int($VoiceAvg*$StepY)-1] gd line $gd_out $color(aVoice) [expr int($i*$StepX)-1] [expr ($FieldY+5)-int($VoiceAvg*$StepY)-1] [expr int($i*$StepX)+1] [expr ($FieldY+5)-int($VoiceAvg*$StepY)+1] gd line $gd_out $color(aTotal) [expr int($i*$StepX)-1] [expr ($FieldY+5)-int($Avg*$StepY)+1] [expr int($i*$StepX)+1] [expr ($FieldY+5)-int($Avg*$StepY)-1] gd line $gd_out $color(aTotal) [expr int($i*$StepX)-1] [expr ($FieldY+5)-int($Avg*$StepY)-1] [expr int($i*$StepX)+1] [expr ($FieldY+5)-int($Avg*$StepY)+1] if {[expr int($i) & 4]=="4"} { gd line $gd_out $color(pUser) [expr int($i*$StepX)-1] [expr ($FieldY+5)-int($Peak(User)*$StepY)+1] [expr int($i*$StepX)+1] [expr ($FieldY+5)-int($Peak(User)*$StepY)-1] gd line $gd_out $color(pUser) [expr int($i*$StepX)-1] [expr ($FieldY+5)-int($Peak(User)*$StepY)-1] [expr int($i*$StepX)+1] [expr ($FieldY+5)-int($Peak(User)*$StepY)+1] gd line $gd_out $color(pOP) [expr int($i*$StepX)-1] [expr ($FieldY+5)-int($Peak(OP)*$StepY)+1] [expr int($i*$StepX)+1] [expr ($FieldY+5)-int($Peak(OP)*$StepY)-1] gd line $gd_out $color(pOP) [expr int($i*$StepX)-1] [expr ($FieldY+5)-int($Peak(OP)*$StepY)-1] [expr int($i*$StepX)+1] [expr ($FieldY+5)-int($Peak(OP)*$StepY)+1] gd line $gd_out $color(pInvis) [expr int($i*$StepX)-1] [expr ($FieldY+5)-int($Peak(Invis)*$StepY)+1] [expr int($i*$StepX)+1] [expr ($FieldY+5)-int($Peak(Invis)*$StepY)-1] gd line $gd_out $color(pInvis) [expr int($i*$StepX)-1] [expr ($FieldY+5)-int($Peak(Invis)*$StepY)-1] [expr int($i*$StepX)+1] [expr ($FieldY+5)-int($Peak(Invis)*$StepY)+1] gd line $gd_out $color(pVoice) [expr int($i*$StepX)-1] [expr ($FieldY+5)-int($Peak(Voice)*$StepY)+1] [expr int($i*$StepX)+1] [expr ($FieldY+5)-int($Peak(Voice)*$StepY)-1] gd line $gd_out $color(pVoice) [expr int($i*$StepX)-1] [expr ($FieldY+5)-int($Peak(Voice)*$StepY)-1] [expr int($i*$StepX)+1] [expr ($FieldY+5)-int($Peak(Voice)*$StepY)+1] gd line $gd_out $color(pTotal) [expr int($i*$StepX)-1] [expr ($FieldY+5)-int($Peak(Total)*$StepY)+1] [expr int($i*$StepX)+1] [expr ($FieldY+5)-int($Peak(Total)*$StepY)-1] gd line $gd_out $color(pTotal) [expr int($i*$StepX)-1] [expr ($FieldY+5)-int($Peak(Total)*$StepY)-1] [expr int($i*$StepX)+1] [expr ($FieldY+5)-int($Peak(Total)*$StepY)+1] } } } if $Facts { #puts "Write facts" gdtext $gd_out $color(lgrey) $font $fontsize 0 8 [expr int(((($FieldY./$StepY)/100.)*($fontsize*3)))] "Peaks: Total $Peak(Total), OP: $Peak(OP), Voice: $Peak(Voice), User: $Peak(User), Invisible: $Peak(Invis)" gdtext $gd_out $color(lgrey) $font $fontsize 0 8 [expr int(((($FieldY./$StepY)/100.)*($fontsize*4)))] "Actual: Total $lTotal, OP: $lOP, Voice: $lVoice, User: $lUser, Invisible: $lInvis" gdtext $gd_out $color(lgrey) $font $fontsize 0 8 [expr int(((($FieldY./$StepY)/100.)*($fontsize*5)))] "Average: Total [format %.2f [expr $yTotalAvgTot/$yTotalAvgNum.]], OP: [format %.2f [expr $yOPAvgTot/$yTotalAvgNum.]], Voice: [format %.2f [expr $yVoiceAvgTot/$yTotalAvgNum.]], User: [format %.2f [expr $yUserAvgTot/$yTotalAvgNum.]], Invisible: [format %.2f [expr $yInvisAvgTot/$yTotalAvgNum.]]" } { #puts "Don't Write facts" gdtext $gd_out $color(lgrey) $font $fontsize 0 8 [expr int(((($FieldY./$StepY)/100.)*($fontsize*4)))] "Average: Total [format %.2f [expr $yTotalAvgTot/$yTotalAvgNum.]], OP: [format %.2f [expr $yOPAvgTot/$yTotalAvgNum.]], Voice: [format %.2f [expr $yVoiceAvgTot/$yTotalAvgNum.]], User: [format %.2f [expr $yUserAvgTot/$yTotalAvgNum.]], Invisible: [format %.2f [expr $yInvisAvgTot/$yTotalAvgNum.]]" } if {1} { #puts " '$LimitTend' '$UserTend' '$opTend' $InvisTend $VoiceTend $TotalTend Py $PosY " switch -exact $opTend {" ^" {set PosY 3} " v" {set PosY 8} default {set PosY 4}} gdtext $gd_out $color(OP) $font $fontsize 0 [expr ($PosX)] [expr $PosY+$yOP] "$opTend O:$lOP" switch -exact $LimitTend {" ^" {set PosY 3} " v" {set PosY 8} default {set PosY 4}} gdtext $gd_out $color(Limit) $font $fontsize 0 [expr ($PosX)] [expr $PosY+$yLimit] "$LimitTend L:$lLimit" switch -exact $UserTend {" ^" {set PosY 3} " v" {set PosY 8} default {set PosY 4}} gdtext $gd_out $color(User) $font $fontsize 0 [expr ($PosX)] [expr $PosY+$yUser] "$UserTend U:$lUser" switch -exact $InvisTend {" ^" {set PosY 3} " v" {set PosY 8} default {set PosY 4}} gdtext $gd_out $color(Invis) $font $fontsize 0 [expr ($PosX)] [expr $PosY+$yInvis] "$InvisTend I:$lInvis" switch -exact $VoiceTend {" ^" {set PosY 3} " v" {set PosY 8} default {set PosY 4}} gdtext $gd_out $color(Voice) $font $fontsize 0 [expr ($PosX)] [expr $PosY+$yVoice] "$VoiceTend V:$lVoice" switch -exact $TotalTend {" ^" {set PosY 3} " v" {set PosY 8} default {set PosY 4}} gdtext $gd_out $color(Total) $font $fontsize 0 [expr ($PosX)] [expr $PosY+$yTotal] "$TotalTend T:$lTotal" } } set fh [open "$ImageFile" w]; gd writePNG $gd_out $fh #gd writePNG $but2 $fh; close $fh; } set SearchFolder "/home/berlin/etc/data" set files [lsort [glob $SearchFolder/day.Berlin.*]] if {$::argv!="cron"} { } #set files [lsort [glob $SearchFolder/day.WebChat.*]] if {$::argv=="cron"} { set files [lrange $files end-1 end] } puts -nonewline "File:" foreach file $files { set getdate [split $file .] set ImageFile "/home/berlin/public_html/html/picz/Test.day.[lindex $getdate 1].[lindex $getdate 2].[lindex $getdate 3].[lindex $getdate 4].png" puts -nonewline " [lindex $getdate 2].[lindex $getdate 3].[lindex $getdate 4]" flush stdout if {$file == [lindex $files end]} { #puts "DayFile $file $ImageFile 1" DayFile $file $ImageFile 1 } { #puts "DayFile $file $ImageFile" DayFile $file $ImageFile } } puts " - done" set ImageFile /home/berlin/public_html/html/picz/Test.png #DayFile "" $ImageFile } #puts "$argc $argv" puts "required [expr ([set endtime [clock clicks]]-$starttime)/1000000.] sec/[expr ($endtime-$starttime)/1000.] ms to execute.."