jekyll-theme-conference 2.5.3 → 3.0.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (49) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +85 -50
  3. data/_includes/js/conference-live.js +193 -104
  4. data/_includes/js/conference-modal.js +32 -15
  5. data/_includes/js/conference-program.js +48 -0
  6. data/_includes/js/conference.js +11 -11
  7. data/_includes/js/jquery-3.5.1.min.js +2 -0
  8. data/_includes/partials/checks.html +66 -31
  9. data/_includes/partials/footer.html +4 -21
  10. data/_includes/partials/get_day_hash.html +20 -0
  11. data/_includes/partials/get_day_time.html +19 -0
  12. data/_includes/partials/get_link.html +56 -64
  13. data/_includes/partials/get_link_types.html +14 -14
  14. data/_includes/partials/get_live_timestamps.html +49 -0
  15. data/_includes/partials/get_main_category.html +9 -9
  16. data/_includes/partials/get_talk_time.html +7 -7
  17. data/_includes/partials/get_talk_timestamp.html +4 -0
  18. data/_includes/partials/get_time_pronoun.html +6 -0
  19. data/_includes/partials/header.html +15 -12
  20. data/_includes/partials/info_bar.html +22 -22
  21. data/_includes/partials/list_categories.html +2 -2
  22. data/_includes/partials/list_speakers.html +14 -18
  23. data/_includes/partials/list_sub_categories.html +7 -7
  24. data/_includes/partials/modal_link.html +21 -0
  25. data/_includes/partials/{live-modal.html → modal_live.html} +7 -10
  26. data/_includes/partials/navbar.html +32 -32
  27. data/_includes/partials/navbar_rooms.html +21 -20
  28. data/_includes/partials/{live_button.html → show_live_button.html} +6 -8
  29. data/_includes/partials/show_room.html +5 -5
  30. data/_includes/partials/show_talk.html +3 -3
  31. data/_includes/partials/show_talk_duration.html +1 -1
  32. data/_includes/partials/show_talk_time.html +16 -2
  33. data/_layouts/data.html +91 -0
  34. data/_layouts/home.html +17 -18
  35. data/_layouts/program.html +179 -148
  36. data/_layouts/room.html +42 -38
  37. data/_layouts/speaker.html +41 -39
  38. data/_layouts/talk-overview.html +83 -53
  39. data/_layouts/talk.html +38 -39
  40. data/_sass/conference.scss +43 -17
  41. data/assets/icons/live.svg +33 -57
  42. data/assets/js/data.json +3 -0
  43. data/assets/js/main.js +0 -6
  44. metadata +14 -9
  45. data/_includes/js/conference-data.js +0 -87
  46. data/_includes/js/jquery-3.2.1.slim.min.js +0 -4
  47. data/_includes/partials/get_conf_time.html +0 -54
  48. data/_includes/partials/get_timestamp.html +0 -4
  49. data/_layouts/delete_hidden.html +0 -25
@@ -4,40 +4,41 @@
4
4
  {{ site.data.lang[site.conference.lang].location.directions | default: "Directions" }}
5
5
  </a>
6
6
  </li>
7
- {% for r in site.data.program %}
8
- {% assign room = site.rooms | where: 'name', r.room | first %}
7
+ {%- for room in site.rooms -%}
9
8
  <li class="nav-item">
10
- {% if room.hide %}
9
+ {%- if room.hide %}
11
10
  <span class="nav-item nav-link disabled">
12
11
  {{ room.name }}
13
12
  </span>
14
- {% else %}
13
+ {%- else %}
15
14
  <a class="nav-link {% if this_room.name == room.name %}active{% endif %}" href="{{ room.url | prepend: site.baseurl }}">
16
15
  {{ room.name }}
17
16
  </a>
18
- {% endif %}
17
+ {%- endif %}
19
18
  </li>
