mirror of
https://github.com/flynx/PortableMag.git
synced 2025-10-30 03:30:09 +00:00
some refactoring...
Signed-off-by: Alex A. Naanou <alex.nanou@gmail.com>
This commit is contained in:
parent
fc7c48bf2e
commit
ae28d4fed4
286
magazine.js
286
magazine.js
@ -412,6 +412,7 @@ function prevArticle(){
|
|||||||
/******************************************************* bookmarks ***/
|
/******************************************************* bookmarks ***/
|
||||||
|
|
||||||
// setup bookmarking active zones in page...
|
// setup bookmarking active zones in page...
|
||||||
|
// XXX make this attach to page instead of it's number number...
|
||||||
function setupBookmarkTouchZones(){
|
function setupBookmarkTouchZones(){
|
||||||
$('.bookmark-toggler').remove()
|
$('.bookmark-toggler').remove()
|
||||||
var page = $('.page')
|
var page = $('.page')
|
||||||
@ -423,7 +424,7 @@ function setupBookmarkTouchZones(){
|
|||||||
title: 'Toggle bookmark (B)'
|
title: 'Toggle bookmark (B)'
|
||||||
})
|
})
|
||||||
.click(function(){
|
.click(function(){
|
||||||
toggleBookmark(i)
|
toggleBookmark($(e))
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
@ -471,7 +472,7 @@ function toggleBookmark(n){
|
|||||||
title: 'Toggle bookmark (B)'
|
title: 'Toggle bookmark (B)'
|
||||||
})
|
})
|
||||||
.click(function(){
|
.click(function(){
|
||||||
toggleBookmark(n)
|
toggleBookmark(cur)
|
||||||
})
|
})
|
||||||
|
|
||||||
$('.viewer').trigger('bookmarkAdded', n)
|
$('.viewer').trigger('bookmarkAdded', n)
|
||||||
@ -508,6 +509,146 @@ function prevBookmark(){
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/******************************************************* navigator ***/
|
||||||
|
// NOTE: the navigator is not live and will need to get regenerated on
|
||||||
|
// each magazine edit...
|
||||||
|
|
||||||
|
// XXX make this attach to page instead of it's number number...
|
||||||
|
function _makeArticleIndicator(i, article, width){
|
||||||
|
var bar = $('.navigator .bar')
|
||||||
|
var article = $(article)
|
||||||
|
var n = getPageNumber(article.children('.cover').first())
|
||||||
|
$('<div/>')
|
||||||
|
.prependTo($('.navigator .bar'))
|
||||||
|
.addClass('article')
|
||||||
|
.css({
|
||||||
|
width: width,
|
||||||
|
left: width*n
|
||||||
|
})
|
||||||
|
.click(function(){
|
||||||
|
setCurrentPage(n)
|
||||||
|
})
|
||||||
|
return article
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function setupArticleIndicators(W){
|
||||||
|
var articles = $('.magazine .article')
|
||||||
|
// cleanup...
|
||||||
|
clearArticleIndicators()
|
||||||
|
// set article indicator positions...
|
||||||
|
articles.each(function(i, e){
|
||||||
|
return _makeArticleIndicator(i, e, W)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
function clearArticleIndicators(){
|
||||||
|
$('.navigator .bar .article').remove()
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function setupNavigator(){
|
||||||
|
var bar = $('.navigator .bar')
|
||||||
|
var elems = $('.navigator .indicator, .navigator .article')
|
||||||
|
var pos = $('.navigator .indicator').fadeIn()
|
||||||
|
var pages = $('.page').length
|
||||||
|
var mag = $('.magazine')
|
||||||
|
|
||||||
|
var W = bar.width()/pages
|
||||||
|
|
||||||
|
setupArticleIndicators(W)
|
||||||
|
|
||||||
|
// set navigator element sizes...
|
||||||
|
elems.css({
|
||||||
|
width: W
|
||||||
|
})
|
||||||
|
|
||||||
|
updateNavigator()
|
||||||
|
|
||||||
|
// setup event handlers...
|
||||||
|
$('.viewer')
|
||||||
|
.on('pageChanged', function(e, n){updateNavigator(n)})
|
||||||
|
.on('magazineDragging', function(){updateNavigator()})
|
||||||
|
}
|
||||||
|
|
||||||
|
function clearNavigator(){
|
||||||
|
$('.navigator .indicator').hide()
|
||||||
|
clearBookmarkIndicators()
|
||||||
|
clearArticleIndicators()
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function updateNavigator(n){
|
||||||
|
var mag = $('.magazine')
|
||||||
|
var page = $('.page')
|
||||||
|
var bar = $('.navigator .bar')
|
||||||
|
var pos = $('.navigator .indicator')
|
||||||
|
|
||||||
|
var pn = page.length
|
||||||
|
|
||||||
|
var bW = bar.width()
|
||||||
|
var mW = mag.width()
|
||||||
|
var PW = page.width()
|
||||||
|
var pW = bar.width()/pn
|
||||||
|
|
||||||
|
if(n == null){
|
||||||
|
// XXX this behaves erratically if the page is zoomed...
|
||||||
|
var res = (-parseFloat(mag.css('left'))/(mW-PW)) * (bW-pW)
|
||||||
|
} else {
|
||||||
|
res = pW*n
|
||||||
|
}
|
||||||
|
|
||||||
|
// normalize the position...
|
||||||
|
res = res > 0 ? res: 0
|
||||||
|
res = res < (bW-pW) ? res: (bW-pW)
|
||||||
|
|
||||||
|
// set indicator position...
|
||||||
|
pos.css({
|
||||||
|
left: res
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function makeBookmarkIndicator(n){
|
||||||
|
if(n == null){
|
||||||
|
n = getPageNumber()
|
||||||
|
} else if(typeof(n) != typeof(1)){
|
||||||
|
n = getPageNumber(n)
|
||||||
|
}
|
||||||
|
var bar = $('.navigator .bar')
|
||||||
|
var pages = $('.page').length
|
||||||
|
var width = bar.width()/pages
|
||||||
|
var res = $('<div/>')
|
||||||
|
.prependTo($('.navigator .bar'))
|
||||||
|
.addClass('bookmark')
|
||||||
|
.css({
|
||||||
|
left: width*n + width*0.75
|
||||||
|
})
|
||||||
|
.attr({
|
||||||
|
page: n
|
||||||
|
})
|
||||||
|
.click(function(){
|
||||||
|
setCurrentPage(n)
|
||||||
|
})
|
||||||
|
|
||||||
|
return res
|
||||||
|
}
|
||||||
|
|
||||||
|
function clearBookmarkIndicators(){
|
||||||
|
$('.navigator .bar .bookmark').remove()
|
||||||
|
}
|
||||||
|
function removeBookmarkIndicator(n){
|
||||||
|
$('.navigator .bar .bookmark[page="'+n+'"]').remove()
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// NOTE: this is 1 based page number, the rest of the system is 0 based.
|
||||||
|
function updatePageNumberIndicator(){
|
||||||
|
$('.page-number').text((getPageNumber()+1)+'/'+$('.page').length)
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*********************************************************** state ***/
|
/*********************************************************** state ***/
|
||||||
|
|
||||||
// XXX make these magazine-specific...
|
// XXX make these magazine-specific...
|
||||||
@ -661,144 +802,6 @@ function saveState(){
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
/******************************************************* navigator ***/
|
|
||||||
|
|
||||||
function _makeArticleIndicator(i, article, width){
|
|
||||||
var bar = $('.navigator .bar')
|
|
||||||
var article = $(article)
|
|
||||||
var n = getPageNumber(article.children('.cover').first())
|
|
||||||
$('<div/>')
|
|
||||||
.prependTo($('.navigator .bar'))
|
|
||||||
.addClass('article')
|
|
||||||
.css({
|
|
||||||
width: width,
|
|
||||||
left: width*n
|
|
||||||
})
|
|
||||||
.click(function(){
|
|
||||||
setCurrentPage(n)
|
|
||||||
})
|
|
||||||
return article
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
function setupArticleIndicators(W){
|
|
||||||
var articles = $('.magazine .article')
|
|
||||||
// cleanup...
|
|
||||||
clearArticleIndicators()
|
|
||||||
// set article indicator positions...
|
|
||||||
articles.each(function(i, e){
|
|
||||||
return _makeArticleIndicator(i, e, W)
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
function clearArticleIndicators(){
|
|
||||||
$('.navigator .bar .article').remove()
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
function setupNavigator(){
|
|
||||||
var bar = $('.navigator .bar')
|
|
||||||
var elems = $('.navigator .indicator, .navigator .article')
|
|
||||||
var pos = $('.navigator .indicator').fadeIn()
|
|
||||||
var pages = $('.page').length
|
|
||||||
var mag = $('.magazine')
|
|
||||||
|
|
||||||
var W = bar.width()/pages
|
|
||||||
|
|
||||||
setupArticleIndicators(W)
|
|
||||||
|
|
||||||
// set navigator element sizes...
|
|
||||||
elems.css({
|
|
||||||
width: W
|
|
||||||
})
|
|
||||||
|
|
||||||
updateNavigator()
|
|
||||||
|
|
||||||
// setup event handlers...
|
|
||||||
$('.viewer')
|
|
||||||
.on('pageChanged', function(e, n){updateNavigator(n)})
|
|
||||||
.on('magazineDragging', function(){updateNavigator()})
|
|
||||||
}
|
|
||||||
|
|
||||||
function clearNavigator(){
|
|
||||||
$('.navigator .indicator').hide()
|
|
||||||
clearBookmarkIndicators()
|
|
||||||
clearArticleIndicators()
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
function updateNavigator(n){
|
|
||||||
var mag = $('.magazine')
|
|
||||||
var page = $('.page')
|
|
||||||
var bar = $('.navigator .bar')
|
|
||||||
var pos = $('.navigator .indicator')
|
|
||||||
|
|
||||||
var pn = page.length
|
|
||||||
|
|
||||||
var bW = bar.width()
|
|
||||||
var mW = mag.width()
|
|
||||||
var PW = page.width()
|
|
||||||
var pW = bar.width()/pn
|
|
||||||
|
|
||||||
if(n == null){
|
|
||||||
// XXX this behaves erratically if the page is zoomed...
|
|
||||||
var res = (-parseFloat(mag.css('left'))/(mW-PW)) * (bW-pW)
|
|
||||||
} else {
|
|
||||||
res = pW*n
|
|
||||||
}
|
|
||||||
|
|
||||||
// normalize the position...
|
|
||||||
res = res > 0 ? res: 0
|
|
||||||
res = res < (bW-pW) ? res: (bW-pW)
|
|
||||||
|
|
||||||
// set indicator position...
|
|
||||||
pos.css({
|
|
||||||
left: res
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
function makeBookmarkIndicator(n){
|
|
||||||
if(n == null){
|
|
||||||
n = getPageNumber()
|
|
||||||
} else if(typeof(n) != typeof(1)){
|
|
||||||
n = getPageNumber(n)
|
|
||||||
}
|
|
||||||
var bar = $('.navigator .bar')
|
|
||||||
var pages = $('.page').length
|
|
||||||
var width = bar.width()/pages
|
|
||||||
var res = $('<div/>')
|
|
||||||
.prependTo($('.navigator .bar'))
|
|
||||||
.addClass('bookmark')
|
|
||||||
.css({
|
|
||||||
left: width*n + width*0.75
|
|
||||||
})
|
|
||||||
.attr({
|
|
||||||
page: n
|
|
||||||
})
|
|
||||||
.click(function(){
|
|
||||||
setCurrentPage(n)
|
|
||||||
})
|
|
||||||
|
|
||||||
return res
|
|
||||||
}
|
|
||||||
|
|
||||||
function clearBookmarkIndicators(){
|
|
||||||
$('.navigator .bar .bookmark').remove()
|
|
||||||
}
|
|
||||||
function removeBookmarkIndicator(n){
|
|
||||||
$('.navigator .bar .bookmark[page="'+n+'"]').remove()
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// NOTE: this is 1 based page number, the rest of the system is 0 based.
|
|
||||||
function updatePageNumberIndicator(){
|
|
||||||
$('.page-number').text((getPageNumber()+1)+'/'+$('.page').length)
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/********************************************************** editor ***/
|
/********************************************************** editor ***/
|
||||||
|
|
||||||
// XXX some things get really surprized when this is called, make things
|
// XXX some things get really surprized when this is called, make things
|
||||||
@ -813,6 +816,7 @@ function clearMagazine(){
|
|||||||
// - magazine
|
// - magazine
|
||||||
// - cover
|
// - cover
|
||||||
function createMagazine(){
|
function createMagazine(){
|
||||||
|
// XXX
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -820,6 +824,7 @@ function createMagazine(){
|
|||||||
// - article
|
// - article
|
||||||
// - cover
|
// - cover
|
||||||
function createArticle(magazine, title){
|
function createArticle(magazine, title){
|
||||||
|
// XXX
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -827,6 +832,7 @@ function createArticle(magazine, title){
|
|||||||
// - page
|
// - page
|
||||||
// - content
|
// - content
|
||||||
function createPage(article, template){
|
function createPage(article, template){
|
||||||
|
// XXX
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user