From ae28d4fed4f84ff153e7b855e280d77066b81892 Mon Sep 17 00:00:00 2001 From: "Alex A. Naanou" Date: Wed, 30 Jan 2013 01:48:44 +0400 Subject: [PATCH] some refactoring... Signed-off-by: Alex A. Naanou --- magazine.js | 286 +++++++++++++++++++++++++++------------------------- 1 file changed, 146 insertions(+), 140 deletions(-) diff --git a/magazine.js b/magazine.js index dce42e5..20697d2 100755 --- a/magazine.js +++ b/magazine.js @@ -412,6 +412,7 @@ function prevArticle(){ /******************************************************* bookmarks ***/ // setup bookmarking active zones in page... +// XXX make this attach to page instead of it's number number... function setupBookmarkTouchZones(){ $('.bookmark-toggler').remove() var page = $('.page') @@ -423,7 +424,7 @@ function setupBookmarkTouchZones(){ title: 'Toggle bookmark (B)' }) .click(function(){ - toggleBookmark(i) + toggleBookmark($(e)) }) }) } @@ -471,7 +472,7 @@ function toggleBookmark(n){ title: 'Toggle bookmark (B)' }) .click(function(){ - toggleBookmark(n) + toggleBookmark(cur) }) $('.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()) + $('
') + .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 = $('
') + .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 ***/ // 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()) - $('
') - .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 = $('
') - .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 ***/ // XXX some things get really surprized when this is called, make things @@ -813,6 +816,7 @@ function clearMagazine(){ // - magazine // - cover function createMagazine(){ + // XXX } @@ -820,6 +824,7 @@ function createMagazine(){ // - article // - cover function createArticle(magazine, title){ + // XXX } @@ -827,6 +832,7 @@ function createArticle(magazine, title){ // - page // - content function createPage(article, template){ + // XXX }