# HG changeset patch # User Paul Boddie # Date 1422556108 -3600 # Node ID 5a5bdc7f3928330bebc4e5ee52ad850892be53a3 # Parent ae4df1b45f6e841085d5d091210c42b2e263e35b Make sure that colspans are correct for participants providing no events. diff -r ae4df1b45f6e -r 5a5bdc7f3928 imip_manager.py --- a/imip_manager.py Thu Jan 29 19:23:26 2015 +0100 +++ b/imip_manager.py Thu Jan 29 19:28:28 2015 +0100 @@ -644,11 +644,10 @@ partitioned[day] = day_slots days[day].update(day_slots.keys()) - if partitioned: - group_columns.append(columns) - partitioned_groups.append(partitioned) - partitioned_group_types.append(group_type) - partitioned_group_sources.append(group_source) + group_columns.append(columns) + partitioned_groups.append(partitioned) + partitioned_group_types.append(group_type) + partitioned_group_sources.append(group_source) page.table(cellspacing=5, cellpadding=5, id="calendar") self.show_calendar_participant_headings(partitioned_group_types, partitioned_group_sources, group_columns) @@ -667,14 +666,14 @@ page.colgroup(span=1, id="columns-timeslot") for group_type, columns in zip(group_types, group_columns): - page.colgroup(span=columns, id="columns-%s" % group_type) + page.colgroup(span=max(columns, 1), id="columns-%s" % group_type) page.thead() page.tr() page.th("", class_="emptyheading") for source, columns in zip(group_sources, group_columns): - page.th(source, class_="participantheading", colspan=columns) + page.th(source, class_="participantheading", colspan=max(columns, 1)) page.tr.close() page.thead.close() @@ -690,10 +689,14 @@ page = self.page - # Determine the number of columns required, the days providing time - # slots. + # Determine the number of columns required. Where participants provide + # no columns for events, one still needs to be provided for the + # participant itself. - all_columns = sum(group_columns) + all_columns = sum([max(columns, 1) for columns in group_columns]) + + # Determine the days providing time slots. + all_days = days.items() all_days.sort() @@ -742,8 +745,12 @@ for columns, slots, group_type in zip(group_columns, groups, group_types): active = slots and slots.get(point) + # Where no periods exist for the given time interval, generate + # an empty cell. Where a participant provides no periods at all, + # the colspan is adjusted to be 1, not 0. + if not active: - page.td("", class_="empty", colspan=columns) + page.td("", class_="empty", colspan=max(columns, 1)) continue slots = slots.items()