reworking file API reporting, new scheme, almost sure about this...

Signed-off-by: Alex A. Naanou <alex.nanou@gmail.com>
This commit is contained in:
Alex A. Naanou 2013-06-06 22:57:06 +04:00
parent 02f93f3067
commit cd7128279a

View File

@ -1196,7 +1196,7 @@ function loadLatestFile(path, dfl, pattern, diff_pattern){
// can't find diffs if can't list dirs... // can't find diffs if can't list dirs...
if(window.listDir == null && (pattern != null || diff_pattern != null)){ if(window.listDir == null && (pattern != null || diff_pattern != null)){
res.notify('unsupported', 'directory listing.') res.notify('Unsupported', 'directory listing.')
return res.reject('listDir unsupported.') return res.reject('listDir unsupported.')
} }
@ -1223,10 +1223,11 @@ function loadLatestFile(path, dfl, pattern, diff_pattern){
return $.getJSON(path +'/'+ e) return $.getJSON(path +'/'+ e)
.done(function(data){ .done(function(data){
diff_data[i+1] = data diff_data[i+1] = data
res.notify('loaded', e) res.notify('Loaded', e)
}) })
.fail(function(){ .fail(function(){
res.notify('load_error', e) // XXX should we kill the load here???
res.notify('Loading', e, 'Error')
}) })
})) }))
// NOTE: .then(...) handlers get different signature args // NOTE: .then(...) handlers get different signature args
@ -1242,18 +1243,18 @@ function loadLatestFile(path, dfl, pattern, diff_pattern){
.done(function(_, json){ .done(function(_, json){
json = json[0] json = json[0]
res.notify('loaded', file) res.notify('Loaded', file)
// merge diffs... // merge diffs...
if(Object.keys(diff_data).length != 0){ if(Object.keys(diff_data).length != 0){
$.extend(json, diff_data) $.extend(json, diff_data)
res.notify('merged') res.notify('Merged')
} }
res.resolve(json) res.resolve(json)
}) })
.fail(function(){ .fail(function(){
res.notify('load_error', file) res.notify('Loading', file, 'Error')
return res.reject(file) return res.reject(file)
}) })
@ -1264,37 +1265,41 @@ function loadLatestFile(path, dfl, pattern, diff_pattern){
function statusNotify(prefix, loader){ function statusNotify(prefix, loader){
return loader return loader
.progress(function(a, b, c){ .progress(function(){
if(c != null){ var args = Array.apply(null, arguments)
prefix = prefix +' '+ a args.splice(0, 0, prefix)
var action = b if(args.indexOf('Error') >= 0){
var data = c args.pop()
} else { return showErrorStatus(args.join(': '))
var action = a
var data = b
} }
return showStatus(args.join(': '))
})
}
({
load: function(data){ // XXX do we need other actions here???
showStatus(prefix, 'Loading:', data) function bubbleProgress(prefix, from, to, only_progress){
}, from
loaded: function(data){ .progress(function(){
showStatus(prefix, 'Loaded:', data) var args = Array.apply(null, arguments)
}, prefix != null && args.splice(0, 0, prefix)
merged: function(data){ to.notify.apply(to, args)
showStatus(prefix, 'Merging:', 'Done.')
},
load_error: function(data){
showErrorStatus(prefix, 'Loading:', data)
},
unsupported: function(data){
showErrorStatus(prefix, 'Unsupported:', data)
},
})[action](data)
})
.done(function(){
showStatus(prefix, 'Done.')
}) })
if(only_progress == null){
from
.done(function(){
var args = Array.apply(null, arguments)
to.resolve.apply(to, args)
})
.fail(function(){
var args = Array.apply(null, arguments)
prefix != null && args.splice(0, 0, prefix)
to.reject.apply(to, args)
})
}
return from
} }
@ -1311,7 +1316,7 @@ if(window.CEF_dumpJSON != null){
// Load images from file // Load images from file
// //
// This will also merge all diff files. // This will also merge all diff files.
function loadFileImages(path, no_load_diffs, callback){ function loadFileImages(path, no_load_diffs){
no_load_diffs = window.listDir == null ? true : no_load_diffs no_load_diffs = window.listDir == null ? true : no_load_diffs
var res = $.Deferred() var res = $.Deferred()
@ -1337,18 +1342,10 @@ function loadFileImages(path, no_load_diffs, callback){
RegExp(path.split(base)[0])) RegExp(path.split(base)[0]))
} }
loader bubbleProgress('Images', loader, res)
// XXX find a good way to propagate...
.progress(function(action, data){
res.notify('Images:', action, data)
})
.done(function(data){
res.resolve(data)
})
res.done(function(images){ res.done(function(images){
IMAGES = images IMAGES = images
callback != null ? callback() : null
}) })
return res return res
@ -1387,14 +1384,14 @@ function saveFileImages(name){
} }
function loadFileMarks(path, callback){ function loadFileMarks(path){
var res = $.Deferred()
// default locations... // default locations...
if(path == null){ if(path == null){
var base = normalizePath(CACHE_DIR) var base = normalizePath(CACHE_DIR)
var res = statusNotify('Marks:', var loader = loadLatestFile(base,
loadLatestFile(base,
MARKED_FILE_DEFAULT, MARKED_FILE_DEFAULT,
MARKED_FILE_PATTERN)) MARKED_FILE_PATTERN)
// explicit path... // explicit path...
// XXX need to account for paths without a CACHE_DIR // XXX need to account for paths without a CACHE_DIR
@ -1404,15 +1401,15 @@ function loadFileMarks(path, callback){
base += '/'+ CACHE_DIR base += '/'+ CACHE_DIR
// XXX is this correct??? // XXX is this correct???
var res = statusNotify('Marks:', var loader = loadLatestFile(base,
loadLatestFile(base,
path.split(base)[0], path.split(base)[0],
RegExp(path.split(base)[0]))) RegExp(path.split(base)[0]))
} }
bubbleProgress('Marks', loader, res)
res.done(function(images){ res.done(function(images){
MARKED = images MARKED = images
callback != null ? callback() : null
}) })
return res return res
@ -1438,10 +1435,10 @@ function loadFileState(path){
var res = $.Deferred() var res = $.Deferred()
statusNotify('Data:', bubbleProgress('Data',
loadLatestFile(path, loadLatestFile(path,
DATA_FILE_DEFAULT, DATA_FILE_DEFAULT,
DATA_FILE_PATTERN)) DATA_FILE_PATTERN), res, true)
.done(function(json){ .done(function(json){
BASE_URL = base BASE_URL = base
@ -1457,14 +1454,15 @@ function loadFileState(path){
// version 2.0 // version 2.0
} else if(json.version == '2.0') { } else if(json.version == '2.0') {
DATA = json DATA = json
$.when( bubbleProgress('Data',
// XXX load config... $.when(
// load images... // XXX load config...
loadFileImages(DATA.image_file == null ? // load images...
normalizePath(DATA.image_file, base) loadFileImages(DATA.image_file == null ?
: null), normalizePath(DATA.image_file, base)
// load marks if available... : null),
loadFileMarks()) // load marks if available...
loadFileMarks()), res, true)
.done(function(){ .done(function(){
reloadViewer() reloadViewer()
res.resolve() res.resolve()
@ -1474,10 +1472,9 @@ function loadFileState(path){
} else { } else {
res.reject('unknown format.') res.reject('unknown format.')
} }
}) })
.fail(function(){ .fail(function(){
res.reject('load_error', path) res.reject('Loading', path, 'Error')
}) })
return res return res
@ -1524,21 +1521,21 @@ function loadRawDir(path){
}) })
if(image_paths.length == 0){ if(image_paths.length == 0){
//showErrorStatus('No images in:', path) // no images in path...
res.notify('load_error', path) res.notify('Load', path, 'Error')
return res.reject() return res.reject()
} }
BASE_URL = path BASE_URL = path
IMAGES = imagesFromUrls(image_paths) IMAGES = imagesFromUrls(image_paths)
res.notify('loaded', 'images.') res.notify('Loaded', 'Images.')
DATA = dataFromImages(IMAGES) DATA = dataFromImages(IMAGES)
res.notify('loaded', 'data.') res.notify('Loaded', 'Data.')
DATA.ribbons = ribbonsFromFavDirs() DATA.ribbons = ribbonsFromFavDirs()
res.notify('loaded', 'fav dirs.') res.notify('Loaded', 'Fav dirs.')
MARKED = [] MARKED = []
@ -1585,22 +1582,13 @@ function loadDir(path){
path = path +'/'+ CACHE_DIR path = path +'/'+ CACHE_DIR
} }
statusNotify('Dir:', loadFileState(path)) bubbleProgress('Dir:',
//.progress(function(action, data){ loadFileState(path), res, true)
// res.notify(action, data)
//})
.done(function(){ .done(function(){
res.resolve() res.resolve()
}) })
.fail(function(){ .fail(function(){
statusNotify('Raw dir:', loadRawDir(orig_path)) bubbleProgress('Raw dir:', loadRawDir(orig_path), res)
.done(function(){
res.resolve()
})
.fail(function(){
res.reject()
})
}) })
return res return res