Subversion Repositories wimsdev

Rev

Rev 11661 | Blame | Compare with Previous | Last modification | View Log | RSS feed

# GetSheetStats
# Donne des statistiques sur le travail des participants pour chaque exo de la feuille $qsheet

#Pour commencer, on verifie la classe
!read scripts/check.class
!if $error!=$empty
 !exit
!endif

#puis la feuille
type=sheets
!read scripts/check.proc
!if $error!=$empty
  !exit
!endif

sheet_properties=!lines2items $qproperties\

sheet_status=!item 1 of $sheet_properties
!if $sheet_status<1 or $sheet_status>2
  error=Sheet #$qsheet must be active
  !exit
!endif

# S'il n'y a aucun utilisateur, inutile de continuer
usercnt=!recordcnt  wimshome/log/classes/$qclass/.userlist
!if $usercnt=0
  error=There is no user in this class
  !exit
!endif

sheet_mean_quality = 0
sheet_mean_percent = 0
sheet_max_percent  = 0
sheet_max_quality  = 0

!for u=1 to $usercnt
  l=!record $u of wimshome/log/classes/$qclass/.userlist
  quser=!item 3 of $l
  !defread $users_dir/$quser

  # getscorepercent fournit le pourcentage de realisation et la qualite obtenus sur la feuille
  # attention : getscorepercent peut ne rien renvoyer si unes des feuilles précédent $qsheet n'a jamais été activée.
  sheet_summaries=!getscorepercent user=$quser class=$qclass sheet=$qsheet
  user_percent=!word 1 of $sheet_summaries
  user_quality=!word 2 of $sheet_summaries

  !default user_percent=0
  !default user_quality=0

  # On calcule les notes maximums
  !if $user_percent>$sheet_max_percent
    sheet_max_percent=$user_percent
  !endif
  !if $user_quality>$sheet_max_quality
    sheet_max_quality=$user_quality
  !endif

  # notes détaillées par exercice
  # getscore :
  gotdetail=!getscore user=$quser class=$qclass sheet=$qsheet
  # getscoremean : obtient le détail des notes de qualité par exercice
  qualitydetail=!getscoremean user=$quser class=$qclass sheet=$qsheet

  !for v in gotdetail, qualitydetail
    $v=!trim $($v)
    $v=!wordstoitems $($v)
  !next v

  nb_exos = 0
  !if $u=1
    # au premier utilisateur, on initialise le total des notes par exercice :
    sheetqualitydetail = $qualitydetail
    sheetgotdetail = $gotdetail
    sheet_mean_quality = $user_quality
    sheet_mean_percent = $user_percent
    nb_exos = !itemcnt $gotdetail
  !else
    total_temp = $empty
    quality_temp = $empty

    !for note in $gotdetail
      !advance nb_exos
      old_note = !item $nb_exos of $sheetgotdetail
      new_note = $[$old_note + $note]
      total_temp=!append item $new_note to $total_temp

      old_mean = !item $nb_exos of $sheetqualitydetail
      new_mean = !item $nb_exos of $qualitydetail
      new_mean = $[$new_mean + $old_mean]
      quality_temp= !append item $new_mean to $quality_temp 
    !next note

    sheetgotdetail = $total_temp
    sheetqualitydetail = $quality_temp
    sheet_mean_quality = $[$sheet_mean_quality + $user_quality]
    sheet_mean_percent = $[$sheet_mean_percent + $user_percent]
  !endif

!next u

total_temp = $empty
quality_temp = $empty
!for i=1 to $nb_exos
  old_note = !item $i of $sheetgotdetail
  new_note = $[$old_note / $usercnt]
  total_temp=!append item $new_note to $total_temp

  old_quality = !item $i of $sheetqualitydetail
  new_quality = $[$old_quality / $usercnt]
  quality_temp= !append item $new_quality to $quality_temp
!next i

sheetgotdetail = $total_temp
sheetqualitydetail = $quality_temp

sheet_mean_quality=$[$sheet_mean_quality/$usercnt]
sheet_mean_percent=$[$sheet_mean_percent/$usercnt]

scoremax=!record 0 of wimshome/log/classes/$qclass/sheets/.severity
scoremax=!word 1 of $scoremax
!default scoremax = 10

weights  = !getscoreweight class=$qclass sheet=$qsheet user=$quser
requires = !getscorerequire class=$qclass sheet=$qsheet user=$quser