mirror of
				https://github.com/flynx/ImageGrid.git
				synced 2025-11-04 13:20:10 +00:00 
			
		
		
		
	made group gid placement optional in json + tweaks...
Signed-off-by: Alex A. Naanou <alex.nanou@gmail.com>
This commit is contained in:
		
							parent
							
								
									78b66c4710
								
							
						
					
					
						commit
						a602cf122e
					
				@ -1608,6 +1608,12 @@ var DataPrototype = {
 | 
			
		||||
			this.__group_index = this.makeSparseImages(gids, index)
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		// no images no group...
 | 
			
		||||
		// XXX should we complain??
 | 
			
		||||
		if(gids.length == 0){
 | 
			
		||||
			return this
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		// existing group...
 | 
			
		||||
		if(group in this.groups){
 | 
			
		||||
			var lst = this.makeSparseImages(this.groups[group])
 | 
			
		||||
@ -1621,29 +1627,8 @@ var DataPrototype = {
 | 
			
		||||
 | 
			
		||||
		this.groups[group] = this.makeSparseImages(gids, lst)
 | 
			
		||||
 | 
			
		||||
		// place group...
 | 
			
		||||
		if(place){
 | 
			
		||||
			var place = this.order.indexOf(gids[0])
 | 
			
		||||
			var r = this.getRibbon(gids[0])
 | 
			
		||||
 | 
			
		||||
			// update order...
 | 
			
		||||
			this.order.splice(place, 0, group)
 | 
			
		||||
 | 
			
		||||
			// update lists...
 | 
			
		||||
			this.eachImageList(function(lst, k, s){
 | 
			
		||||
				// insert a place for the group...
 | 
			
		||||
				lst.splice(place, 0, undefined)
 | 
			
		||||
				delete lst[place]
 | 
			
		||||
			})
 | 
			
		||||
 | 
			
		||||
			// insert the group gid only in the correct ribbon... 
 | 
			
		||||
			this.ribbons[r][place] = group
 | 
			
		||||
 | 
			
		||||
			// collapse the new group...
 | 
			
		||||
			this.collapseGroup(group)
 | 
			
		||||
 | 
			
		||||
		// when adding to a new group, collapse only if group is collapsed...
 | 
			
		||||
		} else if(this.getRibbon(group) != null){
 | 
			
		||||
		if(this.getRibbon(group) != null){
 | 
			
		||||
			this.collapseGroup(group)
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
@ -1684,7 +1669,9 @@ var DataPrototype = {
 | 
			
		||||
	// This will show the group images and hide group cover.
 | 
			
		||||
	//
 | 
			
		||||
	expandGroup: function(groups){
 | 
			
		||||
		groups = groups == null ? this.getGroup() : groups
 | 
			
		||||
		groups = groups == null ? this.getGroup()
 | 
			
		||||
			: groups == 'all' || groups == '*' ? Object.keys(this.groups)
 | 
			
		||||
			: groups
 | 
			
		||||
		groups = groups.constructor !== Array ? [groups] : groups
 | 
			
		||||
 | 
			
		||||
		var that = this
 | 
			
		||||
@ -1724,9 +1711,14 @@ var DataPrototype = {
 | 
			
		||||
	// This is the opposite of expand, showing the cover and hiding the
 | 
			
		||||
	// contained images.
 | 
			
		||||
	//
 | 
			
		||||
	collapseGroup: function(groups){
 | 
			
		||||
		groups = groups == null ? this.getGroup() : groups
 | 
			
		||||
	// NOTE: if group gid is not present in .order it will be added and 
 | 
			
		||||
	// 		all data sets will be updated accordingly...
 | 
			
		||||
	collapseGroup: function(groups, safe){
 | 
			
		||||
		groups = groups == null ? this.getGroup() 
 | 
			
		||||
			: groups == 'all' || groups == '*' ? Object.keys(this.groups)
 | 
			
		||||
			: groups
 | 
			
		||||
		groups = groups.constructor !== Array ? [groups] : groups
 | 
			
		||||
		safe = safe || false
 | 
			
		||||
 | 
			
		||||
		var that = this
 | 
			
		||||
		groups.forEach(function(group){
 | 
			
		||||
@ -1737,9 +1729,37 @@ var DataPrototype = {
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			var lst = that.groups[group]
 | 
			
		||||
 | 
			
		||||
			if(lst.len == 0){
 | 
			
		||||
				return
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			var r = that.getRibbon(group)
 | 
			
		||||
			r = r == null ? that.getRibbon(that.groups[group].compact()[0]) : r
 | 
			
		||||
 | 
			
		||||
			// if group is not in olace place it...
 | 
			
		||||
			var g = that.order.indexOf(group)
 | 
			
		||||
			if(g == -1){
 | 
			
		||||
				g = that.order.indexOf(that.groups[group].compact(0)[0])
 | 
			
		||||
 | 
			
		||||
				// update order...
 | 
			
		||||
				that.order.splice(g, 0, group)
 | 
			
		||||
 | 
			
		||||
				if(safe){
 | 
			
		||||
					that.updateImagePositions()
 | 
			
		||||
 | 
			
		||||
				// NOTE: if the data is not consistent, this might be 
 | 
			
		||||
				// 		destructive, but this is faster...
 | 
			
		||||
				} else {
 | 
			
		||||
					// update lists...
 | 
			
		||||
					that.eachImageList(function(lst){
 | 
			
		||||
						// insert a place for the group...
 | 
			
		||||
						lst.splice(g, 0, undefined)
 | 
			
		||||
						delete lst[g]
 | 
			
		||||
					})
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			// remove grouped images from ribbons...
 | 
			
		||||
			lst.forEach(function(gid, i){
 | 
			
		||||
				Object.keys(that.ribbons).forEach(function(r){
 | 
			
		||||
 | 
			
		||||
@ -57,6 +57,13 @@ module.mock_data = {
 | 
			
		||||
		selected: ['b', 'z'],
 | 
			
		||||
		bookmark: ['1', 'c', 'z'],
 | 
			
		||||
	},
 | 
			
		||||
 | 
			
		||||
	// NOTE: group gids do not have to be present in .order, they will 
 | 
			
		||||
	// 		get added on .collapseGroup(..)...
 | 
			
		||||
	groups: {
 | 
			
		||||
		g0: ['a', 'b', 'c'],
 | 
			
		||||
		g1: ['l', 'y'],
 | 
			
		||||
	},
 | 
			
		||||
}
 | 
			
		||||
Object.keys(mock_data.ribbons).forEach(function(k){ 
 | 
			
		||||
	mock_data.order = mock_data.order.concat(mock_data.ribbons[k]) 
 | 
			
		||||
 | 
			
		||||
@ -1840,6 +1840,7 @@ module.CurrentImageIndicator = Feature({
 | 
			
		||||
			}],
 | 
			
		||||
		// this is here to compensate for position change on ribbon 
 | 
			
		||||
		// resize...
 | 
			
		||||
		// XXX still jumpy...
 | 
			
		||||
		['resizeRibbon.post',
 | 
			
		||||
			function(target, s){
 | 
			
		||||
				var m = this.ribbons.viewer.find('.current-marker')
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user