{{ define "title" }}
  {{ .Page.Title | plainify }} | {{ .Site.Title }}
{{ end }}

{{ define "main-class" }}
  {{- if .IsDescendant ( .GetPage "/cv/organisations" ) -}}--single{{- else -}}--section{{- end }} layouts-cv-section
{{ end }}

{{ define "header-scripts" }} 
  {{ if ( or ( eq .Type "cv" ) ( .IsDescendant ( .GetPage "/cv/organisations" ) ) ) }}
    <script id="Google-Charts-script" src="/js/google-charts.js"></script>
  {{ end }}
{{ end }}

{{ define "footer-scripts" }}
   {{ if .IsDescendant ( .GetPage "/cv/organisations" ) }}
      {{ $titles := .Scratch.Get "titles" }}
      <script>
        google.charts.load('current', {'packages':['timeline']});
        google.charts.setOnLoadCallback(drawChart);

        function drawChart() {
         var container = document.getElementById('timeline');
         var chart = new google.visualization.Timeline(container);
         var dataTable = new google.visualization.DataTable();

         dataTable.addColumn({ type: 'string', id: 'Type' });
         dataTable.addColumn({ type: 'string', id: 'Job Title' });
         dataTable.addColumn({ type: 'string', id: 'style', role: 'style' });
         dataTable.addColumn({ type: 'date', id: 'Start' });
         dataTable.addColumn({ type: 'date', id: 'End' });
         dataTable.addRows([
           {{- $unpaid_past := "#FFFFF0" -}}
           {{- $paid_past := "#FCFCA6" -}}
           {{- $unpaid_current := "#BBBBB0" -}}
           {{- $paid_current := "#BCBC7E" -}}
           {{ with ( .GetPage "cv/roles" ).Pages -}}
             {{- range ( where . ".Params.organisations" "intersect" $titles ) -}}
               {{- if ( not ( and ( .Params.redact ) ( ne $.Site.Params.redact "show" ) ) ) -}}
               [
                  "
                  {{- with .Params.organisations -}}
                    {{- $.Scratch.Set "parents" ( slice ) -}}
                    {{- range . -}}
                      {{- range ( where ( where $.Site.Pages "Type" "cv" ) "Title" . ) -}}
                        {{- if ( and ( .Params.redact ) ( ne $.Site.Params.redact "show" ) ) -}}
                          {{- if ( eq $.Site.Params.redact "black" ) -}}
                          {{- $.Scratch.Set "parents" ( $.Scratch.Get "parents" | append "███████████████" ) -}}
                          {{- end -}}
                        {{- else -}}
                          {{- $.Scratch.Set "parents" ( $.Scratch.Get "parents" | append ( .Title | plainify ) ) -}}
                        {{- end -}}
                      {{- else -}}
                        {{ erroridf "missing-organisation" "Could not find organisation %q (%q)" . $.File.Path }}
                      {{- end -}}
                    {{- end -}}
                    {{- delimit ( $.Scratch.Get "parents" ) ", " -}}
                    {{- $.Scratch.Delete "parents" -}}
                  {{- end -}}
                  ",
                  "
                  {{- if ( and ( .Params.redact ) ( ne $.Site.Params.redact "show" ) ) -}}
                    {{- if ( eq $.Site.Params.redact "black" ) -}}
                      ███████████████
                    {{- end -}}
                  {{- else -}}
                    {{- .Title | plainify -}}
                  {{- end -}}
                  ",
                 "{{ if .Params.end_date -}}
                   {{- if .Params.paid -}}
                   {{- $paid_past -}}
                   {{- else -}}
                   {{- $unpaid_past -}}
                   {{- end -}}
                 {{- else -}}
                    {{- if .Params.paid -}}
                    {{- $paid_current -}}
                    {{- else -}}
                    {{- $unpaid_current -}}
                    {{- end -}}
                {{- end }}",
                 new Date("{{ .Date.Format "2006-01-02" }}"),
                 new Date("
                    {{- if .Params.end_date -}}
                      {{- .Params.end_date -}}
                   {{- else -}}
                      {{- now.Format "2006-01-02" -}}
                   {{- end -}}
                 ")
               ],
               {{- end -}}
             {{- end -}}
           {{ end -}}
         ]);

         var options = {
            title: '{{ .Title | plainify }} Roles Timeline',
            height: '100%',
            chartArea: {
                width: '94%'
            },
            width: '100%',
            timeline: { showBarLabels: true }
         };

          chart.draw(dataTable, options);
        }
      </script>
   {{ else }}
      {{ $js := resources.Get "js/roles-chart.js" | resources.ExecuteAsTemplate "/js/render-roles-timeline.js" ( .GetPage "cv/roles" ) | resources.Fingerprint }}
      <script src="{{ $js.RelPermalink }}" integrity="{{ $js.Data.Integrity }}"></script>
   {{ end }}
{{ end }}

{{ define "main-header" }}
  {{ if .IsDescendant ( .GetPage "/cv/organisations" ) }}
      <header class="site-content__header">
          <div class="article-header__featured-image"
          {{ if .Params.featured_image }}
              {{ with .Resources.GetMatch .Params.featured_image }}
              style="background-image: url({{ .RelPermalink }})"
              {{ end }}
          {{ end }}>
            <div class="article-header__title-wrapper{{ if .Params.title_in_logo }} article-header__title-wrapper--no-title{{ end }}">
                <h2 class="article-header__title">{{ if ( .Params.markup_title ) }}{{ .Params.markup_title | safeHTML }}{{ else }}{{ .Title }}{{ end }}</h2>
            </div>
          </div>
          {{- with .Params.nka -}}<p>Now known as: {{ . }}</p>{{- end -}}
          {{- with .Params.fka -}}<p>Formerly known as: {{ . }}</p>{{- end -}}
          {{- with .Params.tka -}}<p>Then known as: {{ . }}</p>{{- end -}}
      </header>
  {{ else }}
    <header class="site-content__header">
      <h2 class="page-title">{{ .Title | safeHTML }}. {{ if not ( or ( eq .Type "cv" ) ( eq .Type "cv/organisations" ) ) -}}
        {{- range .AlternativeOutputFormats -}}
            <a href="{{ .RelPermalink }}" aria-label="{{ $.Title }} RSS feed">
              <img class="feed-icon" alt="RSS feed" src="{{ $.Site.Params.feedIcon }}">
            </a>
        {{- end -}}
      {{- end -}}
      </h2>
      {{- .Content -}}

      {{- if ( and ( eq .Type "cv" ) ( not ( .IsDescendant ( .GetPage "/cv/organisations" ) ) ) ) -}}
        <nav class="page-header__minor-links">
          <ul>
              {{ range ( where .Sections "Type" "not in" ( slice "cv/roles" ) ).ByTitle }}
                <li><a href="{{ .RelPermalink }}"><h3>{{ .Title }}</h3></a> <p>({{ len (where ( where .Site.Pages "Section" "cv" ) "Parent.Title" .Title ) }})</p></li>
            {{ end }}
          </ul>
        </nav>
        {{- partialCached "cv/timeline-legend.html" . -}}
      {{- else -}}
        <nav class="page-header__minor-links">
          {{- partial "years-list.html" . -}}
        </nav>
      {{- end -}}
    </header>
  {{ end }}
{{ end }}

{{ define "main-body" }}
  {{ if .IsDescendant ( .GetPage "/cv/organisations" ) }}
      {{ $titles := slice ( .Title | plainify ) }}
      {{ with .Sections }}
        {{ $titles = $titles | append ( partial "cv/organisations/recursive-children-titles.html" . ) }}
      {{ end }}
      {{ .Scratch.Set "titles" $titles }}

      <main id="organisation-body" class="site-content__body">
	    <section id="description">
          {{ .Content }}
        </section>

        <section id="roles-timeline">
          <div id="timeline" aria-label="Roles timeline" role="img">Javascript must be enabled to view this chart.</div>
        </section>

        <section id="related" class="row">
          {{- $titles := .Scratch.Get "titles" -}}

          {{ range ( where ( ( .GetPage "blog" ).Sections ) "Title" "Blog Posts" ) }}
            {{ $section_title := .Title }}
            {{ with where ( where ( where ( where .Site.Pages "Section" "blog" ) "Parent.Title" .Title ) ".Params.organisations" "intersect" $titles ) ".Params.redact" false }}
              {{ partial "cv/organisations/organisation-items.html" ( dict "section_title" $section_title "content" . ) }}
            {{ end }}
          {{ end }}

          {{ range ( where ( ( .GetPage "portfolio" ).Sections ) "Title" "!=" "Appearances" ).ByTitle }}
            {{ $section_title := .Title }}
            {{ with where ( where ( where ( where .Site.Pages "Section" "portfolio" ) "Parent.Title" .Title ) ".Params.organisations" "intersect" $titles ) ".Params.redact" false }}
              {{ partial "cv/organisations/organisation-items.html" ( dict "section_title" $section_title "content" . ) }}
            {{ end }}
          {{ end }}

          {{ range ( where ( ( .GetPage "cv" ).Sections ) "Title" "Qualifications" ) }}
            {{ $section_title := .Title }}
            {{ with where ( where ( where ( where .Site.Pages "Section" "cv" ) "Parent.Title" .Title ) ".Params.organisations" "intersect" $titles ) ".Params.redact" false }}
              {{ partial "cv/organisations/organisation-items.html" ( dict "section_title" $section_title "content" . ) }}
            {{ end }}
          {{ end }}

          {{ range ( where ( (.GetPage "cv").Sections ) "Title" "Awards" ) }}
            {{ $section_title := .Title }}
            {{ with where ( where ( where ( where .Site.Pages "Section" "cv" ) "Parent.Title" .Title ) ".Params.organisations" "intersect" $titles ) ".Params.redact" false }}
              {{ partial "cv/organisations/organisation-items.html" ( dict "section_title" $section_title "content" . ) }}
            {{ end }}
          {{ end }}

          {{ range ( where ( (.GetPage "portfolio").Sections ) "Title" "Appearances" ).ByTitle }}
            {{ $section_title := .Title }}
            {{ with where ( where ( where ( where .Site.Pages "Section" "portfolio" ) "Parent.Title" .Title ) ".Params.organisations" "intersect" $titles ) ".Params.redact" false }}
              {{ partial "cv/organisations/organisation-items.html" ( dict "section_title" $section_title "content" . ) }}
            {{ end }}
          {{ end }}
	      </section>
      </main>
    {{ else if eq .Type "cv" }}
      <article class="site-content__body site-content__body--chart">
        <div id="timeline" aria-label="Roles timeline" role="img">Javascript must be enabled to view this chart.</div>
      </article>
    {{ else }}
        {{ partial "items-grid.html" . }}
    {{ end }}
{{ end }}

{{ define "main-footer" }}
  {{ if .IsDescendant ( .GetPage "/cv/organisations" ) }}
    <footer class="site-content__footer">
      <section id="hierarchy">
        <h3 class="subheading">Hierarchy</h3>
        {{ $.Scratch.Set "parents" ( slice ) }}
        {{ partial "cv/organisations/recursive-parents.html" ( dict "c" . "g" $ ) }}
        {{- $parents := partial "cv/organisations/reverse-slice.html" ( $.Scratch.Get "parents" ) -}}

        {{- range $parents -}}<ul><li class="hierarchy-item hierarchy-item--parent"><a href="{{ .RelPermalink }}">{{ .Title | safeHTML }}</a>{{- end -}}
        <ul><li class="hierarchy-item hierarchy-item--current">{{ .Title | safeHTML }}</li>
          {{ range .Sections }}<ul>{{ partial "cv/organisations/recursive-children.html" . }}</ul>{{ end }}
        </ul>
        {{- range $parents -}}</li></ul>{{- end -}}
      </section>
    </footer>
  {{ end }}
{{ end }}