mirror of
				https://github.com/flynx/ImageGrid.git
				synced 2025-10-31 03:10:07 +00:00 
			
		
		
		
	updated version history...
Signed-off-by: Alex A. Naanou <alex.nanou@gmail.com>
This commit is contained in:
		
							parent
							
								
									4e630d3518
								
							
						
					
					
						commit
						6d34435fab
					
				
							
								
								
									
										93
									
								
								ui/data4.js
									
									
									
									
									
								
							
							
						
						
									
										93
									
								
								ui/data4.js
									
									
									
									
									
								
							| @ -8,6 +8,69 @@ | |||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| /*********************************************************************/ | /*********************************************************************/ | ||||||
|  | // Format version...
 | ||||||
|  | //
 | ||||||
|  | // version format:
 | ||||||
|  | // 	<major>.<minor>
 | ||||||
|  | //
 | ||||||
|  | // Major version change mean a significant incompatibility.
 | ||||||
|  | //
 | ||||||
|  | // Minor version changes mean some detail changed and can be handled
 | ||||||
|  | // by it's specific handler seamlessly. Backwards compatible.
 | ||||||
|  | //
 | ||||||
|  | //
 | ||||||
|  | // For more info see:
 | ||||||
|  | // 	DATA			- main data
 | ||||||
|  | // 	IMAGES			- image data
 | ||||||
|  | // 	MARKED			- marks data
 | ||||||
|  | // 	BOOKMARKS		- bookmarks data
 | ||||||
|  | // 	BOOKMARKS_DATA	- bookmarks metadata
 | ||||||
|  | // 	TAGS			- tag data
 | ||||||
|  | //
 | ||||||
|  | //
 | ||||||
|  | // Changes:
 | ||||||
|  | // 	none - Gen1 data format, mostly experimental,
 | ||||||
|  | // 			- has no explicit version set,
 | ||||||
|  | // 			- not used for real data.
 | ||||||
|  | // 	2.0 - Gen3 data format, still experimental,
 | ||||||
|  | // 			- completely and incompatibly new structure,
 | ||||||
|  | // 			- use convertDataGen1(..) to convert Gen1 to 2.0 
 | ||||||
|  | // 			- auto-convert form gen1 on load...
 | ||||||
|  | // 			- used for my archive, not public,
 | ||||||
|  | // 	2.1 - Minor update to format spec,	
 | ||||||
|  | // 			- MARKED now maintained sorted, live,
 | ||||||
|  | // 			- will auto-sort marks on load of 2.0 data and change 
 | ||||||
|  | // 			  data version to 2.1, will need a re-save,
 | ||||||
|  | // 	2.2 - Minor update to how data is handled and saved
 | ||||||
|  | // 			- now DATA.current is saved separately in current.json,
 | ||||||
|  | // 			  loading is done from current.json and if not found from
 | ||||||
|  | // 			  data.json.
 | ||||||
|  | // 			  the file is optional.
 | ||||||
|  | // 			- data, marks, bookmarks, tags are now saved only if updated
 | ||||||
|  | // 	2.3 - Minor update to sorting restrictions
 | ||||||
|  | // 			- now MARKED and BOOKMARKS do not need to be sorted 
 | ||||||
|  | // 			  explicitly in json, they are now sorted as a side-effect 
 | ||||||
|  | // 			  of being sparse.
 | ||||||
|  | // 			  This negates some restrictions posed in 2.1, including 
 | ||||||
|  | // 			  conversion of 2.0 data.
 | ||||||
|  | // 			  NOTE: TAGS gid sets are still compact lists, thus are 
 | ||||||
|  | // 			  		actively maintained sorted.
 | ||||||
|  | // 			  		...still thinking of whether making them sparse will 
 | ||||||
|  | // 			  		take up too much memory, and is it worth the work...
 | ||||||
|  | // 	3.0	- Gen4 format, introduced several backwards incompatible cahnges:
 | ||||||
|  | // 			- added ribbon GIDs, .ribbons now is a gid indexed object
 | ||||||
|  | // 			- added .ribbon_order
 | ||||||
|  | // 			- added base ribbon
 | ||||||
|  | // 			- ribbons are now sparse in memory but can be compact when
 | ||||||
|  | // 			  serialized.
 | ||||||
|  | // 		NOTE: these changes apply only to the DATA structure and 
 | ||||||
|  | // 				serialization.
 | ||||||
|  | //
 | ||||||
|  | //
 | ||||||
|  | // NOTE: Gen1 and Gen3 refer to code generations rather than data format
 | ||||||
|  | // 		iterations, Gen2 is skipped here as it is a different project 
 | ||||||
|  | // 		(PortableMag) started on the same code base as ImageGrid.Viewer
 | ||||||
|  | // 		generation 1 and advanced from there...
 | ||||||
| 
 | 
 | ||||||
