diff --git a/ui/index.html b/ui/index.html index 467a57fd..31c05e5d 100755 --- a/ui/index.html +++ b/ui/index.html @@ -41,6 +41,9 @@ margin-top: 20px; margin-bottom: 20px; } +.ribbon:empty { + display: none; +} .ribbon:first-child { margin-top: 0px; } @@ -110,6 +113,29 @@ } */ + +.marked-only.viewer:after { + display: block; + position: absolute; + content: "Showing marked images only"; + font-size: 14pt; + border: none; + color: blue; + width: auto; + height: auto; + + top: 10px; + right: 10px; + +} +.marked-only .image:not(.marked) { + display: none; +} +.marked-only .marked.image:after { + display: none; +} + + @@ -136,8 +162,67 @@ Split the API into the following sections: */ +var toggleMarkedOnlyView = createCSSClassToggler('.viewer', 'marked-only', + function(){ + var cur = $('.current.image') + // current is marked... + if(cur.hasClass('marked')){ + centerImage(null, 'css') + return + } + // there is a marked image in this ribbon... + var target = getImageBefore(cur, null, true) + if(target.length > 0){ + centerImage(focusImage(target), 'css') + return + } + // get marked image from other ribbons... + prevRibbon() + if($('.current.image').hasClass('marked')){ + return + } + nextRibbon() + }) + + +// XXX add ability to take all marked images and open them in a separate view... + + + var toggleImageMark = createCSSClassToggler('.current.image', 'marked') +// mode can be: +// - 'ribbon' +// - 'all' +function removeImageMarks(mode){ + // remove marks from current ribbon (default)... + if(mode == 'ribbon' || mode == null){ + return $('.current.image') + .closest('.ribbon') + .find('.marked') + .removeClass('marked') + + // remove all marks... + } else if(mode == 'all'){ + return $('.marked') + .removeClass('marked') + } +} + +function markAll(mode){ + // remove marks from current ribbon (default)... + if(mode == 'ribbon' || mode == null){ + return $('.current.image') + .closest('.ribbon') + .find('.image:not(.marked)') + .addClass('marked') + + // remove all marks... + } else if(mode == 'all'){ + return $('.image:not(.marked)').addClass('marked') + } +} + function invertImageMarks(){ return $('.current.image') .closest('.ribbon') @@ -164,6 +249,13 @@ function toggleImageMarkBlock(image){ return state } +function nextMarkedImage(){ + // XXX +} +function prevMarkedImage(){ + // XXX +} + // XXX should we use the createCSSClassToggler for this? @@ -233,9 +325,18 @@ function createRibbon(){ // NOTE: if this returns null, it means that the element is smallest in // target ribbon -- first position. -function getImageBefore(image, ribbon){ +function getImageBefore(image, ribbon, visible_only){ image = $(image) - var images = $(ribbon).find('.image') + if(ribbon == null){ + ribbon = image.closest('.ribbon') + } + // pre marked-only mode... + //var images = $(ribbon).find('.image') + if(visible_only){ + var images = $(ribbon).find('.image:visible') + } else { + var images = $(ribbon).find('.image') + } var order = image.attr('order') var prev = null @@ -254,29 +355,35 @@ function getImageBefore(image, ribbon){ function nextImage(){ return centerImage( focusImage( - $('.current.image').next('.image'))) + //$('.current.image').next('.image'))) + $('.current.image').next('.image:visible'))) } function prevImage(){ return centerImage( focusImage( - $('.current.image').prev('.image'))) + //$('.current.image').prev('.image'))) + $('.current.image').prev('.image:visible'))) } function firstImage(){ return centerImage( focusImage( - $('.current.image').closest('.ribbon').find('.image').first())) + //$('.current.image').closest('.ribbon').find('.image').first())) + $('.current.image').closest('.ribbon').find('.image:visible').first())) } function lastImage(){ return centerImage( focusImage( - $('.current.image').closest('.ribbon').find('.image').last())) + //$('.current.image').closest('.ribbon').find('.image').last())) + $('.current.image').closest('.ribbon').find('.image:visible').last())) } // NOTE: if moving is 'next' these will chose the image after the current's order. // NOTE: if an image with the same order is found, moving argument has no effect. function prevRibbon(moving){ var cur = $('.current.image') - var target = getImageBefore(cur, cur.closest('.ribbon').prev('.ribbon')) + // pre marked-only mode... + //var target = getImageBefore(cur, cur.closest('.ribbon').prev('.ribbon')) + var target = getImageBefore(cur, cur.closest('.ribbon').prev('.ribbon:visible'), true) if(moving == 'next' && cur.attr('order') != target.attr('order')){ var next = target.next('.image') target = next.length > 0 ? next : target @@ -285,7 +392,9 @@ function prevRibbon(moving){ } function nextRibbon(moving){ var cur = $('.current.image') - var target = getImageBefore(cur, cur.closest('.ribbon').next('.ribbon')) + // pre marked-only mode... + //var target = getImageBefore(cur, cur.closest('.ribbon').next('.ribbon')) + var target = getImageBefore(cur, cur.closest('.ribbon').next('.ribbon:visible'), true) if(moving == 'next' && cur.attr('order') != target.attr('order')){ var next = target.next('.image') target = next.length > 0 ? next : target