--- loncom/interface/Attic/lonchart.pm 2002/07/03 14:11:14 1.54
+++ loncom/interface/Attic/lonchart.pm 2002/07/08 13:38:52 1.55
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# (Publication Handler
#
-# $Id: lonchart.pm,v 1.54 2002/07/03 14:11:14 stredwic Exp $
+# $Id: lonchart.pm,v 1.55 2002/07/08 13:38:52 stredwic Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -48,6 +48,55 @@
=pod
+=head1 NAME
+
+lonchart
+
+=head1 SYNOPSIS
+
+Quick display of students grades for a course in a compressed table format.
+
+=head1 DESCRIPTION
+
+This module process all student grades for a course and turns them into a
+table like structure.
+
+This is part of the LearningOnline Network with CAPA project
+described at http://www.lon-capa.org
+
+lonchart presents the user with a condensed view all a course's data. The
+class title, the number of students, and the date for the last update of the
+displayed data. There is also a legend that describes the chart values.
+
+For each valid grade for a student is linked with a submission record for that
+problem. The ability to add and remove columns of data from the chart was
+added for reducing the burden of having to scroll through large quantities
+of data. The interface also allows for sorting of students by username,
+last name, and section number of class. Active and expired students are
+also available.
+
+The interface is controlled by three primary buttons: Recalculate Chart,
+Refresh Chart, and Reset Selections. Recalculate Chart will update
+the chart to the most recent data and keep the display settings for the chart
+the same. Refresh Chart is used to redisplay the chart after selecting
+different output formatting. Reset Selections is used to set the chart
+display options back to default values.
+
+=head1 CODE LAYOUT DESCRIPTION
+
+The code is broken down into five components: formatting data for printing,
+downloading data from servers, processing data, helper functions,
+and the central processing functions. The module is broken into chunks
+for each component.
+
+=head1 PACKAGES USED
+
+ Apache::Constants qw(:common :http)
+ Apache::lonnet()
+ Apache::loncommon()
+ HTML::TokeParser
+ GDBM_File
+
=cut
package Apache::lonchart;
@@ -60,8 +109,44 @@ use HTML::TokeParser;
use GDBM_File;
#my $jr;
+
+=pod
+
+=head1 FORMAT DATA FOR PRINTING
+
+=cut
+
# ----- FORMAT PRINT DATA ----------------------------------------------
+=pod
+
+=item &FormatStudentInformation()
+
+This function produces a formatted string of the student's information:
+username, domain, section, full name, and PID.
+
+=over 4
+
+Input: $cache, $name, $studentInformation, $spacePadding
+
+$cache: This is a pointer to a hash that is tied to the cached data
+
+$name: The name and domain of the current student in name:domain format
+
+$studentInformation: A pointer to an array holding the names used to
+
+remove data from the hash. They represent the name of the data to be removed.
+
+$spacePadding: Extra spaces that represent the space between columns
+
+Output: $Str
+
+$Str: Formatted string.
+
+=back
+
+=cut
+
sub FormatStudentInformation {
my ($cache,$name,$studentInformation,$spacePadding)=@_;
my $Str='';
@@ -83,8 +168,42 @@ sub FormatStudentInformation {
return $Str;
}
+=pod
+
+=item &FormatStudentData()
+
+First, FormatStudentInformation is called and prefixes the course information.
+This function produces a formatted string of the student's course information.
+Each column of data represents all the problems for a given sequence. For
+valid grade data, a link is created for that problem to a submission record
+for that problem.
+
+=over 4
+
+Input: $name, $studentInformation, $spacePadding, $ChartDB
+
+$name: The name and domain of the current student in name:domain format
+
+$studentInformation: A pointer to an array holding the names used to
+remove data from the hash. They represent
+the name of the data to be removed.
+
+$spacePadding: Extra spaces that represent the space between columns
+
+$ChartDB: The name of the cached data database which will be tied to that
+database.
+
+Output: $Str
+
+$Str: Formatted string that is an entire row of the chart. It is a
+concatenation of student information and student course information.
+
+=back
+
+=cut
+
sub FormatStudentData {
- my ($name,$coid,$studentInformation,$spacePadding,$ChartDB)=@_;
+ my ($name,$studentInformation,$spacePadding,$ChartDB)=@_;
my ($sname,$sdom) = split(/\:/,$name);
my $Str;
my %CacheData;
@@ -221,6 +340,33 @@ sub FormatStudentData {
return $Str;
}
+=pod
+
+=item &CreateTableHeadings()
+
+This function generates the column headings for the chart.
+
+=over 4
+
+Inputs: $CacheData, $studentInformation, $headings, $spacePadding
+
+$CacheData: pointer to a hash tied to the cached data database
+
+$studentInformation: a pointer to an array containing the names of the data
+held in a column and is used as part of a key into $CacheData
+
+$headings: The names of the headings for the student information
+
+$spacePadding: The spaces to go between columns
+
+Output: $Str
+
+$Str: A formatted string of the table column headings.
+
+=back
+
+=cut
+
sub CreateTableHeadings {
my ($CacheData,$studentInformation,$headings,$spacePadding)=@_;
my $Str='
';
+ $Str .= '';
return $Str;
}
+=pod
+
+=item &CreateColumnSelectionBox()
+
+If there are columns not being displayed then this selection box is created
+with a list of those columns. When selections are made and the page
+refreshed, the columns will be removed from this box and the column is
+put back in the chart. If there is no columns to select, no row is added
+to the interface table.
+
+=over 4
+Input: $CacheData, $headings
+
+
+$CacheData: A pointer to a hash tied to the cached data
+
+$headings: An array of the names of the columns for the student information.
+They are used for displaying which columns are missing.
+
+Output: $notThere
+
+$notThere: The string contains one row of a table. The first column has the
+name of the selection box. The second contains the selection box
+which has a size of four.
+
+=back
+
+=cut
+
sub CreateColumnSelectionBox {
- my ($CacheData,$studentInformation,$headings,$spacePadding)=@_;
+ my ($CacheData,$headings)=@_;
my $missing=0;
my $notThere='
Select column to view:';
@@ -299,20 +474,42 @@ sub CreateColumnSelectionBox {
$notThere='
';
}
- return $notThere.'
';
+ return $notThere.'';
}
+=pod
+
+=item &CreateColumnSelectors()
+
+This function generates the checkboxes above the column headings. The
+column will be removed if the checkbox is unchecked.
+
+=over 4
+
+Input: $CacheData, $headings
+
+$CacheData: A pointer to a hash tied to the cached data
+
+$headings: An array of the names of the columns for the student
+information. They are used to know what are the student information columns
+
+Output: $present
+
+$present: The string contains the first row of a table. Each column contains
+a checkbox which is left justified. Currently left justification is used
+for consistency of location over the column in which it presides.
+
+=back
+
+=cut
+
sub CreateColumnSelectors {
- my ($CacheData,$studentInformation,$headings,$spacePadding)=@_;
+ my ($CacheData,$headings)=@_;
my $found=0;
my ($name, $length, $position);
- my $present='
Note: Uncheck the boxes above a column to ';
- $present .= 'remove that column from the display.
'."\n";;
}
+=pod
+
+=item &CreateForm()
+
+The interface for this module consists primarily of the controls in this
+function. The student status selection (active, expired, any) is set here.
+The sort buttons: username, last name, and section are set here. The
+other buttons are Recalculate Chart, Refresh Chart, and Reset Selections.
+These controls are in a table to clean up the interface.
+
+=over 4
+
+Input: $CacheData
+
+$CacheData is a hash pointer to tied database for cached data.
+
+Output: $Ptr
+
+$Ptr is a string containing all the html for the above mentioned buttons.
+
+=back
+
+=cut
+
sub CreateForm {
my ($CacheData)=@_;
my $OpSel1='';
@@ -353,7 +574,6 @@ sub CreateForm {
else { $OpSel1 = 'selected'; }
my $Ptr .= '