updated todo, added general manupulation functions: reverseRibbons, sortImages, reverseImageOrder and helpers: jQuery.fn.reverseChildren and jQuery.fn.sortChildren...

Signed-off-by: Alex A. Naanou <alex.nanou@gmail.com>
This commit is contained in:
Alex A. Naanou 2012-08-14 17:26:46 +04:00
parent 533c13faff
commit db736cea92
2 changed files with 85 additions and 1 deletions

View File

@ -198,6 +198,27 @@ Priority work
[_] 0% 1.0
[_] 33% Main workflow
[_] 33% image viewing
[X] viewer
[_] select source
[_] slideshow
[X] 100% ribbon sorting
[X] ribbon navigation
[X] shift image between ribbons
[_] 0% metadata
[_] tag filtering
[_] tag editing
[_] EXIF/IPTC
[_] 0% image/export export
[_] JSON
[_] XMP metadata
[_] fav dirs
[_] file list
[_] image set
Goals:
main ribbon always consistent
fast sorting via several simple passes

View File

@ -15,7 +15,8 @@ var BACKGROUND_MODES = [
// ...this effectively makes the modes independant...
// NOTE: null represent the default value (no class set)...
// NOTE: these will change if changed in runtime...
var NORMAL_MODE_BG = 'dark'
//var NORMAL_MODE_BG = 'dark'
var NORMAL_MODE_BG = null
var SINGLE_IMAGE_MODE_BG = 'black'
@ -40,6 +41,21 @@ var MOVE_DELTA = 50
/********************************************************** Helpers **/
jQuery.fn.reverseChildren = function(){
return $(this).each(function(_, e){
return $(e).append($(e).children().detach().get().reverse())
})
}
jQuery.fn.sortChildren = function(func){
return $(this).each(function(_, e){
return $(e).append($(e).children().detach().get().sort(func))
})
}
function getImageOrder(img){
// XXX HACK need to parseInt this because '13' is less than '2'...
// ...figure a way out of this!!!
@ -50,6 +66,12 @@ function setImageOrder(img, order){
}
function cmpImageOrder(a, b){
return getImageOrder(a) - getImageOrder(b)
}
// this will create a function that will add/remove a css_class to elem
// calling the optional callbacks before and/or after.
@ -1001,6 +1023,7 @@ function createRibbon(direction){
// XXX this uses jquery animation...
// XXX one way to optimise this is to add the lesser ribbon to the
// greater disregarding their actual order...
// XXX think about using $(...).sortChildren(...) / sortImages()
function mergeRibbons(direction, get_order){
if(get_order == null){
get_order = getImageOrder
@ -1079,6 +1102,46 @@ var shiftImageUp = function(){ return shiftImage('prev') }
// reverse the ribbon order...
function reverseRibbons(){
var ribbons = $('.ribbon')
var field = $('.field')
var scale = getElementScale(field)
// get current ribbon index...
var cur = ribbons.index($('.current.ribbon'))
// reverse...
field.reverseChildren()
// compensate for offset cange...
$('.current.image').click()
}
// sort all images in all ribbons...
// NOTE: this will only align three ribbons...
function sortImages(){
$('.ribbon').sortChildren(cmpImageOrder)
// compensate for offset cange...
$('.current.image').click()
}
// this will reverse the order of images in all ribbons by reversing
// id attr and resorting...
function reverseImageOrder(){
// reverse ID order...
$($('.image').get().sort(cmpImageOrder).reverse())
.each(function(i, e){$(e).attr({'id': i})})
// resort the images...
sortImages()
}
/*********************************************************************/
// vim:set ts=4 sw=4 nowrap :