Repository: ietf-tools/datatracker

Issue:
Schedule editor icons need to be more distinct
From @flynnliz

The various “person” icons are confusing. It’s hard to know at a glance in the grid which conflicts are “person who must be present” and which are “chair conflict,” and it’s even more confusing that in the session request data box on the bottom right, the “requested by” icon is the same as the chair conflict. Can these three be more distinct from each other? 

![image](https://user-images.githubusercontent.com/10996692/186988300-df1ea711-d765-47eb-9971-e234ba10f4d8.png)


- The “technology overlap” chain icon shows up really faintly and it’s very tiny, so it’s easy to miss. Same with the “key participant overlap” key icon — those two are really difficult to distinguish from each other when they are so small. Can these be made larger or even just changed to something that takes up more vertical space so they’re easier to distinguish?

![image](https://user-images.githubusercontent.com/10996692/186988318-671fa14e-3388-4780-adee-727146811a00.png)




Discussion:
https://icons.getbootstrap.com/ has all the icon choices. Of course we could pull in another icon library, but that seems like overkill. Would colors help, @flynnliz?
Thanks for the link to the icon library, @larseggert ! I don't think colors would help, since the agenda editor already changes the colors for certain conflicts in the grid. 

I've chosen some new icons that I think will be a little more visually distinct from each other. Can these be changed?

"Persons who must be present" : people-fill
"Session requested by" : person-circle (no change)
"Chair conflict" : circle-fill
"Technology overlap" : link-45deg
"Key Participant Conflict" : star
@flynnliz like this?
<img width="353" alt="Screen Shot 2022-09-02 at 12 46 14" src="https://user-images.githubusercontent.com/200328/188112954-f9661af4-33a0-4b94-916b-2f2ec95fa30d.png">


Resolving patch:
diff --git a/ietf/meeting/templatetags/editor_tags.py b/ietf/meeting/templatetags/editor_tags.py
--- a/ietf/meeting/templatetags/editor_tags.py
+++ b/ietf/meeting/templatetags/editor_tags.py
@@ -17,13 +17,13 @@ def constraint_icon_for(constraint_name, count=None):
         'conflict': '<span class="encircled">{reversed}1</span>',
         'conflic2': '<span class="encircled">{reversed}2</span>',
         'conflic3': '<span class="encircled">{reversed}3</span>',
-        'bethere': '<i class="bi bi-person"></i>{count}',
+        'bethere': '<i class="bi bi-people-fill"></i>{count}',
         'timerange': '<i class="bi bi-calendar"></i>',
         'time_relation': '&Delta;',
         'wg_adjacent': '{reversed}<i class="bi bi-skip-end"></i>',
-        'chair_conflict': '{reversed}<i class="bi bi-person-circle"></i>',
-        'tech_overlap': '{reversed}<i class="bi bi-link"></i>',
-        'key_participant': '{reversed}<i class="bi bi-key"></i>',
+        'chair_conflict': '{reversed}<i class="bi bi-circle-fill"></i>',
+        'tech_overlap': '{reversed}<i class="bi bi-link-45deg"></i>',
+        'key_participant': '{reversed}<i class="bi bi-star"></i>',
         'joint_with_groups': '<i class="bi bi-merge"></i>',
         'responsible_ad': '<span class="encircled">AD</span>',
     }


Test patch:
diff --git a/ietf/meeting/templatetags/tests.py b/ietf/meeting/templatetags/tests.py
--- a/ietf/meeting/templatetags/tests.py
+++ b/ietf/meeting/templatetags/tests.py
@@ -87,17 +87,17 @@ def test_constraint_icon_for(self):
             ('conflict-reversed', '', '<span class="encircled">-1</span>'),
             ('conflic2-reversed', '', '<span class="encircled">-2</span>'),
             ('conflic3-reversed', '', '<span class="encircled">-3</span>'),
-            ('bethere', '27', '<i class="bi bi-person"></i>27'),
+            ('bethere', '27', '<i class="bi bi-people-fill"></i>27'),
             ('timerange', '', '<i class="bi bi-calendar"></i>'),
             ('time_relation', '', '\u0394'),  # \u0394 is a capital Greek Delta
             ('wg_adjacent', '', '<i class="bi bi-skip-end"></i>'),
             ('wg_adjacent-reversed', '', '-<i class="bi bi-skip-end"></i>'),
-            ('chair_conflict', '', '<i class="bi bi-person-circle"></i>'),
-            ('chair_conflict-reversed', '', '-<i class="bi bi-person-circle"></i>'),
-            ('tech_overlap', '', '<i class="bi bi-link"></i>'),
-            ('tech_overlap-reversed', '', '-<i class="bi bi-link"></i>'),
-            ('key_participant', '', '<i class="bi bi-key"></i>'),
-            ('key_participant-reversed', '', '-<i class="bi bi-key"></i>'),
+            ('chair_conflict', '', '<i class="bi bi-circle-fill"></i>'),
+            ('chair_conflict-reversed', '', '-<i class="bi bi-circle-fill"></i>'),
+            ('tech_overlap', '', '<i class="bi bi-link-45deg"></i>'),
+            ('tech_overlap-reversed', '', '-<i class="bi bi-link-45deg"></i>'),
+            ('key_participant', '', '<i class="bi bi-star"></i>'),
+            ('key_participant-reversed', '', '-<i class="bi bi-star"></i>'),
             ('joint_with_groups', '', '<i class="bi bi-merge"></i>'),
             ('responsible_ad', '', '<span class="encircled">AD</span>'),
         )
diff --git a/ietf/meeting/tests_views.py b/ietf/meeting/tests_views.py
--- a/ietf/meeting/tests_views.py
+++ b/ietf/meeting/tests_views.py
@@ -3326,7 +3326,7 @@ def test_edit_meeting_schedule(self):
             s_other = s2 if s == s1 else s1
             self.assertEqual(len(constraints), 3)
             self.assertEqual(constraints.eq(0).attr("data-sessions"), str(s_other.pk))
-            self.assertEqual(constraints.eq(0).find(".bi-person").parent().text(), "1") # 1 person in the constraint
+            self.assertEqual(constraints.eq(0).find(".bi-people-fill").parent().text(), "1") # 1 person in the constraint
             self.assertEqual(constraints.eq(1).attr("data-sessions"), str(s_other.pk))
             self.assertEqual(constraints.eq(1).find(".encircled").text(), "1" if s_other == s2 else "-1")
             self.assertEqual(constraints.eq(2).attr("data-sessions"), str(s_other.pk))
@@ -3662,7 +3662,7 @@ def test_edit_meeting_schedule_conflict_types(self):
 
         # Now enable the 'chair_conflict' constraint only
         chair_conflict = ConstraintName.objects.get(slug='chair_conflict')
-        chair_conf_label = b'<i class="bi bi-person-circle"/>'  # result of etree.tostring(etree.fromstring(editor_label))
+        chair_conf_label = b'<i class="bi bi-circle-fill"/>'  # result of etree.tostring(etree.fromstring(editor_label))
         meeting.group_conflict_types.add(chair_conflict)
         r = self.client.get(url)
         q = PyQuery(r.content)