<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <title>Agenda - Edward Betts</title>
  <link href="{{ url_for("static", filename="bootstrap5/css/bootstrap.min.css") }}" rel="stylesheet">
  <link rel="icon" href="data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 100 100%22><text y=%22.9em%22 font-size=%2290%22>📅</text></svg>">

  <script async src="{{ url_for("static", filename="es-module-shims/es-module-shims.js") }}"></script>

    <script type='importmap'>
      {
        "imports": {
          "@fullcalendar/core": "https://cdn.skypack.dev/@fullcalendar/core@6.1.9",
          "@fullcalendar/daygrid": "https://cdn.skypack.dev/@fullcalendar/daygrid@6.1.9",
          "@fullcalendar/timegrid": "https://cdn.skypack.dev/@fullcalendar/timegrid@6.1.9",
          "@fullcalendar/list": "https://cdn.skypack.dev/@fullcalendar/list@6.1.9",
          "@fullcalendar/core/locales/en-gb": "https://cdn.skypack.dev/@fullcalendar/core@6.1.9/locales/en-gb"
        }
      }
    </script>
    <script type='module'>
      import { Calendar } from '@fullcalendar/core'
      import dayGridPlugin from '@fullcalendar/daygrid'
      import timeGridPlugin from '@fullcalendar/timegrid'
      import listPlugin from '@fullcalendar/list'
      import gbLocale from '@fullcalendar/core/locales/en-gb';

      // Function to save the current view to local storage
      function saveView(view) {
          localStorage.setItem('fullCalendarDefaultView', view);
      }

      // Function to get the saved view from local storage
      function getSavedView() {
          return localStorage.getItem('fullCalendarDefaultView') || 'dayGridMonth';
      }

      document.addEventListener('DOMContentLoaded', function() {
        const calendarEl = document.getElementById('calendar')
        const calendar = new Calendar(calendarEl, {
          locale: gbLocale,
          plugins: [dayGridPlugin, timeGridPlugin, listPlugin ],
          themeSystem: 'bootstrap5',
          firstDay: 1,
          initialView: getSavedView(),
          viewDidMount: function(info) {
              saveView(info.view.type);
          },
          headerToolbar: {
            left: 'prev,next today',
            center: 'title',
            right: 'dayGridMonth,timeGridWeek,timeGridDay,listWeek'
          },
          nowIndicator: true,
          weekNumbers: true,
          eventTimeFormat: {
            hour: '2-digit',
            minute: '2-digit',
            hour12: false,
          },
          events: {{ fullcalendar_events | tojson(indent=2) }},
          eventDidMount: function(info) {
            info.el.title = info.event.title;
          },
        })
        calendar.render()
      })

    </script>

</head>

{% set event_labels = {
  "economist": "📰 The Economist",
  "mothers_day": "Mothers' day",
  "fathers_day": "Fathers' day",
  "uk_financial_year_end": "End of financial year",
  "bank_holiday": "UK bank holiday",
  "us_holiday": "US holiday",
  "uk_clock_change": "UK clock change",
  "us_clock_change": "US clock change",
  "us_presidential_election": "US pres. election",
  "xmas_last_second": "Christmas last posting 2nd class",
  "xmas_last_first": "Christmas last posting 1st class",
  "up_series": "Up documentary",
  "waste_schedule": "Waste schedule",
  "gwr_advance_tickets": "GWR advance tickets",
  "critical_mass": "Critical Mass",
}
%}

{%set class_map = {
  "bank_holiday": "bg-success-subtle",
  "conference": "bg-primary-subtle",
  "us_holiday": "bg-secondary-subtle",
  "birthday": "bg-info-subtle",
  "waste_schedule": "bg-danger-subtle",
} %}



{% from "navbar.html" import navbar with context %}
<body>
  {{ navbar() }}

  <div class="container-fluid mt-2">
    <h1>Agenda</h1>
    <p>
      <a href="/tools">&larr; personal tools</a>
    </p>

    <ul>
    <li>Today is {{now.strftime("%A, %-d %b %Y")}}</li>
    {% if gbpusd %}
      <li>GBPUSD: {{"{:,.3f}".format(gbpusd)}}</li>
    {% endif %}
    <li>GWR advance ticket furthest date:
      {% if gwr_advance_tickets %}
        {{ gwr_advance_tickets.strftime("%A, %-d %b %Y") }}
      {% else %}
        unknown
      {% endif %}
    </li>
    <li>Bristol Sunrise: {{ sunrise.strftime("%H:%M:%S") }} /
    Sunset: {{ sunset.strftime("%H:%M:%S") }}</li>
    </ul>

  {% if errors %}
    {% for error in errors %}
      <div class="alert alert-danger" role="alert">
        Error: {{ error }}
      </div>
    {% endfor %}
  {% endif %}

  <h3>Stock markets</h3>
  {% for market in stock_markets %}
    <p>{{ market }}</p>
  {% endfor %}

  <div class="mb-3" id="calendar"></div>

  <h3>Agenda</h3>

  {% for event in events if event.as_date >= two_weeks_ago %}
  {% if loop.first or event.date.year != loop.previtem.date.year or event.date.month != loop.previtem.date.month %}
  <div class="row mt-2">
    <div class="col">
      <h4>{{ event.date.strftime("%B %Y") }}</h4>
    </div>
  </div>
  {% endif %}
  {% set delta = event.delta_days(today) %}
  {% if event.name == "today" %}
    <div class="row">
      <div class="col bg-warning-subtle">
        <h3>today</h3>
      </div>
    </div>
  {% else %}
    {% set cell_bg = " bg-warning-subtle" if delta == "today" else "" %}
    <div class="row border border-1 {% if event.name in class_map %} {{ class_map[event.name]}}{% else %}{{ cell_bg }}{% endif %}">
      <div class="col-md-2{{ cell_bg }}">
        {{event.as_date.strftime("%a, %d, %b")}}
        &nbsp;
        &nbsp;
        {{event.display_time or ""}}
        &nbsp;
        &nbsp;
        {{event.display_timezone or ""}}
      </div>

      <div class="col-md-2{{ cell_bg }}">
        {% if event.end_date %}
          {% if event.end_as_date == event.as_date and event.has_time %}
            end: {{event.end_date.strftime("%H:%M") }}
            (duration: {{event.end_date - event.date}})
          {% elif event.end_date != event.date %}
            {{event.end_date}}
          {% endif %}
        {% endif %}
      </div>

      <div class="col-md-7 text-start">
        {% if event.url %}<a href="{{ event.url }}">{% endif %}
      {{ event_labels.get(event.name) or event.name }}
      {%- if event.title -%}: {{ event.title_with_emoji }}{% endif %}
      {% if event.url %}</a>{% endif %}
      </div>
      <div class="col-md-1{{ cell_bg }}">
      {{ delta }}
      </div>
    </div>
    {% endif %}
  {% endfor %}

  <div class="mt-2">
    <h5>Page generation time</h5>
    <ul>
    <li>Data gather took {{ "%.1f" | format(data_gather_seconds) }} seconds</li>
    <li>Stock market open/close took
        {{ "%.1f" | format(stock_market_times_seconds) }} seconds</li>
    {% for name, seconds in timings %}
    <li>{{ name }} took {{ "%.1f" | format(seconds) }} seconds</li>
    {% endfor %}

    </ul>
  </div>

  </div>
  <script src="{{ url_for("static", filename="bootstrap5/js/bootstrap.bundle.min.js") }}"></script>
</body>
</html>