Subversion Repositories wimsdev

Rev

Rev 14133 | Rev 14135 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
4609 obado 1
# GetSheetScores
2
# Donne les notes de l'ensemble des utilisateurs pour la feuille $qsheet
3
 
11380 obado 4
# Pour commencer, on verifie la classe
4609 obado 5
!read scripts/check.class
6
!if $error!=$empty
11380 obado 7
  !exit
4609 obado 8
!endif
9
 
11380 obado 10
# Puis la feuille
4609 obado 11
type=sheets
12
!read scripts/check.proc
13
!if $error!=$empty
11380 obado 14
  !exit
4609 obado 15
!endif
16
 
17
sheet_properties=!lines2items $qproperties\
18
 
19
sheet_status=!item 1 of $sheet_properties
20
!if $sheet_status<1 or $sheet_status>2
11380 obado 21
  error=Sheet #$qsheet must be active
22
  !exit
4609 obado 23
!endif
24
 
25
nbsheets=!recordcnt wimshome/log/classes/$qclass/sheets/.sheets
26
 
27
active_index=0
28
nb_active=0
29
 
30
!for i=1 to $nbsheets
11380 obado 31
  sheet_properties=!record $i of wimshome/log/classes/$qclass/sheets/.sheets
32
  status=!line 1 of $sheet_properties
4609 obado 33
 
11380 obado 34
  !if $status>=1 and $status<=2
35
    !advance nb_active
36
  !endif
9676 obado 37
 
11380 obado 38
  !if $qsheet=$i
39
    active_index=$nb_active
40
  !endif
4609 obado 41
!next i
42
 
43
class_superclass=!defof class_superclass in $classdeffile
9621 obado 44
# Un utilisateur est toujours stocké dans la superclasse, pas dans la sous-classe.
4609 obado 45
!if $class_superclass != $empty
11380 obado 46
  users_dir = wimshome/log/classes/$class_superclass/.users
4609 obado 47
!else
11380 obado 48
  users_dir = wimshome/log/classes/$qclass/.users
4609 obado 49
!endif
50
 
4626 obado 51
!read adm/class/mkuserlist $qclass
4609 obado 52
 
4626 obado 53
usercnt=!recordcnt  wimshome/log/classes/$qclass/.userlist
54
!if $usercnt=0
5967 obado 55
  error=There is no user in this class
4626 obado 56
  !exit
57
!endif
58
 
4609 obado 59
!default option=login,name,allscores
60
 
61
option=!singlespace $option
62
option=!lower $dl
63
 
64
sheet_mean_quality=0
65
sheet_mean_percent=0
4626 obado 66
sheet_max_percent =0
67
sheet_max_quality =0
4609 obado 68
 
5967 obado 69
!writefile wimshome/sessions/$wims_session/data.scores \
70
 
4609 obado 71
!for u=1 to $usercnt
11380 obado 72
  l=!record $u of wimshome/log/classes/$qclass/.userlist
73
  quser=!item 3 of $l
74
  lastname=!item 1 of $l
75
  firstname=!item 2 of $l
76
  !defread $users_dir/$quser
4609 obado 77
 
11380 obado 78
  #getscorepercent fournit les donnes globales de la feuille : pourcentage de realisation et qualite
79
  sheet_summaries=!getscorepercent user=$quser class=$qclass
80
  sheet_summaries=!line $qsheet of $sheet_summaries
9899 obado 81
 
11380 obado 82
  #user_percent  pourcentage des points cumulés
83
  #   (en abrégé "cumul" : valeur sur 100 qui correspond à 100*I0 dans les formules données dans l'aide de wims)
84
  user_percent=!word 1 of $sheet_summaries
9899 obado 85
 
11380 obado 86
  #user_quality  qualité (valeur sur 10 correspond à 10*Q dans les formules)
87
  user_quality=!word 2 of $sheet_summaries
9899 obado 88
 
11380 obado 89
  #user_best     niveau de réussite (en abrégé "Réussite" :
90
  # valeur sur 100 qui correspond à 100*I1 dans les formules)
91
  user_best   =!word 3 of $sheet_summaries
9899 obado 92
 
