Skip to content

Commit 49779a3

Browse files
Hide agenda timeslot label rows when all their sessions are hidden. Fixes ietf-tools#3249. Commit ready for merge.
- Legacy-Id: 18940
1 parent 17d3772 commit 49779a3

2 files changed

Lines changed: 72 additions & 1 deletion

File tree

ietf/meeting/tests_js.py

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -617,6 +617,60 @@ def get_agenda_filter_group_button(wait, group_acronym):
617617
)
618618
)
619619

620+
def test_agenda_timeslot_label_visibility(self):
621+
"""The timeslot label for regular sessions should only be shown when a session is visible"""
622+
wait = WebDriverWait(self.driver, 2)
623+
url = self.absreverse('ietf.meeting.views.agenda')
624+
mars_assignments = self.meeting.schedule.assignments.filter(session__group__acronym='mars')
625+
ames_assignments = self.meeting.schedule.assignments.filter(session__group__acronym='ames')
626+
assert(mars_assignments.count() == 1) # if not, need to update test
627+
assert(ames_assignments.count() == 1) # if not, need to update test
628+
assignments = dict(
629+
mars=mars_assignments.first(),
630+
ames=ames_assignments.first(),
631+
)
632+
# test relies on these timeslots being different so they will have separate label rows
633+
assert(assignments['mars'].timeslot.time != assignments['ames'].timeslot.time)
634+
label_row_selectors = {
635+
grp: (By.CSS_SELECTOR, 'tr.session-label-row[data-slot-start-ts="{}"][data-slot-end-ts="{}"]'.format(
636+
int(assignment.timeslot.utc_start_time().timestamp()),
637+
int(assignment.timeslot.utc_end_time().timestamp()),
638+
))
639+
for grp, assignment in assignments.items()
640+
}
641+
642+
self.login()
643+
644+
# get page with all items visible
645+
self.driver.get(url)
646+
wait.until(expected_conditions.visibility_of_element_located(label_row_selectors['ames']))
647+
wait.until(expected_conditions.visibility_of_element_located(label_row_selectors['mars']))
648+
649+
# get page with ames hidden
650+
self.driver.get(url + '?show=mars&hide=ames')
651+
wait.until(expected_conditions.invisibility_of_element_located(label_row_selectors['ames']))
652+
wait.until(expected_conditions.visibility_of_element_located(label_row_selectors['mars']))
653+
654+
# get page with mars hidden
655+
self.driver.get(url + '?show=ames&hide=mars')
656+
wait.until(expected_conditions.visibility_of_element_located(label_row_selectors['ames']))
657+
wait.until(expected_conditions.invisibility_of_element_located(label_row_selectors['mars']))
658+
659+
# create an ames session in the mars timeslot, should cause the mars timeslot label to reappear
660+
sess = SessionFactory(group=Group.objects.get(acronym='ames'),
661+
meeting=self.meeting,
662+
add_to_schedule=False)
663+
sess.timeslotassignments.create(timeslot=assignments['mars'].timeslot,
664+
schedule=self.meeting.schedule)
665+
self.driver.get(url + '?show=ames&hide=mars')
666+
wait.until(expected_conditions.visibility_of_element_located(label_row_selectors['ames']))
667+
wait.until(expected_conditions.visibility_of_element_located(label_row_selectors['mars']))
668+
669+
# get page with ames and mars hidden
670+
self.driver.get(url + '?hide=ames,mars')
671+
wait.until(expected_conditions.invisibility_of_element_located(label_row_selectors['ames']))
672+
wait.until(expected_conditions.invisibility_of_element_located(label_row_selectors['mars']))
673+
620674
def test_agenda_view_group_filter_toggle(self):
621675
"""Clicking a group toggle enables/disables agenda filtering"""
622676
wait = WebDriverWait(self.driver, 2)

ietf/templates/meeting/agenda.html

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -145,7 +145,7 @@ <h2>
145145

146146
{% if item.timeslot.type_id == 'regular' %}
147147
{% ifchanged %}
148-
<tr class="info"
148+
<tr class="info session-label-row"
149149
data-slot-start-ts="{{item.start_timestamp}}"
150150
data-slot-end-ts="{{item.end_timestamp}}">
151151
<td class="leftmarker"></td>
@@ -402,6 +402,23 @@ <h2>
402402
// this is a "negative" item by wg: when present, hide these rows
403403
agenda_filter.rows_matching_filter_keyword(agenda_rows, v).hide();
404404
});
405+
406+
// Now hide any session label rows with no visible sessions. Identify
407+
// by matching on start/end timestamps.
408+
$('tr.session-label-row').each(function(i, e) {
409+
var start_ts = $(e).attr('data-slot-start-ts');
410+
var end_ts = $(e).attr('data-slot-end-ts');
411+
var visible_rows = agenda_rows.filter(
412+
'[data-slot-start-ts="' + start_ts + '"]' +
413+
'[data-slot-end-ts="' + end_ts + '"]' +
414+
':visible'
415+
);
416+
if (visible_rows.length > 0) {
417+
$(e).show();
418+
} else {
419+
$(e).hide();
420+
}
421+
})
405422
}
406423

407424
function update_ical_links(filter_params) {

0 commit comments

Comments
 (0)