Subversion Repositories wimsdev

Rev

Rev 17097 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed

!! -------- check user
user=$wims_user

test=!fileexists wimshome/log/classes/$wims_class/swork
!sh mkdir -p $wims_home/log/classes/$wims_class/swork
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
sev=!record 0 of wimshome/log/classes/$wims_class/sheets/.severity
time1=!record 0 of $ufile
!distribute word $time1 into time1,majdate,bl
!default time1=0
!if $[$wims_nowseconds-$time1]<3600
  !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
!writefile $ufile $wims_nowseconds $wims_now 100000
majdate=$wims_now
nbsheet=!recordcnt wimshome/log/classes/$wims_class/sheets/.sheets
nbuser=!recordcnt wimshome/log/classes/$wims_class/.userlist
!for sh=1 to $nbsheet
  dtsh=!record $k 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 $sev
    !distribute word $lsev into swei,rule,indic
    formula=!record 0 of adm/class/sheetformula
    formula=!item $rule of $formula
    wei=!getscoreweight user=$user sheet=$sh
    wei=!words2items $wei
    totwei=!replace internal , by + in $wei
    totwei=$[$totwei]
    !reset useraverage
    !for dtu in $userlist
      lq=!getscorequality user=$dtu sheet=$sh
      !if $indic=0
        li=!getscore user=$dtu sheet=$sh
      !else
        !if $indic=1
          li=!getscoremean 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 in $formula
        ave=!replace internal Q by $elq in $ave
        !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(100*$(average[$k])/$nbuser)]
        m=$[rint($(max[$k])*100)]
        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 - 100*$(useraverage[$k]))]
        !if $val<-200
          val=-1000
        !endif
        val=$[rint($val * $swei * $(wei[$k])/$totwei )]   
      !else
        !if $swei!=0
          val=$[-10000*$swei]
        !else
          val=-10000
        !endif
      !endif
      m=$[rint($m-100*$(useraverage[$k]))]
      !appendfile $ufile :$sh $k $val $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