| 
									
										
										
										
											2013-04-26 05:30:56 +04:00
										 |  |  | <html> | 
					
						
							|  |  |  | <head> | 
					
						
							|  |  |  | <title>ImageGrid.Viewer</title> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-05-31 00:23:45 +04:00
										 |  |  | <link rel="stylesheet" href="layout.css"> | 
					
						
							| 
									
										
										
										
											2013-05-17 04:52:43 +04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-05-31 00:23:45 +04:00
										 |  |  | <style> | 
					
						
							| 
									
										
										
										
											2013-05-30 19:15:38 +04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-05-30 07:29:07 +04:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-04-26 05:30:56 +04:00
										 |  |  | </style> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-05-28 15:22:05 +04:00
										 |  |  | <script src="ext-lib/jquery.js"></script> | 
					
						
							| 
									
										
										
										
											2013-04-26 05:30:56 +04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-04-26 23:07:07 +04:00
										 |  |  | <script src="lib/jli.js"></script> | 
					
						
							|  |  |  | <script src="lib/keyboard.js"></script> | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-05-14 17:42:17 +04:00
										 |  |  | <script src="base.js"></script> | 
					
						
							| 
									
										
										
										
											2013-05-17 15:34:45 +04:00
										 |  |  | <script src="modes.js"></script> | 
					
						
							| 
									
										
										
										
											2013-05-17 06:57:35 +04:00
										 |  |  | <script src="marks.js"></script> | 
					
						
							| 
									
										
										
										
											2013-05-14 17:42:17 +04:00
										 |  |  | <script src="data.js"></script> | 
					
						
							|  |  |  | <script src="ui.js"></script> | 
					
						
							| 
									
										
										
										
											2013-05-28 15:22:05 +04:00
										 |  |  | <script src="keybindings.js"></script> | 
					
						
							| 
									
										
										
										
											2013-04-29 02:31:01 +04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-05-14 21:49:05 +04:00
										 |  |  | 
 | 
					
						
							|  |  |  | <!-- XXX STUB --> | 
					
						
							|  |  |  | <script src="images.js"></script> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-05-02 19:47:04 +04:00
										 |  |  | <script> | 
					
						
							| 
									
										
										
										
											2013-04-29 02:31:01 +04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-05-17 18:20:38 +04:00
										 |  |  | //DEBUG = true | 
					
						
							| 
									
										
										
										
											2013-05-14 21:49:05 +04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-04-26 05:30:56 +04:00
										 |  |  | // setup... | 
					
						
							|  |  |  | $(function(){ | 
					
						
							| 
									
										
										
										
											2013-06-01 18:43:14 +04:00
										 |  |  | 	// defaults... | 
					
						
							| 
									
										
										
										
											2013-05-18 01:16:56 +04:00
										 |  |  | 	toggleTheme('gray') | 
					
						
							| 
									
										
										
										
											2013-06-01 18:43:14 +04:00
										 |  |  | 	toggleImageInfo('on') | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	autoHideCursor($('.viewer')) | 
					
						
							| 
									
										
										
										
											2013-05-17 17:58:23 +04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-04-26 05:30:56 +04:00
										 |  |  | 	// NOTE: this is global so as to not to add any extra complexity to  | 
					
						
							|  |  |  | 	//		the internal workings... | 
					
						
							| 
									
										
										
										
											2013-05-03 17:08:59 +04:00
										 |  |  | 	$('.viewer') | 
					
						
							|  |  |  | 		.click(clickHandler) | 
					
						
							| 
									
										
										
										
											2013-05-17 15:34:45 +04:00
										 |  |  | 		// XXX for some reason this messes up alignment on initial view... | 
					
						
							|  |  |  | 		//.dblclick(dblClickHandler) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	$(window) | 
					
						
							|  |  |  | 		.resize(function() { | 
					
						
							|  |  |  | 			// XXX should this be animated or not? | 
					
						
							|  |  |  | 			centerView() | 
					
						
							|  |  |  | 		}) | 
					
						
							|  |  |  | 		 | 
					
						
							| 
									
										
										
										
											2013-05-02 23:22:43 +04:00
										 |  |  | 	$(document) | 
					
						
							|  |  |  | 		.keydown(makeKeyboardHandler( | 
					
						
							|  |  |  | 			KEYBOARD_CONFIG, | 
					
						
							| 
									
										
										
										
											2013-05-15 00:24:33 +04:00
										 |  |  | 			function(k){ | 
					
						
							|  |  |  | 				window.DEBUG && console.log(k) | 
					
						
							|  |  |  | 			})) | 
					
						
							| 
									
										
										
										
											2013-05-03 17:08:59 +04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-05-13 02:24:36 +04:00
										 |  |  | 	setupDataBindings() | 
					
						
							| 
									
										
										
										
											2013-05-03 17:08:59 +04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-05-22 03:00:38 +04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-05-28 19:25:13 +04:00
										 |  |  | 	/* 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) | 
					
						
							|  |  |  | 			} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		}) | 
					
						
							|  |  |  | 		*/ | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-05-22 03:00:38 +04:00
										 |  |  | 	//setElementOrigin($('.ribbon-set'), 'top', 'left') | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-05-28 04:41:16 +04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-05-22 03:00:38 +04:00
										 |  |  | 	// we have an image file... | 
					
						
							| 
									
										
										
										
											2013-05-28 02:17:24 +04:00
										 |  |  | 	if((DATA_ATTR + '_BASE_URL') in localStorage){ | 
					
						
							|  |  |  | 		BASE_URL = localStorage[DATA_ATTR + '_BASE_URL'] | 
					
						
							| 
									
										
										
										
											2013-05-28 04:41:16 +04:00
										 |  |  | 
 | 
					
						
							|  |  |  | 		var loading = loadDir(BASE_URL) | 
					
						
							| 
									
										
										
										
											2013-05-22 03:00:38 +04:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	} else { | 
					
						
							|  |  |  | 		// everything is in localStorage... | 
					
						
							|  |  |  | 		if('DATA' in localStorage){ | 
					
						
							|  |  |  | 			loadLocalStorage() | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		// legacy default data... | 
					
						
							|  |  |  | 		} else { | 
					
						
							|  |  |  | 			DATA = convertDataGen1(image_list) | 
					
						
							|  |  |  | 			DATA = DATA.data | 
					
						
							|  |  |  | 			IMAGES = DATA.images | 
					
						
							|  |  |  | 			loadData() | 
					
						
							|  |  |  | 		} | 
					
						
							| 
									
										
										
										
											2013-05-22 03:41:51 +04:00
										 |  |  | 		var loading = $.Deferred().resolve() | 
					
						
							|  |  |  | 	} | 
					
						
							| 
									
										
										
										
											2013-05-22 03:00:38 +04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-05-22 03:41:51 +04:00
										 |  |  | 	loading | 
					
						
							|  |  |  | 		.done(function(){ | 
					
						
							| 
									
										
										
										
											2013-05-28 04:41:16 +04:00
										 |  |  | 			console.log('Loading settings...') | 
					
						
							|  |  |  | 			loadLocalStorageSettings() | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-05-22 03:41:51 +04:00
										 |  |  | 			// XXX this will reload everything... | 
					
						
							|  |  |  | 			if('MARKED' in localStorage){ | 
					
						
							|  |  |  | 				loadLocalStorageMarks() | 
					
						
							|  |  |  | 			} | 
					
						
							| 
									
										
										
										
											2013-05-22 03:00:38 +04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-05-22 03:41:51 +04:00
										 |  |  | 			updateImages() | 
					
						
							|  |  |  | 		}) | 
					
						
							| 
									
										
										
										
											2013-05-22 03:00:38 +04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-04-26 05:30:56 +04:00
										 |  |  | }) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | </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"> | 
					
						
							| 
									
										
										
										
											2013-04-30 00:54:32 +04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-04-26 05:30:56 +04:00
										 |  |  | 	<div class="ribbon-set"></div> | 
					
						
							| 
									
										
										
										
											2013-04-30 00:54:32 +04:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-04-30 01:34:26 +04:00
										 |  |  | 	<!-- XXX should these be here??? --> | 
					
						
							| 
									
										
										
										
											2013-04-30 00:54:32 +04:00
										 |  |  | 	<div class="up-indicator"></div> | 
					
						
							|  |  |  | 	<div class="down-indicator"></div> | 
					
						
							| 
									
										
										
										
											2013-05-03 19:24:06 +04:00
										 |  |  | 	<div class="start-indicator"></div> | 
					
						
							|  |  |  | 	<div class="end-indicator"></div> | 
					
						
							| 
									
										
										
										
											2013-05-23 15:22:38 +04:00
										 |  |  | 	<div class="overlay-block"> | 
					
						
							|  |  |  | 		<div class="background"></div> | 
					
						
							|  |  |  | 		<div class="content"></div> | 
					
						
							|  |  |  | 	</div> | 
					
						
							| 
									
										
										
										
											2013-04-26 05:30:56 +04:00
										 |  |  | </div> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | <!-- vim:set ts=4 sw=4 spell : --> | 
					
						
							|  |  |  | </body> | 
					
						
							|  |  |  | </html> |