mirror of
https://github.com/flynx/ImageGrid.git
synced 2026-01-09 20:01:08 +00:00
reworked tagging actions...
Signed-off-by: Alex A. Naanou <alex.nanou@gmail.com>
This commit is contained in:
parent
4e44480c1f
commit
beb960ac3a
@ -2462,7 +2462,7 @@ var DataWithTagsPrototype = {
|
|||||||
tag: function(tags, gids){
|
tag: function(tags, gids){
|
||||||
tags = tags.constructor !== Array ? [tags] : tags
|
tags = tags.constructor !== Array ? [tags] : tags
|
||||||
|
|
||||||
gids = gids == null ? this.getImage() : gids
|
gids = gids == null || gids == 'current' ? this.getImage() : gids
|
||||||
gids = gids.constructor !== Array ? [gids] : gids
|
gids = gids.constructor !== Array ? [gids] : gids
|
||||||
|
|
||||||
if(this.tags == null){
|
if(this.tags == null){
|
||||||
@ -2490,7 +2490,7 @@ var DataWithTagsPrototype = {
|
|||||||
}
|
}
|
||||||
tags = tags.constructor !== Array ? [tags] : tags
|
tags = tags.constructor !== Array ? [tags] : tags
|
||||||
|
|
||||||
gids = gids == null ? this.getImage() : gids
|
gids = gids == null || gids == 'current' ? this.getImage() : gids
|
||||||
gids = gids.constructor !== Array ? [gids] : gids
|
gids = gids.constructor !== Array ? [gids] : gids
|
||||||
|
|
||||||
var that = this
|
var that = this
|
||||||
@ -2514,7 +2514,7 @@ var DataWithTagsPrototype = {
|
|||||||
|
|
||||||
// NOTE: this does not support multiple tags at this point...
|
// NOTE: this does not support multiple tags at this point...
|
||||||
toggleTag: function(tag, gids, action){
|
toggleTag: function(tag, gids, action){
|
||||||
gids = gids == null ? this.getImage() : gids
|
gids = gids == null || gids == 'current' ? this.getImage() : gids
|
||||||
gids = gids.constructor !== Array ? [gids] : gids
|
gids = gids.constructor !== Array ? [gids] : gids
|
||||||
|
|
||||||
// tag all...
|
// tag all...
|
||||||
@ -2569,7 +2569,7 @@ var DataWithTagsPrototype = {
|
|||||||
|
|
||||||
getTags: function(gids){
|
getTags: function(gids){
|
||||||
gids = arguments.length > 1 ? [].slice.call(arguments) : gids
|
gids = arguments.length > 1 ? [].slice.call(arguments) : gids
|
||||||
gids = gids == null ? this.getImage() : gids
|
gids = gids == null || gids == 'current' ? this.getImage() : gids
|
||||||
gids = gids.constructor !== Array ? [gids] : gids
|
gids = gids.constructor !== Array ? [gids] : gids
|
||||||
|
|
||||||
if(this.tags == null){
|
if(this.tags == null){
|
||||||
|
|||||||
@ -215,6 +215,8 @@ actions.Actions({
|
|||||||
|
|
||||||
// basic life-cycle actions...
|
// basic life-cycle actions...
|
||||||
//
|
//
|
||||||
|
// XXX sync tags between data and images...
|
||||||
|
// ...but which takes priority???
|
||||||
load: [
|
load: [
|
||||||
function(d){
|
function(d){
|
||||||
this.images = images.Images(d.images)
|
this.images = images.Images(d.images)
|
||||||
@ -486,6 +488,63 @@ actions.Actions({
|
|||||||
}],
|
}],
|
||||||
|
|
||||||
|
|
||||||
|
// tags...
|
||||||
|
//
|
||||||
|
// XXX mark updated...
|
||||||
|
tag: ['Tag image(s)',
|
||||||
|
function(tags, gids){
|
||||||
|
gids = gids || this.current
|
||||||
|
gids = gids.constructor !== Array ? [gids] : gids
|
||||||
|
tags = tags.constructor !== Array ? [tags] : tags
|
||||||
|
|
||||||
|
// data...
|
||||||
|
this.data.tag(tags, gids)
|
||||||
|
|
||||||
|
// images...
|
||||||
|
var images = this.images
|
||||||
|
gids.forEach(function(gid){
|
||||||
|
var img = images[gid]
|
||||||
|
if(img == null){
|
||||||
|
img = images[gid] = {}
|
||||||
|
}
|
||||||
|
if(img.tags == null){
|
||||||
|
img.tags = []
|
||||||
|
}
|
||||||
|
|
||||||
|
img.tags = img.tags.concat(tags).unique()
|
||||||
|
|
||||||
|
// XXX mark updated...
|
||||||
|
})
|
||||||
|
}],
|
||||||
|
// XXX mark updated...
|
||||||
|
untag: ['Untag image(s)',
|
||||||
|
function(tags, gids){
|
||||||
|
gids = gids || this.current
|
||||||
|
gids = gids.constructor !== Array ? [gids] : gids
|
||||||
|
tags = tags.constructor !== Array ? [tags] : tags
|
||||||
|
|
||||||
|
// data...
|
||||||
|
this.data.untag(tags, gids)
|
||||||
|
|
||||||
|
// images...
|
||||||
|
var images = this.images
|
||||||
|
gids.forEach(function(gid){
|
||||||
|
var img = images[gid]
|
||||||
|
if(img == null || img.tags == null){
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
img.tags = img.tags.filter(function(tag){ return tags.indexOf(tag) < 0 })
|
||||||
|
|
||||||
|
if(img.tags.length == 0){
|
||||||
|
delete img.tags
|
||||||
|
}
|
||||||
|
|
||||||
|
// XXX mark updated...
|
||||||
|
})
|
||||||
|
}],
|
||||||
|
|
||||||
|
|
||||||
// crop...
|
// crop...
|
||||||
//
|
//
|
||||||
crop: [
|
crop: [
|
||||||
@ -729,6 +788,8 @@ actions.Actions(Client, {
|
|||||||
: null
|
: null
|
||||||
|
|
||||||
this.ribbons.updateData(this.data, settings)
|
this.ribbons.updateData(this.data, settings)
|
||||||
|
// XXX should this be here???
|
||||||
|
this.ribbons.updateImage('*')
|
||||||
this.focusImage()
|
this.focusImage()
|
||||||
|
|
||||||
this.ribbons.restoreTransitions()
|
this.ribbons.restoreTransitions()
|
||||||
@ -768,8 +829,7 @@ actions.Actions(Client, {
|
|||||||
// XXX experimental...
|
// XXX experimental...
|
||||||
// ...need this to get triggered by .ribbons
|
// ...need this to get triggered by .ribbons
|
||||||
// at this point manually triggering this will not do anything...
|
// at this point manually triggering this will not do anything...
|
||||||
updateImage: ['',
|
updateImage: ['', function(gid, image){ }],
|
||||||
function(gid, image){ }],
|
|
||||||
|
|
||||||
|
|
||||||
// General UI stuff...
|
// General UI stuff...
|
||||||
@ -1074,6 +1134,23 @@ actions.Actions(Client, {
|
|||||||
function(target){ this.ribbons.flipHorizontal(target, 'view') }],
|
function(target){ this.ribbons.flipHorizontal(target, 'view') }],
|
||||||
|
|
||||||
|
|
||||||
|
// tags...
|
||||||
|
tag: [
|
||||||
|
function(tags, gids){
|
||||||
|
gids = gids != null && gids.constructor !== Array ? [gids] : gids
|
||||||
|
return function(){
|
||||||
|
this.ribbons.updateImage(gids)
|
||||||
|
}
|
||||||
|
}],
|
||||||
|
untag: [
|
||||||
|
function(tags, gids){
|
||||||
|
gids = gids != null && gids.constructor !== Array ? [gids] : gids
|
||||||
|
return function(){
|
||||||
|
this.ribbons.updateImage(gids)
|
||||||
|
}
|
||||||
|
}],
|
||||||
|
|
||||||
|
|
||||||
// group stuff...
|
// group stuff...
|
||||||
group: [ reloadAfter(true) ],
|
group: [ reloadAfter(true) ],
|
||||||
ungroup: [ reloadAfter(true) ],
|
ungroup: [ reloadAfter(true) ],
|
||||||
@ -2001,13 +2078,35 @@ function makeTagTogglerAction(tag){
|
|||||||
: target
|
: target
|
||||||
target = target.constructor !== Array ? [target] : target
|
target = target.constructor !== Array ? [target] : target
|
||||||
|
|
||||||
var res = this.data.toggleTag(tag, target, action)
|
// on...
|
||||||
|
if(action == 'on'){
|
||||||
|
this.tag(tag, target)
|
||||||
|
var res = 'on'
|
||||||
|
|
||||||
if(action != '?' && this.ribbons != null){
|
// off...
|
||||||
|
} else if(action == 'off'){
|
||||||
|
this.untag(tag, target)
|
||||||
|
var res = 'off'
|
||||||
|
|
||||||
|
// next...
|
||||||
|
} else if(action != '?'){
|
||||||
|
var res = []
|
||||||
var that = this
|
var that = this
|
||||||
target.forEach(function(t){
|
target.forEach(function(t){
|
||||||
that.ribbons.toggleImageMark(t, tag, action)
|
if(that.data.getTags(t).indexOf(tag) < 0){
|
||||||
|
that.tag(tag, t)
|
||||||
|
res.push('on')
|
||||||
|
} else {
|
||||||
|
that.untag(tag, t)
|
||||||
|
res.push('off')
|
||||||
|
}
|
||||||
})
|
})
|
||||||
|
res = res.length == 1 ? res[0] : res
|
||||||
|
|
||||||
|
// ?
|
||||||
|
} else if(action == '?'){
|
||||||
|
var res = this.data.toggleTag(tag, target, '?')
|
||||||
|
res = res.length == 1 ? res[0] : res
|
||||||
}
|
}
|
||||||
|
|
||||||
return res
|
return res
|
||||||
@ -2090,6 +2189,8 @@ module.ImageMarks = features.Feature(ImageGridFeatures, {
|
|||||||
['updateImage', function(gid, img){
|
['updateImage', function(gid, img){
|
||||||
if(this.toggleMark(gid, '?') == 'on'){
|
if(this.toggleMark(gid, '?') == 'on'){
|
||||||
this.ribbons.toggleImageMark(gid, 'selected', 'on')
|
this.ribbons.toggleImageMark(gid, 'selected', 'on')
|
||||||
|
} else {
|
||||||
|
this.ribbons.toggleImageMark(gid, 'selected', 'off')
|
||||||
}
|
}
|
||||||
}],
|
}],
|
||||||
],
|
],
|
||||||
@ -2146,6 +2247,8 @@ module.ImageBookmarks = features.Feature(ImageGridFeatures, {
|
|||||||
['updateImage', function(gid, img){
|
['updateImage', function(gid, img){
|
||||||
if(this.toggleBookmark(gid, '?') == 'on'){
|
if(this.toggleBookmark(gid, '?') == 'on'){
|
||||||
this.ribbons.toggleImageMark(gid, 'bookmark', 'on')
|
this.ribbons.toggleImageMark(gid, 'bookmark', 'on')
|
||||||
|
} else {
|
||||||
|
this.ribbons.toggleImageMark(gid, 'bookmark', 'off')
|
||||||
}
|
}
|
||||||
}],
|
}],
|
||||||
],
|
],
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user