[LON-CAPA-cvs] cvs: loncom /interface lontrackstudent.pm

matthew lon-capa-cvs@mail.lon-capa.org
Sun, 29 Aug 2004 19:58:32 -0000


This is a MIME encoded message

--matthew1093809512
Content-Type: text/plain

matthew		Sun Aug 29 15:58:32 2004 EDT

  Modified files:              
    /loncom/interface	lontrackstudent.pm 
  Log:
  Removed 'orginating server' column.
  Reduced number of lines requested to 500.
  Better handling of tables.
  Changed style of table to be much less colorful.
  Reduced the number of useless pieces of information output to the user.
  
  
--matthew1093809512
Content-Type: text/plain
Content-Disposition: attachment; filename="matthew-20040829155832.txt"

Index: loncom/interface/lontrackstudent.pm
diff -u loncom/interface/lontrackstudent.pm:1.5 loncom/interface/lontrackstudent.pm:1.6
--- loncom/interface/lontrackstudent.pm:1.5	Wed Aug 25 11:53:34 2004
+++ loncom/interface/lontrackstudent.pm	Sun Aug 29 15:58:32 2004
@@ -1,6 +1,6 @@
 # The LearningOnline Network with CAPA
 #
-# $Id: lontrackstudent.pm,v 1.5 2004/08/25 15:53:34 matthew Exp $
+# $Id: lontrackstudent.pm,v 1.6 2004/08/29 19:58:32 matthew Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -88,14 +88,14 @@
         $r->print(&mt('Please try again in a few minutes.'));
         return;
     }
-    $r->print('<h2>'.&mt('Elapsed Time = [_1] seconds',
-                         time-$starttime).'</h2>');
+#    $r->print('<h2>'.&mt('Elapsed Time = [_1] seconds',
+#                         time-$starttime).'</h2>');
     $r->rflush();
     &Apache::lonhtmlcommon::Update_PrgWin
         ($r,$prog_state,&mt('Parsing results'));
-    $r->print('<h2>'.
-              &mt('Reloading this page may result in newer data').
-              '</h2>');
+#    $r->print('<h2>'.
+#              &mt('Reloading this page may result in newer data').
+#              '</h2>');
     &output_results($r,$results_file,$navmap,$mode);
     &Apache::lonhtmlcommon::Update_PrgWin($r,$prog_state,&mt('Finished!'));
     return;
@@ -125,20 +125,20 @@
             LEFT JOIN $machine_table  AS E ON E.machine_id=A.machine_id
             WHERE A.student_id>10
             ORDER BY A.time DESC
-            LIMIT 5000
+            LIMIT 500
         };
     } elsif ($mode =~ /^student:(.*):(.*)$/) {
         my $student = $1.':'.$2;
         $query = qq{
-        SELECT B.resource,A.time,A.action,E.machine,A.action_values 
-            FROM $activity_table AS A
-            LEFT JOIN $res_table      AS B ON B.res_id=A.res_id 
-            LEFT JOIN $student_table  AS C ON C.student_id=A.student_id 
-            LEFT JOIN $machine_table  AS E ON E.machine_id=A.machine_id
-            WHERE C.student='$student'
-            ORDER BY A.time DESC
-            LIMIT 5000
-        };
+            SELECT B.resource,A.time,A.action,E.machine,A.action_values 
+                FROM $activity_table AS A
+                LEFT JOIN $res_table      AS B ON B.res_id=A.res_id 
+                LEFT JOIN $student_table  AS C ON C.student_id=A.student_id 
+                LEFT JOIN $machine_table  AS E ON E.machine_id=A.machine_id
+                WHERE C.student='$student'
+                ORDER BY A.time DESC
+                LIMIT 500
+            };
     }
     $query =~ s|$/||g;
     return $query;
