On ramène le score dans l'intervalle [0; 100] pour avoir un vrai pourcentage.

darcs-hash:20071101114751-dc76e-916930a27788ecc5db1f869a5a902888833e0901.gz
This commit is contained in:
root 2007-11-01 12:47:51 +01:00
parent 72f506d45a
commit d7f62f09bc

View file

@ -6,6 +6,7 @@
class questionnaire: class questionnaire:
execute = 0 execute = 0
liste_questions = [] liste_questions = []
min_point = 0
max_point = 0 max_point = 0
fonction_affiche = True fonction_affiche = True
@ -32,12 +33,16 @@ def question_choix_unique(f,QR,quest):
""" % { "id" : quest.execute , "Q" : QR[0][1]}) """ % { "id" : quest.execute , "Q" : QR[0][1]})
QR=QR[1:] QR=QR[1:]
max = 0 max = 0
min = 0
for (point,rep) in QR: for (point,rep) in QR:
point = int_try(point) point = int_try(point)
if (max<point): if (max < point):
max = point max = point
if (min > point):
min = point
r+=f.rawHTML("""<input type="radio" name="radio%(id)i" onclick="ajoute(%(id)i,%(point)i)" > %(rep)s<br>\n"""% { "point" : point , "id" : quest.execute, "rep" : rep}) r+=f.rawHTML("""<input type="radio" name="radio%(id)i" onclick="ajoute(%(id)i,%(point)i)" > %(rep)s<br>\n"""% { "point" : point , "id" : quest.execute, "rep" : rep})
quest.max_point += max quest.max_point += max
quest.min_point += min
r += f.rawHTML("\n</p>\n") r += f.rawHTML("\n</p>\n")
return r return r
@ -48,7 +53,10 @@ def question_choix_multiple(f,QR,quest):
QR=QR[1:] QR=QR[1:]
for (point,rep) in QR: for (point,rep) in QR:
point = int_try(point) point = int_try(point)
if point > 0:
quest.max_point += point quest.max_point += point
else:
quest.min_point += point
r+=f.rawHTML("""<input type="checkbox" name="radio%(id)i" onclick="ajoute_multiple(%(point)i,this.checked)" > %(rep)s<br>\n"""% { "point" : point , "id" : quest.execute, "rep" : rep}) r+=f.rawHTML("""<input type="checkbox" name="radio%(id)i" onclick="ajoute_multiple(%(point)i,this.checked)" > %(rep)s<br>\n"""% { "point" : point , "id" : quest.execute, "rep" : rep})
r +=f.rawHTML("\n</p>\n") r +=f.rawHTML("\n</p>\n")
return r return r
@ -64,7 +72,7 @@ def fonction_javascript(f,quest):
function update() function update()
{ {
var result_p = document.getElementsByName('result_p') var result_p = document.getElementsByName('result_p')
var point_result_p = Math.round(point_globale / %(max_point)i*10000)/100 var point_result_p = Math.round((point_globale-(%(min_point)i)) * 10000 / %(intervalle)i)/100
for (var i=0;i<result_p.length;i++) for (var i=0;i<result_p.length;i++)
{ {
result_p[i].innerHTML = point_result_p result_p[i].innerHTML = point_result_p
@ -91,7 +99,9 @@ def fonction_javascript(f,quest):
update() update()
} }
</script> </script>
""" % {"max_point" : quest.max_point , "nb_quest" : quest.execute}) """ % {"min_point": quest.min_point,
"intervalle": quest.max_point-quest.min_point,
"nb_quest": quest.execute})
else: else:
return "" return ""
@ -104,6 +114,9 @@ def result_pourcent(f,quest):
def result_max(f,quest): def result_max(f,quest):
return f.text("%i" % quest.max_point) return f.text("%i" % quest.max_point)
def result_min(f,quest):
return f.text("%i" % quest.min_point)
def execute(macro,text): def execute(macro,text):
try: try:
macro._macro_questionnaire.execute +=1 macro._macro_questionnaire.execute +=1
@ -117,8 +130,10 @@ def execute(macro,text):
return fonction_javascript(f,quest) + result(f,quest) return fonction_javascript(f,quest) + result(f,quest)
elif text == "%": elif text == "%":
return fonction_javascript(f,quest) + result_pourcent(f,quest) return fonction_javascript(f,quest) + result_pourcent(f,quest)
elif text == "m": elif text == "M":
return fonction_javascript(f,quest) + result_max(f,quest) return fonction_javascript(f,quest) + result_max(f,quest)
elif text == "m":
return fonction_javascript(f,quest) + result_min(f,quest)
else: else:
QR = parse(text) QR = parse(text)
if QR[0][0][0]=='*': if QR[0][0][0]=='*':