11380 obado 93
  #user_level         niveau d'acquisition (en abrégé "Acquis" :
94
  # valeur sur 100 qui correspond à 100*I2 dans les formules)
95
  user_level  =!word 4 of $sheet_summaries
9899 obado 96
 
11380 obado 97
  sheet_mean_quality = $[$sheet_mean_quality + $user_quality]
98
  sheet_mean_percent = $[$sheet_mean_percent + $user_percent]
9676 obado 99
 
11380 obado 100
  !default user_percent=0
101
  !default user_quality=0
102
  !default user_best=0
103
  !default user_level=0
104
  !if $user_percent>$sheet_max_percent
105
    sheet_max_percent=$user_percent
106
  !endif
107
  !if $user_quality>$sheet_max_quality
108
    sheet_max_quality=$user_quality
109
  !endif
9676 obado 110
 
11380 obado 111
  gotdetail=!getscore user=$quser class=$qclass sheet=$qsheet
112
  #gotdetail=!line $active_index of $gotdetail
9676 obado 113
 
11380 obado 114
  meandetail=!getscoremean user=$quser class=$qclass sheet=$qsheet
115
  #meandetail=!line $active_index of $meandetail
9676 obado 116
 
11380 obado 117
  remain=!getscoreremain user=$quser class=$qclass sheet=$qsheet
118
  #remain=!line $active_index of $remain
5967 obado 119
 
11380 obado 120
  best_detail  = !getscorebest  user=$quser class=$qclass sheet=$qsheet
121
  level_detail = !getscorelevel user=$quser class=$qclass sheet=$qsheet
9896 obado 122
 
14133 obado 123
  last_detail = !getscorelast user=$quser class=$qclass sheet=$qsheet
14134 obado 124
  try_detail = !getscoretry user=$quser class=$qclass sheet=$qsheet
14133 obado 125
 
11380 obado 126
  ## correspondance avec les scores affichés dans WIMS :
127
  # score -> I0
128
  # best  -> I1
129
  # level -> I2
130
  # mean  -> Q
9896 obado 131
 
14134 obado 132
  !for v in gotdetail, meandetail, remain, best_detail, level_detail, last_detail, try_detail
11380 obado 133
      $v=!trim $($v)
134
    !if $v != $empty
135
        $v=!wordstoitems $($v)
136
      $v=[$($v)]
137
    !else
138
      $v=""
139
    !endif
140
  !next v
9896 obado 141
 
14134 obado 142
  new_line = :"id":"$quser", "first_name":"$firstname", "last_name":"$lastname", "user_percent":$user_percent, "user_quality":$user_quality, "user_level":$user_level, "user_best":$user_best, "got_detail":$gotdetail, "mean_detail":$meandetail, "remain":$remain, "best_detail":$best_detail, "level_detail":$level_detail, "last_detail":$last_detail, "try_detail":$try_detail
9676 obado 143
 
11380 obado 144
  # Pour des raisons de performance (wims interdit des variables trop gourmandes), on enregistre maintenant les donnees dans un fichier, toutes les 50 lignes
145
  data_scores = !append line $new_line to $data_scores
146
  !ifval  $u % 50 = 0
147
    !appendfile wimshome/sessions/$wims_session/data.scores $data_scores
148
    data_scores = $empty
149
  !endif
4609 obado 150
!next u
151
 
5967 obado 152
!appendfile wimshome/sessions/$wims_session/data.scores $data_scores
4626 obado 153
 
4609 obado 154
sheet_mean_quality=$[$sheet_mean_quality/$usercnt]
155
sheet_mean_percent=$[$sheet_mean_percent/$usercnt]
156
 
14134 obado 157
requires = !record 0 of wimshome/log/classes/$qclass/sheets/.require
158
requires = !line $qsheet of $requires
4609 obado 159
 
160
score_status=!getscorestatus class=$qclass
161
 
162
scoremax=!record 0 of wimshome/log/classes/$qclass/sheets/.severity
163
scoremax=!word 1 of $scoremax
164
!default scoremax = 10
165
 
166
weights = !record 0 of wimshome/log/classes/$qclass/sheets/.weight
5967 obado 167
weights = !line $qsheet of $weights