Add an 'sws-' namespace to every class name used in CSS.
authorKim Nguyễn <kn@lri.fr>
Mon, 25 Feb 2013 20:27:19 +0000 (21:27 +0100)
committerKim Nguyễn <kn@lri.fr>
Mon, 25 Feb 2013 20:27:19 +0000 (21:27 +0100)
Drop keyboard events while animations are running.

doc/sample.html [deleted file]
doc/sample.xhtml
simpleWebSlides.css
simpleWebSlides.js
simpleWebSlides_print.css [deleted file]
simpleWebSlides_screen.css [deleted file]
themes/default.css
themes/webTwoPointO.css

diff --git a/doc/sample.html b/doc/sample.html
deleted file mode 100644 (file)
index a48a84f..0000000
+++ /dev/null
@@ -1,95 +0,0 @@
-<!DOCTYPE html>
-<html>
-  <head>
-    <title>SimpleWebSlides</title>
-
-    <meta http-equiv="content-type" content="text/html;charset=utf-8"/>
-    <meta name="copyright"
-          content="Copyright &#169; 2013 Kim Nguyễn" />
-
-    <link rel="stylesheet" href="../simpleWebSlides.css" type="text/css"
-          media="all" />
-    <!-- allows to switch themes in firefox -->
-
-    <link rel="stylesheet" title="Default" href="../themes/default.css"
-          type="text/css" />
-    <link rel="alternate stylesheet"  title="Web 2.0"
-          href="../themes/webTwoPointO.css"
-          type="text/css" />
-
-    <script src="../jquery-1.9.1.min.js" type="text/javascript" ></script>
-    <script src="../simpleWebSlides.js" type="text/javascript" ></script>
-  </head>
-  <body>
-
-    <div class="slide cover nofooter">
-      <div class="centerbox">
-        <h1>SimpleWebSlides</h1>
-        <h1>An <em>HTML</em><img style="height:28pt"
-               src="http://www.w3.org/html/logo/downloads/HTML5_Badge.svg" alt="5"/>
-          Presentation framework</h1>
-        <a href="mailto:kim@nguyen.vg">kim@nguyen.vg</a>
-      </div>
-    </div>
-
-
-    <h1>Introduction</h1>
-
-    <div class="slide">
-      <h1>What is it?</h1>
-      <em>SimpleWebSlides</em> is an HTML5 framework that allows
-      you to build presentation:<br class="pause" />
-      <ul>
-        <li>Write your slides in HTML5!</li>
-        <li>Script your slides with Javascript!</li>
-        <li>Theme your slides with CSS!</li>
-      </ul>
-    </div>
-
-    <div class="slide">
-      <h1>Modalités de Contrôle des Connaissances (MCC)</h1>
-      <ul>
-        <li><em>Première session (100%)</em>
-        <ul>
-          <li>Un partiel (25%)</li>
-          <li>Une ou deux interro. de TD/TP (25%)</li>
-          <li>Un examen (50%)</li>
-        </ul>
-        </li>
-        <li><em>Deuxième session (100%)</em></li>
-        <li><em>Rappel</em>
-        <blockquote><p>
-          La défaillance fait obstacle au calcul de la moyenne
-          et implique l'ajournement.<br/>
-          La présence de l'étudiant étant obligatoire en TP […], plus
-          d'une absence injustiée dans un enseignement peut entraîner
-          la défaillance de l'étudiant dans l'enseignement concerné
-        </p>
-      </blockquote>
-        </li>
-      </ul>
-    </div>
-
-
-    <div class="slide">
-      <h1>Organisation</h1>
-      <ul>
-        <li>10 semaines de cours
-        <ul>
-          <li>17/9, 24/9, 1/10, _, 15/10, 22/10</li>
-          <li>Partiel la semaine du 29/10</li>
-          <li>5/11, 12/11, 19/11, 26/11, 3/12</li>
-        </ul>
-        </li>
-        <li>Cours tous les lundi (~ 1h)</li>
-        <li>TD tous les mardis</li>
-        <li>TPs les mercredi/jeudi</li>
-      </ul>
-    </div>
-    <div class="slide">
-      <div class="toc"/>
-    </div>
-
-
-  </body>
-</html>
index abc768d..c4f0b9e 100644 (file)
@@ -25,7 +25,7 @@
   </head>
   <body>
 
-    <div class="slide cover nofooter">
+    <div class="sws-slide sws-cover sws-option-nofooter">
       <div class="centerbox">
         <h1>SimpleWebSlides</h1>
         <h1>An <em>HTML</em><img style="height:28pt"
 
     <h1>Introduction</h1>
 
-    <div class="slide" >
+    <div class="sws-slide" >
       <h1>What is it?</h1>
       <em>SimpleWebSlides</em> is an HTML5 framework that allows
       you to build presentation slides:
       <ul>
-        <li class="pause" >Write your slides in HTML5!</li>
-        <li class="pause" >Theme your slides with <em>CSS</em>!</li>
-        <li class="pause" >Script your slides with Javascript!</li>
+        <li class="sws-pause" >Write your slides in HTML5!</li>
+        <li class="sws-pause" >Theme your slides with <em>CSS</em>!</li>
+        <li class="sws-pause" >Script your slides with Javascript!</li>
         <script type="text/javascript">
           SimpleWebSlides.registerCustom(3, function (canvas) {
-          console.log("calling callback");
           var h1 = canvas.find("h1");
-          console.log(h1);
           var old_color = h1.css('color');
           var old_size = h1.css('font-size');
           h1.animate({"font-size":"100pt" }, 500);
-          h1.animate({"font-size":old_size }, 500); 
+          h1.animate({"font-size":old_size }, 500);
           });
         </script>
       </ul>
     </div>
 
-    <div class="slide">
-      
-    </div>
-
   </body>
 </html>
index 1ebd3f7..8aad753 100644 (file)
@@ -1,29 +1,63 @@
-@import url(simpleWebSlides_screen.css) screen;
-@import url(simpleWebSlides_print.css) print;
+@media screen {
+    .sws-canvas {
+        position: absolute;
+        width:100%;
+        height:100%;
+        overflow:hidden;
+    }
+
+    .sws-active-frame {
+        visibility: visible;
+    }
+
+    .sws-inactive-frame {
+        visibility: hidden;
+    }
+
+}
+
+@media print {
+
+    body {
+        margin: 0pt 0pt 0pt 0pt;
+        padding: 0pt 0pt 0pt 0pt;
+        border-width: 0pt;
+    }
+
+    .sws-canvas {
+        overflow:hidden;
+        position:relative;
+        border-width: 0cm;
+        border-style: none;
+        margin:0pt 0pt 0pt 0pt;
+        page-break-after:always;
+        width: 297mm;
+        height: 209.8mm; /* not 210 due to rounding errors */
+        padding:0pt;
+    }
+
+    .sws-active-frame .sws-inactive-frame {
+        visibility: visible;
+    }
+
+}
 
 body {
     overflow:hidden;
 }
 