20
- {% endfor %}
21
- {% for room in site.rooms %}
22
- {% assign room_displayed = false %}
23
- {% for r in site.data.program %}
24
- {% if room.name == r.room %}
25
- {% assign room_displayed = true %}
26
- {% break %}
27
- {% endif %}
28
- {% endfor %}
29
- {% unless room_displayed %}
19
+ {%- endfor -%}
20
+ {%- for room in site.rooms -%}
21
+ {%- assign room_displayed = false -%}
22
+ {%- for d in site.data.program.days -%}
23
+ {%- for r in d.rooms -%}
24
+ {%- if room.name == r.name -%}
25
+ {%- assign room_displayed = true -%}
26
+ {%- break -%}
27
+ {%- endif -%}
28
+ {%- endfor -%}
29
+ {%- endfor -%}
30
+ {%- unless room_displayed %}
30
31
  <li class="nav-item">
31
- {% if room.hide or site.conference.location.hide %}
32
+ {%- if room.hide or site.conference.location.hide %}
32
33
  <span class="nav-item nav-link disabled">
33
34
  {{ room.name }}
34
35
  </span>
35
- {% else %}
36
+ {%- else %}
36
37
  <a class="nav-link {% if this_room.name == room.name %}active{% endif %}" href="{{ room.url | prepend: site.baseurl }}">
37
38
  {{ room.name }}
38
39
  </a>
39
- {% endif %}
40
+ {%- endif %}
40
41
  </li>
41
- {% endunless %}
42
- {% endfor %}
42
+ {%- endunless -%}
43
+ {%- endfor %}
43
44
  </ul>
@@ -1,13 +1,11 @@
1
- {% if site.conference.live %}
2
- {% assign time_start = t.time_start %}
3
- {% assign time_end = t.time_end %}
4
- {% include partials/get_timestamp.html %}
1
+ {%- if site.conference.live -%}
2
+ {%- include partials/get_talk_timestamp.html -%}
5
3
 
6
4
  {%- if site.conference.live.streaming -%}
7
- <a title="{{ link.name }}" data-toggle="modal" data-target="#stream-modal" data-room="{{ r.room }}" href="#"
5
+ <a title="{{ link.name }}" data-toggle="modal" data-target="#stream-modal" data-room="{{ r.name }}" href="#"
8
6
  {%- else -%}
9
7
  <span
10
- {%- endif %} class="live-show live-button badge badge-dark font-weight-normal text-left d-none {{ live_button_styleclass }}" data-start="{{ timestamp_start }}" data-end="{{ timestamp_end }}">
8
+ {%- endif %} class="live-show live-button badge badge-dark font-weight-normal text-center d-none {{ live_button_styleclass }}" data-start="{{ timestamp_start }}" data-end="{{ timestamp_end }}">
11
9
  <object data="{{ site.baseurl }}/assets/icons/live.svg" type="image/svg+xml">!</object>
12
10
  {{ site.data.lang[site.conference.lang].live.live | default: "Live" }}
13
11
  {%- if site.conference.live.streaming -%}
@@ -15,5 +13,5 @@
15
13
  {%- else -%}
16
14
  </span>
17
15
  {%- endif -%}
18
- {% assign live_button_styleclass = "" %}
19
- {% endif %}
16
+ {%- assign live_button_styleclass = "" -%}
17
+ {%- endif -%}
@@ -1,5 +1,5 @@
1
- {% if room.hide or site.conference.location.hide %}
2
- <span class="badge badge-light font-weight-normal text-left"><i class="far fa-square"></i> {{ room.name }}</span><!--
3
- {% else %}
4
- <a href="{{ room.url | prepend: site.baseurl }}" class="badge badge-light font-weight-normal"><i class="far fa-square"></i> {{ room.name }}</a><!--
5
- {% endif %}-->
1
+ {%- if room.hide or site.conference.location.hide -%}
2
+ <span class="badge badge-light font-weight-normal text-left"><i class="far fa-square"></i>&nbsp;{{ room.name }}</span>
3
+ {%- else -%}
4
+ <a href="{{ room.url | prepend: site.baseurl }}" class="badge badge-light font-weight-normal"><i class="far fa-square"></i>&nbsp;{{ room.name }}</a>
5
+ {%- endif -%}
@@ -1,5 +1,5 @@
1
- {% if talk.hide %}
1
+ {%- if talk.hide -%}
2
2
  {{ talk.name }}
