mirror of
https://github.com/flynx/ImageGrid.git
synced 2025-11-01 11:50:07 +00:00
fixed another bug with rolling images...
Signed-off-by: Alex A. Naanou <alex.nanou@gmail.com>
This commit is contained in:
parent
1f572cca9f
commit
675469caa7
94
ui/TODO.otl
94
ui/TODO.otl
@ -108,8 +108,39 @@ Roadmap
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
[_] 30% Gen 3 current todo
|
[_] 29% Gen 3 current todo
|
||||||
[_] 60% High priority
|
[_] 59% High priority
|
||||||
|
[_] 30% mark-based operations
|
||||||
|
[_] 50% cropping selection
|
||||||
|
[X] marked
|
||||||
|
[X] ribbon
|
||||||
|
[_] by tag/collection
|
||||||
|
[_] by group
|
||||||
|
[X] shift up/down
|
||||||
|
[_] tag
|
||||||
|
[_] group
|
||||||
|
| a group should behave as a single image but is
|
||||||
|
| viewable/expandable as a ribbon...
|
||||||
|
|
|
||||||
|
| should be two types of groups:
|
||||||
|
| - strict - always as a single image
|
||||||
|
| like a set of versions, processed and processing
|
||||||
|
| versions of the same image.
|
||||||
|
| (auto-group?)
|
||||||
|
| - loose - similar images, could be named collections
|
||||||
|
| viewed individually, but can be accessed either from
|
||||||
|
| a list or a member image (primary).
|
||||||
|
[_] collection
|
||||||
|
| make or add to existing collection
|
||||||
|
[_] 0% grouping / meta-image
|
||||||
|
[_] versions w. label image
|
||||||
|
| a set of images that is represented by one of the group
|
||||||
|
[_] collection
|
||||||
|
[_] editable list of external commands...
|
||||||
|
| to add things like exportdirs.py etc.
|
||||||
|
[_] Export data...
|
||||||
|
| same as export dirs but also include .ImageGrid/ dir with current
|
||||||
|
| data and images...
|
||||||
[_] OSX: add alternatives to function buttons...
|
[_] OSX: add alternatives to function buttons...
|
||||||
[_] BUG: OSX: unable to load absolute paths...
|
[_] BUG: OSX: unable to load absolute paths...
|
||||||
[_] BUG: when loading a non-existing dir, opening a new dir raises an error
|
[_] BUG: when loading a non-existing dir, opening a new dir raises an error
|
||||||
@ -184,7 +215,7 @@ Roadmap
|
|||||||
| - title
|
| - title
|
||||||
| - directory taggs and meta info
|
| - directory taggs and meta info
|
||||||
| - ...
|
| - ...
|
||||||
[_] 33% mormalize ribbons -- top-align sorted chunks
|
[_] 33% normalize ribbons -- top-align sorted chunks
|
||||||
[X] basic mechanics
|
[X] basic mechanics
|
||||||
| splitData(...)
|
| splitData(...)
|
||||||
| mergeData(...)
|
| mergeData(...)
|
||||||
@ -222,11 +253,18 @@ Roadmap
|
|||||||
| - CouchDB
|
| - CouchDB
|
||||||
| - SQL
|
| - SQL
|
||||||
| - file-db
|
| - file-db
|
||||||
|
[_] add ability to save/load ranges of images and the structures around them
|
||||||
|
| e.g.load image 100 to current ribbon -> will load 100 images
|
||||||
|
| for current ribbon and all the in between images from other
|
||||||
|
| ribbons above and below...
|
||||||
[_] BUG CLASS: everything should work with empty ribbons...
|
[_] BUG CLASS: everything should work with empty ribbons...
|
||||||
| currently some code breaks when seeing an empty ribbon...
|
| currently some code breaks when seeing an empty ribbon...
|
||||||
[_] BUG: shifting last image out of a ribbon misaligns the current ribbon
|
[_] BUG: shifting last image out of a ribbon misaligns the current ribbon
|
||||||
| i.e. the prev ribbon was deleted and the new focused ribbon
|
| i.e. the prev ribbon was deleted and the new focused ribbon
|
||||||
| is aligned as if it was not current...
|
| is aligned as if it was not current...
|
||||||
|
|
|
||||||
|
| this is due to a race condition -- the alignment is done BEFORE
|
||||||
|
| the current image is set...
|
||||||
[_] BUG: sometimes loading a raw directory stops at "error loading data.json"
|
[_] BUG: sometimes loading a raw directory stops at "error loading data.json"
|
||||||
| and some times it does not err..
|
| and some times it does not err..
|
||||||
|
|
|
|
||||||
@ -245,14 +283,12 @@ Roadmap
|
|||||||
[_] index and group ALL files in an archive
|
[_] index and group ALL files in an archive
|
||||||
[_] import metadata
|
[_] import metadata
|
||||||
[_] real GIDs
|
[_] real GIDs
|
||||||
[_] 33% Thumbnail generation strategies
|
[_] 33% FAST thumbnail generation strategies
|
||||||
[_] 0% pass 1: generate really fast previews
|
[_] 0% pass 1: generate really fast previews
|
||||||
[_] ~1/3 screen - for ribbon
|
[_] ~1/3 screen - for ribbon
|
||||||
[_] ~1 screen - for single image mode
|
[_] ~1 screen - for single image mode
|
||||||
[X] pass 2: generate normal previews
|
[X] pass 2: generate normal previews
|
||||||
[_] extract existing raw thumbnails/previews (for RAW files)
|
[_] extract existing raw thumbnails/previews (for RAW files)
|
||||||
[_] editable list of external commands...
|
|
||||||
| to add things like exportdirs.py etc.
|
|
||||||
[_] 0% Tablet UI
|
[_] 0% Tablet UI
|
||||||
[_] screen buttons
|
[_] screen buttons
|
||||||
[_] save settings to config.json
|
[_] save settings to config.json
|
||||||
@ -311,38 +347,8 @@ Roadmap
|
|||||||
[_] 50% Undo/Redo
|
[_] 50% Undo/Redo
|
||||||
[X] basic one step (revert to last save)
|
[X] basic one step (revert to last save)
|
||||||
[_] push/pop state stack
|
[_] push/pop state stack
|
||||||
[_] 30% mark-based operations
|
|
||||||
[_] 50% cropping selection
|
|
||||||
[X] marked
|
|
||||||
[X] ribbon
|
|
||||||
[_] by tag/collection
|
|
||||||
[_] by group
|
|
||||||
[X] shift up/down
|
|
||||||
[_] tag
|
|
||||||
[_] group
|
|
||||||
| a group should behave as a single image but is
|
|
||||||
| viewable/expandable as a ribbon...
|
|
||||||
|
|
|
||||||
| should be two types of groups:
|
|
||||||
| - strict - always as a single image
|
|
||||||
| like a set of versions, processed and processing
|
|
||||||
| versions of the same image.
|
|
||||||
| (auto-group?)
|
|
||||||
| - loose - similar images, could be named collections
|
|
||||||
| viewed individually, but can be accessed either from
|
|
||||||
| a list or a member image (primary).
|
|
||||||
[_] collection
|
|
||||||
| make or add to existing collection
|
|
||||||
[_] check if preview loaded, else load a different preview...
|
[_] check if preview loaded, else load a different preview...
|
||||||
[_] add ability to save/load ranges of images and the structures around them
|
|
||||||
| e.g.load image 100 to current ribbon -> will load 100 images
|
|
||||||
| for current ribbon and all the in between images from other
|
|
||||||
| ribbons above and below...
|
|
||||||
[_] single image mode transition (alpha-blend/fade/none)
|
[_] single image mode transition (alpha-blend/fade/none)
|
||||||
[_] 0% grouping / meta-image
|
|
||||||
[_] versions w. label image
|
|
||||||
| a set of images that is represented by one of the group
|
|
||||||
[_] collection
|
|
||||||
[_] 0% CSS
|
[_] 0% CSS
|
||||||
[_] cleanup
|
[_] cleanup
|
||||||
[_] split themes and layout
|
[_] split themes and layout
|
||||||
@ -686,7 +692,7 @@ Roadmap
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
[_] 61% Gen 3 UI implementation
|
[_] 74% Gen 3 UI implementation
|
||||||
[X] 100% Infinite ribbon (lib)
|
[X] 100% Infinite ribbon (lib)
|
||||||
[X] cyclic ribbon
|
[X] cyclic ribbon
|
||||||
[X] image block generation
|
[X] image block generation
|
||||||
@ -699,10 +705,10 @@ Roadmap
|
|||||||
| save only a block or changed data...
|
| save only a block or changed data...
|
||||||
[X] Adaptive preview size (lib)
|
[X] Adaptive preview size (lib)
|
||||||
[X] Multiple ribbon (reuse)
|
[X] Multiple ribbon (reuse)
|
||||||
[_] 0% User actions
|
[_] 44% User actions
|
||||||
| see [[controls.otl]] for basic actions...
|
| see [[controls.otl]] for basic actions...
|
||||||
|
|
|
|
||||||
| additional actions:
|
| additional actions:
|
||||||
[X] 100% toggle mark image
|
[X] 100% toggle mark image
|
||||||
[X] mark between
|
[X] mark between
|
||||||
| mark all images between closest marks
|
| mark all images between closest marks
|
||||||
@ -725,11 +731,11 @@ Roadmap
|
|||||||
[_] add/edit tags (set of images)
|
[_] add/edit tags (set of images)
|
||||||
[_] add/edit tags (single image)
|
[_] add/edit tags (single image)
|
||||||
[X] rotate image
|
[X] rotate image
|
||||||
[_] 88% UI modes
|
[X] 100% UI modes
|
||||||
[_] 66% single ribbon
|
[X] 100% single ribbon
|
||||||
[X] show marked only
|
[X] show marked only
|
||||||
[X] show current ribbon
|
[X] show current ribbon
|
||||||
[_] show images shifted (all / above only / below only) in current ribbon
|
[X] show images shifted (all / above only / below only) in current ribbon
|
||||||
[X] 100% multiple ribbons
|
[X] 100% multiple ribbons
|
||||||
[X] show images above/below
|
[X] show images above/below
|
||||||
[X] show marked only
|
[X] show marked only
|
||||||
|
|||||||
12
ui/data.js
12
ui/data.js
@ -1423,6 +1423,7 @@ function loadImagesAround(count, gid, ribbon, data){
|
|||||||
// XXX NOTE: we use || instead of && here to compensate for an oddity
|
// XXX NOTE: we use || instead of && here to compensate for an oddity
|
||||||
// in getCommonSubArrayOffsets(...), see it for further details...
|
// in getCommonSubArrayOffsets(...), see it for further details...
|
||||||
if(left == null || right == null){
|
if(left == null || right == null){
|
||||||
|
console.log('>>> Ribbon ', ribbon, 'reloading...')
|
||||||
var n = new_ribbon.indexOf(gid)
|
var n = new_ribbon.indexOf(gid)
|
||||||
var o = old_ribbon.indexOf(gid)
|
var o = old_ribbon.indexOf(gid)
|
||||||
o = o < 0 ? n : o
|
o = o < 0 ? n : o
|
||||||
@ -1442,6 +1443,9 @@ function loadImagesAround(count, gid, ribbon, data){
|
|||||||
|
|
||||||
// partial reload...
|
// partial reload...
|
||||||
} else {
|
} else {
|
||||||
|
console.log('>>> Ribbon ', ribbon, 'updating...')
|
||||||
|
console.log(' left:', left,
|
||||||
|
'right:', right)
|
||||||
var res = extendRibbon(left, right, ribbon_elem)
|
var res = extendRibbon(left, right, ribbon_elem)
|
||||||
// XXX this will get all the current images, not the resulting ones...
|
// XXX this will get all the current images, not the resulting ones...
|
||||||
var images = ribbon_elem.find('.image')
|
var images = ribbon_elem.find('.image')
|
||||||
@ -1593,12 +1597,16 @@ function rollImages(n, ribbon, extend, no_compensate_shift){
|
|||||||
if(n == 0){
|
if(n == 0){
|
||||||
return $([])
|
return $([])
|
||||||
}
|
}
|
||||||
ribbon = ribbon == null ? getRibbon() : $(ribbon)
|
var r = typeof(ribbon) == typeof(123) ? ribbon : null
|
||||||
|
ribbon = ribbon == null ? getRibbon()
|
||||||
|
: r != null ? getRibbon(ribbon)
|
||||||
|
: $(ribbon)
|
||||||
|
var r = r == null ? getRibbonIndex(ribbon) : r
|
||||||
var images = ribbon.find('.image')
|
var images = ribbon.find('.image')
|
||||||
|
|
||||||
var from = n > 0 ? getImageGID(ribbon.find('.image').last())
|
var from = n > 0 ? getImageGID(ribbon.find('.image').last())
|
||||||
: getImageGID(ribbon.find('.image').first())
|
: getImageGID(ribbon.find('.image').first())
|
||||||
var gids = getImageGIDs(from, n)
|
var gids = getImageGIDs(from, n, r)
|
||||||
if(gids.length == 0){
|
if(gids.length == 0){
|
||||||
return $([])
|
return $([])
|
||||||
}
|
}
|
||||||
|
|||||||
49
ui/setup.js
49
ui/setup.js
@ -101,34 +101,35 @@ function setupDataBindings(viewer){
|
|||||||
&& l < Math.round(screen_size * LOAD_SCREENS))){
|
&& l < Math.round(screen_size * LOAD_SCREENS))){
|
||||||
//loadImages(gid, Math.round(screen_size * LOAD_SCREENS), ribbon)
|
//loadImages(gid, Math.round(screen_size * LOAD_SCREENS), ribbon)
|
||||||
loadImagesAround(Math.round(screen_size * LOAD_SCREENS), gid, ribbon)
|
loadImagesAround(Math.round(screen_size * LOAD_SCREENS), gid, ribbon)
|
||||||
}
|
|
||||||
|
|
||||||
// roll the ribbon while we are advancing...
|
// roll the ribbon while we are advancing...
|
||||||
var head = img_before.prevAll('.image')
|
} else {
|
||||||
var tail = img_before.nextAll('.image')
|
var head = img_before.prevAll('.image')
|
||||||
|
var tail = img_before.nextAll('.image')
|
||||||
|
|
||||||
// NOTE: if this is greater than the number of images currently
|
// NOTE: if this is greater than the number of images currently
|
||||||
// loaded, it might lead to odd effects...
|
// loaded, it might lead to odd effects...
|
||||||
var frame_size = Math.ceil((screen_size * LOAD_SCREENS) / 2)
|
var frame_size = Math.ceil((screen_size * LOAD_SCREENS) / 2)
|
||||||
var threshold = Math.floor(frame_size / 2)
|
var threshold = Math.floor(frame_size / 2)
|
||||||
threshold = threshold < 1 ? 1 : threshold
|
threshold = threshold < 1 ? 1 : threshold
|
||||||
|
|
||||||
// do the loading...
|
// do the loading...
|
||||||
// XXX need to expand/contract the ribbon depending on speed...
|
// XXX need to expand/contract the ribbon depending on speed...
|
||||||
// ...might also be a good idea to load smaller images
|
// ...might also be a good idea to load smaller images
|
||||||
// while scrolling really fast...
|
// while scrolling really fast...
|
||||||
// XXX use extendRibbon, to both roll and expand/contract...
|
// XXX use extendRibbon, to both roll and expand/contract...
|
||||||
// XXX BUG: when rolling a ribbon, this will sometimes
|
// XXX BUG: when rolling a ribbon, this will sometimes
|
||||||
// misalign an image...
|
// misalign an image...
|
||||||
// ...where exactly this happens in the ribbon depends on
|
// ...where exactly this happens in the ribbon depends on
|
||||||
// its size and LOAD_SCREENS...
|
// its size and LOAD_SCREENS...
|
||||||
// NOTE: calling centerView() will fix this.
|
// NOTE: calling centerView() will fix this.
|
||||||
// ...the problem is in centerRibbon
|
// ...the problem is in centerRibbon
|
||||||
if(tail.length < threshold){
|
if(tail.length < threshold){
|
||||||
var rolled = rollImages(frame_size, ribbon)
|
var rolled = rollImages(frame_size, ribbon)
|
||||||
}
|
}
|
||||||
if(head.length < threshold){
|
if(head.length < threshold){
|
||||||
var rolled = rollImages(-frame_size, ribbon)
|
var rolled = rollImages(-frame_size, ribbon)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user