split off the layout control code into layout.js...

Signed-off-by: Alex A. Naanou <alex.nanou@gmail.com>
This commit is contained in:
Alex A. Naanou 2013-02-12 01:28:52 +04:00
parent d24702e0d7
commit 5660eb26d0
2 changed files with 91 additions and 73 deletions

View File

@ -43,82 +43,10 @@
<script src="lib/jli.js"></script> <script src="lib/jli.js"></script>
<script src="magazine.js"></script> <script src="magazine.js"></script>
<script src="layout.js"></script>
<script> <script>
function getPageNumber(page){
if(page != null){
return $('.page').index($(page))
} else {
var s = $('.viewer').scrollLeft()
var W = $('.viewer').width()
var cur = -1
var res = $('.page').map(function(i, e){
e = $(e)
var l = e.position().left
var w = e.width()
return Math.abs((l+(w/2)) - (s+(W/2)))
})
cur = res.index(Math.min.apply(Math, res))
return cur
}
}
function setCurrentPage(n){
if(n == null){
n = getPageNumber()
}
var l = $('.page').length
n = n < 0 ? l - n : n
n = n < -l ? 0 : n
n = n >= l ? l - 1 : n
$('.current.page').removeClass('current')
$($('.page')[n]).addClass('current')
var cur = $('.current.page')
var offset = $('.viewer').width()/2 - cur.width()/2
cur.ScrollTo({
offsetLeft: offset
})
}
function nextPage(){
setCurrentPage(getPageNumber()+1)
}
function prevPage(){
var n = getPageNumber()-1
n = n < 0 ? 0 : n
setCurrentPage(n)
}
function firstPage(){
setCurrentPage(0)
}
function lastPage(){
setCurrentPage(-1)
}
var togglePageFitMode = createCSSClassToggler(
'.viewer',
'.page-fit-to-viewer',
function(action){
if(action == 'on'){
console.log('fitting pages to view...')
fitPagesToView()
} else {
console.log('restoring page sizes...')
restorePageSizes()
}
})
function fitPagesToView(){
var n = getPageNumber()
$('.page:not(.no-resize)').width($('.viewer').width())
setCurrentPage(n)
}
function restorePageSizes(){
var n = getPageNumber()
$('.page:not(.no-resize)').width('')
setCurrentPage(n)
}
$(document).ready(function(){ $(document).ready(function(){
// keyboard... // keyboard...
$(document) $(document)

90
layout.js Executable file
View File

@ -0,0 +1,90 @@
/**********************************************************************
*
* XXX add copyright and licence info...
*
**********************************************************************/
/********************************************************** layout ***/
var togglePageFitMode = createCSSClassToggler(
'.viewer',
'.page-fit-to-viewer',
function(action){
if(action == 'on'){
console.log('fitting pages to view...')
var n = getPageNumber()
$('.page:not(.no-resize)').width($('.viewer').width())
setCurrentPage(n)
} else {
console.log('restoring page sizes...')
var n = getPageNumber()
$('.page:not(.no-resize)').width('')
setCurrentPage(n)
}
})
/********************************************************* helpers ***/
function getPageNumber(page){
if(page != null){
return $('.page').index($(page))
}
var s = $('.viewer').scrollLeft()
var W = $('.viewer').width()
var cur = -1
var res = $('.page').map(function(i, e){
e = $(e)
var l = e.position().left
var w = e.width()
return Math.abs((l+(w/2)) - (s+(W/2)))
})
cur = res.index(Math.min.apply(Math, res))
return cur
}
/********************************************************* actions ***/
function setCurrentPage(n){
if(n == null){
n = getPageNumber()
}
var l = $('.page').length
n = n < 0 ? l - n : n
n = n < -l ? 0 : n
n = n >= l ? l - 1 : n
$('.current.page').removeClass('current')
$($('.page')[n]).addClass('current')
var cur = $('.current.page')
var offset = $('.viewer').width()/2 - cur.width()/2
cur.ScrollTo({
offsetLeft: offset
})
}
function nextPage(){
setCurrentPage(getPageNumber()+1)
}
function prevPage(){
var n = getPageNumber()-1
n = n < 0 ? 0 : n
setCurrentPage(n)
}
function firstPage(){
setCurrentPage(0)
}
function lastPage(){
setCurrentPage(-1)
}
/*********************************************************************/
// vim:set ts=4 sw=4 :