annotate presen/sigOS/scripts/script.js @ 13:c0fe42a8808d

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