The quiz results overview page (/admin/quiz/[id]/view) could need some refactoring to solve various issues. I'll list up what I've seen so far, and see also attachment.

HTML export of singe result

I don't know what the use case for this export is? It only serves the raw HTML from the single results page (with form fields and submit buttons that naturally does not work in that context). It's also (naturally) missing all styles and images.

But the main question is still what the use case is? A nice pdf version could maybe be used somehow, but this can not. It's also no good as a printable version as there are no styles or images + form elements included.

Can we just remove it?

Redundant row "Finished"?

Not a big deal, but i feel the rows "time started" + "Time taken" gives enough information, and that the "Finished" column just takes up screen estate that it doesn't need to.

Actions does not use intuitive icons, and method is limiting

Me and falcon had a talk about this today, and decided that we probably need to change this page substantially before full release.

  • The icons used are (apart from ..huge) not very intuitive. For instance we use a red x icon throughout quiz to mark a wrong answer, while we here use it to delete a quiz result.
  • The method does not allow for bulk actions at all, so if you need to delete all results from a quiz you need to delete them one-by-one

I propose to look at how this is done in ATutor, and then improve on that. Have a look at second attachment. I propose we introduce check boxes to mark one or more results, and can then delete or mark (score) them with the use of buttons.

With this method we introduce one more click to view or delete a single result, but we gain the possibility to perform bulk actions on results which is very useful. One example is deleting more results, but also being able to mark / score several results at once is very useful.

To mark more results at once we probably need to struggle a bit, but it's doable. I propose you then get a page with all scoreable answers grouped by user, and can then score them at the same page.

One use case: you have a quiz with one or two long answer questions where you have asked the students to provide 100-200 words as an answer for each, and you have 100 students. The bulk action would give you all results on one page, so you can score them all in one operation (instead of 100 operations), and you will also be able to see their answers together.

Important information that is not there

The report today also does not show information quiz has, which is very useful for the admin. Most importantly it shows you the score a user got, but not how this score relates to the pass score of the test. It's important to be able to see how many students passed and how many didn't in a page like this (see second screen shot again).

Similarly, it's very useful to be able to filter by passed / not passed.

There's also an issue with too many results showing, that could need some filtering options: If you allow for unlimited / many number of takes on a quiz you will get many results. However, most often you only wish to see how many students that has passed and how many has failed, not how many times they tried before they got there.

So I guess what I want is a way to filter out duplicate results per user, and only show a students best result in this table. Makes sense?

Comments

falcon’s picture

Status: Active » Needs work
vm’s picture

Time taken could be changed to duration. For those who would want to look further into how long it is taking for users to complete the quiz. I don't see it as redundant information, in the sense that, it's better than manually having to do that math for each line item.

Personally, I like the fact that I can see the duration at a glance and be able to use it as a gauge.

vegardjo’s picture

StatusFileSize
new263.28 KB

@VM that's a valid point, and I agree that naming this "duration" would be better. also I believe we can remove the text "(min:sec)" in the table header, as that's intuitive from the context.

similarly, remove "Time" from "Time started", so we have the table headers: Started, Finished, Duration..? This should make all headers align on the same line, making it nicer and cleaner.

regarding UI for bulk actions and "single instance" actions I believe Wordpress have solved this in a very nice way. bulk actions are the default way of using a table, but hover your mouse over a row in that table and links to manipulate only the data of that row is displayed - see attached screen shot. Not saying this is the way to do it in quiz, but it's a nice and very functional UI for cases like this.

falcon’s picture

Thanks for the report!

Done:
- Remove HTML export of singe result

Todo:
- Rename "Time taken" to "duration", and also shorten the other headers
- Add bulk actions
- Consider replacing the percentage score with the actual score
- Color the score red or green dependent on if the score was passed or not
- Consider what to do with several answers from the same user

(It is easier for the maintainers if big summed up issues like this one is separated into smaller tickets)

srikanthlogic’s picture

@vegardjo

On a side note i see 317% in score in http://drupal.org/files/issues/quiz-results-table.png . Did you really take the quizzes or did you just put in records in backend and viewed the results. If you really did, we have another bug.

vegardjo’s picture

@srikanthlogic that has / had a separate bug report, and I believe it has been fixed already!

falcon’s picture

