Diff for /capa/capa51/GUITools/capastats.tcl between versions 1.2 and 1.3

version 1.2, 1999/10/15 14:29:34 version 1.3, 1999/10/18 20:58:33
Line 683  proc CTdiscussStats { num } { Line 683  proc CTdiscussStats { num } {
     set gCT(cmd.$cmdnum) discussstats      set gCT(cmd.$cmdnum) discussstats
     set file [file join $gFile($num) discussion logs access.log]      set file [file join $gFile($num) discussion logs access.log]
     displayStatus "Generating discussion Stats" both $cmdnum          displayStatus "Generating discussion Stats" both $cmdnum    
     CTdiscussForum $cmdnum $file $gFile($num)      CTdiscussForum $cmdnum $file $gFile($num) discussData 0
       CTputsDiscussResults $cmdnum discussData
     CToutput $num $cmdnum      CToutput $num $cmdnum
     removeStatus $cmdnum      removeStatus $cmdnum
     unset gCT(cmd.$cmdnum)      unset gCT(cmd.$cmdnum)
Line 921  proc CTlogAnalysis2 { num cmdnum setId } Line 922  proc CTlogAnalysis2 { num cmdnum setId }
     set logFile [file join $gFile($num) records "log$setId.db"]      set logFile [file join $gFile($num) records "log$setId.db"]
     if { [file exists $logFile] } {      if { [file exists $logFile] } {
  CTputs $cmdnum "Log analysis for telnet session log$setId.db\n"    CTputs $cmdnum "Log analysis for telnet session log$setId.db\n" 
  CTscanLogDB $cmdnum $logFile l(Y) l(N) l(S) l(U) l(u)   CTscanLogDB $cmdnum $logFile l(Y) l(N) l(S) l(U) l(u) l(A) l(F)
     } else {      } else {
  set l(Y) [set l(N) [set l(S) [set l(U) [set l(u) 0]]]]   set l(Y) [set l(N) [set l(S) [set l(U) [set l(u) [set l(A) [set l(F) 0]]]]]]
     }      }
     set webLogFile [file join $gFile($num) records "weblog$setId.db" ]      set webLogFile [file join $gFile($num) records "weblog$setId.db" ]
     if { [file exists $webLogFile] } {      if { [file exists $webLogFile] } {
  CTputs $cmdnum "===============================================\n"   CTputs $cmdnum "===============================================\n"
  CTputs $cmdnum "Log analysis for web session weblog$setId.db\n"   CTputs $cmdnum "Log analysis for web session weblog$setId.db\n"
  CTscanLogDB $cmdnum $webLogFile w(Y) w(N) w(S) w(U) w(u)   CTscanLogDB $cmdnum $webLogFile w(Y) w(N) w(S) w(U) w(u) w(A) w(F)
     } else {      } else {
  set w(Y) [set w(N) [set w(S) [set w(U) [set w(u) 0]]]]   set w(Y) [set w(N) [set w(S) [set w(U) [set w(u) [set w(A) [set w(F) 0]]]]]]
     }      }
     set telnet_total [expr $l(Y)+$l(N)+$l(S)+$l(U)+$l(u)]      set telnet_total [expr $l(Y)+$l(N)+$l(S)+$l(U)+$l(u)+$l(A)+$l(F)]
     set web_total [expr $w(Y)+$w(N)+$w(S)+$w(U)+$w(u)]      set web_total [expr $w(Y)+$w(N)+$w(S)+$w(U)+$w(u)+$w(A)+$w(F)]
     CTputs $cmdnum "============== SUMMARY ====================\n"      CTputs $cmdnum "============== SUMMARY ====================\n"
     CTputs $cmdnum "            #Y     #N     #S     #U     #u    Total\n"      CTputs $cmdnum "            #Y     #N     #S     #U     #u    #A     #F     Total\n"
     CTputs $cmdnum [format "telnet: %6d %6d %6d %6d %6d   %6d\n" \      CTputs $cmdnum [format "telnet: %6d %6d %6d %6d %6d %6d %6d   %6d\n" \
        $l(Y) $l(N) $l(S) $l(U) $l(u) $telnet_total ]         $l(Y) $l(N) $l(S) $l(U) $l(u) $l(A) $l(F) $telnet_total ]
     CTputs $cmdnum [format "   web: %6d %6d %6d %6d %6d   %6d\n" \      CTputs $cmdnum [format "   web: %6d %6d %6d %6d %6d %6d %6d   %6d\n" \
        $w(Y) $w(N) $w(S) $w(U) $w(u) $web_total]         $w(Y) $w(N) $w(S) $w(U) $w(u) $w(A) $w(F) $web_total]
     foreach v { Y N S U u } {      foreach v { Y N S U u A F} {
  set sum($v) [expr $l($v) + $w($v)]   set sum($v) [expr $l($v) + $w($v)]
  if { $sum($v) > 0 } {    if { $sum($v) > 0 } { 
     set ratio($v) [expr 100.0*$w($v)/double($sum($v))]       set ratio($v) [expr 100.0*$w($v)/double($sum($v))] 
Line 955  proc CTlogAnalysis2 { num cmdnum setId } Line 956  proc CTlogAnalysis2 { num cmdnum setId }
     } else {      } else {
  set ratio(web) 0.0   set ratio(web) 0.0
     }      }
     CTputs $cmdnum [format "  %%web: % 6.1f % 6.1f % 6.1f % 6.1f % 6.1f   % 6.1f\n" \      CTputs $cmdnum [format "  %%web: % 6.1f % 6.1f % 6.1f % 6.1f % 6.1f % 6.1f % 6.1f   % 6.1f\n" \
  $ratio(Y) $ratio(N) $ratio(S) $ratio(U) $ratio(u) $ratio(web) ]   $ratio(Y) $ratio(N) $ratio(S) $ratio(U) $ratio(u) $ratio(A) $ratio(F) $ratio(web) ]
 }  }
   
   
Line 965  proc CTlogAnalysis2 { num cmdnum setId } Line 966  proc CTlogAnalysis2 { num cmdnum setId }
 ###########################################################  ###########################################################
 ###########################################################  ###########################################################
 ###########################################################  ###########################################################
 proc CTscanLogDB { num file Y_lVar N_lVar S_lVar U_lVar u_lVar } {  proc CTscanLogDB { num file Y_lVar N_lVar S_lVar U_lVar u_lVar A_lVar F_lVar } {
     upvar $Y_lVar Y_l      upvar $Y_lVar Y_l
     upvar $N_lVar N_l      upvar $N_lVar N_l
     upvar $S_lVar S_l      upvar $S_lVar S_l
     upvar $U_lVar U_l      upvar $U_lVar U_l
     upvar $u_lVar u_l      upvar $u_lVar u_l
       upvar $A_lVar A_l
       upvar $F_lVar F_l
           
     set line_cnt 0      set line_cnt 0
           
Line 990  proc CTscanLogDB { num file Y_lVar N_lVa Line 993  proc CTscanLogDB { num file Y_lVar N_lVa
  if { ! [info exists count] } {   if { ! [info exists count] } {
     for { set i 0 } { $i < [llength $ans_char] } { incr i } {      for { set i 0 } { $i < [llength $ans_char] } { incr i } {
  set count(Y.$i) 0; set count(N.$i) 0; set count(S.$i) 0   set count(Y.$i) 0; set count(N.$i) 0; set count(S.$i) 0
  set count(U.$i) 0; set count(u.$i) 0   set count(U.$i) 0; set count(u.$i) 0; set count(A.$i) 0
    set count(F.$i) 0
     }      }
     set count(Y.total) 0; set count(N.total) 0; set count(S.total) 0      set count(Y.total) 0; set count(N.total) 0; set count(S.total) 0
     set count(U.total) 0; set count(u.total) 0      set count(U.total) 0; set count(u.total) 0; set count(A.total) 0
       set count(F.total) 0
  }   }
  set i -1   set i -1
  foreach char $ans_char {   foreach char $ans_char {
Line 1001  proc CTscanLogDB { num file Y_lVar N_lVa Line 1006  proc CTscanLogDB { num file Y_lVar N_lVa
     if { $char == "-" } { continue }      if { $char == "-" } { continue }
     if { [catch {incr count($char.$i)}] } {      if { [catch {incr count($char.$i)}] } {
  set count(Y.$i) 0; set count(N.$i) 0; set count(S.$i) 0   set count(Y.$i) 0; set count(N.$i) 0; set count(S.$i) 0
  set count(U.$i) 0; set count(u.$i) 0   set count(U.$i) 0; set count(u.$i) 0; set count(A.$i) 0
    set count(F.$i) 0
  incr count($char.$i)   incr count($char.$i)
     }      }
     incr count($char.total)      incr count($char.total)
Line 1010  proc CTscanLogDB { num file Y_lVar N_lVa Line 1016  proc CTscanLogDB { num file Y_lVar N_lVa
     }      }
     close $fileId      close $fileId
     removeStatus $num      removeStatus $num
     CTputs $num "Prob #:     #Y     #N     #S     #U     #u\n"      CTputs $num "Prob #:     #Y     #N     #S     #U     #u     #A     #F\n"
     for { set i 0 } { $i < [llength $ans_char] } { incr i } {      for { set i 0 } { $i < [llength $ans_char] } { incr i } {
  CTputs $num [format "    %2d: %6d %6d %6d %6d %6d\n"  [expr $i + 1] \   CTputs $num [format "    %2d: %6d %6d %6d %6d %6d %6d %6d\n"  [expr $i + 1] \
                      $count(Y.$i) $count(N.$i) $count(S.$i) $count(U.$i) $count(u.$i) ]                       $count(Y.$i) $count(N.$i) $count(S.$i) $count(U.$i) $count(u.$i) \
    $count(A.$i) $count(F.$i) ]
     }      }
     CTputs $num "===========================================\n"      CTputs $num "===========================================\n"
     CTputs $num [format " Total: %6d %6d %6d %6d %6d\n" $count(Y.total) $count(N.total) \      CTputs $num [format " Total: %6d %6d %6d %6d %6d %6d %6d\n" $count(Y.total) \
      $count(S.total) $count(U.total) $count(u.total) ]       $count(N.total) $count(S.total) $count(U.total) $count(u.total) \
        $count(A.total) $count(F.total) ]
     set Y_l $count(Y.total)      set Y_l $count(Y.total)
     set N_l $count(N.total)      set N_l $count(N.total)
     set S_l $count(S.total)      set S_l $count(S.total)
     set U_l $count(U.total)      set U_l $count(U.total)
     set u_l $count(u.total)      set u_l $count(u.total)
       set A_l $count(A.total)
       set F_l $count(F.total)
     return      return
 }  }
   
Line 2629  proc CTcreateSubset { num cmdnum day set Line 2639  proc CTcreateSubset { num cmdnum day set
 ###########################################################  ###########################################################
 ###########################################################  ###########################################################
 ###########################################################  ###########################################################
 proc CTdiscussForum { num file dir } {  proc CTdiscussForum { num file dir resultVar {specificSet 0}} {
     global gCT gFile      global gCT
       upvar $resultVar result
   
       if { $specificSet == 0 } {
    set start 1
       } else {
    set start $specificSet
       }
     set fileId [open $file r]      set fileId [open $file r]
     set maxLine [lindex [exec wc $file] 0]      set maxLine [lindex [exec wc $file] 0]
     set aline [gets $fileId]      set aline [gets $fileId]
Line 2641  proc CTdiscussForum { num file dir } { Line 2657  proc CTdiscussForum { num file dir } {
  incr line_cnt   incr line_cnt
  if { ($line_cnt%20) == 0 } { updateStatusBar [expr $line_cnt/double($maxLine)] $num }   if { ($line_cnt%20) == 0 } { updateStatusBar [expr $line_cnt/double($maxLine)] $num }
  foreach {stunum capaid name email action set prob date time} [split $aline "|"] {}   foreach {stunum capaid name email action set prob date time} [split $aline "|"] {}
    if {$specificSet && ($specificSet == $set)} {set aline [gets $fileId];continue}
  if { $action == "ViewProblem" } {   if { $action == "ViewProblem" } {
     if { [catch {incr count($set,$prob)}]} {      if { [catch {incr count($set,$prob)}]} {
  set count($set,$prob) 1   set count($set,$prob) 1
Line 2656  proc CTdiscussForum { num file dir } { Line 2673  proc CTdiscussForum { num file dir } {
  set aline [gets $fileId]   set aline [gets $fileId]
     }      }
   
     updateStatusMessage "Generating Output" $num      updateStatusMessage "Summarizing Data" $num
     updateStatusBar 0 $num      updateStatusBar 0 $num
     for {set i 1} { $i <= $last } { incr i } {      for {set i 1} { $i <= $last } { incr i } {
  updateStatusBar [expr $i/$last] $num    updateStatusBar [expr $i/$last] $num 
  #if { [catch {set max($i)}]} { break }  
  set total($i) 0   set total($i) 0
  for {set j 1} { $j < $max($i) } { incr j } {   for {set j 1} { $j <= $max($i) } { incr j } {
     set message ""      set message ""
     if {[catch {set message "Set [format %2d $i] Problem [format %3d $j] [format %3d $posts($i,$j)] reponses, viewed [format %4d $count($i,$j)] times, "} ]} { continue }       if {[catch { set result($num.$i.$j.posts) $posts($i,$j) }]} {
     incr total($i) $count($i,$j)   set result($num.$i.$j.posts) 0
     if { [catch { set ratio [expr $count($i,$j)/double($posts($i,$j))]} error]} {  
  append message "ratio [format %5s [format %3.1f 0]]"  
     } else {  
  append message "ratio [format %5s [format %3.1f $ratio]]"  
     }      }
     append message " from [format %3d [llength [array names nameprob $i,$j,*]]] viewers\n"      if {[catch {set result($num.$i.$j.views) $count($i,$j)}]} {
     CTputs $num $message   set result($num.$i.$j.views) 0
       } 
       catch {incr total($i) $count($i,$j)}
       if { [catch { set result($num.$i.$j.ratio) \
         [expr $result($num.$i.$j.views)/double($result($num.$i.$j.posts))]} error]} {
    set result($num.$i.$j.ratio) 0.0
       }
       set result($num.$i.$j.viewers) [llength [array names nameprob $i,$j,*]]
  }   }
  CTputs $num "Total views for set $i: $total($i)\n"   set result($num.$i.views) $total($i)
    set result($num.$i.max) $max($i)
     }      }
           
     for {set i 1} { 1 } { incr i } {      for {set i 1} { $i<=$last } { incr i } {
  if { [catch {set max($i)}]} { break }   set result($num.$i.viewers) [llength [array names names $i,*]]
  CTputs $num "For set $i Num viewers:[llength [array names names $i,*]] causing $total($i) views.\n"  
     }      }
     close $fileId      close $fileId
     CTputs $num "Total # of unique visitors [llength [array names ever]]\n"      set result($num.viewers) [llength [array names ever]]
       set result($num.last) $last
     #IDEAS: stick into capastats      #IDEAS: stick into capastats
     #     : howmany viws are repeats      #     : howmany viws are repeats
     #     : Student Course Profile, add #ViewProblems #Posts      #     : Student Course Profile, add #ViewProblems #Posts
     #     : add some portion of these stats to analyze log files?      #     : add some portion of these stats to analyze log files?
   }
   
   ###########################################################
   # CTputsDiscussResults
   ###########################################################
   ###########################################################
   proc CTputsDiscussResults { num resultsVar } {
       upvar $resultsVar result
       for {set i 1} { $i <= $result($num.last) } { incr i } {
    CTputs $num "For Set $i #Visitors:$result($num.$i.viewers) did #views:$result($num.$i.views)\n"
           CTputs $num "Prob# #Posts #Views Ratio #UniqueStu\n"
    CTputs $num "------------------------------------\n"  
    for {set j 1} { $j <= $result($num.$i.max)} { incr j } {
       CTputs $num [format "%5d %6d %6d %5s %6d\n" $j \
        $result($num.$i.$j.posts) $result($num.$i.$j.views) \
        [if {$result($num.$i.$j.ratio) == 0.0} {set temp " "} \
     {format %.1f $result($num.$i.$j.ratio)}] \
        $result($num.$i.$j.viewers)]
    }
       }
       CTputs $num "Overall Unique #viewers: $result($num.viewers)\n"
 }  }
   

Removed from v.1.2  
changed lines
  Added in v.1.3


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>