mirror of
https://github.com/flynx/PortableMag.git
synced 2025-10-29 19:20:09 +00:00
added saving magazine data to local storage + abstracted out the magazine title...
Signed-off-by: Alex A. Naanou <alex.nanou@gmail.com>
This commit is contained in:
parent
d8744a5e63
commit
f630a3b16f
11
TODO.otl
11
TODO.otl
@ -14,8 +14,6 @@
|
||||
| text areas, inputs, ...
|
||||
[_] EXPERIMENT: Try using scroll instead of left of .magazine....
|
||||
| this might improve speed...
|
||||
[_] BUG: as on android, on loading from json view does not reach cur page...
|
||||
| likely due to animation/transition stopping for some reason....
|
||||
[_] 0% add two main page themes (global/local applicable):
|
||||
[_] light
|
||||
[_] dark
|
||||
@ -66,6 +64,15 @@
|
||||
| e.g. setting "shown"/"hidden" classes in HTML and adding
|
||||
| something like a page reset that will restore the default state,
|
||||
| rather than the current "hideLayers"
|
||||
[_] BUG: as on android, on loading from json view does not reach cur page...
|
||||
| likely due to animation/transition stopping for some reason....
|
||||
[_] BUG: togglePageView results in jumpy animation if USE_REAL_PAGE_SIZES is set
|
||||
| this does not happen if USE_REAL_PAGE_SIZES is set and FIT_PAGE_TO_VIEW
|
||||
| is unset...
|
||||
|
|
||||
| the most likely cause is that there is some time passing between some
|
||||
| edits to element parameters. these writes must be done in an as compact
|
||||
| a burst as possible,
|
||||
[_] BUG: when #URL updates are off layer toggling breaks...
|
||||
| will show but not hide layers...
|
||||
[_] BUG: href to existing anchors will mess up layout...
|
||||
|
||||
99
magazine.js
99
magazine.js
@ -35,6 +35,9 @@ var DRAG_FULL_PAGE = true
|
||||
// we get to the right from the no-resize element...
|
||||
// ...think the reason is .no-resize page centering...
|
||||
// XXX still buggy on togglePageView to TN after funny sized pages...
|
||||
// ...the most probable reason is that we waste too much time between
|
||||
// setting different values to elements...
|
||||
// need to keep wrights as tight as possible...
|
||||
//var USE_REAL_PAGE_SIZES = true
|
||||
var USE_REAL_PAGE_SIZES = false
|
||||
|
||||
@ -107,6 +110,13 @@ function getPageAlign(page){
|
||||
: FULL_PAGE_ALIGN)
|
||||
}
|
||||
|
||||
// XXX need a way to get the title without a magazine loaded...
|
||||
// ...something like a current magazine option...
|
||||
function getMagazineTitle(){
|
||||
return ($('.magazine').attr('title')
|
||||
|| $('.magazine').attr('name'))
|
||||
}
|
||||
|
||||
|
||||
function getPageScale(){
|
||||
return getElementScale($('.scaler'))
|
||||
@ -811,9 +821,10 @@ function saveURLState(){
|
||||
|
||||
|
||||
// local storage state managers...
|
||||
function loadStorageState(){
|
||||
var title = ($('.magazine').attr('title')
|
||||
|| $('.magazine').attr('name'))
|
||||
function loadStorageState(title){
|
||||
if(title == null){
|
||||
title = getMagazineTitle()
|
||||
}
|
||||
var data = $.jStorage.get(title, {})
|
||||
// set the defaults...
|
||||
if(data.current_page == null){
|
||||
@ -824,31 +835,82 @@ function loadStorageState(){
|
||||
}
|
||||
return data
|
||||
}
|
||||
function saveStorageState(){
|
||||
var title = ($('.magazine').attr('title')
|
||||
|| $('.magazine').attr('name'))
|
||||
$.jStorage.set(title, {
|
||||
function saveStorageState(title){
|
||||
if(title == null){
|
||||
title = getMagazineTitle()
|
||||
}
|
||||
var data = $.jStorage.get(title, {})
|
||||
$.extend(data, {
|
||||
current_page: getPageNumber(),
|
||||
bookmarks: buildBookmarkList()
|
||||
})
|
||||
$.jStorage.set(title, data)
|
||||
return data
|
||||
}
|
||||
function resetStorageState(){
|
||||
var title = ($('.magazine').attr('title')
|
||||
|| $('.magazine').attr('name'))
|
||||
function resetStorageState(title){
|
||||
if(title == null){
|
||||
title = getMagazineTitle()
|
||||
}
|
||||
$.jStorage.deleteKey(title)
|
||||
}
|
||||
|
||||
|
||||
// JSON state on local storage...
|
||||
// NOTE: these will only load the data, bookmarks and position are
|
||||
// ignored...
|
||||
function saveJSONStorage(title){
|
||||
if(title == null){
|
||||
title = getMagazineTitle()
|
||||
}
|
||||
var data = $.jStorage.get(title, {})
|
||||
$.extend(data, {
|
||||
// XXX do we need to stringify this??
|
||||
'magazine-data': buildJSON()
|
||||
})
|
||||
$.jStorage.set(title, data)
|
||||
return data
|
||||
}
|
||||
// load JSON magazine data from storage...
|
||||
// XXX we're losing the bookmarks at some point...
|
||||
function loadJSONStorage(title){
|
||||
if(title == null){
|
||||
title = getMagazineTitle()
|
||||
}
|
||||
var data = $.jStorage.get(title, {})
|
||||
// NOTE: we are caching the data here because the actual structure
|
||||
// is persistent and may get overwritten by loadJSON(...)
|
||||
var bookmarks = data.bookmarks
|
||||
var current_page = data.current_page
|
||||
var json = data['magazine-data']
|
||||
if(json != null){
|
||||
loadJSON(json)
|
||||
loadMagazineUserData(current_page, bookmarks)
|
||||
}
|
||||
}
|
||||
// remove JSON magazine data from storage...
|
||||
// NOTE: this will resave curent values but will remove the JSON data...
|
||||
function clearJSONStorage(title){
|
||||
if(title == null){
|
||||
title = getMagazineTitle()
|
||||
}
|
||||
var data = $.jStorage.get(title, {})
|
||||
var json = data['magazine-data']
|
||||
if(json != null){
|
||||
delete data['magazine-data']
|
||||
$.jStorage.set(title, data)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
// generic state managers...
|
||||
function loadState(){
|
||||
var n = loadURLState()
|
||||
var state = loadStorageState()
|
||||
if(n != null){
|
||||
setCurrentPage(n)
|
||||
} else {
|
||||
setCurrentPage(state.current_page)
|
||||
if(n == null){
|
||||
n = state.current_page
|
||||
}
|
||||
loadBookmarks(state.bookmarks)
|
||||
loadMagazineUserData(n, state.bookmarks)
|
||||
}
|
||||
function saveState(){
|
||||
saveURLState()
|
||||
@ -961,11 +1023,11 @@ function writeMetadata(elem, res, metadata){
|
||||
metadata = JSONMetadata
|
||||
}
|
||||
for(var a in metadata){
|
||||
if(elem[a]){
|
||||
if(res[a] != null){
|
||||
if(metadata[a] == 'as-is'){
|
||||
res.attr(a, elem[a])
|
||||
elem.attr(a, res[a])
|
||||
} else {
|
||||
res.attr(a, metadata[e].writer(elem[a]))
|
||||
elem.attr(a, metadata[e].writer(res[a]))
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1070,6 +1132,7 @@ function loadJSON(data, load_user_data){
|
||||
|
||||
// create an empty magazine...
|
||||
var mag = createEmptyMagazine(data.title)
|
||||
// XXX for some reason this does not restore name/title...
|
||||
writeMetadata(mag, data)
|
||||
// build the actual strcture...
|
||||
$(data.pages).each(function(_, e){
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user