Done:
- Remove HTML export of singe result
- Rename "Time taken" to "duration", and also shorten the other headers(also passed user object through theme('username')...
- Consider replacing the percentage score with the actual score(Wasn't replaced)

Todo:
- Add bulk actions
- Color the score red or green dependent on if the score was passed or not
- Consider what to do with several answers from the same user

vm’s picture

I agree with Started , Finished, Duration. If more room is required Start, Finish, Duration removing the tense (past tense would be assumed by most) would save 4 characters of space. Not that big a deal really, but it is some saved space.

falcon’s picture

Done:
- Remove HTML export of singe result
- Rename "Time taken" to "duration", and also shorten the other headers(also passed user object through theme('username')...
- Consider replacing the percentage score with the actual score(Wasn't replaced)
- Color the score red or green dependent on if the score was passed or not

Todo:
- Add bulk actions
- Consider what to do with several answers from the same user

falcon’s picture

Regarding several answers from the same user I suggest we do this:

1. Create a new checkbox on the node edit form below the "Number of takes" drop bocks that is checked by default saying "Only keep the best result for each user"
2. Create a checkbox on the resultpage, checked by default saying "Only show the best result for each user"
3. When the "Only show the best result for each user" filter is active and you delete one of the results for a user all of the users results will be deleted. Not only the best result. You will be presented with a warning before the deletion takes place

falcon’s picture

I have started to work on a filter, sorting and paging system like the one found in manage questions. Nothing to test yet, but I have commited some temporary code.

falcon’s picture

Done:
- Remove HTML export of singe result
- Rename "Time taken" to "duration", and also shorten the other headers(also passed user object through theme('username')...
- Consider replacing the percentage score with the actual score(Wasn't replaced)
- Color the score red or green dependent on if the score was passed or not
- Add bulk actions(deletion only, others will come...)

Todo:
- Add view action
- Make it degrade gracefully
- Add "Only keep the best result for each user" to the quiz edit form.
- Add "Only show the best result for each user" to the result browser form.
- Make sure all results are deleted when the above is checked...

falcon’s picture

Done:
- Remove HTML export of singe result
- Rename "Time taken" to "duration", and also shorten the other headers(also passed user object through theme('username')...
- Consider replacing the percentage score with the actual score(Wasn't replaced)
- Color the score red or green dependent on if the score was passed or not
- Add bulk actions(deletion only, others will come...)
- Add view action
- Add word-press inspired hover menu

Todo:
- Make it degrade gracefully
- Add "Only keep the best result for each user" to the quiz edit form.
- Add "Only show the best result for each user" to the result browser form.
- Make sure all results are deleted when the above is checked...

falcon’s picture

Done:
- Remove HTML export of singe result
- Rename "Time taken" to "duration", and also shorten the other headers(also passed user object through theme('username')...
- Consider replacing the percentage score with the actual score(Wasn't replaced)
- Color the score red or green dependent on if the score was passed or not
- Add bulk actions(deletion only, others will come...)
- Add view action
- Add word-press inspired hover menu
- Make it degrade gracefully

Todo:
- Add "Only keep the best result for each user" to the quiz edit form.
- Add "Only show the best result for each user" to the result browser form.
- Make sure all results are deleted when the above is checked...

falcon’s picture

Done:
- Remove HTML export of singe result
- Rename "Time taken" to "duration", and also shorten the other headers(also passed user object through theme('username')...
- Consider replacing the percentage score with the actual score(Wasn't replaced)
- Color the score red or green dependent on if the score was passed or not
- Add bulk actions(deletion only, others will come...)
- Add view action
- Add word-press inspired hover menu
- Make it degrade gracefully
- Add "Only show the best result for each user" to the result browser form.
- Make sure all results are deleted when the above is checked...
- Do something with quizzes in progress
- Add "Only keep the best result for each user" to the quiz edit form.
- Do not delete the quiz results until after the results page have been generated...
- Make sure results are maintained after a quiz has been scored, and that they aren't maintained before...
- Add is evaluated to the quiz_node_results table
- Make upgrade path for the new is_evaluated field
- Do not delete results that haven't been evaluated
- Mark unscored quizzes in the report section...
- Make sure the new is_evaluated field is updated everywhere...

Todo:
- Make sure all the information from the old page is in the new one as well...

falcon’s picture

Status: Needs work » Fixed

I think I'm finally done with this one now...

Done:
- Remove HTML export of singe result
- Rename "Time taken" to "duration", and also shorten the other headers(also passed user object through theme('username')...
- Consider replacing the percentage score with the actual score(Wasn't replaced)
- Color the score red or green dependent on if the score was passed or not
- Add bulk actions(deletion only, others will come...)
- Add view action
- Add word-press inspired hover menu
- Make it degrade gracefully
- Add "Only show the best result for each user" to the result browser form.
- Make sure all results are deleted when the above is checked...
- Do something with quizzes in progress
- Add "Only keep the best result for each user" to the quiz edit form.
- Do not delete the quiz results until after the results page have been generated...
- Make sure results are maintained after a quiz has been scored, and that they aren't maintained before...
- Add is evaluated to the quiz_node_results table
- Make upgrade path for the new is_evaluated field
- Do not delete results that haven't been evaluated
- Mark unscored quizzes in the report section...
- Make sure the new is_evaluated field is updated everywhere...
- Make sure all the information from the old page is in the new one as well...

falcon’s picture

Status: Fixed » Closed (fixed)