--- loncom/interface/spreadsheet/assesscalc.pm 2003/05/23 19:36:04 1.8 +++ loncom/interface/spreadsheet/assesscalc.pm 2003/06/12 21:17:11 1.13 @@ -1,5 +1,5 @@ # -# $Id: assesscalc.pm,v 1.8 2003/05/23 19:36:04 matthew Exp $ +# $Id: assesscalc.pm,v 1.13 2003/06/12 21:17:11 matthew Exp $ # # Copyright Michigan State University Board of Trustees # @@ -123,6 +123,10 @@ sub clear_package { undef(%courseopt); } +sub initialize { + &clear_package(); +} + ######################################################## ######################################################## @@ -136,10 +140,12 @@ sub clear_package { ######################################################## sub initialize_package { my ($sname,$sdomain) = @_; - $current_course = $ENV{'request.course.id'}; $current_name = $sname; $current_domain = $sdomain; - undef(%courseopt); + if ($current_course ne $ENV{'request.course.id'}) { + $current_course = $ENV{'request.course.id'}; + undef(%courseopt); + } &load_cached_export_rows(); &load_parameter_caches(); } @@ -418,7 +424,7 @@ END $r->print("\n".$tableheader); } $r->print(''.$rownum.''. - $self->assess_html_row($num_uneditable,$rownum)."\n"); + $self->assess_html_row($rownum)."\n"); } $r->print("\n"); return; @@ -426,7 +432,7 @@ END sub assess_html_row { my $self = shift(); - my ($num_uneditable,$row) = @_; + my ($row) = @_; my $parameter_name = $self->{'formulas'}->{'A'.$row}; my @rowdata = $self->get_row($row); my $num_cols_output = 0; @@ -439,17 +445,42 @@ sub assess_html_row { $row_html .= ''.$parameter_name.''; } foreach my $cell (@rowdata) { - $row_html .= ''; - $row_html .= &Apache::Spreadsheet::html_editable_cell($cell,'#E0FFDD'); + if ($num_cols_output < 1) { + $row_html .= ''; + $row_html .= &Apache::Spreadsheet::html_uneditable_cell($cell, + '#FFDDDD'); + } else { + $row_html .= ''; + $row_html .= &Apache::Spreadsheet::html_editable_cell($cell, + '#E0FFDD',1); + } $row_html .= ''; + $num_cols_output++; } return $row_html; } -sub outsheet_csv { +sub csv_rows { + # writes the meat of the spreadsheet to an excel worksheet. Called + # by Spreadsheet::outsheet_excel; my $self = shift; - my ($r) = @_; - $r->print('

csv output is not supported yet

'); + my ($filehandle) = @_; + # + # Write a header row + $self->csv_output_row($filehandle,undef, + ('Parameter','Description','Value')); + # + # Write each row + foreach my $rownum (sort {$a <=> $b} ($self->rows())) { + my $parameter_name = $self->{'formulas'}->{'A'.$rownum}; + my $description = ''; + if (exists($nice_parameter_name{$parameter_name})) { + $description = $nice_parameter_name{$parameter_name}; + } + $self->csv_output_row($filehandle,$rownum, + $parameter_name,$description); + } + return; } sub excel_rows { @@ -480,8 +511,21 @@ sub excel_rows { sub compute { my $self = shift; - $self->logthis('computing'); +# $self->logthis('computing'); $self->initialize_safe_space(); + ######################################### + ######################################### + ### ### + ### Retrieve the problem parameters ### + ### ### + ######################################### + ######################################### + my @Mandatory_parameters = ("stores_0_solved", + "stores_0_awarddetail", + "stores_0_awarded", + "timestamp", + "stores_0_tries", + "stores_0_award"); # # Definitions undef(%nice_parameter_name); @@ -490,7 +534,7 @@ sub compute { # Get the metadata fields and determine their proper names my ($symap,$syid,$srcf)=split(/___/,$self->{'symb'}); my @Metadata = split(/\,/,&Apache::lonnet::metadata($srcf,'keys')); - foreach my $parm (@Metadata) { + foreach my $parm (@Mandatory_parameters,@Metadata) { next if ($parm !~ /^(resource\.|stores|parameter)_/); my $cleaned_name = $parm; $cleaned_name =~ s/^resource\./stores_/; @@ -570,6 +614,7 @@ sub compute { # # Save the export data $self->save_export_data(); + $self->save() if ($self->need_to_save()); return; }