mirror of
https://github.com/flynx/ImageGrid.git
synced 2025-10-29 10:20:08 +00:00
121 lines
3.0 KiB
JavaScript
Executable File
121 lines
3.0 KiB
JavaScript
Executable File
/**********************************************************************
|
|
*
|
|
*
|
|
*
|
|
**********************************************************************/
|
|
|
|
//var DEBUG = DEBUG != null ? DEBUG : true
|
|
|
|
|
|
/*********************************************************************/
|
|
|
|
var BASE_URL_HISTORY = []
|
|
var BASE_URL_LIMIT = 10
|
|
|
|
|
|
|
|
/**********************************************************************
|
|
* URL history...
|
|
*/
|
|
|
|
// Setup history event handlers...
|
|
//
|
|
// NOTE: this will save history state to localStorage...
|
|
function setupBaseURLHistory(){
|
|
$('.viewer')
|
|
.on('baseURLChanged', function(evt, old_url, new_url){
|
|
var updated = false
|
|
|
|
// store the old and new urls in history unless they already
|
|
// exist...
|
|
if(BASE_URL_HISTORY.indexOf(old_url) < 0){
|
|
BASE_URL_HISTORY.splice(0, 0, old_url)
|
|
updated = true
|
|
}
|
|
if(BASE_URL_HISTORY.indexOf(new_url) < 0){
|
|
BASE_URL_HISTORY.splice(0, 0, new_url)
|
|
updated = true
|
|
}
|
|
|
|
// truncate the history if needed...
|
|
if(BASE_URL_HISTORY.length > BASE_URL_LIMIT){
|
|
BASE_URL_HISTORY.splice(BASE_URL_LIMIT, BASE_URL_HISTORY.length)
|
|
updated = true
|
|
}
|
|
|
|
// XXX is this the right place for this???
|
|
if(updated){
|
|
saveLocalStorageBaseURLHistory()
|
|
}
|
|
})
|
|
}
|
|
|
|
|
|
// Push a url to top of history...
|
|
//
|
|
// NOTE: this does not care if a url exists or not, all other instances
|
|
// will get removed...
|
|
// NOTE: this will not do any loading...
|
|
// NOTE: this will save history state to localStorage...
|
|
function pushURLHistory(url){
|
|
url = url == null ? BASE_URL : url
|
|
|
|
while(BASE_URL_HISTORY.indexOf(url) >= 0){
|
|
BASE_URL_HISTORY.splice(BASE_URL_HISTORY.indexOf(url), 1)
|
|
}
|
|
|
|
BASE_URL_HISTORY.splice(0, 0, url)
|
|
|
|
// XXX is this the right place for this???
|
|
saveLocalStorageBaseURLHistory()
|
|
|
|
return url
|
|
}
|
|
|
|
|
|
// Get current position in history...
|
|
//
|
|
function getURLHistoryPosition(){
|
|
return BASE_URL_HISTORY.indexOf(BASE_URL)
|
|
}
|
|
|
|
|
|
// Get next/prev relative position in history...
|
|
//
|
|
function getURLHistoryNext(){
|
|
var res = BASE_URL_HISTORY[ getURLHistoryPosition() - 1]
|
|
return res == null ? BASE_URL : res
|
|
}
|
|
function getURLHistoryPrev(){
|
|
var res = BASE_URL_HISTORY[ getURLHistoryPosition() + 1 ]
|
|
return res == null ? BASE_URL : res
|
|
}
|
|
|
|
|
|
|
|
/**********************************************************************
|
|
* Actions...
|
|
*/
|
|
|
|
// Make a history load action...
|
|
//
|
|
// NOTE: this will not affect history url order...
|
|
function makeURLHistoryLoader(get, end_msg){
|
|
return function(){
|
|
var url = get()
|
|
if(url != BASE_URL){
|
|
statusNotify(loadDir(url))
|
|
} else {
|
|
showStatusQ('History: '+ end_msg +'...')
|
|
}
|
|
return url
|
|
}
|
|
}
|
|
var loadURLHistoryNext = makeURLHistoryLoader(getURLHistoryNext, 'at last URL')
|
|
var loadURLHistoryPrev = makeURLHistoryLoader(getURLHistoryPrev, 'at first URL')
|
|
|
|
|
|
|
|
/**********************************************************************
|
|
* vim:set ts=4 sw=4 : */
|