mirror of
				https://github.com/flynx/ImageGrid.git
				synced 2025-10-31 03:10:07 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			203 lines
		
	
	
		
			4.0 KiB
		
	
	
	
		
			HTML
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			203 lines
		
	
	
		
			4.0 KiB
		
	
	
	
		
			HTML
		
	
	
		
			Executable File
		
	
	
	
	
| <html>
 | |
| <head>
 | |
| <title>ImageGrid.Viewer</title>
 | |
| 
 | |
| 
 | |
| <link rel="stylesheet" href="layout.css">
 | |
| 
 | |
| <style>
 | |
| 
 | |
| 
 | |
| 
 | |
| </style>
 | |
| 
 | |
| 
 | |
| <script src="ext-lib/jquery.js"></script>
 | |
| 
 | |
| <script src="lib/jli.js"></script>
 | |
| <script src="lib/keyboard.js"></script>
 | |
| 
 | |
| <script src="base.js"></script>
 | |
| <script src="modes.js"></script>
 | |
| <script src="marks.js"></script>
 | |
| <script src="data.js"></script>
 | |
| <script src="info.js"></script>
 | |
| <script src="ui.js"></script>
 | |
| <script src="setup.js"></script>
 | |
| <script src="keybindings.js"></script>
 | |
| 
 | |
| 
 | |
| <!-- XXX STUB -->
 | |
| <script src="images.js"></script>
 | |
| 
 | |
| 
 | |
| <script>
 | |
| 
 | |
| //DEBUG = true
 | |
| 
 | |
| // setup...
 | |
| $(function(){
 | |
| 	// defaults...
 | |
| 	toggleTheme('gray')
 | |
| 	toggleImageInfo('on')
 | |
| 
 | |
| 	autoHideCursor($('.viewer'))
 | |
| 
 | |
| 	// NOTE: this is global so as to not to add any extra complexity to 
 | |
| 	//		the internal workings...
 | |
| 	$('.viewer')
 | |
| 		.click(clickHandler)
 | |
| 		// XXX for some reason this messes up alignment on initial view...
 | |
| 		//.dblclick(dblClickHandler)
 | |
| 
 | |
| 	$(window)
 | |
| 		// XXX in single image mode this still causes problems...
 | |
| 		//		this can be resolved by cycling to ribbon mode and back...
 | |
| 		.resize(function() {
 | |
| 
 | |
| 			toggleImageProportions('!')
 | |
| 			centerView()
 | |
| 		})
 | |
| 		
 | |
| 	$(document)
 | |
| 		.keydown(makeKeyboardHandler(
 | |
| 			KEYBOARD_CONFIG,
 | |
| 			function(k){
 | |
| 				window.DEBUG && console.log(k)
 | |
| 			}))
 | |
| 
 | |
| 	setupDataBindings()
 | |
| 
 | |
| 
 | |
| 	/* XXX drag/drop
 | |
| 	$(document)
 | |
| 		.bind('dragover', function(e){
 | |
| 			e.stopPropagation()
 | |
| 			e.preventDefault()
 | |
| 			// XXX is there a jQuery way out of this??
 | |
| 			e.originalEvent.dataTransfer.dropEffect = 'copy' // Explicitly show this is a copy.
 | |
| 		})
 | |
| 		.bind('drop', function(e){
 | |
| 			e.stopPropagation()
 | |
| 			e.preventDefault()
 | |
| 
 | |
| 			// XXX is there a jQuery way out of this??
 | |
| 			var files = e.originalEvent.dataTransfer.files
 | |
| 
 | |
| 			// XXX should we be using the loadJSON here???
 | |
| 			// XXX desperatly need image caching and preview generation...
 | |
| 
 | |
| 			for (var i = 0, f; f = files[i]; i++) {
 | |
| 
 | |
| 				if (!f.type.match('image.*')) {
 | |
| 					continue
 | |
| 				}
 | |
| 				console.log('FILE:', f)
 | |
| 
 | |
| 				var reader = new FileReader()
 | |
| 				reader.onload = function(i){
 | |
| 					return function(e){
 | |
| 						// XXX need to avoid data URLs here and use plain old paths...
 | |
| 						//ribbon.append(makeImage(e.target.result, i))
 | |
| 						console.log('DROPPED')//, e.target.result)
 | |
| 					}
 | |
| 				}(i)
 | |
| 
 | |
| 				reader.readAsDataURL(f)
 | |
| 				//reader.readAsText(f)
 | |
| 			}
 | |
| 
 | |
| 		})
 | |
| 		*/
 | |
| 
 | |
| 	// we have an image file...
 | |
| 	if((DATA_ATTR + '_BASE_URL') in localStorage){
 | |
| 		BASE_URL = localStorage[DATA_ATTR + '_BASE_URL']
 | |
| 
 | |
| 		var loading = loadDir(BASE_URL)
 | |
| 
 | |
| 	} else {
 | |
| 		// everything is in localStorage...
 | |
| 		if('DATA' in localStorage){
 | |
| 			loadLocalStorage()
 | |
| 
 | |
| 		// legacy default data...
 | |
| 		} else {
 | |
| 			DATA = convertDataGen1(image_list)
 | |
| 			DATA = DATA.data
 | |
| 			IMAGES = DATA.images
 | |
| 			reloadViewer()
 | |
| 		}
 | |
| 		var loading = $.Deferred().resolve()
 | |
| 	}
 | |
| 
 | |
| 	loading
 | |
| 		.done(function(){
 | |
| 			showStatus('Loading settings...')
 | |
| 			loadLocalStorageSettings()
 | |
| 
 | |
| 			// XXX this will reload everything...
 | |
| 			if('MARKED' in localStorage){
 | |
| 				loadLocalStorageMarks()
 | |
| 			}
 | |
| 
 | |
| 			updateImages()
 | |
| 		})
 | |
| 
 | |
| })
 | |
| 
 | |
| 
 | |
| </script>
 | |
| 
 | |
| </head>
 | |
| <body>
 | |
| 
 | |
| <!-- This is the basic viewer structure...
 | |
| 
 | |
| Unpopulated
 | |
| NOTE: there can be only .ribbon-set element.
 | |
| 
 | |
| <div class="viewer">
 | |
| 	<div class="ribbon-set"></div>
 | |
| </div>
 | |
| 
 | |
| 
 | |
| Populated
 | |
| 
 | |
| <div class="viewer">
 | |
| 	<div class="ribbon-set">
 | |
| 		<div class="ribbon">
 | |
| 			<div class="image"></div>
 | |
| 			<div class="image"></div>
 | |
| 		</div>
 | |
| 		<div class="ribbon">
 | |
| 			<div class="image"></div>
 | |
| 			<div class="current image"></div>
 | |
| 			<div class="image"></div>
 | |
| 			<div class="image"></div>
 | |
| 		</div>
 | |
| 	</div>
 | |
| </div>
 | |
| -->
 | |
| 
 | |
| <div class="viewer">
 | |
| 
 | |
| 	<div class="ribbon-set"></div>
 | |
| 
 | |
| 
 | |
| 	<!-- XXX should these be here??? -->
 | |
| 	<div class="up-indicator"></div>
 | |
| 	<div class="down-indicator"></div>
 | |
| 	<div class="start-indicator"></div>
 | |
| 	<div class="end-indicator"></div>
 | |
| 	<div class="overlay-block">
 | |
| 		<div class="background"></div>
 | |
| 		<div class="content"></div>
 | |
| 	</div>
 | |
| </div>
 | |
| 
 | |
| 
 | |
| <!-- vim:set ts=4 sw=4 spell : -->
 | |
| </body>
 | |
| </html>
 |