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.

@nickygerritsen nickygerritsen force-pushed the multiple-categories branch 2 times, most recently from 80b7c0b to 6953f19 Compare October 25, 2025 20:16
SQL);

// Now update the types for existing categories based on whether the color is set
$this->addSql('UPDATE team_category SET types = 7 WHERE color IS NOT NULL');
Copy link
Member

Choose a reason for hiding this comment

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

nit: add a comment what 7 and 5 mean?

* @var array<int, string>
*/
public const TYPES_TO_HUMAN_STRING = [
self::TYPE_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.

What does Scoring mean?

Copy link
Member Author

Choose a reason for hiding this comment

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

That it's used for the scoreboard, i.e. that is what makes sort order required / useful. Each team can be in at most one scoring category as to only have one order on the scoreboard

Copy link
Member Author

Choose a reason for hiding this comment

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

That it's used for the scoreboard, i.e. that is what makes sort order required / useful. Each team can be in at most one scoring category as to only have one order on the scoreboard

Copy link
Member

Choose a reason for hiding this comment

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

can be in at most one, or does have to be exactly one?

Copy link
Member Author

Choose a reason for hiding this comment

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

I will double check, I thought at most (and if 0 they won't appear on the scoreboard)

Copy link
Member Author

Choose a reason for hiding this comment

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

I will double check, I thought at most (and if 0 they won't appear on the scoreboard)

Copy link
Member

Choose a reason for hiding this comment

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

won't appear on the scoreboard could be super confusing

Copy link
Member Author

Choose a reason for hiding this comment

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

Do you suggest to make it 'exactly 1'?

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

4 participants