Adding the ability to use data-zooms in HTML files
This commit is contained in:
		
							parent
							
								
									24459a8430
								
							
						
					
					
						commit
						855808b469
					
				
					 2 changed files with 49 additions and 10 deletions
				
			
		| 
						 | 
					@ -1,4 +1,4 @@
 | 
				
			||||||
zooms = [
 | 
					PAGES_ZOOMS = [
 | 
				
			||||||
    [1, 2481.0, 1327.1057, 0.0, 0.0],
 | 
					    [1, 2481.0, 1327.1057, 0.0, 0.0],
 | 
				
			||||||
    [1, 593.15338, 1076.4635, 0.0, 1364.053],
 | 
					    [1, 593.15338, 1076.4635, 0.0, 1364.053],
 | 
				
			||||||
    [1, 890.72864, 491.29874, 830.81415, 1751.5],
 | 
					    [1, 890.72864, 491.29874, 830.81415, 1751.5],
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										57
									
								
								melpomene.js
									
										
									
									
									
								
							
							
						
						
									
										57
									
								
								melpomene.js
									
										
									
									
									
								
							| 
						 | 
					@ -34,6 +34,15 @@ PROGRESS_BAR_CONTAINER = document.getElementById("reader-progress-container")
 | 
				
			||||||
PROGRESS_BAR = document.getElementById("reader-progress-bar")
 | 
					PROGRESS_BAR = document.getElementById("reader-progress-bar")
 | 
				
			||||||
PROGRESS_BAR_PAGES = document.getElementById("reader-progress-pages")
 | 
					PROGRESS_BAR_PAGES = document.getElementById("reader-progress-pages")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					//===========================
 | 
				
			||||||
 | 
					//  STATES GLOBAL VARIABLES
 | 
				
			||||||
 | 
					//===========================
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// The variable ZOOMS can either be defined by another JS file or contructed at init
 | 
				
			||||||
 | 
					if (typeof PAGES_ZOOMS == 'undefined') {
 | 
				
			||||||
 | 
					    PAGES_ZOOMS = null
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
CURRENT_ZOOM = 0
 | 
					CURRENT_ZOOM = 0
 | 
				
			||||||
CURRENT_PAGE = 1
 | 
					CURRENT_PAGE = 1
 | 
				
			||||||
CURRENT_WIDTH = 0
 | 
					CURRENT_WIDTH = 0
 | 
				
			||||||
| 
						 | 
					@ -51,10 +60,39 @@ MOUSEWHELL_WAIT = false
 | 
				
			||||||
// Zooms utilites
 | 
					// Zooms utilites
 | 
				
			||||||
// --------------
 | 
					// --------------
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					function loadZoomsFromImgTagsIfRequired(){
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    // Zooms may be defined by another JS file
 | 
				
			||||||
 | 
					    if (PAGES_ZOOMS == null){
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					        PAGES_ZOOMS = []
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					        // parse the data-zooms of each img and and the page number info
 | 
				
			||||||
 | 
					        for (var i = 0; i < READER_PAGES.children.length; i++) {
 | 
				
			||||||
 | 
					            
 | 
				
			||||||
 | 
					            zooms_raw_data = READER_PAGES.children[i].dataset.zooms
 | 
				
			||||||
 | 
					            
 | 
				
			||||||
 | 
					            // ';' separates zooms data, ',' separates values
 | 
				
			||||||
 | 
					            // We add the page number (adding 1 because of indexing)
 | 
				
			||||||
 | 
					            zooms = zooms_raw_data.split(";").map(
 | 
				
			||||||
 | 
					                zoom => [i + 1].concat(
 | 
				
			||||||
 | 
					                    zoom.split(',').map(
 | 
				
			||||||
 | 
					                        value => parseFloat(value)
 | 
				
			||||||
 | 
					                    )
 | 
				
			||||||
 | 
					                )
 | 
				
			||||||
 | 
					            )
 | 
				
			||||||
 | 
					            
 | 
				
			||||||
 | 
					            PAGES_ZOOMS = PAGES_ZOOMS.concat(zooms)
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
function getFirstZoomOfPage(pageNumber){
 | 
					function getFirstZoomOfPage(pageNumber){
 | 
				
			||||||
   
 | 
					   
 | 
				
			||||||
    for (var zoom_idx = 0; zoom_idx < zooms.length; zoom_idx++){
 | 
					    for (var zoom_idx = 0; zoom_idx < PAGES_ZOOMS.length; zoom_idx++){
 | 
				
			||||||
        if (zooms[zoom_idx][0] == pageNumber) {
 | 
					        if (PAGES_ZOOMS[zoom_idx][0] == pageNumber) {
 | 
				
			||||||
            return zoom_idx
 | 
					            return zoom_idx
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
| 
						 | 
					@ -63,12 +101,12 @@ function getFirstZoomOfPage(pageNumber){
 | 
				
			||||||
function getLastZoomOfPage(pageNumber){
 | 
					function getLastZoomOfPage(pageNumber){
 | 
				
			||||||
    let res = null
 | 
					    let res = null
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    for (var zoom_idx = 0; zoom_idx < zooms.length; zoom_idx++){
 | 
					    for (var zoom_idx = 0; zoom_idx < PAGES_ZOOMS.length; zoom_idx++){
 | 
				
			||||||
        if (zooms[zoom_idx][0] == pageNumber) {
 | 
					        if (PAGES_ZOOMS[zoom_idx][0] == pageNumber) {
 | 
				
			||||||
            res = zoom_idx
 | 
					            res = zoom_idx
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        
 | 
					        
 | 
				
			||||||
        if (res != null && zooms[zoom_idx][0] != pageNumber) {
 | 
					        if (res != null && PAGES_ZOOMS[zoom_idx][0] != pageNumber) {
 | 
				
			||||||
            break
 | 
					            break
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
| 
						 | 
					@ -77,11 +115,11 @@ function getLastZoomOfPage(pageNumber){
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
function getZoomCountForPage(pageNumber) {
 | 
					function getZoomCountForPage(pageNumber) {
 | 
				
			||||||
    return zooms.filter(zoom => zoom[0] == pageNumber).length
 | 
					    return PAGES_ZOOMS.filter(zoom => zoom[0] == pageNumber).length
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
function getCurrentZoomIndexForPage() {
 | 
					function getCurrentZoomIndexForPage() {
 | 
				
			||||||
    previousZoomsCount = zooms.filter(zoom => zoom[0] < CURRENT_PAGE).length
 | 
					    previousZoomsCount = PAGES_ZOOMS.filter(zoom => zoom[0] < CURRENT_PAGE).length
 | 
				
			||||||
    return CURRENT_ZOOM - previousZoomsCount + 1
 | 
					    return CURRENT_ZOOM - previousZoomsCount + 1
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -148,6 +186,7 @@ function totalPagesWidth() {
 | 
				
			||||||
// =========
 | 
					// =========
 | 
				
			||||||
 | 
					
 | 
				
			||||||
function initReader(){
 | 
					function initReader(){
 | 
				
			||||||
 | 
					    loadZoomsFromImgTagsIfRequired()
 | 
				
			||||||
    moveReaderDisplayToZoom(0)
 | 
					    moveReaderDisplayToZoom(0)
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    // Smoothly show pictures when they intersect with the viewport
 | 
					    // Smoothly show pictures when they intersect with the viewport
 | 
				
			||||||
| 
						 | 
					@ -232,7 +271,7 @@ function moveReaderDisplayToPage(pageNumber) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
function moveReaderDisplayToZoom(index) {
 | 
					function moveReaderDisplayToZoom(index) {
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    moveReaderDisplayToArea(zooms[index][0], zooms[index][1], zooms[index][2], zooms[index][3], zooms[index][4])
 | 
					    moveReaderDisplayToArea(PAGES_ZOOMS[index][0], PAGES_ZOOMS[index][1], PAGES_ZOOMS[index][2], PAGES_ZOOMS[index][3], PAGES_ZOOMS[index][4])
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    CURRENT_ZOOM = index
 | 
					    CURRENT_ZOOM = index
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -278,7 +317,7 @@ function moveReader(to_next) {
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    } else {
 | 
					    } else {
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
        if (to_next && CURRENT_ZOOM < zooms.length - 1) {
 | 
					        if (to_next && CURRENT_ZOOM < PAGES_ZOOMS.length - 1) {
 | 
				
			||||||
            moveReaderDisplayToZoom(CURRENT_ZOOM + 1)
 | 
					            moveReaderDisplayToZoom(CURRENT_ZOOM + 1)
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        
 | 
					        
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue