Subversion Repositories wimsdev

Rev

Rev 9389 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 9389 Rev 9405
Line 19... Line 19...
19
my $FILE = $_;
19
my $FILE = $_;
20
 
20
 
21
my $SH0=$SH;
21
my $SH0=$SH;
22
$SH =~ s/,/|/g;
22
$SH =~ s/,/|/g;
23
my (%lastdate, %score, %duree, $dattime);
23
my (%lastdate, %score, %duree, $dattime);
24
my (%exobyday,%scorebyday, %goodbyday)=((),(),());
24
my (%exobyday,%scorebyday, %goodbyday,%newbyday)=((),(),());
25
my (%exobyday1, %scorebyday1, %goodbyday1)=((),(),());
25
my (%exobydayex, %scorebydayex, %goodbydayex,%newbydayex)=((),(),(),());
26
my (%exobydaysh, %scorebydaysh, %goodbydaysh)=((),(),());
26
my (%exobydaysh, %scorebydaysh, %goodbydaysh,%newbydaysh)=((),(),(),());
27
my %seconds=();
27
my (%seconds)=();
28
for my $sh (1..$SHEET) {
28
for my $sh (1..$SHEET) {
29
   $lastdate{$sh}='';
29
   $lastdate{$sh}='';
30
   $score{$sh} = 0;
30
   $score{$sh} = 0;
31
}
31
}
32
my ($session,$nbsessions)=(' ',0);
32
my ($session,$nbsessions,$nbnew)=(' ',0,0);
33
  #le fichier est récupéré ordonné par dates croissantes
33
  #le fichier est récupéré ordonné par dates croissantes
