# HG changeset patch # User Paul Boddie # Date 1422461974 -3600 # Node ID b4e941d0b54795ffe9da991cf1ed5a53f77de774 # Parent 06c78d7ef89d52a0120c47435be2e046d46edfe3 Added table structure: colgroups for participants, thead/tbody for days. diff -r 06c78d7ef89d -r b4e941d0b547 imip_manager.py --- a/imip_manager.py Wed Jan 28 16:43:04 2015 +0100 +++ b/imip_manager.py Wed Jan 28 17:19:34 2015 +0100 @@ -655,20 +655,39 @@ self.show_calendar_days(days, partitioned_groups, partitioned_group_types, group_columns) page.table.close() - def show_calendar_participant_headings(self, partitioned_group_sources, group_columns): + def show_calendar_participant_headings(self, group_sources, group_columns): + + """ + Show headings for the participants and other scheduling contributors, + defined by 'group_sources' and 'group_columns'. + """ + page = self.page + page.colgroup(span=1) # for datetime information + + for columns in group_columns: + page.colgroup(span=columns) + page.thead() page.tr() page.th("", class_="emptyheading") - for source, columns in zip(partitioned_group_sources, group_columns): + for source, columns in zip(group_sources, group_columns): page.th(source, class_="participantheading", colspan=columns) page.tr.close() page.thead.close() def show_calendar_days(self, days, partitioned_groups, partitioned_group_types, group_columns): + + """ + Show calendar days, defined by a collection of 'days', the contributing + period information as 'partitioned_groups' (partitioned by day), the + 'partitioned_group_types' indicating the kind of contribution involved, + and the 'group_columns' defining the number of columns in each group. + """ + page = self.page # Determine the number of columns required, the days providing time @@ -678,24 +697,31 @@ all_days = days.items() all_days.sort() - page.tbody() - # Produce a heading and time points for each day. for day, points in all_days: + page.thead() page.tr() page.th(class_="dayheading", colspan=all_columns+1) page.add(self.format_date(day, "full")) page.th.close() page.tr.close() + page.thead.close() groups_for_day = [partitioned.get(day) for partitioned in partitioned_groups] + page.tbody() self.show_calendar_points(points, groups_for_day, partitioned_group_types, group_columns) - - page.tbody.close() + page.tbody.close() def show_calendar_points(self, points, groups, group_types, group_columns): + + """ + Show the time 'points' along with period information from the given + 'groups', having the indicated 'group_types', each with the number of + columns given by 'group_columns'. + """ + page = self.page # Produce a row for each time point.