Diff for /loncom/interface/lonnavmaps.pm between versions 1.53 and 1.54

version 1.53, 2002/09/24 03:48:18 version 1.54, 2002/09/24 20:01:05
Line 833  sub new_handle { Line 833  sub new_handle {
   
     # Defines a status->color mapping, null string means don't color      # Defines a status->color mapping, null string means don't color
     my %colormap =       my %colormap = 
     ( $res->NETWORK_FAILURE    => '',      ( $res->NETWORK_FAILURE        => '',
       $res->CORRECT            => '#BBFFBB',        $res->CORRECT                => '#BBFFBB',
       $res->EXCUSED            => '#BBBBFF',        $res->EXCUSED                => '#BBBBFF',
       $res->PAST_DUE           => '#FFAA00',        $res->PAST_DUE_ANSWER_LATER  => '#FFAA00',
       $res->ANSWER_OPEN        => '#FF00AA',        $res->PAST_DUE_NO_ANSWER     => '#FFAA00',
       $res->OPEN_LATER         => '',        $res->ANSWER_OPEN            => '#FF00AA',
       $res->TRIES_LEFT         => '#FFFF00',        $res->OPEN_LATER             => '',
       $res->INCORRECT          => '#FFAA00',        $res->TRIES_LEFT             => '#FFFF00',
       $res->OPEN               => '#FFFF88',        $res->INCORRECT              => '#FFAA00',
       $res->NOTHING_SET        => ''        );        $res->OPEN                   => '#FFFF88',
         $res->NOTHING_SET            => ''        );
   
     if (!defined($navmap)) {      if (!defined($navmap)) {
         my $requrl = $r->uri;          my $requrl = $r->uri;
Line 1045  sub getDescription { Line 1046  sub getDescription {
         return "Opens: " . timeToHumanString($res->opendate($part));          return "Opens: " . timeToHumanString($res->opendate($part));
     }      }
     if ($status == $res->OPEN) {      if ($status == $res->OPEN) {
         return "Due: " . timeToHumanString($res->duedate($part));          return "Due: $status " . timeToHumanString($res->duedate($part));
     }      }
     if ($status == $res->PAST_DUE) {      if ($status == $res->PAST_DUE_ANSWER_LATER) {
         return "Answer: " . timeToHumanString($res->duedate($part));          return "Answer: " . timeToHumanString($res->answerdate($part));
       }
       if ($status == $res->PAST_DUE_NO_ANSWER) {
           return "Was Due: " . timeToHumanString($res->duedate($part));
     }      }
     if ($status == $res->ANSWER_OPEN) {      if ($status == $res->ANSWER_OPEN) {
         return "Answer available";          return "Answer available";
     }      }
   
 }  }
   
 # I want to change this into something more human-friendly. For  # I want to change this into something more human-friendly. For
Line 2024  B<Date Codes> Line 2027  B<Date Codes>
   
 =item * B<OPEN>: Open and not yet due.  =item * B<OPEN>: Open and not yet due.
   
 =item * B<PAST_DUE>: The due date has passed, but the answer date has not yet arrived.  =item * B<PAST_DUE_ANSWER_LATER>: The due date has passed, but the answer date has not yet arrived.
   
   =item * B<PAST_DUE_NO_ANSWER>: The due date has passed and there is no answer opening date set.
   
 =item * B<ANSWER_OPEN>: The answer date is here.  =item * B<ANSWER_OPEN>: The answer date is here.
   
Line 2035  B<Date Codes> Line 2040  B<Date Codes>
 =cut  =cut
   
 # Apparently the compiler optimizes these into constants automatically  # Apparently the compiler optimizes these into constants automatically
 sub OPEN_LATER      { return 0; }  sub OPEN_LATER             { return 0; }
 sub OPEN            { return 1; }  sub OPEN                   { return 1; }
 sub PAST_DUE        { return 2; }  sub PAST_DUE_NO_ANSWER     { return 2; }
 sub ANSWER_OPEN     { return 3; }  sub PAST_DUE_ANSWER_LATER  { return 3; }
 sub NOTHING_SET     { return 4; }   sub ANSWER_OPEN            { return 4; }
 sub NETWORK_FAILURE { return 100; }  sub NOTHING_SET            { return 5; } 
   sub NETWORK_FAILURE        { return 100; }
   
   # getDateStatus gets the date status for a given problem part. 
   # Because answer date, due date, and open date are fully independent
   # (i.e., it is perfectly possible to *only* have an answer date), 
   # we have to completely cover the 3x3 maxtrix of (answer, due, open) x
   # (past, future, none given). This function handles this with a decision
   # tree. Read the comments to follow the decision tree.
   
 sub getDateStatus {  sub getDateStatus {
     my $self = shift;      my $self = shift;
     my $part = shift;      my $part = shift;
     $part = "0" if (!defined($part));      $part = "0" if (!defined($part));
   
       # Always return network failure if there was one.
     return $self->NETWORK_FAILURE if ($self->{NAV_MAP}->{NETWORK_FAILURE});      return $self->NETWORK_FAILURE if ($self->{NAV_MAP}->{NETWORK_FAILURE});
   
     my $now = time();      my $now = time();
Line 2054  sub getDateStatus { Line 2069  sub getDateStatus {
     my $due = $self->duedate($part);      my $due = $self->duedate($part);
     my $answer = $self->answerdate($part);      my $answer = $self->answerdate($part);
   
     if ($open && $now < $open) {return $self->OPEN_LATER};  
     if ($due && $now < $due) {return $self->OPEN};  
     if ($answer && $now < $answer) {return $self->PAST_DUE};  
     if (!$open && !$due && !$answer) {      if (!$open && !$due && !$answer) {
         # no data on the problem at all          # no data on the problem at all
         # should this be the same as "open later"? think multipart.          # should this be the same as "open later"? think multipart.
         return $self->NOTHING_SET;          return $self->NOTHING_SET;
     }      }
     return $self->ANSWER_OPEN;      if (!$open || $now < $open) {return $self->OPEN_LATER};
       if (!$due || $now < $due) {return $self->OPEN};
       if ($answer && $now < $answer) {return $self->PAST_DUE_ANSWER_LATER};
       if ($answer) { return $self->ANSWER_OPEN; };
       return PAST_DUE_NO_ANSWER;
 }  }
   
 =pod  =pod
Line 2140  Along with directly returning the date o Line 2156  Along with directly returning the date o
   
 =item * EXCUSED: For any reason at all, the problem is excused.  =item * EXCUSED: For any reason at all, the problem is excused.
   
 =item * PAST_DUE: The problem is past due, and not considered correct.  =item * PAST_DUE_NO_ANSWER: The problem is past due, not considered correct, and no answer date is set.
   
   =item * PAST_DUE_ANSWER_LATER: The problem is past due, not considered correct, and an answer date in the future is set.
   
 =item * ANSWER_OPEN: The problem is past due, not correct, and the answer is now available.  =item * ANSWER_OPEN: The problem is past due, not correct, and the answer is now available.
   
Line 2167  sub status { Line 2185  sub status {
   
     # What we have is a two-dimensional matrix with 4 entries on one      # What we have is a two-dimensional matrix with 4 entries on one
     # dimension and 5 entries on the other, which we want to colorize,      # dimension and 5 entries on the other, which we want to colorize,
     # plus network failure and "no date data".      # plus network failure and "no date data at all".
   
     if ($completionStatus == NETWORK_FAILURE) { return NETWORK_FAILURE; }      if ($completionStatus == NETWORK_FAILURE) { return NETWORK_FAILURE; }
   
Line 2189  sub status { Line 2207  sub status {
     # Now we're down to a 3 (incorrect, incorrect_override, not_attempted)      # Now we're down to a 3 (incorrect, incorrect_override, not_attempted)
     # by 4 matrix (date status).      # by 4 matrix (date status).
   
     if ($dateStatus == PAST_DUE) {      if ($dateStatus == PAST_DUE_ANSWER_LATER ||
         return PAST_DUE;           $dateStatus == PAST_DUE_NO_ANSWER) {
           return $dateStatus; 
     }      }
   
     if ($dateStatus == ANSWER_OPEN) {      if ($dateStatus == ANSWER_OPEN) {

Removed from v.1.53  
changed lines
  Added in v.1.54


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