34
open(IN, $FILE);
34
open(IN, $FILE);
35
while(<IN>){
35
while(<IN>){
36
 #extraction de l'info de la ligne
36
 #extraction de l'info de la ligne
37
 #20070914.23:52:03 6BA720BDC3  1  1 score 10   82.238.218.220
37
 #20070914.23:52:03 6BA720BDC3  1  1 score 10   82.238.218.220
38
 #next si ligne d'examen
38
 #next si ligne d'examen
39
 next if (/^E/);
39
 next if (/^E/);
40
 @_ = split(/ +/);
40
 @_ = split(/ +/);
41
 $dattime=$_[0];
41
 $dattime=$_[0];
42
 if ($_[4] eq 'score' || (!$lastdate{$_[2]}) ) {
42
 if ($_[4] eq 'score' || $_[4] =~ /new|resume/ || (!$lastdate{$_[2]}) ) {
43
  if (!($session eq $_[1])){ $nbsessions ++; $session=$_[1]; };
43
  if (!($session eq $_[1])){ $nbsessions ++; $session=$_[1]; };
44
  $dattime=~/([0-9]+)\.([0-9:]+)/;
44
  $dattime=~/([0-9]+)\.([0-9:]+)/;
45
  my ($date, $time) = ($1,$2);
45
  my ($date, $time) = ($1,$2);
46
  $date =~/([0-9][0-9][0-9][0-9])([0-9][0-9])([0-9][0-9])/;
46
  $date =~/([0-9][0-9][0-9][0-9])([0-9][0-9])([0-9][0-9])/;
-
 
47
  if ($_[4] =~ /new|resume/) {
-
 
48
    $nbnew ++;
-
 
49
    if (($_[2]=~ /\b($SH)\b/ || !($SH))) { $newbydaysh{$_[2]}->{$date} ++ ; $newbyday{$date} ++}
-
 
50
## n'a de sens que s'il y a une seule sheet
-
 
51
    if ($_[2]=~ /\b$SH0\b/){ $newbydayex{$_[3]}->{$date} ++;}
-
 
52
  next};
47
  $seconds{$date}=timelocal(0,0,0,$3,$2-1,$1);
53
  $seconds{$date}=timelocal(0,0,0,$3,$2-1,$1);
48
  if (($_[2]=~ /\b($SH)\b/ || !($SH)) && ($_[4] eq 'score')) {
54
  if (($_[2]=~ /\b($SH)\b/ || !($SH)) && ($_[4] eq 'score')) {
49
    $exobyday{$date} ++ ;
55
    $exobyday{$date} ++ ;
-
 
56
    $nbnew --;
50
    $exobydaysh{$_[2]}->{$date} ++ ;
57
    $exobydaysh{$_[2]}->{$date} ++ ;
51
    if ($_[5] >= $LIMIT){
58
    if ($_[5] >= $LIMIT){
52
      $scorebyday{$date} ++ ;
59
      $scorebyday{$date} ++ ;
53
      $goodbyday{$date} .= (($goodbyday{$date})? ',':'') . $exobyday{$date};
60
      $goodbyday{$date} .= (($goodbyday{$date})? ',':'') . $exobyday{$date};
54
      $scorebydaysh{$_[2]}->{$date} ++;
61
      $scorebydaysh{$_[2]}->{$date} ++;
55
      $goodbydaysh{$_[2]}->{$date} .= (($goodbydaysh{$_[2]}{$date})? ',':'') . $exobydaysh{$_[2]}->{$date};
62
      $goodbydaysh{$_[2]}->{$date} .= (($goodbydaysh{$_[2]}{$date})? ',':'') . $exobydaysh{$_[2]}->{$date};
56
    }
63
    }
57
## n'a de sens que s'il y a une seule sheet
64
## n'a de sens que s'il y a une seule sheet
58
    if ($_[2]=~ /\b$SH0\b/){
65
    if ($_[2]=~ /\b$SH0\b/){
59
      $exobyday1{$_[3]}->{$date} ++;
66
      $exobydayex{$_[3]}->{$date} ++;
60
      if ($_[5] >= $LIMIT){
67
      if ($_[5] >= $LIMIT){
61
        $scorebyday1{$_[3]}->{$date} ++;
68
        $scorebydayex{$_[3]}->{$date} ++;
62
        $goodbyday1{$_[3]}->{$date} .= (($goodbyday1{$_[3]}{$date})? ',':'') . $exobyday1{$_[3]}->{$date};
69
        $goodbydayex{$_[3]}->{$date} .= (($goodbydayex{$_[3]}{$date})? ',':'') . $exobydayex{$_[3]}->{$date};
63
      }
70
      }
64
    }
71
    }
65
  }
72
  }
66
  my ($annee, $mois, $jour)=($1,$2,$3);
73
  my ($annee, $mois, $jour)=($1,$2,$3);
67
  $date=converttime($time,$date);
74
  $date=converttime($time,$date);
68
 
75
 
69
  if(!$lastdate{$_[2]} && $_[4] eq 'new'){#on initialise s'il n'avait jamais fait cette feuille :
76
  if(!$lastdate{$_[2]} && $_[4] eq 'new'){#on initialise s'il n'avait jamais fait cette feuille :
70
      $lastdate{$_[2]}=$date;
77
      $lastdate{$_[2]}=$date;
71
      $duree{$_[2]}= 0;
78
      $duree{$_[2]}= 0;
72
      next;
79
      next;
73
   } else {
80
   } else {
Line 86... Line 93...
86
my ($text,$score_global,$duree_globale,$nombresessions_globale)= (' ',0,0,0);
93
my ($text,$score_global,$duree_globale,$nombresessions_globale)= (' ',0,0,0);
87
for my $sh (1..$SHEET) {
94
for my $sh (1..$SHEET) {
88
 $text .= $score{$sh} . ',' . converttime2($duree{$sh}) . ',';
95
 $text .= $score{$sh} . ',' . converttime2($duree{$sh}) . ',';
89
 $score_global += $score{$sh}; if ($duree{$sh}) { $duree_globale += $duree{$sh}};
96
 $score_global += $score{$sh}; if ($duree{$sh}) { $duree_globale += $duree{$sh}};
90
}
97
}
91
#dernière connexion,nb_sessions,nb exos abordés total, nb exos par feuille, temps par feuille
98
#dernière connexion,nb_sessions,nb exos abordés total, nb exos par feuille, temps par feuille,nb exos non aboutis
92
exit if !($dattime);
99
exit if !($dattime);
93
 
100
 
94
print $dattime . ',' . $nbsessions  . ',' . $score_global . ','
101
print $dattime . ',' . $nbsessions  . ',' . $score_global . ','
95
   . converttime2($duree_globale) . ',' . $text;
102
   . converttime2($duree_globale) . ',' . $text . $nbnew;
96
 
103
 
97
if ($OPTION eq 'exobyday'){
104
if ($OPTION eq 'exobyday'){
98
for my $date (sort keys %exobyday ) {
105
 for my $date (sort keys %exobyday ) {
99
   if (!$exobyday{$date}) {$exobyday{$date}=0;}
106
   if (!$exobyday{$date}) {$exobyday{$date}=0;}
100
   if (!$scorebyday{$date}) {$scorebyday{$date}=0;}
107
   if (!$scorebyday{$date}) {$scorebyday{$date}=0;}
101
   if (!$goodbyday{$date}) {$goodbyday{$date}='';}
108
   if (!$goodbyday{$date}) {$goodbyday{$date}='';}
-
 
109
   if (!$newbyday{$date}) {$newbyday{$date}=0;} else {$newbyday{$date} -=$exobyday{$date}}
102
}
110
 }
103
 
111
 
104
my ($xcoord, $ycoord, $zcoord, $good, $tmp, $day, $init, $t, $wday)=('','','','','','','','') ;
112
 my ($xcoord, $ycoord, $zcoord, $good, $tmp, $day, $init, $t, $wday, $new)=('','','','','','','','','','') ;
105
for my $date ( sort keys %exobyday ) {
113
 for my $date ( sort keys %exobyday ) {
106
  if ($xcoord) {$tmp=',' ;} else {
114
  if ($xcoord) {$tmp=',' ;} else {
107
   $init=$seconds{$date} ;
115
   $init=$seconds{$date} ;
108
   my @wday = localtime($date); $wday=$wday[6]}
116
   my @wday = localtime($date); $wday=$wday[6]}
109
  $xcoord .= "$tmp$date";
117
  $xcoord .= $tmp . $date;
110
  $t = ($seconds{$date}-$init) % 86400; $t=$wday+($seconds{$date}-$init-$t)/ 86400;
118
  $t = ($seconds{$date}-$init) % 86400; $t=$wday+($seconds{$date}-$init-$t)/ 86400;
111
  $day .= $tmp . $t;
119
  $day .= $tmp . $t;
112
  $ycoord .= $tmp . $exobyday{$date};
120
  $ycoord .= $tmp . $exobyday{$date};
113
  $zcoord .= $tmp . $scorebyday{$date};
121
  $zcoord .= $tmp . $scorebyday{$date};
114
  $good .= "$tmp" . '[' . $goodbyday{$date} .']';
122
  $good .= $tmp . '[' . $goodbyday{$date} .']';
-
 
123
  $new .= $tmp . $newbyday{$date}
115
}
124
}
116
###liste de dates, liste du nombre d'exos faits à cette date, liste des nombres de reussite,
125
###liste de dates, liste du nombre d'exos faits à cette date, liste des nombres de reussite,
117
###liste des listes de positions des reussites
126
###liste des listes de positions des reussites
118
 
127
 
119
print "\n[$xcoord],[$day],[$ycoord],[$zcoord],[$good]";
128
print "\n[$xcoord],[$day],[$ycoord],[$zcoord],[$good],[$new]";
120
 
129
 
121
if (!($SH0=~ /,/)) {
130
if (!($SH0=~ /,/)) {
122
 for my $ex (sort {$a <=> $b} keys %exobyday1){
131
 for my $ex (sort {$a <=> $b} keys %exobydayex){
123
   my ($xcoord,$ycoord,$zcoord,$good,$tmp)=('','','','','');
132
   my ($xcoord,$ycoord,$zcoord,$good,$tmp,$new)=('','','','','','');
124
   for my $date ( sort keys %exobyday ) {
133
   for my $date ( sort keys %exobyday ) {
125
      if (!$exobyday1{$ex}->{$date}) { $exobyday1{$ex}->{$date}=0;}
134
      if (!$exobydayex{$ex}->{$date}) { $exobydayex{$ex}->{$date}=0;}
126
      if (!$scorebyday1{$ex}->{$date}) {$scorebyday1{$ex}->{$date} = 0;}
135
      if (!$scorebydayex{$ex}->{$date}) {$scorebydayex{$ex}->{$date} = 0;}
127
      if (!$goodbyday1{$ex}->{$date}) { $goodbyday1{$ex}->{$date}='';}
136
      if (!$goodbydayex{$ex}->{$date}) { $goodbydayex{$ex}->{$date}='';}
-
 
137
      if (!$newbydayex{$ex}->{$date}) {$newbydayex{$ex}->{$date}=0;} else { $newbydayex{$ex}->{$date} -=$exobydayex{$ex}->{$date} }
128
      if ($xcoord) {$tmp=',' };
138
      if ($xcoord) {$tmp=',' };
129
      $xcoord .= "$tmp$date";
139
      $xcoord .= $tmp . $date;
130
      $ycoord .= $tmp . $exobyday1{$ex}->{$date};
140
      $ycoord .= $tmp . $exobydayex{$ex}->{$date};
131
      $zcoord .= $tmp . $scorebyday1{$ex}->{$date};
141
      $zcoord .= $tmp . $scorebydayex{$ex}->{$date};
132
      $good .= $tmp . '[' . $goodbyday1{$ex}->{$date} . ']';
142
      $good .= $tmp . '[' . $goodbydayex{$ex}->{$date} . ']';
-
 
143
      $new .= $tmp . $newbydayex{$ex}->{$date};
133
 }
144
 }
134
###pour les exercices d'une feuille
145
###pour les exercices d'une feuille
135
###numero exo, liste de dates, liste du nombre d'exos faits à cette date, liste des nombres de reussite,
146
###numero exo, liste de dates, liste du nombre d'exos faits à cette date, liste des nombres de reussite,
136
###liste des listes de positions des reussites
147
###liste des listes de positions des reussites
137
   print "\n$ex,[$xcoord],[$ycoord],[$zcoord],[$good]";
148
   print "\n$ex,[$xcoord],[$ycoord],[$zcoord],[$good],[$new]";
138
  }
149
  }
139
 }
150
 }
140
 else {
151
 else {
141
  for my $sh (sort {$a <=> $b} keys %exobydaysh){
152
  for my $sh (sort {$a <=> $b} keys %exobydaysh){
142
    my ($xcoord,$ycoord,$zcoord,$good,$tmp)=('','','','','');
153
    my ($xcoord,$ycoord,$zcoord,$good,$tmp,$new)=('','','','','','');
143
    for my $date ( sort ( keys %exobyday) ) {
154
    for my $date ( sort ( keys %exobyday) ) {
144
      if ($xcoord) {$tmp=',' };
155
      if ($xcoord) {$tmp=',' };
145
      $xcoord .= "$tmp$date";
156
      $xcoord .= $tmp . $date;
146
      if (!$exobydaysh{$sh}->{$date}) { $exobydaysh{$sh}->{$date}=0;}
157
      if (!$exobydaysh{$sh}->{$date}) { $exobydaysh{$sh}->{$date}=0;}
147
      if (!$scorebydaysh{$sh}->{$date}) {$scorebydaysh{$sh}->{$date} = 0;}
158
      if (!$scorebydaysh{$sh}->{$date}) {$scorebydaysh{$sh}->{$date} = 0;}
148
      if (!$goodbydaysh{$sh}->{$date}) { $goodbydaysh{$sh}->{$date}='';}
159
      if (!$goodbydaysh{$sh}->{$date}) { $goodbydaysh{$sh}->{$date}='';}
-
 
160
      if (!$newbydaysh{$sh}->{$date}) { $newbydaysh{$sh}->{$date}=0;}
-
 
161
         else { $newbydaysh{$sh}->{$date} -=$exobydaysh{$sh}->{$date} }
149
      $ycoord .= $tmp . $exobydaysh{$sh}->{$date};
162
      $ycoord .= $tmp . $exobydaysh{$sh}->{$date};
150
      $zcoord .= $tmp . $scorebydaysh{$sh}->{$date};
163
      $zcoord .= $tmp . $scorebydaysh{$sh}->{$date};
151
      $good .= $tmp . '[' . $goodbydaysh{$sh}->{$date} . ']';
164
      $good .= $tmp . '[' . $goodbydaysh{$sh}->{$date} . ']';
-
 
165
      $new .= $tmp . $newbydaysh{$sh}->{$date};
152
   }
166
   }
153
###pour les feuilles d'une liste de feuilles
167
###pour les feuilles d'une liste de feuilles
154
###numero feuille, liste de dates, liste du nombre d'exos faits à cette date, liste des nombres de reussite,
168
###numero feuille, liste de dates, liste du nombre d'exos faits à cette date, liste des nombres de reussite,
155
###liste des listes de positions des reussites
169
###liste des listes de positions des reussites
156
   print "\n$sh,[$xcoord],[$ycoord],[$zcoord],[$good]";
170
   print "\n$sh,[$xcoord],[$ycoord],[$zcoord],[$good],[$new]";
157
  }
171
  }
158
 }
172
 }
159
}
173
}
160
sub converttime {
174
sub converttime {
161
    my $heure=shift;
175
    my $heure=shift;