Skip to content

Conversation

@nickygerritsen
Copy link
Member

This fixes #2937

I added validation to make sure each team is in at most one scoring category and a config checker to make sure they are in at least one (since this is not an error but still weird).

There are some minor changes to the scoreboard compared to before:

  • We used to only show the badges for top teams if there was more than one category. Now we show them when you have any category with the TYPE_BADGE_TOP type.
  • Similar for the colors, we only showed them if there was more than one color, also taking into account the 'non-color' as color. Now we display them as soon as you have one color, ignoring categories without color. We don't display the names of categories without colors anymore, since a team can be in multiple of those categories. We could change this to something smart if all categories that have a color also have a scoring type, but I'm not sure if that's worth it.

I decided that filtering on the scoreboard should be possible with all category types, since I think this makes sense (i.e. one can filter on all teams that advanced to finals before or all teams that didn't).

I also decided that we can have categories without any type. The above mentioned example is a good use case: all teams NOT advancing to finals from EUC could be put in that category, so you can filter on it.

The PR is quite big, since it's quite a lot of changes. I split some of the work up in separate commits, but plan to squash before merging.

->leftJoin('t.affiliation', 'ta')
->leftJoin('t.category', 'tc')
->leftJoin('t.categories', 'tc')
->leftJoin('t.categories', 'tcc', Join::WITH, 'BIT_AND(tcc.types, :scoring) = :scoring')
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why do we need the extra tcc, aren't you joining this to be the same category?

->from(Team::class, 't')
->select('t')
->leftJoin('t.category', 'tc')
->leftJoin('t.categories', 'tc')
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

phpcs below

{# only print legend when there's more than one category #}
{% if limitToTeamIds is null and usedCategories | length > 1 and hasDifferentCategoryColors %}
{% if limitToTeamIds is null and colorCategories | length > 0 and hasDifferentCategoryColors %}
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The comment is now not in line with the code. Why do we need to print the legend with only 1 category?

}

if ($filter->categories) {
// Use a new join, since we need both the other two category joins for other logic already
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think you don't limit tcc so can re use it here,

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Allow teams to be in more than one category

3 participants