-.canvas {
+.sws-canvas {
    top: 0pt;
    left:0pt;
    right:0pt;
    bottom:0pt;
 }
 
-
-.centerbox {
-    display:block;
-    text-align: center;
-    vertical-align: middle;
-}
-
-.slide {
+.sws-slide {
     position:absolute;
 }
 
-.slide .footer {
+.sws-slide .sws-footer {
     position: absolute;
     left: 0pt;
     right: 0pt;
index 134369c..b526992 100644 (file)
@@ -1,8 +1,10 @@
 var SimpleWebSlides = new function () {
+
     var _self = this;
     var _total_slides;
     var _defered_custom = new Array();
     var _initialized = false;
+    var _animations_running = false;
 
     function push_following(t, i, v) {
         if ((typeof t[i]) == 'undefined') {
@@ -28,13 +30,13 @@ var SimpleWebSlides = new function () {
         var cur_frame = 0;
         canvas.find("*").each(function(i) {
 
-            if ($(this).hasClass("pause"))  cur_frame++;
+            if ($(this).hasClass("sws-pause"))  cur_frame++;
             push_following(frames, cur_frame, $(this));
 
         });
-        canvas.data("frames", { frames: frames,
-                                current: 0,
-                                custom: new Array() });
+        canvas.data("sws-frames", { frames: frames,
+                                    current: 0,
+                                    custom: new Array() });
 
     };
 
@@ -47,8 +49,8 @@ var SimpleWebSlides = new function () {
         //on partial doms
         var scripts = document.getElementsByTagName("script");
         var current = scripts[scripts.length-1];
-        console.log(current);
-        var slide = $(current).parents(".slide");
+
+        var slide = $(current).parents(".sws-slide");
         if (slide.length == 0) {
             console.log("no parent ?");
             return;
@@ -83,27 +85,28 @@ var SimpleWebSlides = new function () {
     };
     _self.firstSlide = function () { return 0; };
     _self.lastSlide = function () { return _self.getNumSlides() - 1; };
+
     _self.refresh = function () {
+
         var cur = _self.getCurrentSlide();
-        $(".canvas").each (function (i) {
+        $(".sws-canvas").each (function (i) {
             if (i == cur){
-                $(this).removeClass("other_slides").addClass("current_slide");
-                var info = $(this).data("frames");
+                $(this).removeClass("sws-inactive-slide").addClass("sws-active-slide");
+                var info = $(this).data("sws-frames");
                 var frames = info.frames;
                 var upto = info.current;
                 var custom = info.custom;
                 for(var j = 0; j < Math.max(frames.length, custom.length); j++) {
                     for (var k = 0; k < frames[j].length; k++) {
-                        if (j < upto || frames[j][k].hasClass("footer")){
-
-                            frames[j][k].removeClass("inactive_frame").addClass("active_frame");
-
-                        } else if (j == upto) {
-
-                            frames[j][k].removeClass("inactive_frame").addClass("current_frame");
+                        if (j <= upto || frames[j][k].hasClass("sws-footer")){
 
+                            frames[j][k]
+                                .removeClass("sws-inactive-frame")
+                                .addClass("sws-active-frame");
                         } else {
-                            frames[j][k].removeClass("active_frame").removeClass("current_frame").addClass("inactive_frame");
+                            frames[j][k]
+                                .removeClass("sws-active-frame")
+                                .addClass("sws-inactive-frame");
                         };
                     };
                     var callbacks;
@@ -113,11 +116,16 @@ var SimpleWebSlides = new function () {
                     };
                 };
 
-            } else if ($(this).hasClass("current_slide")) {
-                $(this).removeClass("current_slide").addClass("other_slides");
+                _animation_running = true;
+                $(this).find("*").promise().done(function() {
+                    _animation_running = false;
+                });
+            } else if ($(this).hasClass("sws-active-slide")) {
+                $(this).removeClass("sws-active-slide").addClass("sws-inactive-slide");
             };
-        });
 
+
+        });
     };
 
     _self.nextSlide = function () {
@@ -133,8 +141,8 @@ var SimpleWebSlides = new function () {
     _self.getFrameInfo = function () {
 
         var i = _self.getCurrentSlide();
-        var canvas = $($(".canvas")[i]);
-        var infos = canvas.data("frames");
+        var canvas = $($(".sws-canvas")[i]);
+        var infos = canvas.data("sws-frames");
         return infos;
     };
     _self.getCurrentFrame = function () { return _self.getFrameInfo().current; };
@@ -170,7 +178,7 @@ var SimpleWebSlides = new function () {
 
 
     _self.keyboardHandler = function (event) {
-
+        if (_animation_running) return;
         switch (event.which) {
         case 36:/* Home */
             _self.firstSlide();
@@ -204,28 +212,32 @@ var SimpleWebSlides = new function () {
     };
 
     var _init = function () {
-        _total_slides = $(".slide").length;
+        _total_slides = $(".sws-slide").length;
 
         $(document).keydown(_self.keyboardHandler);
         $(document).mousedown(_self.keyboardHandler);
 
         var cur = _self.getCurrentSlide();
-        $(".slide").each (function (i) {
-            var elem = '<div class="footer"><span class="current_slide_num">' + (i+1);
-            elem += '</span><span class="slide_num_sep"/><span class="total_slide_num">';
+        $(".sws-slide").each (function (i) {
+            var elem = '<div class="sws-footer"><span class="sws-current-slide-num">' + (i+1);
+            elem += '</span><span class="sws-slide-num-sep"/><span class="sws-total-slide-num">';
             elem += _self.getNumSlides() + '</span></div>';
-            if (!($(this).hasClass("nofooter"))) {
+            if (!($(this).hasClass("sws-option-nofooter"))) {
                 $(this).append($(elem));
             };
             var par = $(this).parent();
             $(this).remove();
-            var canvas = $('<div class="canvas"/>');
+            var canvas = $('<div class="sws-canvas"/>');
             canvas.append($(this));
             par.append(canvas);
             if (i == cur) {
-                canvas.addClass("current_slide").removeClass("other_slides");
+                canvas
+                    .addClass("sws-active-slide")
+                    .removeClass("sws-inacitve-slide");
             } else {
-                canvas.addClass("other_slides").removeClass("current_slide");
+                canvas
+                    .addClass("sws-inactive-slide")
+                    .removeClass("sws-active-slide");
             };
             init_canvas(canvas);
 
@@ -233,11 +245,11 @@ var SimpleWebSlides = new function () {
         for (var i = 0; i < _defered_custom.length; i++){
 
             var custom = _defered_custom[i];
-            var canvas = $(custom.src).parents(".canvas");
+            var canvas = $(custom.src).parents(".sws-canvas");
             if (canvas.length == 0) continue;
             canvas = $(canvas[0]);
 
-            var info = canvas.data("frames");
+            var info = canvas.data("sws-frames");
 
             push(info.custom, custom.frame, custom.fn);
         };
diff --git a/simpleWebSlides_print.css b/simpleWebSlides_print.css
deleted file mode 100644 (file)
index 0317966..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-body {
-    margin: 0pt 0pt 0pt 0pt;
-    padding: 0pt 0pt 0pt 0pt;
-    border-width: 0pt;
-}
-
-.canvas {
-    overflow:hidden;
-    position:relative;
-    border-width: 0cm;
-    border-style: none;
-    margin:0pt 0pt 0pt 0pt;
-    page-break-after:always;
-    width: 297mm;
-    height: 209.8mm; /* not 210 due to rounding errors */
-    padding:0pt;
-}
-
-.active_frame, .inactive_frame, .current_frame {
-    visibility: visible;
-}
diff --git a/simpleWebSlides_screen.css b/simpleWebSlides_screen.css
deleted file mode 100644 (file)
index b39b10f..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-.canvas {
-    position: absolute;
-    width:100%;
-    height:100%;
-}
-
-.active_frame, .current_frame {
-    visibility: visible;
-}
-
-.inactive_frame {
-    visibility: hidden;
-}
\ No newline at end of file
index fcf1c4f..552b752 100644 (file)
@@ -8,7 +8,7 @@ body {
    The canvas takes up the whole window in screen mode and a
    whole page in print mode
 */
-.slide {
+.sws-slide {
     margin: 10pt;
     border-width:1mm;
     border-radius:5mm;
@@ -22,16 +22,16 @@ body {
 }
 
 /* slide title */
-.slide h1 {
+.sws-slide h1 {
     font-size: xxx-large;
     font-weight: bolder;
 
 }
 
-span.slide_num_sep:after {
+span.sws-slide-num-sep:after {
     content : "/";
 }
-.footer {
+.sws-footer {
     text-align: center;
 }
 .alert {
@@ -40,10 +40,10 @@ span.slide_num_sep:after {
 
 /* Simple transition in presentation mode */
 @media screen {
-    .other_slides {
+    .sws-inactive-slide {
         visibility: hidden;
     }
-    .current_slide {
+    .sws-current-slide {
         visibility: visible;
     }
 }
\ No newline at end of file
index ad3082a..240660f 100644 (file)
@@ -11,7 +11,7 @@ body {
    whole page in print mode
 */
 
-.slide {
+.sws-slide {
     margin: 0pt;
     left:0pt;
     right:0pt;
@@ -20,15 +20,15 @@ body {
     padding:5mm;
 }
 
-.cover {
+.sws-cover {
     text-align:center;
     vertical-align:middle;
 }
-.cover .centerbox {
+.sws-cover .centerbox {
     display:inline-block;
     vertical-align: middle;
 }
-.cover:before {
+.sws-cover:before {
     content: "";
     display: inline-block;
     width:10pt;
@@ -41,11 +41,11 @@ ul {
     list-style-type: square;
 }
 @media screen {
-    body, .slide {
+    body, .sws-slide {
         background-color: black;
         color: white;
     }
-    .slide h1 {
+    .sws-slide h1 {
         color: #f14a29;
 
     }
@@ -56,7 +56,7 @@ ul {
     }
 }
 @media print {
-    body, .slide {
+    body, .sws-slide {
         background-color: white;
         color: black;
     }
@@ -66,29 +66,26 @@ ul {
 }
 
 /* slide title */
-.slide h1 {
+.sws-slide h1 {
     font-size: xxx-large;
     font-weight: bolder;
     text-align: center;
 }
 
-span.slide_num_sep:after {
+span.sws-slide-num-sep:after {
     content : "⋯";
 }
-.footer {
+.sws-footer {
     text-align: center;
 }
-.alert {
-    color: red;
-}
-
 
 @media screen {
-.other_slides {
+.sws-inactive-slide {
     opacity: 0.0;
     transition: opacity 0.25s ease-in;
 }
-.current_slide {
+
+.sws-active-slide {
     opacity: 1.0;
     transition: opacity 0.25s ease-out 0.25s;
 }