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 ( |
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) |
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 |
|
66 | $exobydayex{$_[3]}->{$date} ++; |
60 | if ($_[5] >= $LIMIT){ |
67 | if ($_[5] >= $LIMIT){ |
61 |
|
68 | $scorebydayex{$_[3]}->{$date} ++; |
62 |
|
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 |
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 .= |
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 .= |
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 |
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 (! |
134 | if (!$exobydayex{$ex}->{$date}) { $exobydayex{$ex}->{$date}=0;} |
126 | if (! |
135 | if (!$scorebydayex{$ex}->{$date}) {$scorebydayex{$ex}->{$date} = 0;} |
127 | if (! |
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 .= |
139 | $xcoord .= $tmp . $date; |
130 | $ycoord .= $tmp . |
140 | $ycoord .= $tmp . $exobydayex{$ex}->{$date}; |
131 | $zcoord .= $tmp . |
141 | $zcoord .= $tmp . $scorebydayex{$ex}->{$date}; |
132 | $good .= $tmp . '[' . |
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 .= |
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; |