]> git.sesse.net Git - pkanalytics/commitdiff
For the short ID of player lists, allow using the gender as group identifier.
authorSteinar H. Gunderson <sgunderson@bigfoot.com>
Sun, 6 Aug 2023 15:31:14 +0000 (17:31 +0200)
committerSteinar H. Gunderson <sgunderson@bigfoot.com>
Sun, 6 Aug 2023 15:31:14 +0000 (17:31 +0200)
ultimate.js

index 4e0797758a5c782e93eef88000d9cbc7dfe54338..ead0047cee0f5c4e4a92c318c4cb068491e5e0a1 100644 (file)
@@ -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);