diff --git a/CODE/cgi-bin/sefran3.pl b/CODE/cgi-bin/sefran3.pl
index fa870492..c5e5deb0 100755
--- a/CODE/cgi-bin/sefran3.pl
+++ b/CODE/cgi-bin/sefran3.pl
@@ -188,12 +188,21 @@ =head1 Query string parameters
($yref,$mref,$dref) = split('/',strftime('%Y/%m/%d',gmtime(timegm(0,0,0,1,$mref-1,$yref-1900) + $day0*86400)));
$limit = 24 if ($limit < 24);
}
+# builds the list of dates and loads associated MC events over the period (+ 1 day)
my @dates;
-for (0 .. ($SEFRAN3{DISPLAY_DAYS}-1)) {
- push(@dates,strftime('%Y-%m-%d',gmtime(timegm(0,0,0,$dref,$mref-1,$yref-1900) - $_*86400)));
+my @mclist;
+for (0 .. $SEFRAN3{DISPLAY_DAYS}) {
+ my $ymd = strftime('%Y-%m-%d',gmtime(timegm(0,0,0,$dref,$mref-1,$yref-1900) - $_*86400));
+ push(@dates,$ymd) if ($_ < $SEFRAN3{DISPLAY_DAYS});
+ my $f = "$MC3{ROOT}/".substr($ymd,0,4)."/$MC3{PATH_FILES}/$MC3{FILE_PREFIX}".substr($ymd,0,4).substr($ymd,5,2).".txt";
+ if (-f $f) {
+ my @mcday = split(/\n/,qx(awk -F'|' '\$2=="$ymd" {printf "\%s\\n",\$0}' $f));
+ push(@mclist,@mcday);
+ }
}
my @listeHeures = reverse('00'..'23');
+
# ---- some display setups
#
my $largeur_vignette = $SEFRAN3{HOURLY_WIDTH}+1;
@@ -438,14 +447,14 @@ =head1 Query string parameters
print "
no image";
}
- # recupere les evenements dans la MC
- $f = "$MC3{ROOT}/$da/$MC3{PATH_FILES}/$MC3{FILE_PREFIX}$da$dm.txt";
- if (-f $f) {
- my @mc_liste = split(/\n/,qx(awk -F'|' '{ d=1;if(\$7=="mn") d=60;if(\$7=="h") d=3600;if(\$7=="d") d=86400;} \$2=="$dd" && (substr(\$3,1,2)=="$hh" || (substr(\$3,1,2)<$hh && substr(\$3,1,2)+substr(\$3,3,2)/60+(substr(\$3,5,2)+\$6*d)/3600 >= $hh)) {printf "\%s\\n",\$0}' $f));
- #my @mc_liste = split(/\n/,qx(awk -F'|' '\$2 == "$dd" && substr(\$3,1,2) == "$hh" {printf "\%s\\n",\$0}' $f));
- for (reverse @mc_liste) {
- my %MC = mcinfo($_);
- if (($MC{id} > 0 || ($userLevel >= 2 && $trash == 1)) && $userLevel >= 1) {
+ # plots MC events over sefran
+ for (reverse @mclist) {
+ my %MC = mcinfo($_);
+ if (($MC{id} > 0 || ($userLevel >= 2 && $trash == 1)) && $userLevel >= 1) {
+ # event start and end expressed in days
+ my $d0 = $MC{year}*10000 + $MC{month}*100 + $MC{day} + $MC{hour}/24 + $MC{minute}/1440 + $MC{second}/86400;
+ my $d1 = $d0 + $MC{duration}*$duration_s{$MC{unit}}/86400;
+ if ($d0 < $ddd + ($hh+1)/24 && $d1 >= $ddd + $hh/24) {
# event start and duration expressed in hour
my $h0 = $MC{minute}/60 + $MC{second}/3600;
my $dh = $MC{duration}*$duration_s{$MC{unit}}/3600;
|