mirror of
https://github.com/flynx/ImageGrid.git
synced 2025-11-01 03:40:09 +00:00
now viewer should not err when empty + cleanup + some refactoring...
Signed-off-by: Alex A. Naanou <alex.nanou@gmail.com>
This commit is contained in:
parent
04eb7ba591
commit
52d9564345
@ -156,11 +156,11 @@ require('nw.gui').Window.get().showDevTools()
|
||||
|
||||
<div class="viewer gray marks-visible">
|
||||
|
||||
<div class="ribbon-set">
|
||||
<!--div class="ribbon-set"-->
|
||||
<!-- DEBUG: remove when not needed... -->
|
||||
<div class="point" title="current origin point"> </div>
|
||||
<!--div class="point" title="current origin point"> </div-->
|
||||
<!-- DEBUG: end -->
|
||||
</div>
|
||||
<!--/div-->
|
||||
|
||||
|
||||
<!-- XXX should these be here???
|
||||
@ -171,7 +171,7 @@ require('nw.gui').Window.get().showDevTools()
|
||||
-->
|
||||
|
||||
<!-- DEBUG: remove when not needed... -->
|
||||
<div class="container-center"> </div>
|
||||
<!--div class="container-center"> </div-->
|
||||
<!-- DEBUG: end -->
|
||||
|
||||
</div>
|
||||
|
||||
@ -72,8 +72,8 @@ module.RibbonsClassPrototype = {
|
||||
createViewer: function(){
|
||||
return $('<div>')
|
||||
.addClass('viewer')
|
||||
.append($('<div>')
|
||||
.addClass('ribbon-set'))
|
||||
//.append($('<div>')
|
||||
// .addClass('ribbon-set'))
|
||||
},
|
||||
// XXX NOTE: quots removal might render this incompatible with older data formats...
|
||||
createRibbon: function(gids){
|
||||
@ -135,6 +135,9 @@ module.RibbonsPrototype = {
|
||||
// XXX need a better way of doing this...
|
||||
preventTransitions: function(target){
|
||||
target = target || this.viewer
|
||||
if(target.length == 0){
|
||||
return this
|
||||
}
|
||||
target.addClass('no-transitions')
|
||||
var t = target[0]
|
||||
getComputedStyle(t).webkitTransition
|
||||
@ -152,6 +155,9 @@ module.RibbonsPrototype = {
|
||||
} else {
|
||||
target = target || this.viewer
|
||||
}
|
||||
if(target.length == 0){
|
||||
return this
|
||||
}
|
||||
// sync...
|
||||
if(now){
|
||||
target.removeClass('no-transitions')
|
||||
@ -237,7 +243,7 @@ module.RibbonsPrototype = {
|
||||
// Get ribbon set scale...
|
||||
//
|
||||
getScale: function(){
|
||||
return getElementScale(this.viewer.find('.ribbon-set'))
|
||||
return getElementScale(this.getRibbonSet())
|
||||
},
|
||||
|
||||
// Set ribbon set scale...
|
||||
@ -251,7 +257,11 @@ module.RibbonsPrototype = {
|
||||
//
|
||||
// XXX if chrome 38 renders images blurry uncomment the fix...
|
||||
setScale: function(scale, t, l){
|
||||
var ribbon_set = this.viewer.find('.ribbon-set')
|
||||
var ribbon_set = this.getRibbonSet()
|
||||
|
||||
if(ribbon_set.length == 0){
|
||||
return this
|
||||
}
|
||||
|
||||
if(t != null && l != null){
|
||||
this.setOrigin(t, l)
|
||||
@ -280,7 +290,7 @@ module.RibbonsPrototype = {
|
||||
// Get current ribbon-set origin...
|
||||
//
|
||||
getOrigin: function(){
|
||||
return getElementOrigin(this.viewer.find('.ribbon-set'))
|
||||
return getElementOrigin(this.getRibbonSet())
|
||||
},
|
||||
|
||||
// Set ribbon set origin...
|
||||
@ -301,7 +311,12 @@ module.RibbonsPrototype = {
|
||||
//
|
||||
// XXX DEBUG: remove point updating when not needed...
|
||||
setOrigin: function(a, b){
|
||||
var ribbon_set = this.viewer.find('.ribbon-set')
|
||||
var ribbon_set = this.getRibbonSet()
|
||||
|
||||
if(ribbon_set.length == 0){
|
||||
return this
|
||||
}
|
||||
|
||||
var ro = ribbon_set.offset()
|
||||
var s = this.getScale()
|
||||
|
||||
@ -378,9 +393,17 @@ module.RibbonsPrototype = {
|
||||
// NOTE: the .shadow element is essentially a ribbon.
|
||||
//
|
||||
// XXX should we also have a ribbon shadow???
|
||||
// XXX when this cant find a target it will return an empty function,
|
||||
// not sure if this is correct...
|
||||
makeShadow: function(target, animate, delay){
|
||||
delay = delay || 200
|
||||
var img = this.getImage(target)
|
||||
|
||||
if(img.length == 0){
|
||||
// XXX is this correct???
|
||||
return function(){}
|
||||
}
|
||||
|
||||
var gid = this.getElemGID(img)
|
||||
var s = this.getScale()
|
||||
var vo = this.viewer.offset()
|
||||
@ -470,6 +493,26 @@ module.RibbonsPrototype = {
|
||||
|
||||
// Contextual getters...
|
||||
|
||||
// Get ribbon-set...
|
||||
//
|
||||
// Get ribbon set if it exists
|
||||
// .getRibbonSet()
|
||||
// -> ribbon-set
|
||||
//
|
||||
// Get ribbon set if it exists or create it if not
|
||||
// .getRibbonSet(true)
|
||||
// -> ribbon-set
|
||||
//
|
||||
getRibbonSet: function(create){
|
||||
var ribbon_set = this.viewer.find('.ribbon-set')
|
||||
if(ribbon_set.length == 0 && create){
|
||||
ribbon_set = $('<div/>')
|
||||
.addClass('ribbon-set')
|
||||
.appendTo(this.viewer)
|
||||
}
|
||||
return ribbon_set
|
||||
},
|
||||
|
||||
// Get image...
|
||||
//
|
||||
// Get current image:
|
||||
@ -676,6 +719,7 @@ module.RibbonsPrototype = {
|
||||
var ribbon = this.getRibbon(target)
|
||||
var i = this.getRibbonOrder(ribbon)
|
||||
ribbon = ribbon.length == 0 ? this.createRibbon(target) : ribbon
|
||||
var ribbon_set = this.getRibbonSet(true)
|
||||
|
||||
var ribbons = this.viewer.find('.ribbon')
|
||||
|
||||
@ -694,7 +738,7 @@ module.RibbonsPrototype = {
|
||||
|
||||
// place the ribbon...
|
||||
if(ribbons.length == 0 || ribbons.length <= position){
|
||||
this.viewer.find('.ribbon-set').append(ribbon)
|
||||
ribbon_set.append(ribbon)
|
||||
|
||||
} else if(i == -1 || i > position) {
|
||||
ribbons.eq(position).before(ribbon)
|
||||
@ -735,6 +779,10 @@ module.RibbonsPrototype = {
|
||||
placeImage: function(target, to, mode){
|
||||
mode = mode == null ? 'before' : mode
|
||||
|
||||
if(this.getRibbonSet().length == 0){
|
||||
return
|
||||
}
|
||||
|
||||
target = target == null || target.constructor !== Array ? [target] : target
|
||||
|
||||
// get or make images...
|
||||
@ -1193,11 +1241,7 @@ module.RibbonsPrototype = {
|
||||
clear: function(gids){
|
||||
// clear all...
|
||||
if(gids == null || gids == '*'){
|
||||
this.viewer.find('.ribbon').remove()
|
||||
// reset offsets...
|
||||
this.viewer.find('.ribbon-set').css({
|
||||
top: '',
|
||||
})
|
||||
this.getRibbonSet().remove()
|
||||
|
||||
// clear one or more gids...
|
||||
} else {
|
||||
@ -1543,7 +1587,11 @@ module.RibbonsPrototype = {
|
||||
// XXX custom align point woud also be nice...
|
||||
// (top, bottom, center, %, px)
|
||||
centerRibbon: function(target, offset, scale){
|
||||
var ribbon_set = this.viewer.find('.ribbon-set')
|
||||
var ribbon_set = this.getRibbonSet()
|
||||
|
||||
if(ribbon_set.length == 0){
|
||||
return this
|
||||
}
|
||||
|
||||
//this.setOrigin(target)
|
||||
|
||||
@ -1575,9 +1623,13 @@ module.RibbonsPrototype = {
|
||||
scale = scale || this.getScale()
|
||||
var ribbon = this.getRibbon(target)
|
||||
|
||||
if(ribbon.length == 0){
|
||||
return this
|
||||
}
|
||||
|
||||
var rl = ribbon.offset().left
|
||||
var il = target.offset().left
|
||||
//var rsl = this.viewer.find('.ribbon-set').offset().left
|
||||
//var rsl = this.getRibbonSet().offset().left
|
||||
var W = this.viewer.width() * scale
|
||||
var w = target.width() * scale
|
||||
|
||||
|
||||
@ -179,24 +179,6 @@ $(function(){
|
||||
// XXX
|
||||
window.a = testing.setupActions()
|
||||
|
||||
// setup features...
|
||||
/*
|
||||
// XXX I do not fully understand it yet, but PartialRibbons must be
|
||||
// setup BEFORE AlignRibbonsTo*, otherwise the later will break
|
||||
// on shifting an image to a new ribbon...
|
||||
// To reproduce:
|
||||
// - setupe RibbonAlignToFirst first
|
||||
// - go to top ribbon
|
||||
// - shift image up
|
||||
viewer.PartialRibbons.setup(a)
|
||||
viewer.AlignRibbonsToImageOrder.setup(a)
|
||||
//viewer.AlignRibbonsToFirstImage.setup(a)
|
||||
viewer.SingleImageView.setup(a)
|
||||
viewer.ShiftAnimation.setup(a)
|
||||
viewer.BoundsIndicators.setup(a)
|
||||
viewer.CurrentImageIndicator.setup(a)
|
||||
*/
|
||||
|
||||
viewer.Features.setup(a, [
|
||||
// XXX I do not fully understand it yet, but PartialRibbons must be
|
||||
// setup BEFORE AlignRibbonsTo*, otherwise the later will break
|
||||
|
||||
@ -36,6 +36,10 @@ function reloadAfter(transitions){
|
||||
var updateImagePosition =
|
||||
module.updateImagePosition =
|
||||
function updateImagePosition(actions, target){
|
||||
if(actions.ribbons.getRibbonSet().length == 0){
|
||||
return
|
||||
}
|
||||
|
||||
target = target || actions.current
|
||||
target = target instanceof jQuery
|
||||
? actions.ribbons.getElemGID(target)
|
||||
@ -890,9 +894,6 @@ actions.Actions(Client, {
|
||||
|
||||
|
||||
/*********************************************************************/
|
||||
// XXX do a simple feature framework...
|
||||
// ...need something like:
|
||||
// Features(['feature_a', 'feature_b'], action).setup()
|
||||
|
||||
var FeatureProto =
|
||||
module.FeatureProto = {
|
||||
@ -1018,9 +1019,7 @@ module.Features = Object.create(FeatureSet)
|
||||
//---------------------------------------------------------------------
|
||||
// NOTE: this is split out to an action so as to enable ui elements to
|
||||
// adapt to ribbon size changes...
|
||||
var PartialRibbonsActions =
|
||||
module.PartialRibbonsActions =
|
||||
actions.Actions({
|
||||
var PartialRibbonsActions = actions.Actions({
|
||||
updateRibbon: ['Update partial ribbon size',
|
||||
function(target, w, size, threshold){
|
||||
target = target instanceof jQuery
|
||||
@ -1145,9 +1144,7 @@ module.PartialRibbons = Feature({
|
||||
|
||||
|
||||
//---------------------------------------------------------------------
|
||||
var SingleImageActions =
|
||||
module.SingleImageActions =
|
||||
actions.Actions({
|
||||
var SingleImageActions = actions.Actions({
|
||||
toggleSingleImage: ['Toggle single image view',
|
||||
// XXX this is wrong!!!
|
||||
CSSClassToggler(
|
||||
@ -1155,6 +1152,7 @@ actions.Actions({
|
||||
'single-image-mode') ],
|
||||
})
|
||||
|
||||
// helper...
|
||||
// XXX should this be an action???
|
||||
function updateImageProportions(){
|
||||
// XXX
|
||||
@ -1228,6 +1226,9 @@ function updateImageProportions(){
|
||||
//
|
||||
var SingleImageView =
|
||||
module.SingleImageView = Feature({
|
||||
title: '',
|
||||
doc: '',
|
||||
|
||||
tag: 'ui-single-image-view',
|
||||
|
||||
actions: SingleImageActions,
|
||||
@ -1266,6 +1267,9 @@ module.SingleImageView = Feature({
|
||||
// as it is now???
|
||||
var AlignRibbonsToImageOrder =
|
||||
module.AlignRibbonsToImageOrder = Feature({
|
||||
title: '',
|
||||
doc: '',
|
||||
|
||||
tag: 'ui-ribbon-align-to-order',
|
||||
|
||||
handlers: [
|
||||
@ -1278,6 +1282,9 @@ module.AlignRibbonsToImageOrder = Feature({
|
||||
//---------------------------------------------------------------------
|
||||
var AlignRibbonsToFirstImage =
|
||||
module.AlignRibbonsToFirstImage = Feature({
|
||||
title: '',
|
||||
doc: '',
|
||||
|
||||
tag: 'ui-ribbon-align-to-first',
|
||||
|
||||
handlers: [
|
||||
@ -1291,6 +1298,9 @@ module.AlignRibbonsToFirstImage = Feature({
|
||||
// XXX at this point this does not support target lists...
|
||||
var ShiftAnimation =
|
||||
module.ShiftAnimation = Feature({
|
||||
title: '',
|
||||
doc: '',
|
||||
|
||||
tag: 'ui-animation',
|
||||
|
||||
handlers: [
|
||||
@ -1320,11 +1330,12 @@ module.ShiftAnimation = Feature({
|
||||
|
||||
|
||||
//---------------------------------------------------------------------
|
||||
var BoundsIndicatorsActions =
|
||||
module.BoundsIndicatorsActions =
|
||||
actions.Actions({
|
||||
var BoundsIndicatorsActions = actions.Actions({
|
||||
flashIndicator: ['Flash an indicator',
|
||||
function(direction){
|
||||
if(this.ribbons.getRibbonSet().length == 0){
|
||||
return
|
||||
}
|
||||
var cls = {
|
||||
// shift up/down...
|
||||
up: '.up-indicator',
|
||||
@ -1353,6 +1364,7 @@ actions.Actions({
|
||||
}],
|
||||
})
|
||||
|
||||
// helper...
|
||||
function didAdvance(indicator){
|
||||
return function(){
|
||||
var img = this.data.current
|
||||
@ -1366,6 +1378,9 @@ function didAdvance(indicator){
|
||||
|
||||
var BoundsIndicators =
|
||||
module.BoundsIndicators = Feature({
|
||||
title: '',
|
||||
doc: '',
|
||||
|
||||
tag: 'ui-bounds-indicators',
|
||||
|
||||
actions: BoundsIndicatorsActions,
|
||||
@ -1436,15 +1451,18 @@ module.BoundsIndicators = Feature({
|
||||
|
||||
|
||||
//---------------------------------------------------------------------
|
||||
var CurrentImageIndicatorActions =
|
||||
module.CurrentImageIndicatorActions =
|
||||
actions.Actions({
|
||||
var CurrentImageIndicatorActions = actions.Actions({
|
||||
updateCurrentImageIndicator: ['Update current image indicator',
|
||||
function(target, update_border){
|
||||
var ribbon_set = this.ribbons.getRibbonSet()
|
||||
|
||||
if(ribbon_set.length == 0){
|
||||
return this
|
||||
}
|
||||
|
||||
var scale = this.ribbons.getScale()
|
||||
var cur = this.ribbons.getImage(target)
|
||||
var ribbon = this.ribbons.getRibbon(target)
|
||||
var ribbon_set = this.ribbons.viewer.find('.ribbon-set')
|
||||
|
||||
var marker = ribbon.find('.current-marker')
|
||||
|
||||
@ -1515,9 +1533,10 @@ actions.Actions({
|
||||
|
||||
var CurrentImageIndicator =
|
||||
module.CurrentImageIndicator = Feature({
|
||||
tag: 'ui-current-image-indicator',
|
||||
title: '',
|
||||
doc: '',
|
||||
|
||||
actions: CurrentImageIndicatorActions,
|
||||
tag: 'ui-current-image-indicator',
|
||||
|
||||
config: {
|
||||
'current-image-border': 3,
|
||||
@ -1529,6 +1548,8 @@ module.CurrentImageIndicator = Feature({
|
||||
'current-image-indicator-fadein': 500,
|
||||
},
|
||||
|
||||
actions: CurrentImageIndicatorActions,
|
||||
|
||||
handlers: [
|
||||
// move marker to current image...
|
||||
[ 'focusImage.post',
|
||||
@ -1589,6 +1610,9 @@ module.CurrentImageIndicator = Feature({
|
||||
// XXX
|
||||
var ImageStateIndicator =
|
||||
module.ImageStateIndicator = Feature({
|
||||
title: '',
|
||||
doc: '',
|
||||
|
||||
tag: 'ui-image-state-indicator',
|
||||
})
|
||||
|
||||
@ -1598,6 +1622,9 @@ module.ImageStateIndicator = Feature({
|
||||
// XXX
|
||||
var GlobalStateIndicator =
|
||||
module.GlobalStateIndicator = Feature({
|
||||
title: '',
|
||||
doc: '',
|
||||
|
||||
tag: 'ui-global-state-indicator',
|
||||
})
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user