From 8b44986e3305c3aee28d7a2ad4cf9ab7e46c55fb Mon Sep 17 00:00:00 2001 From: "Alex A. Naanou" Date: Tue, 24 Dec 2013 05:23:51 +0400 Subject: [PATCH] now .json data is saved ONLY if updated (still does not apply to data.json)... Signed-off-by: Alex A. Naanou --- ui/bookmarks.js | 11 +++++++++-- ui/files.js | 31 ++++++++++++++++++++++++------- ui/marks.js | 14 ++++++++++++++ ui/tags.js | 12 ++++++++++++ 4 files changed, 59 insertions(+), 9 deletions(-) diff --git a/ui/bookmarks.js b/ui/bookmarks.js index 4e63717b..f8a49259 100755 --- a/ui/bookmarks.js +++ b/ui/bookmarks.js @@ -87,12 +87,13 @@ var toggleBookmark = makeMarkToggler( } else { BOOKMARKS.splice(BOOKMARKS.indexOf(gid), 1) } + + bookmarksUpdated() }) -// focus next bookmark... +// focus next/prev bookmark... // -// NOTE: this will not jump to bookmarks on other ribbons... var nextBookmark = makeNextFromListAction( getBookmarkedGIDBefore, function(){ return BOOKMARKS }) @@ -117,6 +118,7 @@ var loadFileBookmarks = makeFileLoader( var saveFileBookmarks = makeFileSaver( + 'Bookmarks', BOOKMARKS_FILE_DEFAULT, function(){ return [ @@ -126,6 +128,11 @@ var saveFileBookmarks = makeFileSaver( }) +function bookmarksUpdated(){ + fileUpdated('Bookmarks') +} + + /********************************************************************** * Setup... diff --git a/ui/files.js b/ui/files.js index 180ceb59..d824506e 100755 --- a/ui/files.js +++ b/ui/files.js @@ -23,7 +23,8 @@ var IMAGE_PATTERN = /.*\.(jpg|jpeg|png|gif)$/i var FILE_LOADERS = [] -var FILE_SAVERS = [] +var FILE_SAVERS = {} +var FILES_UPDATED = [] @@ -245,7 +246,7 @@ function makeFileLoader(title, file_dfl, file_pattern, set_data, evt_name, skip_ } // XXX make this check for updates -- no need to re-save if nothing // changed... -function makeFileSaver(file_dfl, get_data, skip_reg){ +function makeFileSaver(title, file_dfl, get_data, skip_reg){ var _saver = function(name){ name = name == null ? normalizePath(CONFIG.cache_dir_var +'/'+ Date.timeStamp()) @@ -253,21 +254,37 @@ function makeFileSaver(file_dfl, get_data, skip_reg){ dumpJSON(name + '-' + file_dfl, get_data()) } - !skip_reg && FILE_SAVERS.push(_saver) + if(!skip_reg){ + FILE_SAVERS[title] = _saver + } return _saver } +// mark file type as updated... +function fileUpdated(name){ + if(FILES_UPDATED.indexOf(name) < 0 && name in FILE_SAVERS){ + FILES_UPDATED.push(name) + } +} + + function runFileLoaders(prefix, res){ return $.when.apply(null, FILE_LOADERS.map(function(load){ return bubbleProgress(prefix, load(), res, true) })) } +// NOTE: if all is set, this will force save everything... // XXX do we need bubbleProgress(..) here??? -function runFileSavers(name){ - FILE_SAVERS.map(function(save){ - return save(name) - }) +function runFileSavers(name, all){ + var updated = FILES_UPDATED + FILES_UPDATED = [] + for(var n in FILE_SAVERS){ + if(all || updated.indexOf(n) >= 0){ + showStatusQ('Saving: File:', n) + FILE_SAVERS[n](name) + } + } } diff --git a/ui/marks.js b/ui/marks.js index 5e647953..0499943f 100755 --- a/ui/marks.js +++ b/ui/marks.js @@ -236,6 +236,8 @@ var toggleMark = makeMarkToggler( } else { MARKED.splice(MARKED.indexOf(gid), 1) } + + marksUpdated() }) @@ -281,6 +283,8 @@ function toggleAllMarks(action, mode){ $('.viewer').trigger('togglingMarks', [updated, action]) + marksUpdated() + return res } @@ -328,6 +332,8 @@ function invertImageMarks(){ .trigger('togglingMarks', [on, 'on']) .trigger('togglingMarks', [off, 'off']) + marksUpdated() + return on.concat(off) } @@ -378,6 +384,8 @@ function toggleMarkBlock(image){ .trigger('togglingImageBlockMarks', [image, updated, state]) .trigger('togglingMarks', [updated, state ? 'on' : 'off']) + marksUpdated() + return state } @@ -580,12 +588,18 @@ var loadFileMarks = makeFileLoader( // Save image marks to file var saveFileMarks = makeFileSaver( + 'Marks', MARKED_FILE_DEFAULT, function(){ return MARKED }) +function marksUpdated(){ + fileUpdated('Marks') +} + + /********************************************************************** * Setup... diff --git a/ui/tags.js b/ui/tags.js index f25db123..0c863e74 100755 --- a/ui/tags.js +++ b/ui/tags.js @@ -59,6 +59,8 @@ function buildTagsFromImages(tagset, images){ tagset[tag] = tagset[tag].filter(function(e){ return e != null }) } + tagsUpdated() + return tagset } @@ -119,6 +121,7 @@ function addTag(tags, gid, tagset, images){ if(updated){ img.tags = img_tags imageUpdated(gid) + tagsUpdated() } } @@ -155,6 +158,7 @@ function removeTag(tags, gid, tagset, images){ if(updated){ imageUpdated(gid) + tagsUpdated() } } @@ -344,6 +348,7 @@ function tagOnlyBookmarked(tags){ return tagOnlyList(BOOKMARKED, tags) } function markTagged(tags){ MARKED = tagSelectAND(tags) updateImages() + marksUpdated() return MARKED } function unmarkTagged(tags){ @@ -355,6 +360,7 @@ function unmarkTagged(tags){ } }) updateImages() + marksUpdated() return set } @@ -470,12 +476,18 @@ var loadFileTags = makeFileLoader( // Save image marks to file var saveFileTags = makeFileSaver( + 'Tags', TAGS_FILE_DEFAULT, function(){ return TAGS }) +function tagsUpdated(){ + fileUpdated('Tags') +} + + /********************************************************************** * Setup...