mirror of
https://github.com/flynx/ImageGrid.git
synced 2025-10-29 10:20:08 +00:00
added correct image placement on shift and on ribbon navigation. sorting is not present and merging non-empty ribbons messes up the order.
Signed-off-by: Alex A. Naanou <alex.nanou@gmail.com>
This commit is contained in:
parent
deee061377
commit
666d377664
@ -99,7 +99,7 @@ function loadImages(json){
|
|||||||
$('<div class="image"></div>')
|
$('<div class="image"></div>')
|
||||||
.css({ 'background-image': 'url('+images[i]+')' })
|
.css({ 'background-image': 'url('+images[i]+')' })
|
||||||
// set a unique id for each image...
|
// set a unique id for each image...
|
||||||
.attr({'id': 'image-' + i})
|
.attr({'id': i})
|
||||||
.click(handleImageClick)
|
.click(handleImageClick)
|
||||||
.appendTo(ribbon)
|
.appendTo(ribbon)
|
||||||
}
|
}
|
||||||
@ -283,18 +283,61 @@ function nextImage(){
|
|||||||
function lastImage(){
|
function lastImage(){
|
||||||
$('.current-ribbon').children('.image').last().click()
|
$('.current-ribbon').children('.image').last().click()
|
||||||
}
|
}
|
||||||
// XXX select appropriate image...
|
|
||||||
function focusAboveRibbon(){
|
// XXX for the above two functions to be stable we will need to jump up
|
||||||
$('.current-ribbon').prev('.ribbon').children('.image').first().click()
|
// to the next and down to the prev element...
|
||||||
|
function focusRibbon(direction){
|
||||||
|
var id = $('.current-image').attr('id')
|
||||||
|
var prev = getImageBefore(id, $('.current-ribbon')[direction]('.ribbon'))
|
||||||
|
if(prev){
|
||||||
|
var next = prev.next()
|
||||||
|
if(next.length == 0){
|
||||||
|
prev.click()
|
||||||
|
} else {
|
||||||
|
next.click()
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
$('.current-ribbon')[direction]('.ribbon').children('.image').first().click()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
function focusAboveRibbon(){
|
||||||
|
focusRibbon('prev')
|
||||||
}
|
}
|
||||||
// XXX select appropriate image...
|
|
||||||
function focusBelowRibbon(){
|
function focusBelowRibbon(){
|
||||||
$('.current-ribbon').next('.ribbon').children('.image').first().click()
|
focusRibbon('next')
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/********************************************************** Helpers **/
|
||||||
|
|
||||||
|
// find an image object after which to position image ID...
|
||||||
|
// used for two main tasks:
|
||||||
|
// - positioning pormoted/demoted images
|
||||||
|
// - centering ribbons
|
||||||
|
// returns:
|
||||||
|
// - null - empty ribbon or no element greater id should be first
|
||||||
|
// - element
|
||||||
|
// XXX do we need to make ids numbers for this to work?
|
||||||
|
// XXX might be better to make this a binary search for very large sets of data
|
||||||
|
function getImageBefore(id, ribbon){
|
||||||
|
// walk the ribbon till we find two images one with an ID less and
|
||||||
|
// another greater that id...
|
||||||
|
id = parseInt(id)
|
||||||
|
var images = ribbon.children('.image')
|
||||||
|
var prev
|
||||||
|
for(var i=0; i < images.length; i++){
|
||||||
|
if(parseInt($(images[i]).attr('id')) > id){
|
||||||
|
return prev
|
||||||
|
}
|
||||||
|
prev = $(images[i])
|
||||||
|
}
|
||||||
|
return prev
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/********************************************************** Actions **/
|
/********************************************************** Actions **/
|
||||||
// basic actions...
|
// basic actions...
|
||||||
// NOTE: below 'direction' is meant in the html sence, i.e. next/prev...
|
// NOTE: below 'direction' is meant in the html sence, i.e. next/prev...
|
||||||
@ -350,9 +393,14 @@ function shiftImage(direction){
|
|||||||
if($('.current-ribbon')[direction]('.ribbon').length == 0){
|
if($('.current-ribbon')[direction]('.ribbon').length == 0){
|
||||||
createRibbon(direction)
|
createRibbon(direction)
|
||||||
}
|
}
|
||||||
// XXX sort elements correctly...
|
|
||||||
|
// get previous element after which we need to put the current...
|
||||||
|
var prev_elem = getImageBefore(
|
||||||
|
$('.current-image').attr('id'),
|
||||||
|
$('.current-ribbon')[direction]('.ribbon'))
|
||||||
|
|
||||||
|
// last image in ribbon, merge...
|
||||||
if($('.current-ribbon').children('.image').length == 1){
|
if($('.current-ribbon').children('.image').length == 1){
|
||||||
// XXX this adds image to the head while the below portion adds it to the tail...
|
|
||||||
mergeRibbons(direction)
|
mergeRibbons(direction)
|
||||||
} else {
|
} else {
|
||||||
img = $('.current-image')
|
img = $('.current-image')
|
||||||
@ -361,9 +409,19 @@ function shiftImage(direction){
|
|||||||
} else {
|
} else {
|
||||||
nextImage()
|
nextImage()
|
||||||
}
|
}
|
||||||
img
|
// do the actual move...
|
||||||
.detach()
|
if(prev_elem){
|
||||||
.appendTo($('.current-ribbon')[direction]('.ribbon'))
|
// insert element after current...
|
||||||
|
img
|
||||||
|
.detach()
|
||||||
|
.insertAfter(prev_elem)
|
||||||
|
} else {
|
||||||
|
// empty ribbon or fisrt element...
|
||||||
|
img
|
||||||
|
.detach()
|
||||||
|
.prependTo($('.current-ribbon')[direction]('.ribbon'))
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
// XXX this has to know aout animations...
|
// XXX this has to know aout animations...
|
||||||
$('.current-image').click()
|
$('.current-image').click()
|
||||||
@ -382,4 +440,5 @@ function shiftImageUp(){
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*********************************************************************/
|
||||||
// vim:set ts=4 sw=4 nowrap :
|
// vim:set ts=4 sw=4 nowrap :
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user