Skip to content

Gamification quiz

Lukas Weingarten requested to merge gamification-quiz into master

Preparation

Add duration properties to content and answer models and remove unused formatAttributes property in content model.

Improve and refactor countdown timer component

  • Use ServerTimeService to take the offset into account
  • Vizualize remaining time with a custom progress bar

Create waiting area for quiz contents with alias support

Create standalone component which can be displayed to participants when waiting for content countdown to start. If participants doesn't have submitted an alias for a room they can either join the quiz confirming the generated alias or entering their own.

For this create ContentStepInfoComponent to show current content step in content group.

Also create new model RoomUserAlias and service RoomUserAliasService according to arsnova-server!777 (merged).

Implement leaderboard for contents and content groups

Create standalone components for displaying a leaderboard for a single content (ContentLeaderboardComponent) or with the total score in a content group (LeaderboardComponent).

The components are listing the leaderboard items sorted by their points/score with a position, user alias, points and duration (for single contents). If aliasId is passed, corresponding entry is highlighted.

For this add new models LeaderboardItem and CurrentLeaderboardItem.

Also add DurationPipe for displaying milliseconds as mm:ss:SS.

See arsnova-server!784 (merged)

Introduce group type for content groups

Add groupType property to content groups which can be MIXED (default) or QUIZ for now.

See arsnova-server!783 (merged)

Creator

Add option to enable/disable quiz mode for content groups. If quiz mode is enabled, a duration can be set for contents in this group.

Add leaderboard page for creators

Add new route …/series/:seriesName/leaderboard where LeaderboardPageComponent displays the current leaderboard for the group.

For routing add a new button next to content group settings.

Add quiz mode controls to presentation mode

Allow presenters to start the countdown for a content via HotkeyActionButtonComponent if quiz mode is enabled in answering end time is not set yet. Until countdown is started show ContentStepInfo.

Add leaderboard item to control bar, with which new LeaderboardPageComponent can be displayed at any point while presenting contents with quiz mode.

Participant

Add gamification elements to participants content answering

If quiz mode is enabled for a content group, in participants content answering ContentWaitingComponent, CountdownTimerComponent and ContentLeaderboardComponent are used if needed.

Also participants are routet to new published contents if quiz mode is enabled. If answering of a content is locked due to finished timer, the answer input will be disabled. If answered in time, the time needed is added to hint.

For displaying leaderboard next to content answering and statistics, add a tab for leaderboard route.

Extend participants series overview for quiz mode

If quiz mode is enabled, the leaderboard position, a new chart with score and leaderboard list is displayed in series overview.

Furthermore duration for the single contents is added to content list items.

For now, leaderboard is displayed initially if quiz mode is enabled and contents can be displayed additionally. In the future we could use tabs to switch between these lists.

Related: particify/dev/common-concerns#63, particify/dev/common-concerns#64, particify/dev/common-concerns#66

Also see follow-up issue: https://gitlab.com/particify/dev/common-concerns/-/issues/67

Edited by Lukas Weingarten

Merge request reports