1.1 --- a/imipweb/calendar.py Sun Oct 25 22:54:49 2015 +0100
1.2 +++ b/imipweb/calendar.py Sun Oct 25 22:55:34 2015 +0100
1.3 @@ -300,11 +300,11 @@
1.4 page.input(name="reset", type="submit", value="Clear selections", id="reset")
1.5 page.p.close()
1.6
1.7 - def show_time_navigation(self, view_period):
1.8 + def show_time_navigation(self, freebusy, view_period):
1.9
1.10 """
1.11 - Show the calendar navigation links for the period defined by
1.12 - 'view_period'.
1.13 + Show the calendar navigation links for the schedule defined by
1.14 + 'freebusy' and for the period defined by 'view_period'.
1.15 """
1.16
1.17 page = self.page
1.18 @@ -312,19 +312,40 @@
1.19 view_end = view_period.get_end()
1.20 duration = view_period.get_duration()
1.21
1.22 + preceding_events = view_start and get_overlapping(freebusy, Period(None, view_start, self.get_tzid())) or []
1.23 + following_events = view_end and get_overlapping(freebusy, Period(view_end, None, self.get_tzid())) or []
1.24 +
1.25 + last_preceding = preceding_events and to_date(preceding_events[-1].get_end()) + timedelta(1) or None
1.26 + first_following = following_events and to_date(following_events[0].get_start()) or None
1.27 +
1.28 page.p(id_="time-navigation")
1.29
1.30 if view_start:
1.31 + if last_preceding:
1.32 + preceding_start = last_preceding - duration
1.33 + page.label("Show earlier events", for_="earlier-events", class_="earlier")
1.34 + page.input(name="earlier-events", id_="earlier-events", type="submit")
1.35 + page.input(name="earlier-events-start", type="hidden", value=format_datetime(preceding_start))
1.36 + page.input(name="earlier-events-end", type="hidden", value=format_datetime(last_preceding))
1.37 +
1.38 earlier_start = view_start - duration
1.39 - page.label("Show earlier events", for_="earlier", class_="earlier")
1.40 + page.label("Show earlier", for_="earlier", class_="earlier")
1.41 page.input(name="earlier", id_="earlier", type="submit")
1.42 page.input(name="earlier-start", type="hidden", value=format_datetime(earlier_start))
1.43 page.input(name="earlier-end", type="hidden", value=format_datetime(view_start))
1.44 +
1.45 page.input(name="start", type="hidden", value=format_datetime(view_start))
1.46
1.47 if view_end:
1.48 + if first_following:
1.49 + following_end = first_following + duration
1.50 + page.label("Show later events", for_="later-events", class_="later")
1.51 + page.input(name="later-events", id_="later-events", type="submit")
1.52 + page.input(name="later-events-start", type="hidden", value=format_datetime(first_following))
1.53 + page.input(name="later-events-end", type="hidden", value=format_datetime(following_end))
1.54 +
1.55 later_end = view_end + duration
1.56 - page.label("Show later events", for_="later", class_="later")
1.57 + page.label("Show later", for_="later", class_="later")
1.58 page.input(name="later", id_="later", type="submit")
1.59 page.input(name="later-start", type="hidden", value=format_datetime(view_end))
1.60 page.input(name="later-end", type="hidden", value=format_datetime(later_end))
1.61 @@ -340,9 +361,15 @@
1.62 if args.has_key("earlier"):
1.63 start_name, end_name = "earlier-start", "earlier-end"
1.64 break
1.65 + elif args.has_key("earlier-events"):
1.66 + start_name, end_name = "earlier-events-start", "earlier-events-end"
1.67 + break
1.68 elif args.has_key("later"):
1.69 start_name, end_name = "later-start", "later-end"
1.70 break
1.71 + elif args.has_key("later-events"):
1.72 + start_name, end_name = "later-events-start", "later-events-end"
1.73 + break
1.74 elif args.has_key("start") or args.has_key("end"):
1.75 start_name, end_name = "start", "end"
1.76 break
1.77 @@ -551,11 +578,13 @@
1.78 self.show_requests_on_page()
1.79 self.show_participants_on_page(participants)
1.80
1.81 + # Get the view period and details of events within it and outside it.
1.82 +
1.83 + view_period = self.get_view_period()
1.84 +
1.85 # Day view: start at the earliest known day and produce days until the
1.86 # latest known day, with expandable sections of empty days.
1.87
1.88 - view_period = self.get_view_period()
1.89 -
1.90 (days, partitioned_groups, partitioned_group_types, partitioned_group_sources, group_columns) = \
1.91 self.get_period_group_details(freebusy, participants, view_period)
1.92
1.93 @@ -567,7 +596,7 @@
1.94
1.95 self.show_view_period(view_period)
1.96 self.show_calendar_controls()
1.97 - self.show_time_navigation(view_period)
1.98 + self.show_time_navigation(freebusy, view_period)
1.99
1.100 # Show the calendar itself.
1.101