3
- {% else %}
3
+ {%- else -%}
4
4
  <a class="text-reset" href="{{ talk.url | prepend: site.baseurl }}">{{ talk.name }}</a>
5
- {% endif %}
5
+ {%- endif -%}
@@ -1,3 +1,3 @@
1
1
  <span class="badge badge-light font-weight-normal text-left">
2
- <i class="fas fa-stopwatch"></i> {{ talk_duration_min }}min
2
+ <i class="fas fa-stopwatch"></i>&nbsp;{{ talk_duration_min }}min
3
3
  </span>
@@ -1,3 +1,17 @@
1
- <a href="{{ site.conference.program.url | prepend: site.baseurl }}" class="badge badge-light font-weight-normal text-left">
2
- <i class="far fa-clock"></i> {{ talk_start_hour }}:{% if talk_start_min == 0 %}0{%endif %}{{ talk_start_min }}
1
+ {%- assign nbr_days = site.data.program.days | size -%}
2
+
3
+ <a href="
4
+ {{- site.conference.program.url | prepend: site.baseurl -}}
5
+ {%- if nbr_days > 1 and day_hash -%}
6
+ #{{ day_hash }}
7
+ {%- endif -%}
8
+ " class="badge badge-light font-weight-normal text-left {{ talk_time_styleclass }}">
9
+ <i class="far fa-clock"></i>&nbsp;
10
+ {%- if nbr_days > 1 and day_abbr -%}
11
+ {%- unless talk_day_hide -%} {{ day_abbr }}, {% endunless -%}
12
+ {%- assign talk_day_hide = false -%}
13
+ {% endif -%}
14
+ {{- talk_start_hour -}}:{%- if talk_start_min == 0 -%}0{%- endif -%}{{- talk_start_min -}}
3
15
  </a>
16
+
17
+ {%- assign talk_time_styleclass = "" -%}
@@ -0,0 +1,91 @@
1
+ {% if site.conference.live and site.conference.live.streaming -%}
2
+ {
3
+ "days": [
4
+ {%- for d in site.data.program.days %}
5
+ {
6
+ {%- include partials/get_day_hash.html %}
7
+ "name": "{{ day_name }}",
8
+ "hash": "{{ day_hash }}",
9
+ "date": "{{ d.date }}"
10
+ }{%- unless forloop.last -%},{%- endunless %}
11
+ {%- endfor %}
12
+ ],
13
+
14
+ "rooms": {
15
+ {%- for room in site.rooms %}
16
+ {%- if room.live %}
17
+ "{{ room.name }}": {
18
+ "id": {{ forloop.index }},
19
+ "name": "{{ room.name }}",
20
+ "href": "{{ room.live }}"
21
+ }{%- unless forloop.last -%},{%- endunless %}
22
+ {%- endif -%}
23
+ {%- endfor %}
24
+ },
25
+
26
+ "speakers": {
27
+ {%- for speaker in site.speakers %}
28
+ "{{ speaker.name }}" : {
29
+ {%- if site.conference.speakers.show_firstname %}
30
+ "name": "{{ speaker.first_name | append: ' ' | append: speaker.last_name }}",
31
+ {%- else %}
32
+ "name": "{{ speaker.first_name | slice: 0 | append : '. ' | append: speaker.last_name }}",
33
+ {%- endif -%}
34
+ {%- if speaker.hide %}
35
+ "href": ""
36
+ {%- else %}
37
+ "href": "{{ speaker.url | prepend: site.baseurl }}"
38
+ {%- endif %}
39
+ }{%- unless forloop.last -%},{%- endunless %}
40
+ {%- endfor %}
41
+ },
42
+
43
+ "talks": {
44
+ {%- for room in site.rooms -%}
45
+ {%- assign room_has_talks = false %}
46
+ {%- for d in site.data.program.days -%}
47
+ {%- for r in d.rooms -%}
48
+ {%- if room.name == r.name and room.live %}
49
+
50
+ {%- unless room_has_talks %}
51
+ "{{ room.name | replace: '"', '\"' }}": [
52
+ {%- assign room_has_talks = true %}
53
+ {%- else -%}
54
+ ,
55
+ {%- endunless -%}
56
+
57
+ {%- for t in r.talks %}
58
+ {%- assign talk = site.talks | where: 'name', t.name | first %}
59
+ {
60
+ "name": "{{ talk.name | replace: '"', '\"' }}",
61
+
62
+ {%- unless talk.hide %}
63
+ "href": "{{ talk.url | prepend: site.baseurl }}",
64
+ {%- else %}
65
+ "href": "",
66
+ {%- endunless -%}
67
+
68
+ {%- include partials/get_main_category.html %}
69
+ "color": "{{ main_cat_color }}",
70
+ "speakers": [
71
+ {%- for speaker_name in talk.speakers %}
72
+ "{{ speaker_name}}"{%- unless forloop.last -%},{%- endunless -%}
73
+ {%- endfor %}
74
+ ],
75
+
76
+ {%- include partials/get_talk_timestamp.html %}
77
+ "start": {{ timestamp_start }},
78
+ "end": {{ timestamp_end }}
79
+ }{%- unless forloop.last -%},{%- endunless -%}
80
+ {%- endfor -%}
81
+ {%- endif -%}
82
+ {%- endfor -%}
83
+ {%- endfor -%}
84
+
85
+ {%- if room_has_talks %}
86
+ ]{%- unless forloop.last -%},{%- endunless -%}
87
+ {%- endif -%}
88
+ {%- endfor %}
89
+ }
90
+ }
91
+ {%- endif -%}
@@ -23,11 +23,12 @@
23
23
 
