Rev 17145 | Rev 17150 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed
!! -------- check user
user=$wims_user
clsfile=wimshome/log/classes/$wims_class/swork/averagescore
Clsfile=$wims_home/log/classes/$wims_class/swork/averagescore
ufile=wimshome/log/classes/$wims_class/swork/averagescore.$user
Ufile=$wims_home/log/classes/$wims_class/swork/averagescore.$user
time1=!record 0 of $ufile
time1=!line 1 of $time1
!distribute word $time1 into time1,majdate,bl
!default time1=0
test=!fileexists $ufile
!if $test=yes and ($[$wims_nowseconds-$time1]<3600*$swork_refreshtiming or ($swork_allowrefresh=1 and $refresh!=1))
!exit
!endif
time2=!record 0 of $clsfile
time2=!word 1 of $time2
!default time2=0
!if $[$wims_nowseconds-$time2]<3600
userlist=$user
!else
!reset userlist
!for k=1 to $nbuser
d=!record $k of wimshome/log/classes/$wims_class/.userlist
userlist=!append item $(d[3]) to $userlist
!next k
!writefile $clsfile $wims_nowseconds $wims_now
time2=yes
!endif
time1=$wims_nowseconds
!writefile $ufile $wims_nowseconds $wims_now 100000
majdate=$wims_now
nbuser=!recordcnt wimshome/log/classes/$wims_class/.userlist
!for sh=1 to $nbsheet
dtsh=!record $sh of wimshome/log/classes/$wims_class/sheets/.sheets
stat=!line 1 of $dtsh
!if $stat!=0
nbexo=!recordcnt wimshome/log/classes/$wims_class/sheets/.sheet$sh
average=!values 0 for v=1 to $nbexo
max=$average
lsev=!line $[$sh+1] of $severity
!distribute word $lsev into swei,rule,indic
formula=!item $rule of $formulas
wei=!getscoreweight user=$user sheet=$sh
wei=!words2items $wei
totwei=!replace internal , by + in $wei
totwei=$[$totwei]
!reset useraverage
!for dtu in $userlist
lq=!getscoremean user=$dtu sheet=$sh
!if $indic=0
li=!getscore user=$dtu sheet=$sh
!else
!if $indic=1
li=!getscorebest user=$dtu sheet=$sh
!else
li=!getscorelevel user=$dtu sheet=$sh
!endif
!endif
!!calcul du score pour chaque exo
!reset lave lmax
!for k=1 to $nbexo
ewei=!word $k of $wei
elq=!word $k of $lq
eli=!word $k of $li
ave=!replace internal I by $[$eli/10] in $formula
ave=!replace internal Q by $[$elq/10] in $ave
ave=$[rint($ave*1000)]
!if $dtu=$user
useraverage=!append item $ave to $useraverage
!endif
lmax=!append item $[max($ave,$(max[$k]))] to $lmax
ave=$[$(ave)+$(average[$k])]
lave=!append item $ave to $lave
!next k
average=$lave
max=$lmax
!next dtu
!reset tmp tmp2
!if $time2!=yes
tmp=!record $sh of $clsfile
!endif
!for k=1 to $nbexo
!if $time2=yes
ave=$[rint($(average[$k])/$nbuser)]
m=$[rint($(max[$k]))]
tmp=!append line $sh $k $ave $m to $tmp
!else
ave=!line $k of $tmp
m=!word 4 of $ave
ave=!word 3 of $ave
!endif
!if $(wei[$k])!=0 and $swei!=0
val=$[rint($ave - $(useraverage[$k]))]
val=$[rint($val * $swei * $(wei[$k])/$totwei )]
!if $val<=0
val=-1000
!endif
!else
!if $swei!=0
val=$[-10000*$swei]
!else
val=-10000
!endif
!endif
m2=$[rint($m-$(useraverage[$k]))]
!appendfile $ufile :$sh $k $val $m2 $ave $m
!next k
!if $time2=yes
!appendfile $clsfile :$tmp
!endif
!else
!if $time2=yes
!appendfile $clsfile :
!endif
!endif
!next sh
!sh sort -n -r -k 3 -k 4 $Ufile > $wims_home/sessions/$wimss_session/tmp.swork;\
mv -f $wims_home/sessions/$wimss_session/tmp.swork $Ufile