mirror of
https://github.com/flynx/PortableMag.git
synced 2025-10-29 11:10:08 +00:00
some cleanup and refactoring...
Signed-off-by: Alex A. Naanou <alex.nanou@gmail.com>
This commit is contained in:
parent
87b4a06b67
commit
40af08494a
66
layout.js
66
layout.js
@ -68,6 +68,9 @@ var togglePageView = createCSSClassToggler(
|
|||||||
|
|
||||||
/************************************************** event handlers ***/
|
/************************************************** event handlers ***/
|
||||||
|
|
||||||
|
// Click
|
||||||
|
// - in full page do the default click, if clicked on other page, select
|
||||||
|
// - in ribbon, open clicked page in full mode
|
||||||
function handleClick(evt, data){
|
function handleClick(evt, data){
|
||||||
var target = getPageNumber(data.orig_event.target)
|
var target = getPageNumber(data.orig_event.target)
|
||||||
if(target != -1){
|
if(target != -1){
|
||||||
@ -85,6 +88,10 @@ function handleClick(evt, data){
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// Long Click
|
||||||
|
// - in full page, go to ribbon
|
||||||
|
// - in ribbon, center clicked page
|
||||||
function handleLongClick(evt, data){
|
function handleLongClick(evt, data){
|
||||||
var target = getPageNumber(data.orig_event.target)
|
var target = getPageNumber(data.orig_event.target)
|
||||||
if(target != -1){
|
if(target != -1){
|
||||||
@ -102,10 +109,15 @@ function handleLongClick(evt, data){
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// Swipe Left/Right
|
||||||
|
// - in full page, next/prev page select
|
||||||
|
// - in ribbon, kinetic scroll
|
||||||
|
// - with two fingers, select next/prev article
|
||||||
function makeSwipeHandler(actionA, actionB){
|
function makeSwipeHandler(actionA, actionB){
|
||||||
return function(evt, data){
|
return function(evt, data){
|
||||||
// ribbon mode...
|
// ribbon mode...
|
||||||
if(isNavigationViewRelative()){
|
if(togglePageView('?') == 'off'){
|
||||||
|
|
||||||
// article navigation...
|
// article navigation...
|
||||||
if(data.touches >= 2){
|
if(data.touches >= 2){
|
||||||
@ -136,27 +148,25 @@ function makeSwipeHandler(actionA, actionB){
|
|||||||
var handleSwipeLeft = makeSwipeHandler(prevPage, prevArticle)
|
var handleSwipeLeft = makeSwipeHandler(prevPage, prevArticle)
|
||||||
var handleSwipeRight = makeSwipeHandler(nextPage, nextArticle)
|
var handleSwipeRight = makeSwipeHandler(nextPage, nextArticle)
|
||||||
|
|
||||||
// do snap and innertia...
|
|
||||||
|
// Scroll Release
|
||||||
|
// - check bounds and if out center first/last page
|
||||||
|
// - filter out "throw" speeds below threshold
|
||||||
|
// - do inertial scroll (within check bounds)
|
||||||
|
// - snap to pages
|
||||||
|
//
|
||||||
// NOTE: this will also handle swipeUp/swopeDown as we do not
|
// NOTE: this will also handle swipeUp/swopeDown as we do not
|
||||||
// explicitly bind them...
|
// explicitly bind them...
|
||||||
|
// NOTE: at this point this ONLY handles horizontal scroll...
|
||||||
// XXX restore all the changed values...
|
// XXX restore all the changed values...
|
||||||
// XXX add an animate loop, to make the browser paint the page better...
|
|
||||||
function handleScrollRelease(evt, data){
|
function handleScrollRelease(evt, data){
|
||||||
/*
|
|
||||||
// this makes things snap...
|
|
||||||
if(SNAP_TO_PAGES_IN_RIBBON || !isNavigationViewRelative()){
|
|
||||||
setCurrentPage()
|
|
||||||
return
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
|
|
||||||
var speed = data.speed.x
|
var speed = data.speed.x
|
||||||
var pages = $('.page')
|
var pages = $('.page')
|
||||||
var mag = $('.magazine')
|
var mag = $('.magazine')
|
||||||
// innertial scroll...
|
// innertial scroll...
|
||||||
// XXX make this generic...
|
// XXX make this generic...
|
||||||
var t = DEFAULT_TRANSITION_DURATION * (1+Math.abs(speed))
|
var t = DEFAULT_TRANSITION_DURATION * (1+Math.abs(speed))
|
||||||
// XXX this is only horisontal at this point...
|
// XXX this is only horizontal at this point...
|
||||||
var at = getElementShift(mag).left
|
var at = getElementShift(mag).left
|
||||||
var to = (at + (t*speed*INNERTIA_SCALE))
|
var to = (at + (t*speed*INNERTIA_SCALE))
|
||||||
var first = getMagazineOffset(pages.first(), null, 'center')
|
var first = getMagazineOffset(pages.first(), null, 'center')
|
||||||
@ -190,17 +200,6 @@ function handleScrollRelease(evt, data){
|
|||||||
|
|
||||||
animateElementTo(mag, to, t, easing, speed)
|
animateElementTo(mag, to, t, easing, speed)
|
||||||
|
|
||||||
/*
|
|
||||||
// restore defaults...
|
|
||||||
// XXX this is a bit dumb at this point...
|
|
||||||
// XXX run this as a transition end handler...
|
|
||||||
setTimeout(function(){
|
|
||||||
//setTransitionEasing(mag, 'ease-out')
|
|
||||||
setTransitionEasing(mag, 'cubic-bezier(0.33,0.66,0.66,1)')
|
|
||||||
setTransitionDuration(mag, DEFAULT_TRANSITION_DURATION)
|
|
||||||
}, t+10)
|
|
||||||
*/
|
|
||||||
|
|
||||||
// check scroll bounds...
|
// check scroll bounds...
|
||||||
// do not let the user scroll out of view...
|
// do not let the user scroll out of view...
|
||||||
} else {
|
} else {
|
||||||
@ -219,14 +218,6 @@ function handleScrollRelease(evt, data){
|
|||||||
|
|
||||||
/********************************************************* helpers ***/
|
/********************************************************* helpers ***/
|
||||||
|
|
||||||
// XXX make this more acurate...
|
|
||||||
// ...should check mode or if we are in a ribbon...
|
|
||||||
var NAVIGATION_MODE_THRESHOLD = 0.7
|
|
||||||
function isNavigationViewRelative(){
|
|
||||||
return getMagazineScale() <= NAVIGATION_MODE_THRESHOLD
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// XXX there is something here that depends on scale that is either not
|
// XXX there is something here that depends on scale that is either not
|
||||||
// compensated, or is over compensated...
|
// compensated, or is over compensated...
|
||||||
function getMagazineOffset(page, scale, align){
|
function getMagazineOffset(page, scale, align){
|
||||||
@ -279,8 +270,8 @@ function getPageNumber(page){
|
|||||||
return $('.page').index(page)
|
return $('.page').index(page)
|
||||||
}
|
}
|
||||||
|
|
||||||
// get the next page relative to the current...
|
// current page index...
|
||||||
if(!isNavigationViewRelative()){
|
if(togglePageView('?') == 'on'){
|
||||||
return $('.page').index($('.current.page'))
|
return $('.page').index($('.current.page'))
|
||||||
|
|
||||||
// get the closest page to view center...
|
// get the closest page to view center...
|
||||||
@ -314,7 +305,7 @@ function setMagazineScale(scale){
|
|||||||
}
|
}
|
||||||
|
|
||||||
// center-align ribbon view pages...
|
// center-align ribbon view pages...
|
||||||
var align = isNavigationViewRelative() ? 'center' : null
|
var align = togglePageView('?') == 'off' ? 'center' : null
|
||||||
var left = getMagazineOffset(cur, scale, align)
|
var left = getMagazineOffset(cur, scale, align)
|
||||||
|
|
||||||
setElementTransform(mag, left, scale)
|
setElementTransform(mag, left, scale)
|
||||||
@ -345,7 +336,7 @@ function setCurrentPage(n){
|
|||||||
var cur = $('.current.page')
|
var cur = $('.current.page')
|
||||||
|
|
||||||
// center-align pages in ribbon view...
|
// center-align pages in ribbon view...
|
||||||
var align = isNavigationViewRelative() ? 'center' : null
|
var align = togglePageView('?') == 'off' ? 'center' : null
|
||||||
var left = getMagazineOffset(cur, null, align)
|
var left = getMagazineOffset(cur, null, align)
|
||||||
|
|
||||||
if(USE_TRANSITIONS_FOR_ANIMATION){
|
if(USE_TRANSITIONS_FOR_ANIMATION){
|
||||||
@ -388,5 +379,6 @@ function lastPage(){
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*********************************************************************/
|
|
||||||
// vim:set ts=4 sw=4 :
|
/**********************************************************************
|
||||||
|
* vim:set ts=4 sw=4 : */
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user