24
24
  {% if site.conference.main.links %}
25
25
  <div class="lead d-print-none">
26
+ {% assign btn_default = 'btn btn-outline-primary btn-lg mt-2 ml-1' %}
26
27
  {% for link in site.conference.main.links %}
27
28
 
28
29
  {% if link.menu %}
29
30
  <div class="dropdown d-inline">
30
- <a class="btn btn-outline-primary btn-lg mt-2 dropdown-toggle" href="#" role="button" id="main-dropdown{{ forloop.index0 }}" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
31
+ <a class="{{ btn_default }} dropdown-toggle" href="#" role="button" id="main-dropdown{{ forloop.index0 }}" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
31
32
  {{ link.name }}
32
33
  </a>
33
34
  <div class="dropdown-menu" aria-labelledby="main-dropdown{{ forloop.index0 }}">
@@ -43,27 +44,25 @@
43
44
  </div>
44
45
 
45
46
  {% elsif link.live %}
46
- {% include partials/get_conf_time.html %}
47
- {% assign time_start = conf_start %}
48
- {% assign time_end = conf_end %}
49
- {% include partials/get_timestamp.html %}
47
+ {%- include partials/get_live_timestamps.html -%}
50
48
 
51
- {% assign offset_start = site.conference.live.streaming.start_early | default: 0 %}
52
- {% assign offset_end = site.conference.live.streaming.end_late | default: 0 %}
53
- {% assign timestamp_start = offset_start | times: -60 | plus: timestamp_start %}
54
- {% assign timestamp_end = offset_end | times: 60 | plus: timestamp_end %}
49
+ {%- if link.name -%}
50
+ {%- assign link_name = link.name -%}
51
+ {%- else -%}
52
+ {%- assign link_name = site.data.lang[site.conference.lang].live.streaming | default: "Live Stream" -%}
53
+ {%- endif -%}
55
54
 
56
- {% if link.name %}
57
- {% assign link_name = link.name %}
58
- {% else %}
59
- {% assign link_name = site.data.lang[site.conference.lang].live.streaming | default: "Live Stream" %}
60
- {% endif %}
55
+ {%- if link.name_inactive -%}
56
+ <span class="live-hide {{ btn_default }} disabled" data-start="{{ live_starts }}" data-end="{{ live_ends }}">
57
+ {{ link.name_inactive }}
58
+ </span>
59
+ {%- endif -%}
61
60
 
62
- <span class="live-show d-none" data-start="{{ timestamp_start }}" data-end="{{ timestamp_end }}">
61
+ <span class="live-show d-none" data-start="{{ live_starts }}" data-end="{{ live_ends }}">
63
62
  {% if site.conference.live.streaming %}