@@ -148,6 +148,8 @@
 ###################################################################
 sub output_results {
     my ($r,$results_file,$navmap,$mode) = @_;
+    ##
+    ##
     if (! open(ACTIVITYDATA,$results_file)) {
         $r->print('<h2>'.&mt('Unable to read results file.').'</h2>'.
                   '<p>'.
@@ -157,30 +159,35 @@
                   '</p>');
         return;
     }
+    ##
+    ##
     my $tableheader;
     if ($mode eq 'full_class') { 
         $tableheader = 
             '<table><tr>'.
-            '<th>count</th>'.
             '<th>'.&mt('Resource').'</th>'.
             '<th>'.&mt('Time').'</th>'.
             '<th>'.&mt('Student').'</th>'.
             '<th>'.&mt('Action').'</th>'.
-            '<th>'.&mt('Originating Server').'</th>'.
-            '<th>'.&mt('Data').'</th>'.
+ #           '<th>'.&mt('Originating Server').'</th>'.
+            '<th align="left">'.&mt('Data').'</th>'.
+            '</tr>'.$/;
+    } elsif ($mode =~ /^student:(.*):(.*)$/) {
+        $tableheader = 
+            '<table><tr>'.
+            '<th>'.&mt('Resource').'</th>'.
+            '<th>'.&mt('Time').'</th>'.
+            '<th>'.&mt('Action').'</th>'.
+ #           '<th>'.&mt('Originating Server').'</th>'.
+            '<th align="left">'.&mt('Data').'</th>'.
             '</tr>'.$/;
-    } elsif ($mode =~ /^student:/) {
-        '<table><tr>'.
-        '<th>'.&mt('Resource').'</th>'.
-        '<th>'.&mt('Time').'</th>'.
-        '<th>'.&mt('Action').'</th>'.
-        '<th>'.&mt('Originating Server').'</th>'.
-        '<th>'.&mt('Data').'</th>'.
-        '</tr>'.$/;
     }
     my $count = -1;
     $r->rflush();
+    ##
+    ##
     while (my $line = <ACTIVITYDATA>) {
+        chomp($line);
         $line = &Apache::lonnet::unescape($line);
         if (++$count % 50 == 0) {
             if ($count != 0) { 
@@ -207,11 +214,25 @@
                 $title = $nav_res->title();
                 $src   = $nav_res->src();
             } else {
-                $title = 'unable to retrieve title';
-                $src   = '/dev/null';
+                if ($src =~ m|^/res|) {
+                    $title = $src;
+                } elsif ($values =~ /^\s*$/ && 
+                         (! defined($src) || $src =~ /^\s*$/)) {
+                    next;
+                } elsif ($values =~ /^\s*$/) {
+                    $values = $src;
+                } else {
+                    $title = 'unable to retrieve title';
+                    $src   = '/dev/null';
+                }
             }
         }
-        my $class = '';
+        my %classes;
+        my $class_count=0;
+        if (! exists($classes{$symb})) {
+            $classes{$symb} = $class_count++;
+        }
+        my $class = 'a';#.$classes{$symb};
         #
         if ($symb eq '/prtspool/') {
             $class = 'print';
@@ -229,26 +250,30 @@
             $title = 'untitled';
             $class = 'warning';
         }
-        if ($values =~ /^counter=\d+$/) {
-            $values = '';
+        # Clean up the values
+        $values =~ s/counter=\d+$//;
+        #
+        # Build the row for output
+        my $tablerow = qq{<tr class="$class">};
+        if ($src =~ m|^/adm/|) {
+            $tablerow .= 
+                '<td><nobr>'.$title.'</td>';
+        } else {
+            $tablerow .= 
+                '<td><nobr>'.
+                '<a href="'.$src.'">'.$title.'</a>'.
+                '</nobr></td>';
         }
+        $tablerow .= '<td><nobr>'.$timestamp.'</nobr></td>';
         if ($mode eq 'full_class') {
-            $r->print('<tr class="'.$class.'">'.
-                      '<td>'.$count.'</td>'.
-                      '<td><a href="'.$src.'">'.$title.'</a>'.'</td>'.
-                      '<td><nobr>'.$timestamp.'</nobr></td>'.
-                      '<td>'.$student.'</td>'.
-                      '<td>'.$action.'</td>'.
-                      '<td>'.$machine.'</td>'.
-                      '<td>'.$values.'</td>'.'</tr>'.$/);
-        } elsif ($mode =~ /^student:/) {
-            $r->print('<tr class="'.$class.'">'.
-                      '<td><a href="'.$src.'">'.$title.'</a>'.'</td>'.
-                      '<td><nobr>'.$timestamp.'</nobr></td>'.
-                      '<td>'.$action.'</td>'.
-                      '<td>'.$machine.'</td>'.
-                      '<td>'.$values.'</td>'.'</tr>'.$/);
+            $tablerow.='<td>'.$student.'</td>';
         }
+        $tablerow .= 
+            '<td>'.$action.'</td>'.
+#            '<td>'.$machine.'</td>'.
+            '<td>'.$values.'</td>'.
+            '</tr>';
+        $r->print($tablerow.$/);
     }
     $r->print('</table>'.$/) if (! $count % 50);
     close(ACTIVITYDATA);
@@ -263,7 +288,7 @@
     my $domain = $ENV{'course.'.$cid.'.domain'};
     my $home = $ENV{'course.'.$cid.'.home'};
     my $course = $ENV{'course.'.$cid.'.num'};
-    &Apache::lonnet::logthis($command.' '.$course.' '.$domain.' '.$home);
+#    &Apache::lonnet::logthis($command.' '.$course.' '.$domain.' '.$home);
     my $result = &Apache::lonnet::metadata_query($command,$course,$domain,
                                                  [$home]);
     return $result;
@@ -282,6 +307,24 @@
 sub styles {
     return <<END;
 <style type="text/css">
+    tr.warning   { background-color: \#CCCCCC; }
+    tr.chat      { background-color: \#CCCCCC; }
+    tr.chatfetch { background-color: \#CCCCCC; }
+    tr.navmaps   { background-color: \#CCCCCC; }
+    tr.roles     { background-color: \#CCCCCC; }
+    tr.flip      { background-color: \#CCCCCC; }
+    tr.adm       { background-color: \#CCCCCC; }
+    tr.print     { background-color: \#CCCCCC; }
+    tr.printout  { background-color: \#CCCCCC; }
+    tr.parmset   { background-color: \#CCCCCC; }
+    tr.grades    { background-color: \#CCCCCC; }
+</style>
+END
+} 
+
+sub developer_centric_styles {
+    return <<END;
+<style type="text/css">
     tr.warning   { background-color: red; }
     tr.chat      { background-color: yellow; }
     tr.chatfetch { background-color: yellow; }
@@ -290,7 +333,9 @@
     tr.flip      { background-color: \#BBBBBB; }
     tr.adm       { background-color: green; }
     tr.print     { background-color: blue; }
+    tr.parmset   { background-color: \#000088; }
     tr.printout  { background-color: blue; }
+    tr.grades    { background-color: \#CCCCCC; }
 </style>
 END
 }
@@ -371,17 +416,21 @@
     if (ref($result) eq 'HASH') {
         $result = join(' ',map { $_.'=>'.$result->{$_}; } keys(%$result));
     }
-    &Apache::lonnet::logthis('result from request_data_update: '.$result);
     #
     if (exists($ENV{'form.selected_student'})) {
         # For now, just show all the data, in the future allow selection of
         # a student
         my ($sname,$sdom) = split(':',$ENV{'form.selected_student'});
-        $r->print('<h2>'.
-                  &mt('Recent activity of [_1]@[_2]',$sname,$sdom).
-                  '</h2>');
-        &get_data($r,\%prog_state,$navmap,
-                  'student:'.$ENV{'form.selected_student'});
+        if ($sname =~ /^\w*$/ && $sdom =~ /^\w*$/) {
+            $r->print('<h2>'.
+                      &mt('Recent activity of [_1]@[_2]',$sname,$sdom).
+                      '</h2>');
+            &get_data($r,\%prog_state,$navmap,
+                      'student:'.$ENV{'form.selected_student'});
+        } else {
+            $r->print('<h2>'.&mt('Unable to process for [_1]@[_2]',
+                                 $sname,$sdom).'</h2>');
+        }
     } else {
         # For now, just show all the data instead of limiting it to one student
         &get_data($r,\%prog_state,$navmap,'full_class');

--matthew1093809512--