X-Git-Url: http://git.nguyen.vg/gitweb/?a=blobdiff_plain;f=simpleWebSlides.js;h=10d5d03025d91db4bdf8c4a8be931acdb5e65e24;hb=84e2c90ea8d41d08c996bd84bd459ba5ad23de0b;hp=3e0faf6627887ce51c6bf9f1db7de5804e81cb74;hpb=6d9edb128b82f559630d7186384d34167d9f2712;p=hacks%2FsimpleWebSlides.git diff --git a/simpleWebSlides.js b/simpleWebSlides.js index 3e0faf6..10d5d03 100644 --- a/simpleWebSlides.js +++ b/simpleWebSlides.js @@ -2,7 +2,7 @@ Namespace object. */ -var SWS = {}; +var SWS = SWS || {}; @@ -52,6 +52,14 @@ SWS.Utils = new function () { SWS.Templates = new function () { var self = this; + self.controlPanel = "
\ +◀◀◀\ +◀◀ \ +◀\ +▶\ +▶▶\ +▶▶▶\ +
"; self.slideActivate = function (o) { if (!(o.hasClass("sws-active-slide"))){ o.removeClass("sws-inactive-slide").addClass("sws-active-slide"); @@ -95,7 +103,7 @@ SWS.Templates = new function () { + (i + 1) +""); var sep = $( ""); - var tot = $( "" + var tot = $( "" + (SWS.Presentation.getNumSlides()) +""); footer.append(cur).append(sep).append(tot); @@ -121,14 +129,14 @@ SWS.Effects = new function () { var self = this; self.objectDeactivateFadeOut = function (o) { - o.animate({'opacity': '0'}, 150, + o.animate({'opacity': '0'}, 200, function () { SWS.Templates.objectDeactivate(o)}); }; self.objectActivateFadeIn = function (o) { if (SWS.Templates.objectActivate(o)){ - o.animate({'opacity': '1' }, 150); + o.animate({'opacity': '1' }, 200); }; }; @@ -225,7 +233,7 @@ SWS.Presentation = new function () { if (typeof(Storage)!=="undefined"){ self.getCurrentSlide = function () { //unary + casts to integer - var i = +(sessionStorage.current_slide); + var i = +(sessionStorage.getItem("current_slide")); if (!(i >= 0 && i < self.getNumSlides())){ return 0; } else { @@ -234,7 +242,7 @@ SWS.Presentation = new function () { }; self.setCurrentSlide = function (i) { - sessionStorage.current_slide = i; + sessionStorage.setItem("current_slide", i); }; } else { @@ -245,7 +253,6 @@ SWS.Presentation = new function () { }; self.firstSlide = function () { return 0; }; self.lastSlide = function () { return self.getNumSlides() - 1; }; - self.refresh = function () { /* block upcoming input event until all animations are finished */ _disable_input_events = true; @@ -258,12 +265,13 @@ SWS.Presentation = new function () { var slide_change = (from_slide_num != to_slide_num); var info = to_slide.data("sws-frame-info"); + SWS.Config['sws-update-header'](to_slide); + SWS.Config['sws-update-footer'](to_slide); + if (slide_change) { //Launch a slide transition: SWS.Config['sws-slide-change'](from_slide_num, to_slide_num); watch_slide_anim = true; - SWS.Config['sws-update-header'](to_slide); - SWS.Config['sws-update-footer'](to_slide); for (var i = 0; i < info.callbacks.at_slide.length;i++){ info.callbacks.at_slide[i](to_slide); }; @@ -274,7 +282,7 @@ SWS.Presentation = new function () { var custom = info.custom; var real_slide = to_slide.children(".sws-slide"); - to_slide.children(".sws-slide").find("*").andSelf().each(function (i){ + real_slide.find("*").andSelf().each(function (i){ var frameset = $(this).data("sws-frame-set") || {}; if (frameset[cur]) SWS.Config['sws-object-activate']($(this)); @@ -301,11 +309,13 @@ SWS.Presentation = new function () { self.nextSlide = function () { self.setCurrentSlide(Math.min(self.getCurrentSlide()+1, self.lastSlide())); + self.setCurrentFrame(self.firstFrame()); }; self.previousSlide = function () { self.setCurrentSlide(Math.max(self.getCurrentSlide()-1, self.firstSlide())); + self.setCurrentFrame(self.firstFrame()); }; self.getFrameInfo = function () { @@ -332,9 +342,10 @@ SWS.Presentation = new function () { self.next = function () { var i = self.getCurrentFrame(); - if (i == self.lastFrame()) + if (i == self.lastFrame()) { self.nextSlide(); - else + self.setCurrentFrame(self.firstFrame()); + } else self.nextFrame(); }; @@ -348,6 +359,24 @@ SWS.Presentation = new function () { self.previousFrame(); }; + self.goToSlide = function (s, f) { + if (SWS.Utils.isUndefined(f)) + f = 0; + if (!(s >= self.firstSlide() && s <= self.lastSlide())) return; + self.setCurrentSlide(s); + if (!(f >= self.firstFrame() && f <= self.lastFrame())) f = 0; + self.setCurrentFrame(f); + self.refresh(); + }; + + self.cycleStyle = function() { + var styles = $("head").children('link[rel$="stylesheet"][title]'); + var j = styles.index(styles.filter(':not(:disabled)')); + styles[j].disabled = true; + if (++j == styles.length) j = 0; + styles[j].disabled = false; + }; + self.inputHandler = function (event) { if (_disable_input_events) return; switch (event.which) { @@ -361,7 +390,7 @@ SWS.Presentation = new function () { case 32: /* space */ case 39: /* -> */ - case 1: /* mouse button 1 */ + self.next(); break; case 34: /* PgDown */ @@ -376,6 +405,11 @@ SWS.Presentation = new function () { case 80: /* p */ self.previousSlide(); break; + case 83: /* s */ + self.cycleStyle(); + return; + case 67: /* c */ + $("#sws-control-panel").toggle(); default: return; }; @@ -413,10 +447,11 @@ SWS.Presentation = new function () { } }; - var specials = slide.find('*[class*="sws-onslide-"]').find("*").andSelf(); - specials.each(function(i) { + var specials = null; + + slide.find('*[class*="sws-onframe-"]').each(function(_){ var cls = $(this).attr('class'); - var idx = cls.indexOf("sws-onslide-"); + var idx = cls.indexOf("sws-onframe-"); if (idx >= 0) { var end = cls.indexOf(" ", idx); end = (end == -1) ? cls.length : end; @@ -424,9 +459,14 @@ SWS.Presentation = new function () { var o = SWS.Utils.parseFrameSpec(spec); for(var f in o) if (f > last_frame) last_frame = f; - - if (!SWS.Utils.isEmpty(o)) - $(this).data("sws-frame-set", o); + $(this).find("*").andSelf().each(function(_){ + if (!SWS.Utils.isEmpty(o)) + $(this).data("sws-frame-set", o); + if (specials) + specials.add($(this)); + else + specials = $(this); + }); }; }); @@ -446,13 +486,16 @@ SWS.Presentation = new function () { }; - function init () { + self.init = function () { + console.log("inited"); + $(window).bind('storage', function (e) { + console.log(e); + }); _total_slides = $(".sws-slide").length; $(document).keydown(self.inputHandler); - $(document).mousedown(self.inputHandler); - + $("body").append($(SWS.Templates.controlPanel)); var cur = self.getCurrentSlide(); $(".sws-slide").each (function (i) { var par = $(this).parent(); @@ -473,7 +516,7 @@ SWS.Presentation = new function () { if (i == cur) { canvas .addClass("sws-active-slide") - .removeClass("sws-inacitve-slide"); + .removeClass("sws-inactive-slide"); } else { canvas .addClass("sws-inactive-slide") @@ -488,11 +531,4 @@ SWS.Presentation = new function () { }; - self.init = function () { - $(document).ready(init); - }; - - - - };