64
- <a class="btn btn-outline-primary btn-lg mt-2" title="{{ link_name }}" data-toggle="modal" data-target="#stream-modal" data-room="" href="#">
63
+ <a class="{{ btn_default }}" title="{{ link_name }}" data-toggle="modal" data-target="#stream-modal" data-room="" href="#">
65
64
  {% else %}
66
- {% assign link_styleclass = "btn btn-outline-primary btn-lg mt-2" %}
65
+ {% assign link_styleclass = "{{ btn_default }}" %}
67
66
  {% include partials/get_link.html %}
68
67
  {{ link_tag }}
69
68
  {% endif %}
@@ -73,7 +72,7 @@
73
72
  </span>
74
73
 
75
74
  {% else %}
76
- {% assign link_styleclass = "btn btn-outline-primary btn-lg mt-2" %}
75
+ {% assign link_styleclass = btn_default %}
77
76
  {% include partials/get_link.html %}
78
77
  {{ link_tag }}
79
78
  {{ link.name }}
@@ -1,161 +1,192 @@
1
1
  {% include partials/header.html %}
2
-
3
- {% include partials/get_conf_time.html %}
4
- {% assign nbr_steps = conf_duration_min | divided_by: site.conference.program.time_steps %}
5
-
6
- <h1 class="display-5 mb-4">
7
- {% if page.title %}
8
- {{ page.title }}
9
- {% else %}
10
- {{ site.data.lang[site.conference.lang].program.title | default: "Program" }}
11
- {% endif %}
2
+ {% assign nbr_days = site.data.program.days | size -%}
3
+
4
+ <h1 class="display-5 {% if nbr_days > 1 -%} mb-2 {%- else -%} mb-4 {%- endif %}">
5
+ {%- if page.title -%}
6
+ {{- page.title -}}
7
+ {%- else -%}
8
+ {{- site.data.lang[site.conference.lang].program.title | default: "Program" -}}
9
+ {%- endif -%}
12
10
  </h1>
13
11
 
14
12
  {{ content }}
15
13
 
16
- <div class="sticky-top syncscroll overflow-hidden" name="sync-table">
17
- <table class="table mb-0">
18
- <thead>
19
- <tr>
20
- <th scope="col" class="text-center">#</th>
21
- <th class="p-0" scope="col"></th>
22
- {% assign nbr_rooms = site.data.program | size %}
23
- {% for r in site.data.program %}
24
- {% assign room = site.rooms | where: 'name', r.room | first %}
25
- <th scope="col" class="text-center">
26
- {% if room.hide or site.conference.location.hide %}
27
- {{ room.name }}
28
- {% else %}
29
- <a class="text-reset" href="{{ room.url | prepend: site.baseurl }}">{{ room.name }}</a>
30
- {% endif %}
31
- </th>
32
- {% if forloop.last != true %}
33
- <th class="p-0" scope="col"></th>
34
- {% endif %}
35
- {% endfor %}
36
- </tr>
37
- </thead>
38
- </table>
39
- </div>
40
-
41
- <div class="syncscroll overflow-y-hidden" name="sync-table">
42
- <table class="table">
43
- <tbody>
44
- <!--
45
- The shadow of a previous program block should be above a later program block, thus
46
- the earlier a program block the higher its z-index (opposite to the actual rendering).
47
-
48
- Bootstrap uses as lowest z-index for its overlapping elements a z-index of 1000 (for
49
- $zindex-dropdown).
50
- -->
51
- {% assign z-index-max = 999 %}
52
-
53
- {% for i in (1..nbr_steps) %}
54
- {% assign current_hour = i | minus: 1 | times: site.conference.program.time_steps | plus: conf_start_min | divided_by: 60 | floor | plus: conf_start_hour | modulo: 24 %}
55
- {% assign current_min = i | minus: 1 | times: site.conference.program.time_steps | plus: conf_start_min | modulo: 60 %}
56
- {% if current_min < 10 %}
57
- {% assign current_time = current_hour | append: ':0' | append: current_min %}
58
- {% else %}
59
- {% assign current_time = current_hour | append: ':' | append: current_min %}
60
- {% endif %}
61
-
14
+ {%- if nbr_days > 1 %}
15
+ <ul class="nav justify-content-center mb-3 btn-group" id="day-list" role="tablist">
16
+ {%- for d in site.data.program.days -%}
17
+ {%- include partials/get_day_hash.html %}
18
+ <li class="nav-item" role="presentation">
19
+ <a class="nav-link btn btn-outline-secondary {%- if forloop.index == 1 %} active{% endif %}" id="tab-{{ day_hash }}" data-toggle="tab" {%- if d.date %} data-date="{{ d.date }}" {%- endif %} href="#{{ day_hash }}" role="tab" aria-controls="{{ day_hash }}" aria-selected="{% if forloop.index == 1 %}true{% else %}false{% endif %}">{{ day_name }}</a>
20
+ </li>
21
+ {%- endfor %}
22
+ </ul>
23
+ <div class="tab-content" id="day-content">
24
+ {%- endif %}
25
+
26
+ {%- for d in site.data.program.days -%}
27
+ {%- if nbr_days > 1 -%}
28
+ {%- include partials/get_day_hash.html %}
29
+ <div class="tab-pane {%- if forloop.index == 1 %} active{% endif %}" id="{{ day_hash }}" role="tabpanel" aria-labelledby="tab-{{ day_hash }}">
30
+ {%- endif %}
31
+
32
+ <div class="sticky-top syncscroll overflow-hidden" name="sync-table">
33
+ <table class="table mb-0 mx-auto">
34
+ <thead>
62
35
  <tr>
