some cleanup + added .sortViaOrder(..)

Signed-off-by: Alex A. Naanou <alex.nanou@gmail.com>
This commit is contained in:
Alex A. Naanou 2018-12-24 01:11:26 +03:00
parent b6e12a804e
commit 88f1d0bc0e
2 changed files with 18 additions and 22 deletions

View File

@ -231,7 +231,7 @@ var ImageMarkActions = actions.Actions({
get marked(){ get marked(){
return this.data == null ? return this.data == null ?
[] []
: this.data.tagQuery('marked') }, : this.data.sortViaOrder(this.data.tagQuery('marked')) },
markedInRibbon: ['- Mark|Ribbon/', markedInRibbon: ['- Mark|Ribbon/',
function(ribbon){ function(ribbon){
@ -503,7 +503,7 @@ var ImageBookmarkActions = actions.Actions({
get bookmarked(){ get bookmarked(){
return this.data == null ? return this.data == null ?
[] []
: this.data.tagQuery('bookmark') }, : this.data.sortViaOrder(this.data.tagQuery('bookmark')) },
prevBookmarked: ['Bookmark|Navigate/Previous bookmarked image', prevBookmarked: ['Bookmark|Navigate/Previous bookmarked image',
{browseMode: function(target){ {browseMode: function(target){

View File

@ -248,32 +248,12 @@ var DataPrototype = {
this.getRibbon(value) this.getRibbon(value)
: value }, : value },
// XXX need to figure out how to both reset the .order_index in a safe
// way and keep it to speed things up in consecutive calls that
// do not touch the order...
get order(){ get order(){
return this.__order }, return this.__order },
set order(value){ set order(value){
var that = this var that = this
delete this.__order_index delete this.__order_index
//*
this.__order = value this.__order = value
/*/
// XXX this makes things substantially slower...
this.__order = value.isOrderProxy ?
value
: new Proxy(value, {
get: function(target, name){
return name == 'isOrderProxy'
|| target[name] },
set: function(target, name, value){
that.order_index[value] = name
target[name] = value
return true
},
})
//*/
}, },
get order_index(){ get order_index(){
return this.__order_index = this.__order_index || this.order.toKeys() }, return this.__order_index = this.__order_index || this.order.toKeys() },
@ -317,6 +297,22 @@ var DataPrototype = {
.map(function(gid){ return that.getImage(gid) }) .map(function(gid){ return that.getImage(gid) })
}, },
// Sort images via .order...
//
// NOTE: this will place non-gids at the end of the list...
//
// XXX is this faster than .makeSparseImages(gids).compact() ???
// ...though this will not remove non-gids...
sortViaOrder: function(gids){
var idx = this.order_index
return gids.sort(function(a, b){
return a in idx && b in idx ?
idx[a] - idx[b]
: a in idx ?
-1
: b in idx ?
1
: gids.indexOf(a) - gids.indexOf(b) }) },
// Make a sparse list of image gids... // Make a sparse list of image gids...
// //