From 63fbcac3a4cb7cf05cd854c6a43fa5f423418254 Mon Sep 17 00:00:00 2001 From: "Steinar H. Gunderson" Date: Sun, 6 Aug 2023 17:31:14 +0200 Subject: [PATCH 1/1] For the short ID of player lists, allow using the gender as group identifier. --- ultimate.js | 25 +++++++++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) diff --git a/ultimate.js b/ultimate.js index 4e07977..ead0047 100644 --- a/ultimate.js +++ b/ultimate.js @@ -2042,6 +2042,23 @@ function make_filter_pill(filter_div, filterset, filter) { return pill; } +function entire_gender(players) { + let gender = null; + for (const player_id of players) { + if (gender === null) { + gender = find_player(player_id).gender; + } else if (gender !== find_player(player_id).gender) { + return false; // Not all are of the same gender. + } + } + for (const player of global_json['players']) { + if (player.gender === gender && !players.has(player.player_id)) { + return false; // Not all of this gender are in the group. + } + } + return true; +} + function make_filter_marker(filterset) { let text = ''; for (const filter of filterset) { @@ -2066,8 +2083,12 @@ function make_filter_marker(filterset) { } } else if (filter.type === 'player_any' || filter.type === 'player_all') { let sorted_players = Array.from(filter.elements).sort((a, b) => player_pos(a) - player_pos(b)); - for (const player_id of sorted_players) { - text += find_player(player_id)['name'].substr(0, 3); + if (filter.elements.size >= 3 && entire_gender(filter.elements)) { + text += find_player(sorted_players[0]).gender; + } else { + for (const player_id of sorted_players) { + text += find_player(player_id)['name'].substr(0, 3); + } } } else if (filter.type === 'formation_offense' || filter.type === 'formation_defense') { let sorted_formation_id = Array.from(filter.elements).sort((a, b) => a - b); -- 2.39.2