mirror of
				https://github.com/flynx/ImageGrid.git
				synced 2025-10-31 11:20:09 +00:00 
			
		
		
		
	
		
			
	
	
		
			574 lines
		
	
	
		
			20 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
		
		
			
		
	
	
			574 lines
		
	
	
		
			20 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
|  | Priority work | ||
|  | 	[_] 67% Preview II | ||
|  | 		[_] BUG: moving the last image from a ribbon up will make the screen jump... | ||
|  | 		[_] do something sensible when no images are loaded... | ||
|  | 		| in the simplest case, just write something in the middle of  | ||
|  | 		| the background... | ||
|  | 		| | ||
|  | 		| this might include a set of instructions... | ||
|  | 		[_] 46% native client | ||
|  | 			[_] 19% Generic | ||
|  | 				[X] make cache generator accept command-line args... | ||
|  | 				| very basic form... | ||
|  | 				[_] 0% import UI | ||
|  | 				| (a-la IrfanView fast browser) | ||
|  | 					[_] directory | ||
|  | 					[_] JSON | ||
|  | 					[_] CouchDB URL | ||
|  | 					| low priority at this point... | ||
|  | 				[_] 0% export UI | ||
|  | 					[_] JSON | ||
|  | 					[_] directory | ||
|  | 				[_] 33% export targets | ||
|  | 					[X] whole tree | ||
|  | 					[_] this ribbon and above | ||
|  | 					[_] this ribbon/selection | ||
|  | 				[_] default settings in platform-specific JSON file | ||
|  | 				| this file should be auto-loaded on first run -- when no | ||
|  | 				| other settings are present... | ||
|  | 				| | ||
|  | 				| should be something like: | ||
|  | 				| 	loadDefaultSettings() | ||
|  | 				| | ||
|  | 				| that will load: | ||
|  | 				| 	cef-defaults.json			- for CEF | ||
|  | 				| 	phonegap-defaults.json		- for, you guessed it... | ||
|  | 				| 	... | ||
|  | 				[_] make platform detection an issue for the abstraction layer | ||
|  | 				| as it is now the case with dumbJSONFile(...) | ||
|  | 			[_] 50% Windows (CEF / CEFPython) | ||
|  | 				[_] package a portable exe | ||
|  | 				[_] 50% basic wrapper | ||
|  | 					[X] JSON reader/writer | ||
|  | 					[_] directory lister | ||
|  | 				[X] basic test | ||
|  | 			[_] 50% Android (PhoneGap) | ||
|  | 				[_] 50% package as W3C widget to be compatible with PhoneGap builder... | ||
|  | 					[X] make the basic test package... | ||
|  | 					| https://github.com/flynx/ImageGrid-Viewer | ||
|  | 					[_] automate the build and push process (sub-git?) | ||
|  | 				[_] 0% basic wrapper | ||
|  | 					[_] JSON reader/writer | ||
|  | 					[_] directory lister | ||
|  | 				[X] basic test | ||
|  | 				[X] disable transitions... | ||
|  | 				[_] 0% bugs | ||
|  | 					[_] taps register as two taps | ||
|  | 					| possibly a tap and a click... | ||
|  | 			[_] 66% Standalone utils | ||
|  | 				[X] generate cache | ||
|  | 				| resize images and put them into .ImageGrid.cache/<size>px directory | ||
|  | 				| | ||
|  | 				| should rebuild JSON | ||
|  | 				[X] generate JSON | ||
|  | 				| build JSON data from a directory... | ||
|  | 				[_] generate dir tree | ||
|  | 				| use a json file to generate a fav dir tree | ||
|  | 		[_] make the system more tolerant to missing or wrong fields in json data... | ||
|  | 		[_] make loading of different resolution images smooth... | ||
|  | 		| can be done in several ways: | ||
|  | 		| 	- cache images before loading... | ||
|  | 		| 	- two layers... | ||
|  | 		| 	- always keep the lowest res image loaded... | ||
|  | 		[_] BUG: click does not update the image counter... | ||
|  | 		[_] 0% split functionality into modules... | ||
|  | 			[_] core | ||
|  | 			[_] extras | ||
|  | 		[X] BUG: images.json data behaves sometimes loses data...  | ||
|  | 		| possibly because some fields (ctime, preview, etc) are missing... | ||
|  | 		[X] load sorted images from JSON data | ||
|  | 		| curently the sort is as in file... | ||
|  | 		[X] fix image ordering... | ||
|  | 		[X] add basic image info display... | ||
|  | 		[X] 100% dynamic loading of images | ||
|  | 			[X] 100% stream on navigate | ||
|  | 				| parameters that affect loading: | ||
|  | 				| 	- current view size				-> image size must be closest | ||
|  | 				| 										above this | ||
|  | 				| 	- viewer width in images		-> number of widths (2-3)  | ||
|  | 				| 										distance is used to trigger | ||
|  | 				| 										loading or unloading of images | ||
|  | 				| 										depending on direction | ||
|  | 				| 										NOTE: this is done for each | ||
|  | 				| 											  image size in use. | ||
|  | 				| | ||
|  | 				| NOTE: here the trigger must be proximity to the view as we  | ||
|  | 				| 		can reach an image not just by navigating close but  | ||
|  | 				| 		also by scrolling/dragging to it (without changing the | ||
|  | 				| 		current image)... | ||
|  | 				[X] store structure separately from ui (mirror context) | ||
|  | 				| an alternative would be to store the whole thing (sans images) | ||
|  | 				| in DOM, but that ma get very big. | ||
|  | 				| | ||
|  | 				| storing the structure will enable us to have partial structures | ||
|  | 				| thus updating the structure of a very big set without the user | ||
|  | 				| noticing. | ||
|  | 				[X] 100% sync context (handle edit events) | ||
|  | 					[X] identify action position | ||
|  | 					| use id... | ||
|  | 				[X] update ui structure (handle navigate/move events) | ||
|  | 			[X] sizes on zoom | ||
|  | 			| still needs work... | ||
|  | 		[X] make shift up/down direction-aware... | ||
|  | 		| i.e. if we are going through images in a direction select the  | ||
|  | 		| next image in that direction when shifting... | ||
|  | 		[X] 100% load state | ||
|  | 			[X] load mechanics | ||
|  | 			[X] auto-load last state on startup | ||
|  | 			[X] manual (console) | ||
|  | 			| loadJSON(loadJSONFile(...)) | ||
|  | 		[X] 100% load folder | ||
|  | 			[X] drag'n'drop | ||
|  | 		[X] 100% save state | ||
|  | 			[X] minimal: Local Storage (manual) | ||
|  | 			| works across all targets (CEF, PhoneGap, browser) | ||
|  | 			[X] manual local JSON (file) | ||
|  | 			[X] 100% autosave | ||
|  | 				[X] on edit | ||
|  | 				[X] on navigate | ||
|  | 				| only save position to save time... | ||
|  | 				[X] on timer | ||
|  | 				[X] on unload | ||
|  | 			[X] manual incremental save | ||
|  | 			[X] manual named save | ||
|  | 			[X] versions/history | ||
|  | 		[X] 100% UI | ||
|  | 			[X] 100% disable opacity for current ribbon | ||
|  | 				[X] 1.0 opacity for current ribbon mode | ||
|  | 				| automatically turned on for magnifications over 2 images  | ||
|  | 				| per screen.... | ||
|  | 				[X] current image indicator | ||
|  | 				| this can be: | ||
|  | 				| 	- rectangle (not border) | ||
|  | 				| 	- underline | ||
|  | 				| 	- corner icon | ||
|  | 			[X] 100% settings/help screen | ||
|  | 				[X] keyboard config/help | ||
|  | 				[X] auto-generated settings interface | ||
|  | 			[X] "hide other ribbons" mode | ||
|  | 			[X] fix single image mode | ||
|  | 			| need to center the image correctly... | ||
|  | 			[X] 100% add screen buttons for all actions... | ||
|  | 				[X] navigation | ||
|  | 				[X] actions | ||
|  | 				[X] zooming | ||
|  | 				[X] 100% zoom presets | ||
|  | 					[X] single | ||
|  | 					[X] three | ||
|  | 					[X] wide | ||
|  | 					| toggle... | ||
|  | 			[X] 100% control single-image mode animations | ||
|  | 				[X] scroll | ||
|  | 				[X] switch (no transition) | ||
|  | 			[X] 100% layout | ||
|  | 				[X] 100% tablet | ||
|  | 					[X] stretch to full screen | ||
|  | 					| NOTE: viewer 0% sizes may break things... | ||
|  | 					[X] make buttons semi-transparent and same color as bg in all modes | ||
|  | 					| just like single image mode... | ||
|  | 					[X] make bg color switching in all modes | ||
|  | 					| black, white, gray | ||
|  | 				[X] 100% PC | ||
|  | 					[X] stretch to full screen | ||
|  | 					[X] make view correctly resizable | ||
|  | 					| appears to work correctly but need to click an image onResize... | ||
|  | 					| | ||
|  | 					| XXX find a way around always clicking things... | ||
|  | 					[X] hide buttons for keyboard actions | ||
|  | 				[X] web | ||
|  | 				| is this is the same as the above two? (with auto-select) | ||
|  | 			[X] add screen-width images next/prev navigation... | ||
|  | 			[X] 100% debug mode | ||
|  | 				[X] toggle cross-hair | ||
|  | 		[X] 100% sorted images in ribbons | ||
|  | 			[X] 100% stage I: position the promoted/demoted image correctly | ||
|  | 			| and correct positioning on promote/demote | ||
|  | 			| | ||
|  | 			|	input: | ||
|  | 			| 	[01][02][03][04][05][06][07][08][09][10][11] ... [19][20] | ||
|  | 			| | ||
|  | 			| 		single ribbon, nothing special here. | ||
|  | 			| | ||
|  | 			| | ||
|  | 			|   general sort: | ||
|  | 			| 	         [05]      [10][11][12]  [15] [19][20]  | ||
|  | 			| 	[01]  [04]  [06][07][08]  [13][14]  [18] | ||
|  | 			| 	 [02][03]              [09]    [16][17] | ||
|  | 			| | ||
|  | 			| 	 	each strip is positioned above or below the place it was  | ||
|  | 			| 	 	shifted from. | ||
|  | 			| 	 	if there is not enough space use weights to balance the  | ||
|  | 			| 	 	thing. | ||
|  | 			| | ||
|  | 			| | ||
|  | 			|   selected [08]: | ||
|  | 			| 	                 [05] [10][11][12] [15] [19][20]  | ||
|  | 			| 	[01] [04] [06][07][[08]] [13][14] [18] | ||
|  | 			| 	             [02][03] [09] [16][17] | ||
|  | 			| | ||
|  | 			| 		above and below images are centered around the current  | ||
|  | 			| 		image as axis, the rule is that the strips left are coming  | ||
|  | 			| 		from the left of the axis and likewise for the right side.  | ||
|  | 			| | ||
|  | 			[X] 100% stage II: scroll ribbons correctly | ||
|  | 				| this is simple: | ||
|  | 				| - center the right edge of image returned | ||
|  | 				|   by getImageBefore in all ribbons other than current... | ||
|  | 				| - center current-image in current ribbon | ||
|  | 				| - vertically center the current ribbon (negative margin?) | ||
|  | 				[X] prototype and basic API | ||
|  | 				[X] 100% migrate main code to the new system | ||
|  | 					[X] basic navigation | ||
|  | 					[X] basic actions | ||
|  | 					[X] zooming | ||
|  | 				[X] position other ribbons... | ||
|  | 				| only prev/next for now... | ||
|  | 		[X] 100% correct zooming and modes | ||
|  | 			[X] zooming in ribbon view | ||
|  | 			[X] 100% zoom presets for ribbon view | ||
|  | 			| other possible presets: | ||
|  | 			| 	- five | ||
|  | 			| 	- all | ||
|  | 			| 	- group | ||
|  | 			| 	- day/month | ||
|  | 			| 	- shoot | ||
|  | 			| 	- tag | ||
|  | 			| 	... | ||
|  | 				[X] three | ||
|  | 				[X] one (with zooming) | ||
|  | 			[X] single image mode with zooming | ||
|  | 			| ribbons are hidden | ||
|  | 		[X] 100% fix layout and animations | ||
|  | 			[X] zooming | ||
|  | 			[X] navigation | ||
|  | 			[X] 100% actions | ||
|  | 				[X] bug: shifting up to new ribbon pushes the current row down... | ||
|  | 				| before starting on a fix, need to cleanup the code from old hacks and workarounds... | ||
|  | 	[_] 39% Preview II (optional features) | ||
|  | 		[_] undo last action (action log) | ||
|  | 		[_] mark positions and jump between marks (a-la vim's "m"/"'" commands) | ||
|  | 		[_] 14% make things modular and reusable (independent widget) | ||
|  | 			[X] make the keyboard handler local to selector (mode-aware) | ||
|  | 			[_] prefix an ID to all selectors to make their actions "local" | ||
|  | 			[_] avoid use of id html attr | ||
|  | 			[_] avoid use of globals | ||
|  | 			| ImageGrid.XXX is a primery target... | ||
|  | 			[_] split as much of the work into events as possible | ||
|  | 			| one example is the stuff that's done on $('.current.image').click(), | ||
|  | 			| thinks like aligning ribbons, centering, etc. | ||
|  | 			[_] make sets of actions for combination via $.update(...) | ||
|  | 			| make things modular... | ||
|  | 			[_] organize things into "features" | ||
|  | 			| this will enable reuse as simple as combining only the desired  | ||
|  | 			| features into a final entity... | ||
|  | 		[_] handle edit events to update the internal state state -- sync with DOM (???) | ||
|  | 		| this is needed only for keeping the state in order... | ||
|  | 		| | ||
|  | 		| NOTE: this is not that important as buildJSON(...) | ||
|  | 		| 		already does the job correctly... | ||
|  | 		[_] try a coffee-script version | ||
|  | 		[_] 0% PhoneGap + Android Issues: | ||
|  | 			[_] scrolling in overlays does not work | ||
|  | 			[_] half the keyboard is not working... | ||
|  | 			[_] screen buttons are very laggy | ||
|  | 			| while swipe works super fast... | ||
|  | 			[_] .dblclick(...) does not work... | ||
|  | 			[_] .dragable(...) does not work... | ||
|  | 		[_] slideshow... | ||
|  | 		| this is needed to disable navigation keys in setup-mode, for example... | ||
|  | 		[X] 100% serialization/deserialization | ||
|  | 			[X] JSON loader/unloader | ||
|  | 			[X] file reader/writer | ||
|  | 		[X] flip ribbons relative to current -- reverse order | ||
|  | 		[_] fade transition in single image mode... | ||
|  | 		[_] "show all promoted/demoted images" mode | ||
|  | 		| display images below or above but in a more transparent  | ||
|  | 		| fashion... | ||
|  | 		| | ||
|  | 		| XXX should they be skipped on navigation? | ||
|  | 		[_] 80% drag/move action... | ||
|  | 			[X] basic infrastructure | ||
|  | 			[X] action: center current image | ||
|  | 			[X] while zoomed more than the screen | ||
|  | 			[X] while zoomed out (ribbon view) | ||
|  | 			[_] 0% cleanup... | ||
|  | 				[_] disable click events while dragging | ||
|  | 				[_] differentiate with gestures | ||
|  | 				| might be nice to add a Ps-like "space-dragging"  | ||
|  | 				| feature to differentiate nav gestures and  | ||
|  | 				| dragging...  | ||
|  | 				| ...this may not work for tablets | ||
|  | 				| | ||
|  | 				| for tablets might be good to add a small timeout to  | ||
|  | 				| both gestures and dragging, small enough for things  | ||
|  | 				| to feel natural... | ||
|  | 				| | ||
|  | 				| another way is to start dragging anyway but if the  | ||
|  | 				| eventual action resembles a gesture then exec that. | ||
|  | 				| ...this will need careful setup of timeouts and  | ||
|  | 				| dynamic disabling/enabling of both drag and gestures | ||
|  | 				| e.g. of large zooms dragging takes priority. | ||
|  | 		[_] 50% return to current image / home (after drag) | ||
|  | 			[_] button | ||
|  | 			[X] keyboard | ||
|  | 		[X] double tap/click to zoom (a-la iPad) | ||
|  | 		| ribbon <-> single image mode | ||
|  | 		| | ||
|  | 		| XXX does not work in android... | ||
|  | 		[_] pinch to zoom | ||
|  | 		[X] BUG: rendering error when current ribbon images opacity is 1... | ||
|  | 		| This happens when: | ||
|  | 		| - opcity of .current.ribbon .image is 1 | ||
|  | 		| - there is atleast a ribbon above | ||
|  | 		| - the view is zoomed-out a bit ~70% | ||
|  | 		| | ||
|  | 		| the view is partially re-rendered when navigating images... | ||
|  | 		| | ||
|  | 		| since this is a browser render error, think of a way to work  | ||
|  | 		| around this. | ||
|  | 		| | ||
|  | 		| WORKAROUND: set the opacity to 0.9999 instead of 1 forces the  | ||
|  | 		| browser to re-render the whole set correctly. need to find a  | ||
|  | 		| better way... | ||
|  | 		[X] 100% add sort/re-sort capability... | ||
|  | 			[X] abstract out image id | ||
|  | 			[X] replace id (use something else like filename) | ||
|  | 			[X] re-arrange ribbons (reverse) | ||
|  | 			[X] in-place sort images in ribbons | ||
|  | 		[_] 50% option to disable processor intensive features | ||
|  | 			[X] global transitions | ||
|  | 			[_] global opacity -- do a layout without opacity | ||
|  | 		[X] 100% refactoring (low priority) | ||
|  | 			[X] cleanup legacy workarounds | ||
|  | 			[X] ui.js, gallery-prototype.js either merge or revise split logic | ||
|  | 		[_] make scrolling of other ribbons proportional to the gap... | ||
|  | 	[_] 3% Preview III | ||
|  | 		[_] use Caps Lock for edit mode... | ||
|  | 		[_] infinite ribbons - dynamic structure construction and partial state | ||
|  | 		| one way to do this is by: | ||
|  | 		| 	- limiting the number of images per field | ||
|  | 		| 	- adding new images to new fields to the left and right of current | ||
|  | 		[_] 0% state | ||
|  | 			[_] 0% save state | ||
|  | 				[_] named manual | ||
|  | 				[_] CouchDB | ||
|  | 			[_] 0% export state | ||
|  | 				[_] JSON file | ||
|  | 				[_] directory tree | ||
|  | 				[_] XMP | ||
|  | 			[_] 0% load state | ||
|  | 				[_] named manual | ||
|  | 		[_] 25% directory browser | ||
|  | 			[_] browser mode/ui | ||
|  | 			[_] 50% import directory | ||
|  | 				[_] build/rebuild cache | ||
|  | 				[X] create JSON from cache | ||
|  | 		[_] collection management | ||
|  | 		[_] archive management | ||
|  | 		[_] 0% native client | ||
|  | 			[_] android | ||
|  | 				[_] restrict layout to horizontal | ||
|  | 				| leave doing a different vertical layout for later versions... | ||
|  | 			[_] windows | ||
|  | 			[_] MacOS (low priority) | ||
|  | 			[_] iOS (low priority) | ||
|  | 			[_] 0% unified build system | ||
|  | 		[_] 0% bugs: | ||
|  | 			[_] adding a new ribbon above the current is still jumpy... | ||
|  | 	[_] 0% Preview III (optional features) | ||
|  | 	[_] 0% Pre-Alpha | ||
|  | 		[_] 0% finalize UI logic | ||
|  | 			[_] unsorted images | ||
|  | 	[_] 0% Alpha | ||
|  | 	[_] 0% Beta | ||
|  | 	[_] 0% 1.0 | ||
|  | 	 | ||
|  | 
 | ||
|  | [_] 38% Main workflow | ||
|  | 	[_] 33% image viewing | ||
|  | 		[X] viewer | ||
|  | 		[_] select source | ||
|  | 		[_] slideshow | ||
|  | 	[X] 100% image sorting | ||
|  | 		[X] ribbon navigation | ||
|  | 		[X] shift image between ribbons | ||
|  | 		[X] 100% basic large scale operations | ||
|  | 			[X] sort all images | ||
|  | 			[X] reverse all images | ||
|  | 			[X] reverse ribbons | ||
|  | 	[_] 0% metadata | ||
|  | 		[_] tag filtering | ||
|  | 		[_] tag editing | ||
|  | 		[_] EXIF/IPTC | ||
|  | 	[_] 20% image/export export | ||
|  | 		[X] JSON | ||
|  | 		[_] XMP metadata | ||
|  | 		[_] fav dirs | ||
|  | 		[_] file list | ||
|  | 		[_] image set | ||
|  | 	 | ||
|  | 
 | ||
|  | 
 | ||
|  | Goals: | ||
|  | 	main ribbon always consistent | ||
|  | 	fast sorting via several simple passes | ||
|  | 		binary | ||
|  | 		| items are split into two ribbons. | ||
|  | 		| | ||
|  | 		| this can be done either by mandatorily shifting either up or  | ||
|  | 		| down or by restricting shifting to just one direction. | ||
|  | 		| | ||
|  | 		| this is a bit too restrictive. | ||
|  | 		| | ||
|  | 		| essentially this is a combination in the ternary approach  | ||
|  | 		| below as we can still shift images between levels. | ||
|  | 		ternary | ||
|  | 		| current ribbon and items are either sifted up, shifted down  | ||
|  | 		| relative to it or left on, unshifted. | ||
|  | 		| | ||
|  | 		| main ribbon consistency is not always obvious, especially on  | ||
|  | 		| partially sorted sets. e.g. while sorting part of the set where  | ||
|  | 		| should the unsorted part be? | ||
|  | 		| | ||
|  | 		|			sorted section | ||
|  | 		| 			+-------------------+ | ||
|  | 		| | ||
|  | 		| 	  oooooooooooooooooooooooooooooooo | ||
|  | 		| 	-	oooooooooooooooooooooooooooo | ||
|  | 		|	>		oooooooooooooooooooooxxxxxxxxxxxxxxxxxxxxxxxxxxx... < | ||
|  | 		| 	+		   oooooooooooooooo | ||
|  | 		| 			         oooo | ||
|  | 		| | ||
|  | 		| 			         			 +----------------------------+ | ||
|  | 		| 			         			 which level should this go to? | ||
|  | 		| | ||
|  | 		| in the illustration, the ribbon marked by ">" and "<" is where  | ||
|  | 		| the sorting started. | ||
|  | 		| | ||
|  | 		| there is also a question of how do we define the border between | ||
|  | 		| sorted and unsorted zones and when?  | ||
|  | 		| ...after the sort is done, and when is that? | ||
|  | 		| | ||
|  | 		| possible ways to go around this: | ||
|  | 		| 	before sorting select the working batch | ||
|  | 		| 		- adds an extra step | ||
|  | 		| 		- restricts later sorting | ||
|  | 		| 	restrict promotion over the main ribbon | ||
|  | 		| 		+ sorting can be refined later in the same mode | ||
|  | 		| 		- prevents the user to select the better images on first pass | ||
|  | 		| 	split the sorted and unsorted batches and never mix them | ||
|  | 		| 		- restricts later sorting | ||
|  | 		| 	main ribbon always shows all the better images (from better levels) | ||
|  | 		| 		o needs a way to move whole topologies up/down relative  | ||
|  | 		| 		  to the main ribbon... | ||
|  | 		| 		  one way to do this is select and shift multiple images | ||
|  | 		| 		  will shift the whole pyramid (with all the "worse" images in between) | ||
|  | 		| 		- introduces modes: sorting / viewing | ||
|  | 		| 		- adds a separate stage -- move the topology to a correct | ||
|  | 		| 		  main ribbon position | ||
|  | 		| | ||
|  | 		| Q: is this system applicable to sorting search results? | ||
|  | 		| A: likely yes, but the farther one gets from the main ribbon  | ||
|  | 		|    the more the difference can get between adjacent images. | ||
|  | 	images are always sortable | ||
|  | 	all levels always browsable | ||
|  | 	make all the steps except the actual sorting implicit | ||
|  | 	| i.e. no jumping through hoops for the human... | ||
|  | 	use the same mechanism as used for sorting, for image selection | ||
|  | 	| this can be used for tagging, exhibitions, ...etc. | ||
|  | 		context | ||
|  | 		| a context consists of two things: | ||
|  | 		| - image selection (might be a product of another context, search or selection) | ||
|  | 		| - a way the levels are interpreted within this context | ||
|  | 		| | ||
|  | 		| default contexts:  | ||
|  | 		| - full view rating context | ||
|  | 		|   this incorporates ALL the archive and the levels are interpreted as ratings. | ||
|  | 		| - selection rating context | ||
|  | 		|   same as full view but only part of the archive is rated | ||
|  | 		|   XXX this will need to be merged correctly back into the archive... | ||
|  | 		| - selection context | ||
|  | 		|   this simply takes one set of images as input and shows a subset as output. | ||
|  | 		| | ||
|  | 		| contexts are persistent, much like a catalogue. | ||
|  | 		| | ||
|  | 		| a context can be cloned and re-used. | ||
|  | 		| | ||
|  | 		| contexts can be used to mark: | ||
|  | 		| - shoots | ||
|  | 		| - subjects | ||
|  | 		| - exhibitions/shows | ||
|  | 		| - portfolios | ||
|  | 		| - ... | ||
|  | 	 | ||
|  | 
 | ||
|  | [[controls.otl]] | ||
|  | 
 | ||
|  | 
 | ||
|  | 
 | ||
|  | [_] 38% features | ||
|  | 	[_] 55% views | ||
|  | 		[_] 60% ribbon-based view | ||
|  | 			[_] show all (very zoomed out view) | ||
|  | 			| might be good to not show any images here at all, just replace them with their average color | ||
|  | 			[X] show map | ||
|  | 			[X] fit to ribbon | ||
|  | 			[X] fit to image (square) | ||
|  | 			[_] ribbon with promoted/demoted images | ||
|  | 			| show semi-transparent images that were demoted/promoted from current ribbon | ||
|  | 		[_] 50% single image view | ||
|  | 			[_] image fit to screen | ||
|  | 			[X] image fit to square | ||
|  | 	| show parts of upper and lower ribbons | ||
|  | 	[X] image zooming | ||
|  | 	| fast zooming to stages: | ||
|  | 	| 	fit | ||
|  | 	| 	100% | ||
|  | 	| 	200% | ||
|  | 	| 	... | ||
|  | 	[_] basic editing and manipulation | ||
|  | 	| image unchanged, data saved to json... | ||
|  | 		[_] crop | ||
|  | 		[_] rotate | ||
|  | 
 | ||
|  | 
 | ||
|  | 
 | ||
|  | [_] 38% General ToDo | ||
|  | 	[_] 80% image sorting | ||
|  | 		[_] will affect: | ||
|  | 			[X] promote | ||
|  | 			[X] demote | ||
|  | 			[X] shift up | ||
|  | 			[X] shift down | ||
|  | 			[_] ribbon merging | ||
|  | 	[_] add promote/demote events (to attach structure editors)... | ||
|  | 	| enable extension and use as a generic widget... | ||
|  | 	[X] add real images... | ||
|  | 	[_] make all the code relative to the current selection (multiple instances on a page support) | ||
|  | 	[X] add ribbon relative scrolling... | ||
|  | 	| each ribbon is positioned relative to the current selected image | ||
|  | 	| 	below-left: closest image to the left of the current | ||
|  | 	| 	bolow-right: same as above but right... | ||
|  | 	| | ||
|  | 	| this will demote/promote the image directly up or down... | ||
|  | 	[_] make this into a jquery plugin... | ||
|  | 	[_] add dynamic loading and unloading for very large sets... | ||
|  | 	[X] gesture support... | ||
|  | 	[_] add basic actions: | ||
|  | 		[_] rotate left | ||
|  | 		[_] rotate right | ||
|  | 		[_] crop | ||
|  | 		... | ||
|  | 	[_] add info: | ||
|  | 		[_] number of images in ribbon | ||
|  | 		[_] position in ribbon | ||
|  | 
 | ||
|  | 
 | ||
|  | 
 | ||
|  | [_] % ISSUES and BUGS: | ||
|  | 	[_] jumping on focus up/down... | ||
|  | 	[_] demoting a first element (a ribbon is created) positions the field incorrectly (see demoteImage() for details)... | ||
|  | 
 | ||
|  | . | ||
|  | | vim:set spell : |