| var DataClassPrototype = { | var DataClassPrototype = { | ||||||
| 	// NOTE: we consider the input list sorted...
 | 	// NOTE: we consider the input list sorted...
 | ||||||
| @ -202,7 +265,8 @@ var DataPrototype = { | |||||||
| 	// 		will be returned, use offset to explicitly get the image 
 | 	// 		will be returned, use offset to explicitly get the image 
 | ||||||
| 	// 		before/after target.
 | 	// 		before/after target.
 | ||||||
| 	//
 | 	//
 | ||||||
| 	// XXX revise argument syntax...
 | 	// XXX most of the complexity here comes from argument DSL parsing,
 | ||||||
|  | 	// 		might be good to revise argument syntax and handling...
 | ||||||
| 	getImage: function(target, mode, list){ | 	getImage: function(target, mode, list){ | ||||||
| 		// no args...
 | 		// no args...
 | ||||||
| 		if(target == null && mode == null && list == null){ | 		if(target == null && mode == null && list == null){ | ||||||
| @ -320,6 +384,7 @@ var DataPrototype = { | |||||||
| 		return null | 		return null | ||||||
| 	},	 | 	},	 | ||||||
| 	// same as .getImage(..) but return image order.
 | 	// same as .getImage(..) but return image order.
 | ||||||
|  | 	//
 | ||||||
| 	// XXX should be able to get order in the following contexts:
 | 	// XXX should be able to get order in the following contexts:
 | ||||||
| 	// 		- all (default)
 | 	// 		- all (default)
 | ||||||
| 	// 		- loaded
 | 	// 		- loaded
 | ||||||
| @ -337,8 +402,11 @@ var DataPrototype = { | |||||||
| 	//	.getImages('all')
 | 	//	.getImages('all')
 | ||||||
| 	//		-> list of all images, both loaded and not
 | 	//		-> list of all images, both loaded and not
 | ||||||
| 	//
 | 	//
 | ||||||
|  | 	//	.getImages('current')
 | ||||||
|  | 	//		-> list of images, in current ribbon
 | ||||||
|  | 	//
 | ||||||
| 	//	.getImages(list)
 | 	//	.getImages(list)
 | ||||||
| 	//		-> only loaded images from list
 | 	//		-> return only loaded images from list
 | ||||||
| 	//
 | 	//
 | ||||||
| 	//	.getImages(gid|order|ribbon)
 | 	//	.getImages(gid|order|ribbon)
 | ||||||
| 	//		-> get loaded images from ribbon
 | 	//		-> get loaded images from ribbon
 | ||||||
| @ -355,6 +423,7 @@ var DataPrototype = { | |||||||
| 	// This will allways return count images if there is enough images 
 | 	// This will allways return count images if there is enough images 
 | ||||||
| 	// in ribbon from the requested sides of target.
 | 	// in ribbon from the requested sides of target.
 | ||||||
| 	//
 | 	//
 | ||||||
|  | 	// NOTE: this expects ribbon order and not image order.
 | ||||||
| 	// NOTE: if count is even, it will return 1 more image to the left 
 | 	// NOTE: if count is even, it will return 1 more image to the left 
 | ||||||
| 	// 		(before) the target.
 | 	// 		(before) the target.
 | ||||||
| 	// NOTE: if the target is present in the image-set it will be included
 | 	// NOTE: if the target is present in the image-set it will be included
 | ||||||
| @ -369,6 +438,9 @@ var DataPrototype = { | |||||||
| 
 | 
 | ||||||
| 		// normalize target and build the source list...
 | 		// normalize target and build the source list...
 | ||||||
| 
 | 
 | ||||||
|  | 		// 'current' ribbon...
 | ||||||
|  | 		target = target == 'current' ? this.current : target | ||||||
|  | 
 | ||||||
| 		// get all gids...
 | 		// get all gids...
 | ||||||
| 		if(target == 'all'){ | 		if(target == 'all'){ | ||||||
| 			list = this.order | 			list = this.order | ||||||
| @ -504,6 +576,9 @@ var DataPrototype = { | |||||||
| 		return this.ribbon_order.indexOf(this.getRibbon(target, offset)) | 		return this.ribbon_order.indexOf(this.getRibbon(target, offset)) | ||||||
| 	}, | 	}, | ||||||
| 
 | 
 | ||||||
|  | 	// Sort images in ribbons via .order...
 | ||||||
|  | 	//
 | ||||||
|  | 	// NOTE: this sorts in-place
 | ||||||
| 	sortImages: function(){ | 	sortImages: function(){ | ||||||
| 		var ribbons = this.ribbons | 		var ribbons = this.ribbons | ||||||
| 		for(k in ribbons){ | 		for(k in ribbons){ | ||||||
| @ -511,6 +586,10 @@ var DataPrototype = { | |||||||
| 		} | 		} | ||||||
| 		return this | 		return this | ||||||
| 	}, | 	}, | ||||||
|  | 	// Reverse .order and all the ribbons...
 | ||||||
|  | 	//
 | ||||||
|  | 	// NOTE: this sorts in-place
 | ||||||
|  | 	//
 | ||||||
| 	// XXX this depends on setting length of an array, it works in Chrome
 | 	// XXX this depends on setting length of an array, it works in Chrome
 | ||||||
| 	// 		but will it work the same in other systems???
 | 	// 		but will it work the same in other systems???
 | ||||||
| 	reverseImages: function(){ | 	reverseImages: function(){ | ||||||
| @ -722,16 +801,6 @@ var DataPrototype = { | |||||||
| 
 | 
 | ||||||
| 	// JSON serialization...
 | 	// JSON serialization...
 | ||||||
| 	//
 | 	//
 | ||||||
| 	// Format version:
 |  | ||||||
| 	// 	3.0	- Gen4 format, introduced several backwards incompatible 
 |  | ||||||
| 	// 		cahnges:
 |  | ||||||
| 	// 			- added ribbon GIDs, .ribbons now is a gid indexed 
 |  | ||||||
| 	// 			  object
 |  | ||||||
| 	// 			- added .ribbon_order
 |  | ||||||
| 	// 			- added base ribbon
 |  | ||||||
| 	// 			- ribbons are now sparse in memory but can be compact 
 |  | ||||||
| 	// 			  in file
 |  | ||||||
| 	//
 |  | ||||||
| 	// NOTE: this loads in-place, use .fromJSON(..) to create new data...
 | 	// NOTE: this loads in-place, use .fromJSON(..) to create new data...
 | ||||||
| 	// XXX check if we need more version checking...
 | 	// XXX check if we need more version checking...
 | ||||||
| 	convertDataGen3: function(data){ | 	convertDataGen3: function(data){ | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user