2.1 --- a/imipweb/calendar.py Sun Oct 25 22:54:49 2015 +0100
2.2 +++ b/imipweb/calendar.py Sun Oct 25 22:55:34 2015 +0100
2.3 @@ -300,11 +300,11 @@
2.4 page.input(name="reset", type="submit", value="Clear selections", id="reset")
2.5 page.p.close()
2.6
2.7 - def show_time_navigation(self, view_period):
2.8 + def show_time_navigation(self, freebusy, view_period):
2.9
2.10 """
2.11 - Show the calendar navigation links for the period defined by
2.12 - 'view_period'.
2.13 + Show the calendar navigation links for the schedule defined by
2.14 + 'freebusy' and for the period defined by 'view_period'.
2.15 """
2.16
2.17 page = self.page
2.18 @@ -312,19 +312,40 @@
2.19 view_end = view_period.get_end()
2.20 duration = view_period.get_duration()
2.21
2.22 + preceding_events = view_start and get_overlapping(freebusy, Period(None, view_start, self.get_tzid())) or []
2.23 + following_events = view_end and get_overlapping(freebusy, Period(view_end, None, self.get_tzid())) or []
2.24 +
2.25 + last_preceding = preceding_events and to_date(preceding_events[-1].get_end()) + timedelta(1) or None
2.26 + first_following = following_events and to_date(following_events[0].get_start()) or None
2.27 +
2.28 page.p(id_="time-navigation")
2.29
2.30 if view_start:
2.31 + if last_preceding:
2.32 + preceding_start = last_preceding - duration
2.33 + page.label("Show earlier events", for_="earlier-events", class_="earlier")
2.34 + page.input(name="earlier-events", id_="earlier-events", type="submit")
2.35 + page.input(name="earlier-events-start", type="hidden", value=format_datetime(preceding_start))
2.36 + page.input(name="earlier-events-end", type="hidden", value=format_datetime(last_preceding))
2.37 +
2.38 earlier_start = view_start - duration
2.39 - page.label("Show earlier events", for_="earlier", class_="earlier")
2.40 + page.label("Show earlier", for_="earlier", class_="earlier")
2.41 page.input(name="earlier", id_="earlier", type="submit")
2.42 page.input(name="earlier-start", type="hidden", value=format_datetime(earlier_start))
2.43 page.input(name="earlier-end", type="hidden", value=format_datetime(view_start))
2.44 +
2.45 page.input(name="start", type="hidden", value=format_datetime(view_start))
2.46
2.47 if view_end:
2.48 + if first_following:
2.49 + following_end = first_following + duration
2.50 + page.label("Show later events", for_="later-events", class_="later")
2.51 + page.input(name="later-events", id_="later-events", type="submit")
2.52 + page.input(name="later-events-start", type="hidden", value=format_datetime(first_following))
2.53 + page.input(name="later-events-end", type="hidden", value=format_datetime(following_end))
2.54 +
2.55 later_end = view_end + duration
2.56 - page.label("Show later events", for_="later", class_="later")
2.57 + page.label("Show later", for_="later", class_="later")
2.58 page.input(name="later", id_="later", type="submit")
2.59 page.input(name="later-start", type="hidden", value=format_datetime(view_end))
2.60 page.input(name="later-end", type="hidden", value=format_datetime(later_end))
2.61 @@ -340,9 +361,15 @@
2.62 if args.has_key("earlier"):
2.63 start_name, end_name = "earlier-start", "earlier-end"
2.64 break
2.65 + elif args.has_key("earlier-events"):
2.66 + start_name, end_name = "earlier-events-start", "earlier-events-end"
2.67 + break
2.68 elif args.has_key("later"):
2.69 start_name, end_name = "later-start", "later-end"
2.70 break
2.71 + elif args.has_key("later-events"):
2.72 + start_name, end_name = "later-events-start", "later-events-end"
2.73 + break
2.74 elif args.has_key("start") or args.has_key("end"):
2.75 start_name, end_name = "start", "end"
2.76 break
2.77 @@ -551,11 +578,13 @@
2.78 self.show_requests_on_page()
2.79 self.show_participants_on_page(participants)
2.80
2.81 + # Get the view period and details of events within it and outside it.
2.82 +
2.83 + view_period = self.get_view_period()
2.84 +
2.85 # Day view: start at the earliest known day and produce days until the
2.86 # latest known day, with expandable sections of empty days.
2.87
2.88 - view_period = self.get_view_period()
2.89 -
2.90 (days, partitioned_groups, partitioned_group_types, partitioned_group_sources, group_columns) = \
2.91 self.get_period_group_details(freebusy, participants, view_period)
2.92
2.93 @@ -567,7 +596,7 @@
2.94
2.95 self.show_view_period(view_period)
2.96 self.show_calendar_controls()
2.97 - self.show_time_navigation(view_period)
2.98 + self.show_time_navigation(freebusy, view_period)
2.99
2.100 # Show the calendar itself.
2.101