mirror of
				https://github.com/flynx/PortableMag.git
				synced 2025-10-31 03:50:16 +00:00 
			
		
		
		
	split off the layout control code into layout.js...
Signed-off-by: Alex A. Naanou <alex.nanou@gmail.com>
This commit is contained in:
		
							parent
							
								
									d24702e0d7
								
							
						
					
					
						commit
						5660eb26d0
					
				
							
								
								
									
										74
									
								
								layout.html
									
									
									
									
									
								
							
							
						
						
									
										74
									
								
								layout.html
									
									
									
									
									
								
							| @ -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
									
								
							
							
						
						
									
										90
									
								
								layout.js
									
									
									
									
									
										Executable 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 :
 | ||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user