impressive code clean-up

This commit is contained in:
Bartek Szopka
2011-12-29 20:04:08 +01:00
parent 69ed89d227
commit 0b3555291b

View File

@@ -1,6 +1,8 @@
(function() { (function ( document ) {
var _pfx = (function () { // HELPER FUNCTIONS
var pfx = (function () {
var style = document.createElement('dummy').style, var style = document.createElement('dummy').style,
prefixes = 'Webkit Moz O ms Khtml'.split(' '), prefixes = 'Webkit Moz O ms Khtml'.split(' '),
@@ -27,39 +29,53 @@
})(); })();
var extend = function (dst, src) { var extend = function ( dst, src ) {
for (var key in src) { var key;
if (src.hasOwnProperty(key)) { for ( key in src ) {
if ( src.hasOwnProperty(key) ) {
dst[key] = src[key]; dst[key] = src[key];
} }
} }
return dst; return dst;
} }
var css = function (el, props) { var css = function ( el, props ) {
var key, pkey; var key, pkey;
for (key in props) { for ( key in props ) {
pkey = _pfx(key); pkey = pfx(key);
if (pkey != null) { if ( pkey != null ) {
el.style[pkey] = props[key]; el.style[pkey] = props[key];
} }
} }
return el; return el;
} }
var $ = function(s) { var $ = function ( selector, context ) {
return document.querySelector(s); context = context || document;
return context.querySelector(selector);
}; };
var $$ = function(selector){ var $$ = function ( selector, context ) {
return [].slice.call(document.querySelectorAll(selector)); context = context || document;
return [].slice.call( context.querySelectorAll(selector) );
}; };
var translate = function (x,y) { return " translate3d(" + x + "px," + y + "px, 0) "; }
var rotate = function (a) { return " rotate(" + a + "deg) "; }
var scale = function (s) { return " scale(" + s + ") "; }
// DOM ELEMENTS
var impress = document.getElementById("impress"); var impress = document.getElementById("impress");
var canvas = document.getElementById("canvas"); var canvas = document.getElementById("canvas");
canvas.rotate = canvas.querySelector(".rotate"); canvas.rotate = canvas.querySelector(".rotate");
var steps = $$(".step", impress);
// SETUP
// set initial values and defaults
document.documentElement.style.height = "100%"; document.documentElement.style.height = "100%";
css(document.body, { css(document.body, {
@@ -91,13 +107,7 @@
var current = canvas.dataset; var current = canvas.dataset;
var translate = function (x,y) { return " translate3d(" + x + "px," + y + "px, 0) "; } steps.forEach(function ( el, idx ) {
var rotate = function (a) { return " rotate(" + a + "deg) "; }
var scale = function (s) { return " scale(" + s + ") "; }
var steps = $$(".step");
steps.forEach(function(el){
var step = el.dataset; var step = el.dataset;
step.x = step.x || 0; step.x = step.x || 0;
@@ -105,6 +115,10 @@
step.rotate = step.rotate || 0; step.rotate = step.rotate || 0;
step.scale = step.scale || 1; step.scale = step.scale || 1;
if ( !el.id ) {
el.id = "step-" + idx;
}
css(el, { css(el, {
position: "absolute", position: "absolute",
transform: "translate(-50%,-50%)" + transform: "translate(-50%,-50%)" +
@@ -114,12 +128,14 @@
}); });
}); });
function select(el) { // making given step active
var select = function ( el ) {
var step = el.dataset; var step = el.dataset;
if ($(".step.active")) { if ( $(".step.active", canvas) ) {
$(".step.active").classList.remove("active"); $(".step.active", canvas).classList.remove("active");
} }
el.classList.add("active"); el.classList.add("active");
@@ -127,11 +143,10 @@
var target = { var target = {
rotate: -parseInt(step.rotate, 10), rotate: -parseInt(step.rotate, 10),
scale: 1 / parseFloat(step.scale) scale: 1 / parseFloat(step.scale),
x: -step.x,
y: -step.y
}; };
target.x = -step.x;
target.y = -step.y;
css(canvas, { css(canvas, {
transform: scale(target.scale), transform: scale(target.scale),
@@ -146,10 +161,12 @@
extend(current, target); extend(current, target);
} }
document.addEventListener("keydown", function(event){ // EVENTS
document.addEventListener("keydown", function ( event ) {
if( event.keyCode == 32 || (event.keyCode >= 37 && event.keyCode <= 40) ) { if( event.keyCode == 32 || (event.keyCode >= 37 && event.keyCode <= 40) ) {
var next = null; var next = null;
var active = document.querySelector(".step.active"); var active = $(".step.active", canvas);
switch( event.keyCode ) { switch( event.keyCode ) {
case 37: ; // left case 37: ; // left
case 38: // up case 38: // up
@@ -170,6 +187,9 @@
} }
}, false); }, false);
// START
// by selecting first step of presentation
select(steps[0]); select(steps[0]);
})();
})(document);