Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add league tables to projects #7542

Closed
HelenWDTK opened this issue Jan 23, 2023 · 7 comments · Fixed by #7641
Closed

Add league tables to projects #7542

HelenWDTK opened this issue Jan 23, 2023 · 7 comments · Fixed by #7641
Assignees
Labels
enhancement Adds new functionality f:projects x:uk

Comments

@HelenWDTK
Copy link
Contributor

I was on a training call for volunteers who were being shown how to use projects to classify and extract data from a batch, and someone wanted to know if there way that they could track how many they had done, and see how that compared to others.

Gamification of the classification/data extraction process on a per project basis seems like it could be a good participation incentive. This could even be as simple as the league tables that we have for regular classification.

I know little about how projects works, so it is highly possible that this may already exist.

@garethrees garethrees added x:uk enhancement Adds new functionality f:projects labels Jan 24, 2023
@garethrees
Copy link
Member

It doesn't exist, though was certainly thought about. We've done this manually at some point.

@garethrees
Copy link
Member

found it!

project = Project.find(1)

csv_string = CSV.generate do |csv|
  csv << %w[name email classifications extractions user_created_at]

  project.members.each do |user|
    csv << [user.name,
      user.email,
      project.submissions.where(user_id: user.id).classification.size,
      project.submissions.where(user_id: user.id).extraction.size,
      user.created_at.to_date]
  end
end

File.write "tmp/project-#{project.id}-leaderboard.csv", csv_string

@HelenWDTK
Copy link
Contributor Author

I think they'd love this doing manually if it's easy. They are having calls to classify/extract data together once a week, so that'd be a good time. There are 20, so a top 5 would probably be enough incentive.

@garethrees
Copy link
Member

I got emailed privately about this for the specific partner context, which I've moved to an internal thread for wider team visibility. Would need to write slightly different code for a top 5, but the above gives a general sense of the main record relationships that need to be counted.

@garethrees
Copy link
Member

I think this would be pretty easy to implement.

We could have an overall contributors leaderboard in the sidebar that just groups Project::Submission by user and counts them. I don't think it's worth having task-specific leaderboards as the first move.

Screenshot 2023-01-24 at 15 07 33

In terms of backend functionality I think it's pretty clear based on the above example and the classification game league table. We'd want to limit to top 5 users, and exclude those with zero contributions in the scoring.

As per the categorisation game, probably ought to link to the user account profile pages, but not essential.

@zarino
Copy link
Member

zarino commented Mar 2, 2023

Further comments from Hannah:

We have one incredibly efficient volunteer who is head and shoulders over the rest to the extent where nobody has a chance of catching up, so it might be better for encouraging people if we could have a leaderboard for extractions for the last week rather than an accumulated total? Also if it lightens the load we can probably drop the classifications bit of the leaderboard as that will remain a trickle rather than a pour.

@garethrees
Copy link
Member

Since we're continuing to manually extract the contributions data and we already have the code for it we should build a button for the project owner to download this from the project homepage:

Screenshot 2023-03-06 at 15 32 50

As for the leaderboard, let's follow the categorisation game pattern of "recent" (last 28 days) and "all time" (all contributions, scoped per project). I think this will be the most generally useful. Other projects might be a much slower pace than these, so weekly stats might not work so well.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement Adds new functionality f:projects x:uk
Projects
None yet
Development

Successfully merging a pull request may close this issue.

4 participants