63
-
64
- {% if current_min == 0 %}
65
- <th scope="row" class="text-center" style="z-index: {{ z-index-max }}">
66
- {{ current_time }}
36
+ <th scope="col" class="col-title text-right">#<span class="invisible">I0</span></th>
37
+ <th class="col-space p-0" scope="col"></th>
38
+ {%- assign nbr_rooms = d.rooms | size -%}
39
+ {%- for r in d.rooms -%}
40
+ {%- assign room = site.rooms | where: 'name', r.name | first %}
41
+ <th scope="col" class="text-center">
42
+ {%- if room.hide or site.conference.location.hide -%}
43
+ {{- room.name -}}
44
+ {%- else -%}
45
+ <a class="text-reset" href="{{ room.url | prepend: site.baseurl }}">
46
+ {{- room.name -}}
47
+ </a>
48
+ {%- endif -%}
67
49
  </th>
68
- {% elsif site.conference.program.show_alltimes %}
69
- <th scope="row" class="text-center text-muted" style="z-index: {{ z-index-max }}">
70
- <span class="invisible">{{ current_hour }}</span><span class="font-weight-normal">:{{ current_min }}</span>
71
- </th>
72
- {% else %}
73
- <th scope="row" style="z-index: {{ z-index-max }}"></th>
74
- {% endif %}
75
- <td class="p-0"></td>
76
-
77
- {% for r in site.data.program %}
78
- {% assign room = site.rooms | where: 'name', r.room | first %}
79
-
80
- {% assign active_talk = false %}
81
- {% for t in r.talks %}
82
- {% assign talk = site.talks | where: 'name', t.name | first %}
83
-
84
- {% include partials/get_talk_time.html %}
85
-
86
- {% assign d_start_hour = current_hour | minus: talk_start_hour %}
87
- {% assign d_start_min = current_min | minus: talk_start_min %}
88
- {% assign d_end_hour = current_hour | minus: talk_end_hour %}
89
- {% assign d_end_min = current_min | minus: talk_end_min %}
90
-
91
- {% assign has_started = false %}
92
- {% if d_start_hour == 0 and d_start_min > 0 %}
93
- {% assign has_started = true %}
94
- {% endif %}
95
- {% if d_start_hour > 0 %}
96
- {% assign has_started = true %}
97
- {% endif %}
98
-
99
- {% assign has_ended = false %}
100
- {% if d_end_hour == 0 and d_end_min >= 0 %}
101
- {% assign has_ended = true %}
102
- {% endif %}
103
- {% if d_end_hour > 0 %}
104
- {% assign has_ended = true %}
105
- {% endif %}
106
-
107
- {% if has_started and has_ended == false %}
108
- {% assign active_talk = true %}
109
- {% endif %}
110
-
111
- {% if d_start_hour == 0 and d_start_min == 0 %}
112
-
113
- {% assign talk_nbr_steps = talk_duration_min | divided_by: site.conference.program.time_steps %}
114
- {% include partials/get_main_category.html %}
115
- <td rowspan="{{ talk_nbr_steps }}" class="alert alert-{{ main_cat_color }} shadow-sm" style="z-index: {{ z-index-max | minus: i }}">
116
-
117
- {% assign live_button_styleclass = "mb-2" %}
118
- {% include partials/live_button.html %}
119
-
120
- <p class="mb-2">
121
- {% include partials/show_talk.html %}
122
- </p>
123
- <p class="font-weight-light mb-2">
124
- {% include partials/list_speakers.html %}
125
- </p>
126
- <p class="mb-1">
127
- {% include partials/list_sub_categories.html %}
128
- </p>
129
- </td>
130
- {% assign active_talk = true %}
131
-
132
- {% endif %}
133
-
134
- {% endfor %}
135
-
136
- {% unless active_talk %}
137
- <td class="p-0"></td>
138
- {% endunless %}
139
-
140
- {% if forloop.last != true %}
141
- <td class="p-0"></td>
142
- {% endif %}
143
-
144
- {% endfor %}
145
-
50
+ {%- unless forloop.last %}
51
+ <th class="col-space p-0" scope="col"></th>
52
+ {%- endunless -%}
53
+ {%- endfor %}
146
54
  </tr>
