mirror of
https://github.com/flynx/ImageGrid.git
synced 2025-10-30 19:00:09 +00:00
fised index loader bug -- did not merge diffs correctly...
Signed-off-by: Alex A. Naanou <alex.nanou@gmail.com>
This commit is contained in:
parent
bca8b3c6e9
commit
afb97ab46e
@ -159,6 +159,7 @@ function loadJSON(path){
|
|||||||
// XXX need to do better error handling -- stop when an error is not recoverable...
|
// XXX need to do better error handling -- stop when an error is not recoverable...
|
||||||
// XXX a bit overcomplicated (???), see if this can be split into more generic
|
// XXX a bit overcomplicated (???), see if this can be split into more generic
|
||||||
// sections...
|
// sections...
|
||||||
|
// XXX problem with diff merging...
|
||||||
var loadIndex =
|
var loadIndex =
|
||||||
module.loadIndex =
|
module.loadIndex =
|
||||||
function(path, logger){
|
function(path, logger){
|
||||||
@ -252,11 +253,12 @@ function(path, logger){
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
||||||
// load...
|
// load...
|
||||||
Promise
|
Promise
|
||||||
.all(Object.keys(index).map(function(k){
|
.all(Object.keys(index).map(function(keyword){
|
||||||
// get relevant paths...
|
// get relevant paths...
|
||||||
var diffs = index[k]
|
var diffs = index[keyword]
|
||||||
var latest = diffs.splice(-1)[0][1]
|
var latest = diffs.splice(-1)[0][1]
|
||||||
|
|
||||||
// NOTE: so far I really do not like how nested and
|
// NOTE: so far I really do not like how nested and
|
||||||
@ -270,32 +272,45 @@ function(path, logger){
|
|||||||
// load latest...
|
// load latest...
|
||||||
return loadJSON(latest)
|
return loadJSON(latest)
|
||||||
.then(function(data){
|
.then(function(data){
|
||||||
|
logger && logger.emit('loaded', latest)
|
||||||
|
|
||||||
|
var loading = {}
|
||||||
|
|
||||||
// handle diffs...
|
// handle diffs...
|
||||||
return Promise
|
return Promise
|
||||||
.all(diffs
|
// load diffs...
|
||||||
.reverse()
|
.all(diffs.map(function(p){
|
||||||
.map(function(p){
|
|
||||||
p = p[1]
|
p = p[1]
|
||||||
// load diff...
|
|
||||||
return loadJSON(p)
|
return loadJSON(p)
|
||||||
// XXX handle errors...
|
// XXX handle errors...
|
||||||
// XXX we should abort loading this index...
|
// XXX we should abort loading this index...
|
||||||
.catch(function(err){
|
.catch(function(err){
|
||||||
logger && logger.emit('error', err)
|
logger && logger.emit('error', err)
|
||||||
})
|
})
|
||||||
.done(function(json){
|
.then(function(json){
|
||||||
// merge...
|
// NOTE: we can't merge here
|
||||||
for(var k in json){
|
// as the files can be
|
||||||
data[k] = json[k]
|
// read in arbitrary order...
|
||||||
|
loading[p] = json
|
||||||
|
})
|
||||||
|
}))
|
||||||
|
// merge diffs...
|
||||||
|
.then(function(){
|
||||||
|
diffs
|
||||||
|
.reverse()
|
||||||
|
.forEach(function(p){
|
||||||
|
p = p[1]
|
||||||
|
|
||||||
|
var json = loading[p]
|
||||||
|
|
||||||
|
for(var n in json){
|
||||||
|
data[n] = json[n]
|
||||||
}
|
}
|
||||||
|
|
||||||
logger && logger.emit('loaded', p)
|
logger && logger.emit('loaded', p)
|
||||||
})
|
})
|
||||||
}))
|
|
||||||
.then(function(){
|
|
||||||
res[k] = data
|
|
||||||
|
|
||||||
logger && logger.emit('loaded', latest)
|
res[keyword] = data
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
}))
|
}))
|
||||||
@ -312,6 +327,7 @@ function(path, logger){
|
|||||||
// no explicit index given -- find all in sub tree...
|
// no explicit index given -- find all in sub tree...
|
||||||
} else {
|
} else {
|
||||||
var res = {}
|
var res = {}
|
||||||
|
var loaders = []
|
||||||
|
|
||||||
// XXX handle 'error' event...
|
// XXX handle 'error' event...
|
||||||
listIndexes(path)
|
listIndexes(path)
|
||||||
@ -321,8 +337,8 @@ function(path, logger){
|
|||||||
})
|
})
|
||||||
// collect the found indexes...
|
// collect the found indexes...
|
||||||
.on('match', function(path){
|
.on('match', function(path){
|
||||||
loadIndex(path, logger)
|
loaders.push(loadIndex(path, logger)
|
||||||
.done(function(obj){
|
.then(function(obj){
|
||||||
// NOTE: considering that all the paths within
|
// NOTE: considering that all the paths within
|
||||||
// the index are relative to the preview
|
// the index are relative to the preview
|
||||||
// dir (the parent dir to the index root)
|
// dir (the parent dir to the index root)
|
||||||
@ -330,11 +346,12 @@ function(path, logger){
|
|||||||
// itself in the base path...
|
// itself in the base path...
|
||||||
var p = path.split(INDEX_DIR)[0]
|
var p = path.split(INDEX_DIR)[0]
|
||||||
res[p] = obj[path]
|
res[p] = obj[path]
|
||||||
})
|
}))
|
||||||
})
|
})
|
||||||
// done...
|
// done...
|
||||||
.on('end', function(paths){
|
.on('end', function(paths){
|
||||||
resolve(res)
|
// wait for all the loaders to complete...
|
||||||
|
Promise.all(loaders).then(function(){ resolve(res) })
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
@ -408,6 +425,7 @@ function(base, previews, absolute_path){
|
|||||||
|
|
||||||
|
|
||||||
// XXX move this to a better spot...
|
// XXX move this to a better spot...
|
||||||
|
// XXX make this merge if we locate more than one index...
|
||||||
var buildIndex =
|
var buildIndex =
|
||||||
module.buildIndex = function(index, base){
|
module.buildIndex = function(index, base){
|
||||||
var d = data.Data.fromJSON(index.data)
|
var d = data.Data.fromJSON(index.data)
|
||||||
@ -453,12 +471,6 @@ module.buildIndex = function(index, base){
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// XXX
|
|
||||||
var mergeIndex =
|
|
||||||
module.mergeIndex = function(index, base){
|
|
||||||
// XXX
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/*********************************************************************/
|
/*********************************************************************/
|
||||||
// Writer...
|
// Writer...
|
||||||
|
|||||||
@ -168,9 +168,9 @@ body {
|
|||||||
|
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
<!--script>
|
<script>
|
||||||
require('nw.gui').Window.get().showDevTools()
|
typeof(require) != 'undefined' && require('nw.gui').Window.get().showDevTools()
|
||||||
</script-->
|
</script>
|
||||||
|
|
||||||
|
|
||||||
<script src="ext-lib/jquery.js"></script>
|
<script src="ext-lib/jquery.js"></script>
|
||||||
|
|||||||
@ -108,7 +108,7 @@ var getElementOrigin = makeCSSVendorAttrGetter(
|
|||||||
'transformOrigin',
|
'transformOrigin',
|
||||||
{top: 0, left: 0},
|
{top: 0, left: 0},
|
||||||
function(data){
|
function(data){
|
||||||
res = /(-?[0-9.]*(px|%)) (-?[0-9.]*(px|%))/.exec(data)
|
var res = /(-?[0-9.]*(px|%)) (-?[0-9.]*(px|%))/.exec(data)
|
||||||
return {
|
return {
|
||||||
left: res[1].slice(-2) == 'px' ? parseFloat(res[1]) : res[1],
|
left: res[1].slice(-2) == 'px' ? parseFloat(res[1]) : res[1],
|
||||||
top: res[3].slice(-2) == 'px' ? parseFloat(res[3]) : res[3],
|
top: res[3].slice(-2) == 'px' ? parseFloat(res[3]) : res[3],
|
||||||
@ -130,7 +130,7 @@ var getElementOffset = makeCSSVendorAttrGetter(
|
|||||||
'transform',
|
'transform',
|
||||||
{left: 0, top: 0},
|
{left: 0, top: 0},
|
||||||
function(data){
|
function(data){
|
||||||
res = /(translate\(|matrix\([^,]*,[^,]*,[^,]*,[^,]*,)([^,]*),([^\)]*)\)/.exec(data)
|
var res = /(translate\(|matrix\([^,]*,[^,]*,[^,]*,[^,]*,)([^,]*),([^\)]*)\)/.exec(data)
|
||||||
return {
|
return {
|
||||||
left: parseFloat(res[2]),
|
left: parseFloat(res[2]),
|
||||||
top: parseFloat(res[3])
|
top: parseFloat(res[3])
|
||||||
|
|||||||
@ -125,8 +125,8 @@ if(typeof(glob) != 'undefined'){
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
window.loadMBFWR1 = function(){
|
window.loadMBFWR1 = function(logger){
|
||||||
a.loadPath('L:/mnt/hdd15 (photo)/NTFS2/media/img/my/work/20151022 - MBFWR (1),/*')
|
a.loadPath('L:/mnt/hdd15 (photo)/NTFS2/media/img/my/work/20151022 - MBFWR (1),/*', logger)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -3022,15 +3022,15 @@ if(window.nodejs != null){
|
|||||||
var FileSystemLoaderActions = actions.Actions({
|
var FileSystemLoaderActions = actions.Actions({
|
||||||
// XXX
|
// XXX
|
||||||
loadPath: ['File/',
|
loadPath: ['File/',
|
||||||
function(path){
|
function(path, logger){
|
||||||
var that = this
|
var that = this
|
||||||
|
|
||||||
// XXX get a logger...
|
// XXX get a logger...
|
||||||
|
|
||||||
// XXX this will not work for explicit path (path to a dir
|
// XXX this will not work for explicit path (path to a dir
|
||||||
// that contains the index)
|
// that contains the index)
|
||||||
file.loadIndex(path)
|
file.loadIndex(path, logger)
|
||||||
.done(function(res){
|
.then(function(res){
|
||||||
// XXX if res is empty load raw...
|
// XXX if res is empty load raw...
|
||||||
|
|
||||||
// XXX res may contain multiple indexes, need to
|
// XXX res may contain multiple indexes, need to
|
||||||
@ -3040,7 +3040,7 @@ var FileSystemLoaderActions = actions.Actions({
|
|||||||
var index = res[k]
|
var index = res[k]
|
||||||
|
|
||||||
// XXX use the logger...
|
// XXX use the logger...
|
||||||
console.log('LOADING:', k)
|
console.log('LOADING:', k, res)
|
||||||
|
|
||||||
that.load(file.buildIndex(index, k))
|
that.load(file.buildIndex(index, k))
|
||||||
})
|
})
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user