This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
stats:schema:exam [2012/01/11 14:46] Patrick Michel [Participant Management] |
stats:schema:exam [2013/07/10 12:48] (current) |
||
---|---|---|---|
Line 6: | Line 6: | ||
<code xcend> | <code xcend> | ||
- | element exams { | + | element exam * id { |
- | element exam * id { | + | attribute title { string } |
- | attribute title { string } | + | attribute date { string } |
- | attribute date { string } | + | attribute time { string } |
- | attribute time { string } | + | attribute location { string } |
- | attribute location { string } | + | attribute free { boolean } |
- | attribute free { boolean } | + | attribute published { boolean } |
- | attribute published { boolean } | + | |
- | + | attribute exercise { ident [ exists /exercise[.] ]} | |
- | element examiner * account {[ //accounts/account[./account]/examiner[..exam/id] ]} | + | |
- | element tasks { | + | element examiner * account {[ /account[./account]/examiner[..exam/id] ]} |
- | element task * id { | + | |
- | attribute maxPoints { double [ . >= 0 ]} | + | element task * id { |
- | } | + | attribute maxPoints { double [ . >= 0 ]} |
- | } | + | } |
- | element grades { | + | element grade * id { |
- | element grade * { | + | attribute name { string } [count(./name, ../grade/name) = 1] |
- | attribute value { double } | + | attribute value { double } |
- | attribute minPoints { double } | + | attribute minPoints { double } |
- | } [ {x != y} ./grade[x]/value != ./grade[y]/value ] | + | } [ {exists ./grade[x], exists ./grade[y], x != y} ./grade[x]/value != ./grade[y]/value ] |
- | [ {x != y} ./grade[x]/minPoints != ./grade[y]/minPoints ] | + | [ {exists ./grade[x], exists ./grade[y], x != y} ./grade[x]/minPoints != ./grade[y]/minPoints ] |
- | [ ./grade[x]/value < ./grade[y]/value -> | + | [ {exists ./grade[x], exists ./grade[y], ./grade[x]/value < ./grade[y]/value} |
- | ./grade[x]/minPoints > ./grade[y]/minPoints ] | + | ./grade[x]/minPoints > ./grade[y]/minPoints ] |
- | } | + | element participant * id { [ count (./id, /account/student/id) = 1 ] |
- | element results { | + | element result * task { [ exists ..exam/task[./task] ] |
- | element participant * id { [ exists //accounts/account/student[./id] ] | + | attribute points { double [ . >= 0 && . <= ..exam/task[../task]/maxPoints ]} |
- | element result * task { [ exists ..exam/tasks/task[./task] ] | + | |
- | attribute points { double [ . >= 0 && . <= ..exam/tasks/task[../task]/maxPoints ]} | + | |
- | } | + | |
- | } | + | |
} | } | ||
} | } | ||
Line 77: | Line 72: | ||
Currently, the participants are not hardwired to an account, I just changed that fact for the schema. Besides that, participants stand for themselves, so deleting one does not affect anything. | Currently, the participants are not hardwired to an account, I just changed that fact for the schema. Besides that, participants stand for themselves, so deleting one does not affect anything. | ||
+ | |||
+ | {{page>stats:proc:openRegistration&noheader&nofooter}} | ||
+ | {{page>stats:proc:closeRegistration&noheader&nofooter}} | ||
{{page>stats:proc:addParticipant&noheader&nofooter}} | {{page>stats:proc:addParticipant&noheader&nofooter}} | ||
{{page>stats:proc:removeParticipant&noheader&nofooter}} | {{page>stats:proc:removeParticipant&noheader&nofooter}} | ||
- | {{page>stats:proc:openRegistration&noheader&nofooter}} | ||
- | {{page>stats:proc:closeRegistration&noheader&nofooter}} | ||
==== Result Management ==== | ==== Result Management ==== |