mirror of
https://github.com/flynx/ImageGrid.git
synced 2025-10-30 19:00:09 +00:00
added image info on hover...
Signed-off-by: Alex A. Naanou <alex.nanou@gmail.com>
This commit is contained in:
parent
bf1766351e
commit
d575d1b618
40
ui/data.js
40
ui/data.js
@ -15,7 +15,7 @@ var MAX_SCREEN_IMAGES = 12
|
|||||||
|
|
||||||
// if set to true each image will have basic info written to its html
|
// if set to true each image will have basic info written to its html
|
||||||
// title attr.
|
// title attr.
|
||||||
var IMAGE_TITLE_DATA = true
|
var IMAGE_INFO = true
|
||||||
|
|
||||||
var CACHE_DIR = '.ImageGridCache'
|
var CACHE_DIR = '.ImageGridCache'
|
||||||
|
|
||||||
@ -390,7 +390,7 @@ function imagesFromUrls(lst){
|
|||||||
|
|
||||||
$.each(lst, function(i, e){
|
$.each(lst, function(i, e){
|
||||||
|
|
||||||
// this is ugly but I'm bored so this pretty...
|
// this is ugly but I'm bored so this is pretty...
|
||||||
var ii = i < 10 ? '0000000' + i
|
var ii = i < 10 ? '0000000' + i
|
||||||
: i < 100 ? '000000' + i
|
: i < 100 ? '000000' + i
|
||||||
: i < 1000 ? '00000' + i
|
: i < 1000 ? '00000' + i
|
||||||
@ -436,12 +436,6 @@ function dataFromImages(images){
|
|||||||
function ribbonsFromFavDirs(path, images, cmp){
|
function ribbonsFromFavDirs(path, images, cmp){
|
||||||
path = path == null ? BASE_URL : path
|
path = path == null ? BASE_URL : path
|
||||||
images = images == null ? IMAGES : images
|
images = images == null ? IMAGES : images
|
||||||
/*cmp = cmp == null ?
|
|
||||||
function(a, b){
|
|
||||||
return imageDateCmp(a, b, images)
|
|
||||||
}
|
|
||||||
: cmp
|
|
||||||
*/
|
|
||||||
|
|
||||||
// build a reverse name-gid index for fast access...
|
// build a reverse name-gid index for fast access...
|
||||||
var index = {}
|
var index = {}
|
||||||
@ -554,13 +548,14 @@ function updateImage(image, gid, size){
|
|||||||
}
|
}
|
||||||
size = size == null ? getVisibleImageSize('max') : size
|
size = size == null ? getVisibleImageSize('max') : size
|
||||||
|
|
||||||
|
// get the image data...
|
||||||
var img_data = IMAGES[gid]
|
var img_data = IMAGES[gid]
|
||||||
if(img_data == null){
|
if(img_data == null){
|
||||||
img_data = STUB_IMAGE_DATA
|
img_data = STUB_IMAGE_DATA
|
||||||
}
|
}
|
||||||
var name = img_data.path.split('/').pop()
|
var name = img_data.path.split('/').pop()
|
||||||
|
|
||||||
// get the url...
|
// preview...
|
||||||
var preview = getBestPreview(gid, size)
|
var preview = getBestPreview(gid, size)
|
||||||
image
|
image
|
||||||
.css({
|
.css({
|
||||||
@ -569,21 +564,34 @@ function updateImage(image, gid, size){
|
|||||||
.attr({
|
.attr({
|
||||||
order: DATA.order.indexOf(gid),
|
order: DATA.order.indexOf(gid),
|
||||||
orientation: img_data.orientation == null ? 0 : img_data.orientation,
|
orientation: img_data.orientation == null ? 0 : img_data.orientation,
|
||||||
title: IMAGE_TITLE_DATA ?
|
|
||||||
'Image: ' + name +'\n'+
|
|
||||||
'Order: ' + DATA.order.indexOf(gid) +'\n'+
|
|
||||||
'GID: '+ gid +'\n'+
|
|
||||||
'Preview size:'+ preview.size : '',
|
|
||||||
})
|
})
|
||||||
|
|
||||||
// setup marks...
|
// image info...
|
||||||
|
if(IMAGE_INFO){
|
||||||
|
var info = image.find('.info')
|
||||||
|
if(info.length == 0){
|
||||||
|
info = $('<div/>')
|
||||||
|
.addClass('info')
|
||||||
|
.appendTo(image)
|
||||||
|
}
|
||||||
|
info.html(
|
||||||
|
'Image: ' + name +
|
||||||
|
'<br>Order: ' + DATA.order.indexOf(gid) +
|
||||||
|
'<br>GID: '+ gid +
|
||||||
|
(window.DEBUG ? '<br>Preview size:'+ preview.size : '') +
|
||||||
|
''
|
||||||
|
)
|
||||||
|
} else {
|
||||||
|
image.find('.info').remove()
|
||||||
|
}
|
||||||
|
|
||||||
|
// marks...
|
||||||
if(MARKED.indexOf(gid) != -1){
|
if(MARKED.indexOf(gid) != -1){
|
||||||
image.addClass('marked')
|
image.addClass('marked')
|
||||||
} else {
|
} else {
|
||||||
image.removeClass('marked')
|
image.removeClass('marked')
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
return image
|
return image
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -56,6 +56,7 @@ body {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
.ribbon {
|
.ribbon {
|
||||||
position: relative;
|
position: relative;
|
||||||
display: block;
|
display: block;
|
||||||
@ -78,6 +79,8 @@ body {
|
|||||||
margin-bottom: 0px;
|
margin-bottom: 0px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
.image {
|
.image {
|
||||||
position: relative;
|
position: relative;
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
@ -106,6 +109,8 @@ body {
|
|||||||
border: solid red 5px;
|
border: solid red 5px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* image turning... */
|
/* image turning... */
|
||||||
/* NOTE: need to account for proportions after turning... */
|
/* NOTE: need to account for proportions after turning... */
|
||||||
.image[orientation="90"] {
|
.image[orientation="90"] {
|
||||||
@ -131,6 +136,7 @@ body {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* dot mark... */
|
/* dot mark... */
|
||||||
.marks-visible.viewer .marked.image:after {
|
.marks-visible.viewer .marked.image:after {
|
||||||
display: block;
|
display: block;
|
||||||
@ -238,6 +244,75 @@ body {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/* Image info */
|
||||||
|
.image .info {
|
||||||
|
display: none;
|
||||||
|
|
||||||
|
position: absolute;
|
||||||
|
bottom: 0px;
|
||||||
|
width: 100%;
|
||||||
|
background: black;
|
||||||
|
opacity: 0.7;
|
||||||
|
|
||||||
|
-moz-user-select: auto;
|
||||||
|
-webkit-user-select: auto;
|
||||||
|
-o-user-select: auto;
|
||||||
|
-ms-user-select: auto;
|
||||||
|
user-select: auto;
|
||||||
|
}
|
||||||
|
.image .info::selection {
|
||||||
|
color: white;
|
||||||
|
background: red;
|
||||||
|
}
|
||||||
|
.image-info-visible.viewer .image:hover .info {
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
.single-image-mode.viewer .image .info {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
.image[orientation="90"] .info {
|
||||||
|
top: auto;
|
||||||
|
left: 100%;
|
||||||
|
|
||||||
|
-ms-transform-origin: bottom left;
|
||||||
|
-webkit-transform-origin: bottom left;
|
||||||
|
transform-origin: bottom left;
|
||||||
|
|
||||||
|
-webkit-transform: rotate(-90deg);
|
||||||
|
-moz-transform: rotate(-90deg);
|
||||||
|
-o-transform: rotate(-90deg);
|
||||||
|
-ms-transform: rotate(-90deg);
|
||||||
|
transform: rotate(-90deg);
|
||||||
|
}
|
||||||
|
.image[orientation="180"] .info {
|
||||||
|
top: 0px;
|
||||||
|
bottom: auto;
|
||||||
|
|
||||||
|
-webkit-transform: rotate(180deg);
|
||||||
|
-moz-transform: rotate(180deg);
|
||||||
|
-o-transform: rotate(180deg);
|
||||||
|
-ms-transform: rotate(180deg);
|
||||||
|
transform: rotate(180deg);
|
||||||
|
}
|
||||||
|
.image[orientation="270"] .info {
|
||||||
|
top: auto;
|
||||||
|
left: auto;
|
||||||
|
right: 100%;
|
||||||
|
|
||||||
|
-ms-transform-origin: bottom right;
|
||||||
|
-webkit-transform-origin: bottom right;
|
||||||
|
transform-origin: bottom right;
|
||||||
|
|
||||||
|
-webkit-transform: rotate(90deg);
|
||||||
|
-moz-transform: rotate(90deg);
|
||||||
|
-o-transform: rotate(90deg);
|
||||||
|
-ms-transform: rotate(90deg);
|
||||||
|
transform: rotate(90deg);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
.up-indicator,
|
.up-indicator,
|
||||||
.down-indicator,
|
.down-indicator,
|
||||||
.start-indicator,
|
.start-indicator,
|
||||||
|
|||||||
@ -16,6 +16,29 @@ var DIRECTION = 'next'
|
|||||||
/*********************************************************************/
|
/*********************************************************************/
|
||||||
|
|
||||||
var KEYBOARD_CONFIG = {
|
var KEYBOARD_CONFIG = {
|
||||||
|
// help mode...
|
||||||
|
// NOTE: need to keep all info modes before the rest so as to give
|
||||||
|
// their bindings priority...
|
||||||
|
'.help-mode': {
|
||||||
|
title: 'Help',
|
||||||
|
doc: 'NOTE: In this mode all other key bindings are disabled, except '+
|
||||||
|
'the ones explicitly defined here.',
|
||||||
|
ignore: '*',
|
||||||
|
|
||||||
|
Esc: doc('Close help',
|
||||||
|
function(){
|
||||||
|
toggleKeyboardHelp('off')
|
||||||
|
return false
|
||||||
|
}),
|
||||||
|
H: 'Esc',
|
||||||
|
Q: 'Esc',
|
||||||
|
// '?'
|
||||||
|
'/': {
|
||||||
|
shift: 'Esc',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
|
||||||
// single image mode only...
|
// single image mode only...
|
||||||
'.single-image-mode': {
|
'.single-image-mode': {
|
||||||
title: 'Single image mode',
|
title: 'Single image mode',
|
||||||
@ -27,34 +50,23 @@ var KEYBOARD_CONFIG = {
|
|||||||
centerRibbons()
|
centerRibbons()
|
||||||
}),
|
}),
|
||||||
Esc: doc('Exit single image mode',
|
Esc: doc('Exit single image mode',
|
||||||
function(){ toggleSingleImageMode('off') }),
|
function(){
|
||||||
|
toggleSingleImageMode('off')
|
||||||
|
return false
|
||||||
|
}),
|
||||||
Q: 'Esc',
|
Q: 'Esc',
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
||||||
// single image mode only...
|
// single image mode only...
|
||||||
'.marked-only-view:not(.single-image-mode)': {
|
'.marked-only-view:not(.single-image-mode)': {
|
||||||
title: 'Marked only view',
|
title: 'Marked only view',
|
||||||
|
|
||||||
Esc: doc('Exit marked only view',
|
Esc: doc('Exit marked only view',
|
||||||
function(){ toggleMarkedOnlyView('off') })
|
function(){
|
||||||
},
|
toggleMarkedOnlyView('off')
|
||||||
|
return false
|
||||||
|
})
|
||||||
// help mode...
|
|
||||||
'.help-mode': {
|
|
||||||
title: 'Help',
|
|
||||||
doc: 'NOTE: In this mode all other key bindings are disabled, except '+
|
|
||||||
'the ones explicitly defined here.',
|
|
||||||
ignore: '*',
|
|
||||||
|
|
||||||
Esc: doc('Close help',
|
|
||||||
function(){ toggleKeyboardHelp('off') }),
|
|
||||||
H: 'Esc',
|
|
||||||
Q: 'Esc',
|
|
||||||
// '?'
|
|
||||||
'/': {
|
|
||||||
shift: 'Esc',
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
||||||
@ -291,6 +303,9 @@ var KEYBOARD_CONFIG = {
|
|||||||
'Position (global): '+ order +'/'+ DATA.order.length +'\n'+
|
'Position (global): '+ order +'/'+ DATA.order.length +'\n'+
|
||||||
'')
|
'')
|
||||||
}),
|
}),
|
||||||
|
// XXX group this with other info stuff into a single on/off toggle...
|
||||||
|
shift: doc('Toggle image info visibility (on hover)',
|
||||||
|
function(){ toggleImageInfo() }),
|
||||||
ctrl: doc('Invert image marks',
|
ctrl: doc('Invert image marks',
|
||||||
function(){ invertImageMarks() }),
|
function(){ invertImageMarks() }),
|
||||||
},
|
},
|
||||||
|
|||||||
@ -61,6 +61,9 @@ var toggleTheme = createCSSClassToggler('.viewer',
|
|||||||
})
|
})
|
||||||
|
|
||||||
|
|
||||||
|
var toggleImageInfo = createCSSClassToggler('.viewer', '.image-info-visible')
|
||||||
|
|
||||||
|
|
||||||
// NOTE: this confirmsto the css toggler protocol, but is not implemented
|
// NOTE: this confirmsto the css toggler protocol, but is not implemented
|
||||||
// via createCSSClassToggler as we do not need to set any classes,
|
// via createCSSClassToggler as we do not need to set any classes,
|
||||||
// al least at this point...
|
// al least at this point...
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user