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 |