Subversion Repositories wimsdev

Rev

Rev 14139 | 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
 
14135 obado 111
  ## correspondance avec les scores affichés dans WIMS :
112
  # score -> I0
113
  # best  -> I1
114
  # level -> I2
115
  # mean  -> Q
9676 obado 116
 
14135 obado 117
  got_detail = !getscore user=$quser class=$qclass sheet=$qsheet
118
  best_detail = !getscorebest  user=$quser class=$qclass sheet=$qsheet
11380 obado 119
  level_detail = !getscorelevel user=$quser class=$qclass sheet=$qsheet
14135 obado 120
  mean_detail = !getscoremean user=$quser class=$qclass sheet=$qsheet
9896 obado 121
 
14135 obado 122
  remain = !getscoreremain user=$quser class=$qclass sheet=$qsheet
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
 
14138 obado 126
  !for v in got_detail, mean_detail, remain, best_detail, level_detail, last_detail, try_detail
11380 obado 127
      $v=!trim $($v)
128
    !if $v != $empty
129
        $v=!wordstoitems $($v)
130
      $v=[$($v)]
131
    !else
132
      $v=""
133
    !endif
134
  !next v
9896 obado 135
 
14135 obado 136
  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":$got_detail, "mean_detail":$mean_detail, "remain":$remain, "best_detail":$best_detail, "level_detail":$level_detail, "last_detail":$last_detail, "try_detail":$try_detail
9676 obado 137
 
11380 obado 138
  # Pour des raisons de performance (wims interdit des variables trop gourmandes), on enregistre maintenant les donnees dans un fichier, toutes les 50 lignes
139
  data_scores = !append line $new_line to $data_scores
140
  !ifval  $u % 50 = 0
141
    !appendfile wimshome/sessions/$wims_session/data.scores $data_scores
142
    data_scores = $empty
143
  !endif
4609 obado 144
!next u
145
 
5967 obado 146
!appendfile wimshome/sessions/$wims_session/data.scores $data_scores
4626 obado 147
 
4609 obado 148
sheet_mean_quality=$[$sheet_mean_quality/$usercnt]
149
sheet_mean_percent=$[$sheet_mean_percent/$usercnt]
150
 
14134 obado 151
requires = !record 0 of wimshome/log/classes/$qclass/sheets/.require
152
requires = !line $qsheet of $requires
4609 obado 153
 
154
score_status=!getscorestatus class=$qclass
155
 
14135 obado 156
severity=!record 0 of wimshome/log/classes/$qclass/sheets/.severity
14139 obado 157
scoremax=!line 1 of $severity
14140 obado 158
!default scoremax=10
159
 
14139 obado 160
severity=!line $qsheet+1 of $severity
161
!distribute words $severity into weight,formulaA,formulaB
14135 obado 162
df_severity=!defof DF_SEVERITY in wimshome/public_html/bases/sys/define.conf
163
!distribute word $df_severity into t1,t2,t3
14139 obado 164
!default weight = $t1
14135 obado 165
!default formulaA = $t2
166
!default formulaB = $t3
167
!set formula_list=!record 0 of adm/class/sheetformula
14139 obado 168
formulaA=!item $formulaA+1 of $formula_list
4609 obado 169
 
170
weights = !record 0 of wimshome/log/classes/$qclass/sheets/.weight
5967 obado 171
weights = !line $qsheet of $weights