--- capa/capa51/GUITools/capastats.tcl 1999/09/28 21:25:37 1.1 +++ capa/capa51/GUITools/capastats.tcl 1999/10/15 14:29:34 1.2 @@ -44,6 +44,7 @@ proc runCapaTools { classDirConfigFile } $utilsMenu add command -label "Analyze Class Report" -command "CTanalyzeReport $num" $utilsMenu add command -label "Analyze Responses" -command "CTanalyzeScorer $num" $utilsMenu add command -label "Graph a Responses Analysis" -command "CTgraphAnalyzeScorer $num" + $utilsMenu add command -label "Discussion Stats" -command "CTdiscussStats $num" $utilsMenu add command -label "Quit" -command "CTquit $num" $utilsMenu post 0 0 Centre_Dialog $utilsMenu default @@ -672,6 +673,23 @@ proc CTgraphAnalyzeScorer { num } { } ########################################################### +# CTdiscussStats +########################################################### +########################################################### +########################################################### +proc CTdiscussStats { num } { + global gCT gUniqueNumber gFile + set cmdnum [incr gUniqueNumber] + set gCT(cmd.$cmdnum) discussstats + set file [file join $gFile($num) discussion logs access.log] + displayStatus "Generating discussion Stats" both $cmdnum + CTdiscussForum $cmdnum $file $gFile($num) + CToutput $num $cmdnum + removeStatus $cmdnum + unset gCT(cmd.$cmdnum) +} + +########################################################### # CTquit ########################################################### ########################################################### @@ -2605,3 +2623,68 @@ proc CTcreateSubset { num cmdnum day set catch {unset answerArray} catch {unset exist} } + +########################################################### +# CTdiscussForum +########################################################### +########################################################### +########################################################### +proc CTdiscussForum { num file dir } { + global gCT gFile + + set fileId [open $file r] + set maxLine [lindex [exec wc $file] 0] + set aline [gets $fileId] + set last 0 + set line_cnt 0 + while {![eof $fileId]} { + incr line_cnt + if { ($line_cnt%20) == 0 } { updateStatusBar [expr $line_cnt/double($maxLine)] $num } + foreach {stunum capaid name email action set prob date time} [split $aline "|"] {} + if { $action == "ViewProblem" } { + if { [catch {incr count($set,$prob)}]} { + set count($set,$prob) 1 + if { $set > $last } { set last $set } + if { [catch {set max($set)}]} { set max($set) 0 } + if { $prob > $max($set)} { set max($set) $prob } + if { [catch {set posts($set,$prob) [llength [glob $dir/discussion/$set/[format "%06d" $prob]-*-*-*.msg]]}]} { set posts($set,$prob) 0 } + } + set ever($name) 1 + set names($set,$name) 1 + set nameprob($set,$prob,$name) 1 + } + set aline [gets $fileId] + } + + updateStatusMessage "Generating Output" $num + updateStatusBar 0 $num + for {set i 1} { $i <= $last } { incr i } { + updateStatusBar [expr $i/$last] $num + #if { [catch {set max($i)}]} { break } + set total($i) 0 + for {set j 1} { $j < $max($i) } { incr j } { + 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 } + incr total($i) $count($i,$j) + 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" + CTputs $num $message + } + CTputs $num "Total views for set $i: $total($i)\n" + } + + for {set i 1} { 1 } { incr i } { + if { [catch {set max($i)}]} { break } + CTputs $num "For set $i Num viewers:[llength [array names names $i,*]] causing $total($i) views.\n" + } + close $fileId + CTputs $num "Total # of unique visitors [llength [array names ever]]\n" + #IDEAS: stick into capastats + # : howmany viws are repeats + # : Student Course Profile, add #ViewProblems #Posts + # : add some portion of these stats to analyze log files? +} \ No newline at end of file