147
- {% endfor %}
148
- </tbody>
149
- </table>
150
- </div>
151
-
152
- {% if site.conference.talks.main_categories %}
55
+ </thead>
56
+ </table>
57
+ </div>
58
+
59
+ <div class="syncscroll overflow-y-hidden" name="sync-table">
60
+ <table class="table mx-auto">
61
+ <tbody>
62
+ {%- include partials/get_day_time.html -%}
63
+
64
+ {%- assign day_duration_min = day_end_hour | minus: day_start_hour | times: 60 | minus: day_start_min | plus: day_end_min -%}
65
+ {%- assign nbr_steps = day_duration_min | divided_by: site.conference.program.time_steps -%}
66
+
67
+ <!--
68
+ The shadow of a previous program block should be above a later program block, thus
69
+ the earlier a program block the higher its z-index (opposite to the actual rendering).
70
+
71
+ Bootstrap uses as lowest z-index for its overlapping elements a z-index of 1000 (for
72
+ $zindex-dropdown).
73
+ -->
74
+ {%- assign z-index-max = 999 -%}
75
+
76
+ {%- for i in (1..nbr_steps) -%}
77
+ {%- assign current_hour = i | minus: 1 | times: site.conference.program.time_steps | plus: day_start_min | divided_by: 60 | floor | plus: day_start_hour | modulo: 24 -%}
78
+ {%- assign current_min = i | minus: 1 | times: site.conference.program.time_steps | plus: day_start_min | modulo: 60 -%}
79
+ {%- if current_min < 10 -%}
80
+ {%- assign current_time = current_hour | append: ':0' | append: current_min -%}
81
+ {%- else -%}
82
+ {%- assign current_time = current_hour | append: ':' | append: current_min -%}
83
+ {%- endif -%}
84
+
85
+ <tr>
86
+
87
+ {%- if current_min == 0 -%}
88
+ <th scope="row" class="col-title text-right" style="z-index: {{ z-index-max }}">
89
+ {{- current_time -}}
90
+ </th>
91
+ {%- elsif site.conference.program.show_alltimes -%}
92
+ <th scope="row" class="col-title text-right text-muted font-weight-normal" style="z-index: {{ z-index-max }}">
93
+ :{{ current_min }}
94
+ </th>
95
+ {%- else -%}
96
+ <th scope="row" class="col-title" style="z-index: {{ z-index-max }}"></th>
97
+ {%- endif %}
98
+ <td class="col-space p-0"></td>
99
+
100
+ {%- for r in d.rooms -%}
101
+ {%- assign room = site.rooms | where: 'name', r.name | first -%}
102
+
103
+ {%- assign active_talk = false -%}
104
+ {%- for t in r.talks -%}
105
+ {%- assign talk = site.talks | where: 'name', t.name | first -%}
106
+
107
+ {%- include partials/get_talk_time.html -%}
108
+
109
+ {%- assign d_start_hour = current_hour | minus: talk_start_hour -%}
110
+ {%- assign d_start_min = current_min | minus: talk_start_min -%}
111
+ {%- assign d_end_hour = current_hour | minus: talk_end_hour -%}
112
+ {%- assign d_end_min = current_min | minus: talk_end_min -%}
113
+
114
+ {%- assign has_started = false -%}
115
+ {%- if d_start_hour == 0 and d_start_min > 0 -%}
116
+ {%- assign has_started = true -%}
117
+ {%- endif -%}
118
+ {%- if d_start_hour > 0 -%}
119
+ {%- assign has_started = true -%}
120
+ {%- endif -%}
121
+
122
+ {%- assign has_ended = false -%}
123
+ {%- if d_end_hour == 0 and d_end_min >= 0 -%}
124
+ {%- assign has_ended = true -%}
125
+ {%- endif -%}
126
+ {%- if d_end_hour > 0 -%}
127
+ {%- assign has_ended = true -%}
128
+ {%- endif -%}
129
+
130
+ {%- if has_started and has_ended == false -%}
131
+ {%- assign active_talk = true -%}
132
+ {%- endif -%}
133
+
134
+ {%- if d_start_hour == 0 and d_start_min == 0 -%}
135
+
136
+ {%- assign talk_nbr_steps = talk_duration_min | divided_by: site.conference.program.time_steps -%}
137
+ {%- include partials/get_main_category.html -%}
138
+ <td rowspan="{{ talk_nbr_steps }}" class="alert alert-{{ main_cat_color }} shadow-sm overflow-hidden" style="z-index: {{ z-index-max | minus: i }}">
139
+
140
+ {%- assign live_button_styleclass = "mb-2" %}
141
+ {%- include partials/show_live_button.html %}
142
+
143
+ <p class="mb-2">
144
+ {%- include partials/show_talk.html %}
145
+ </p>
146
+ <p class="font-weight-light mb-2">
147
+ {%- include partials/list_speakers.html %}
148
+ </p>
149
+ <p class="mb-1">
150
+ {%- include partials/list_sub_categories.html %}
151
+ </p>
152
+ </td>
153
+ {%- assign active_talk = true %}
154
+
155
+ {%- endif %}
156
+
157
+ {%- endfor %}
158
+
159
+ {%- unless active_talk %}
160
+ <td class="p-0"></td>
161
+ {%- endunless -%}
162
+
163
+ {%- if forloop.last != true %}
164
+ <td class="col-space p-0"></td>
165
+ {%- endif -%}
166
+
167
+ {%- endfor %}
168
+
169
+ </tr>
170
+ {%- endfor %}
171
+ </tbody>
172
+ </table>
173
+ </div>
174
+
175
+ {%- if nbr_days > 1 %}
176
+ </div>
177
+ {%- endif -%}
178
+ {%- endfor -%}
179
+ {%- if nbr_days > 1 %}
180
+ </div>
181
+ {%- endif -%}
182
+
183
+ {%- if site.conference.talks.main_categories %}
153
184
  <h5 class="mt-4">{{ site.data.lang[site.conference.lang].program.legend | default: "Caption" }}</h5>
154
- {% for main_cat in site.conference.talks.main_categories %}
185
+ {%- for main_cat in site.conference.talks.main_categories %}
155
186
  <div class="d-block d-sm-inline-block m-1 p-1 pl-2 pr-2 border-soft-{{ main_cat.color }} bg-soft-{{ main_cat.color }} font-weight-normal">
156
- {{ main_cat.name }}
187
+ {{- main_cat.name -}}
157
188
  </div>
158
- {% endfor %}
159
- {% endif %}
189
+ {%- endfor -%}
190
+ {%- endif -%}
160
191
 
161
192
  {% include partials/footer.html %}