annotate 2015_04_21/scripts/script.js @ 0:47676a16ed13

Add Slides
author Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
date Tue, 14 Jul 2015 17:23:04 +0900
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
47676a16ed13 Add Slides
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1 (function () {
47676a16ed13 Add Slides
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
2 var url = window.location,
47676a16ed13 Add Slides
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
3 body = document.body,
47676a16ed13 Add Slides
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
4 slides = document.querySelectorAll('div.slide'),
47676a16ed13 Add Slides
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
5 progress = document.querySelector('div.progress div'),
47676a16ed13 Add Slides
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
6 slideList = [],
47676a16ed13 Add Slides
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
7 l = slides.length,
47676a16ed13 Add Slides
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
8 i;
47676a16ed13 Add Slides
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
9
47676a16ed13 Add Slides
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
10 for (i = 0; i < l; i++) {
47676a16ed13 Add Slides
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
11 slideList.push(slides[i].id);
47676a16ed13 Add Slides
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
12 }
47676a16ed13 Add Slides
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
13
47676a16ed13 Add Slides
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
14 function getTransform() {
47676a16ed13 Add Slides
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
15 var denominator = Math.max(
47676a16ed13 Add Slides
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
16 body.clientWidth / window.innerWidth,
47676a16ed13 Add Slides
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
17 body.clientHeight / window.innerHeight
47676a16ed13 Add Slides
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
18 );
47676a16ed13 Add Slides
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
19
47676a16ed13 Add Slides
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
20 return 'scale(' + (1 / denominator) + ')';
47676a16ed13 Add Slides
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
21 }
47676a16ed13 Add Slides
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
22
47676a16ed13 Add Slides
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
23 function applyTransform(transform) {
47676a16ed13 Add Slides
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
24 body.style.MozTransform = transform;
47676a16ed13 Add Slides
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
25 body.style.WebkitTransform = transform;
47676a16ed13 Add Slides
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
26 body.style.OTransform = transform;
47676a16ed13 Add Slides
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
27 body.style.msTransform = transform;
47676a16ed13 Add Slides
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
28 body.style.transform = transform;
47676a16ed13 Add Slides
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
29 }
47676a16ed13 Add Slides
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
30
47676a16ed13 Add Slides
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
31 function enterSingleSlideMode() {
47676a16ed13 Add Slides
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
32 body.className = 'full';
47676a16ed13 Add Slides
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
33 applyTransform(getTransform());
47676a16ed13 Add Slides
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
34 }
47676a16ed13 Add Slides
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
35
47676a16ed13 Add Slides
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
36 function enterSlideListMode() {
47676a16ed13 Add Slides
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
37 body.className = 'list';
47676a16ed13 Add Slides
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
38 applyTransform('none');
47676a16ed13 Add Slides
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
39 }
47676a16ed13 Add Slides
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
40
47676a16ed13 Add Slides
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
41 function getCurrentSlideNumber() {
47676a16ed13 Add Slides
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
42 return slideList.indexOf(url.hash.substr(1));
47676a16ed13 Add Slides
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
43 }
47676a16ed13 Add Slides
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
44
47676a16ed13 Add Slides
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
45 function scrollToCurrentSlide() {
47676a16ed13 Add Slides
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
46 var current_slide = document.getElementById(slideList[getCurrentSlideNumber()]);
47676a16ed13 Add Slides
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
47
47676a16ed13 Add Slides
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
48 if (null != current_slide) {
47676a16ed13 Add Slides
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
49 window.scrollTo(0, current_slide.offsetTop);
47676a16ed13 Add Slides
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
50 }
47676a16ed13 Add Slides
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
51 }
47676a16ed13 Add Slides
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
52
47676a16ed13 Add Slides
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
53 function isSlideListMode() {
47676a16ed13 Add Slides
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
54 return 'full' !== url.search.substr(1);
47676a16ed13 Add Slides
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
55 }
47676a16ed13 Add Slides
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
56
47676a16ed13 Add Slides
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
57 function normalizeSlideNumber(slide_number) {
47676a16ed13 Add Slides
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
58 if (0 > slide_number) {
47676a16ed13 Add Slides
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
59 return slideList.length - 1;
47676a16ed13 Add Slides
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
60 } else if (slideList.length <= slide_number) {
47676a16ed13 Add Slides
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
61 return 0;
47676a16ed13 Add Slides
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
62 } else {
47676a16ed13 Add Slides
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
63 return slide_number;
47676a16ed13 Add Slides
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
64 }
47676a16ed13 Add Slides
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
65 }
47676a16ed13 Add Slides
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
66
47676a16ed13 Add Slides
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
67 function updateProgress(slide_number) {
47676a16ed13 Add Slides
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
68 if (!progress) return;
47676a16ed13 Add Slides
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
69 progress.style.width = (100 / (slideList.length - 1) * normalizeSlideNumber(slide_number)).toFixed(2) + '%';
47676a16ed13 Add Slides
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
70 }
47676a16ed13 Add Slides
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
71
47676a16ed13 Add Slides
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
72 function getSlideHashByNumber(slide_number) {
47676a16ed13 Add Slides
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
73 return '#' + slideList[normalizeSlideNumber(slide_number)];
47676a16ed13 Add Slides
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
74 }
47676a16ed13 Add Slides
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
75
47676a16ed13 Add Slides
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
76 function goToSlide(slide_number) {
47676a16ed13 Add Slides
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
77 url.hash = getSlideHashByNumber(slide_number);
47676a16ed13 Add Slides
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
78
47676a16ed13 Add Slides
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
79 if (!isSlideListMode()) {
47676a16ed13 Add Slides
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
80 updateProgress(slide_number);
47676a16ed13 Add Slides
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
81 }
47676a16ed13 Add Slides
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
82 }
47676a16ed13 Add Slides
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
83
47676a16ed13 Add Slides
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
84 window.addEventListener('DOMContentLoaded', function () {
47676a16ed13 Add Slides
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
85 if (!isSlideListMode()) {
47676a16ed13 Add Slides
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
86 // "?full" is present without slide hash so we should display first
47676a16ed13 Add Slides
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
87 // slide
47676a16ed13 Add Slides
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
88 if ( -1 === getCurrentSlideNumber() ) {
47676a16ed13 Add Slides
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
89 history.replaceState(null, null, url.pathname + '?full' + getSlideHashByNumber( 0 ) );
47676a16ed13 Add Slides
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
90 }
47676a16ed13 Add Slides
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
91
47676a16ed13 Add Slides
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
92 enterSingleSlideMode();
47676a16ed13 Add Slides
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
93 updateProgress(getCurrentSlideNumber());
47676a16ed13 Add Slides
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
94 }
47676a16ed13 Add Slides
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
95 }, false);
47676a16ed13 Add Slides
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
96
47676a16ed13 Add Slides
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
97 window.addEventListener('popstate', function (e) {
47676a16ed13 Add Slides
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
98 if (isSlideListMode()) {
47676a16ed13 Add Slides
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
99 enterSlideListMode();
47676a16ed13 Add Slides
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
100 scrollToCurrentSlide();
47676a16ed13 Add Slides
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
101 } else {
47676a16ed13 Add Slides
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
102 enterSingleSlideMode();
47676a16ed13 Add Slides
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
103 }
47676a16ed13 Add Slides
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
104 }, false);
47676a16ed13 Add Slides
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
105
47676a16ed13 Add Slides
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
106 window.addEventListener('resize', function (e) {
47676a16ed13 Add Slides
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
107 if (!isSlideListMode()) {
47676a16ed13 Add Slides
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
108 applyTransform(getTransform());
47676a16ed13 Add Slides
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
109 }
47676a16ed13 Add Slides
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
110 }, false);
47676a16ed13 Add Slides
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
111
47676a16ed13 Add Slides
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
112 document.addEventListener('keydown', function (e) {
47676a16ed13 Add Slides
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
113 if (e.altKey || e.ctrlKey || e.metaKey) return;
47676a16ed13 Add Slides
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
114
47676a16ed13 Add Slides
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
115 var current_slide_number = getCurrentSlideNumber();
47676a16ed13 Add Slides
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
116
47676a16ed13 Add Slides
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
117 switch (e.which) {
47676a16ed13 Add Slides
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
118 case 9: // Tab = +1; Shift + Tab = -1
47676a16ed13 Add Slides
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
119 if (isSlideListMode()) {
47676a16ed13 Add Slides
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
120 e.preventDefault();
47676a16ed13 Add Slides
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
121
47676a16ed13 Add Slides
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
122 current_slide_number += e.shiftKey ? -1 : 1;
47676a16ed13 Add Slides
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
123 url.hash = getSlideHashByNumber(current_slide_number);
47676a16ed13 Add Slides
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
124 }
47676a16ed13 Add Slides
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
125 break;
47676a16ed13 Add Slides
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
126
47676a16ed13 Add Slides
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
127 case 13: // Enter
47676a16ed13 Add Slides
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
128 if (isSlideListMode()) {
47676a16ed13 Add Slides
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
129 e.preventDefault();
47676a16ed13 Add Slides
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
130
47676a16ed13 Add Slides
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
131 history.pushState(null, null, url.pathname + '?full' + getSlideHashByNumber(current_slide_number));
47676a16ed13 Add Slides
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
132 enterSingleSlideMode();
47676a16ed13 Add Slides
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
133
47676a16ed13 Add Slides
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
134 updateProgress(current_slide_number);
47676a16ed13 Add Slides
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
135 }
47676a16ed13 Add Slides
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
136 break;
47676a16ed13 Add Slides
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
137
47676a16ed13 Add Slides
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
138 case 27: // Esc
47676a16ed13 Add Slides
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
139 if (!isSlideListMode()) {
47676a16ed13 Add Slides
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
140 e.preventDefault();
47676a16ed13 Add Slides
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
141
47676a16ed13 Add Slides
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
142 history.pushState(null, null, url.pathname + getSlideHashByNumber(current_slide_number));
47676a16ed13 Add Slides
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
143 enterSlideListMode();
47676a16ed13 Add Slides
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
144 scrollToCurrentSlide();
47676a16ed13 Add Slides
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
145 }
47676a16ed13 Add Slides
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
146 break;
47676a16ed13 Add Slides
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
147
47676a16ed13 Add Slides
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
148 case 33: // PgUp
47676a16ed13 Add Slides
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
149 case 38: // Up
47676a16ed13 Add Slides
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
150 case 37: // Left
47676a16ed13 Add Slides
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
151 case 72: // h
47676a16ed13 Add Slides
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
152 case 75: // k
47676a16ed13 Add Slides
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
153 e.preventDefault();
47676a16ed13 Add Slides
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
154
47676a16ed13 Add Slides
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
155 current_slide_number--;
47676a16ed13 Add Slides
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
156 goToSlide(current_slide_number);
47676a16ed13 Add Slides
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
157 break;
47676a16ed13 Add Slides
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
158
47676a16ed13 Add Slides
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
159 case 34: // PgDown
47676a16ed13 Add Slides
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
160 case 40: // Down
47676a16ed13 Add Slides
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
161 case 39: // Right
47676a16ed13 Add Slides
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
162 case 76: // l
47676a16ed13 Add Slides
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
163 case 74: // j
47676a16ed13 Add Slides
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
164 e.preventDefault();
47676a16ed13 Add Slides
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
165
47676a16ed13 Add Slides
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
166 current_slide_number++;
47676a16ed13 Add Slides
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
167 goToSlide(current_slide_number);
47676a16ed13 Add Slides
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
168 break;
47676a16ed13 Add Slides
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
169
47676a16ed13 Add Slides
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
170 case 36: // Home
47676a16ed13 Add Slides
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
171 e.preventDefault();
47676a16ed13 Add Slides
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
172
47676a16ed13 Add Slides
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
173 current_slide_number = 0;
47676a16ed13 Add Slides
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
174 goToSlide(current_slide_number);
47676a16ed13 Add Slides
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
175 break;
47676a16ed13 Add Slides
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
176
47676a16ed13 Add Slides
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
177 case 35: // End
47676a16ed13 Add Slides
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
178 e.preventDefault();
47676a16ed13 Add Slides
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
179
47676a16ed13 Add Slides
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
180 current_slide_number = slideList.length - 1;
47676a16ed13 Add Slides
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
181 goToSlide(current_slide_number);
47676a16ed13 Add Slides
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
182 break;
47676a16ed13 Add Slides
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
183
47676a16ed13 Add Slides
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
184 case 32: // Space = +1; Shift + Space = -1
47676a16ed13 Add Slides
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
185 e.preventDefault();
47676a16ed13 Add Slides
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
186
47676a16ed13 Add Slides
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
187 current_slide_number += e.shiftKey ? -1 : 1;
47676a16ed13 Add Slides
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
188 goToSlide(current_slide_number);
47676a16ed13 Add Slides
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
189 break;
47676a16ed13 Add Slides
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
190
47676a16ed13 Add Slides
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
191 default:
47676a16ed13 Add Slides
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
192 // Behave as usual
47676a16ed13 Add Slides
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
193 }
47676a16ed13 Add Slides
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
194 }, false);
47676a16ed13 Add Slides
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
195
47676a16ed13 Add Slides
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
196 document.addEventListener('click', function (e) {
47676a16ed13 Add Slides
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
197 if (
47676a16ed13 Add Slides
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
198 'SECTION' === e.target.nodeName &&
47676a16ed13 Add Slides
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
199 -1 !== e.target.parentNode.parentNode.className.indexOf('slide') &&
47676a16ed13 Add Slides
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
200 isSlideListMode()
47676a16ed13 Add Slides
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
201 ) {
47676a16ed13 Add Slides
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
202 e.preventDefault();
47676a16ed13 Add Slides
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
203
47676a16ed13 Add Slides
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
204 // NOTE: we should update hash to get things work properly
47676a16ed13 Add Slides
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
205 url.hash = '#' + e.target.parentNode.parentNode.id;
47676a16ed13 Add Slides
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
206 history.replaceState(null, null, url.pathname + '?full#' + e.target.parentNode.parentNode.id);
47676a16ed13 Add Slides
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
207 enterSingleSlideMode();
47676a16ed13 Add Slides
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
208
47676a16ed13 Add Slides
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
209 updateProgress(getCurrentSlideNumber());
47676a16ed13 Add Slides
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
210 }
47676a16ed13 Add Slides
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
211 }, false);
47676a16ed13 Add Slides
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
212
47676a16ed13 Add Slides
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
213 }());