mirror of
https://github.com/GitbookIO/gitbook.git
synced 2026-09-16 15:45:13 +00:00
66 lines
1.6 KiB
JavaScript
66 lines
1.6 KiB
JavaScript
define([
|
|
"lodash",
|
|
"jQuery",
|
|
"utils/storage",
|
|
"core/state"
|
|
], function(_, $, storage, state) {
|
|
// Get current level
|
|
var getCurrentLevel = function() {
|
|
return state().level;
|
|
};
|
|
|
|
// Return all levels
|
|
var getLevels = function() {
|
|
var levels = $(".book-summary li[data-level]");
|
|
return _.map(levels, function(level) {
|
|
return $(level).data("level").toString();
|
|
});
|
|
};
|
|
|
|
// Return a map chapter -> number (timestamp)
|
|
var getProgress = function() {
|
|
// Current level
|
|
var progress = storage.get("progress", {});
|
|
|
|
// Levels
|
|
var levels = getLevels();
|
|
|
|
_.each(levels, function(level) {
|
|
progress[level] = progress[level] || 0;
|
|
});
|
|
|
|
return progress;
|
|
};
|
|
|
|
// Change value of progress for a level
|
|
var markProgress = function(level, state) {
|
|
if (state == null) state = true;
|
|
|
|
var progress = getProgress();
|
|
progress[level] = state? Date.now() : 0;
|
|
|
|
storage.set("progress", progress);
|
|
};
|
|
|
|
// Show progress
|
|
var showProgress = function() {
|
|
// Update progress
|
|
var progress = getProgress();
|
|
var $summary = $(".book-summary");
|
|
|
|
_.each(progress, function(value, level) {
|
|
$summary.find("li[data-level='"+level+"']").toggleClass("done", value > 0);
|
|
});
|
|
|
|
// Mark current progress
|
|
markProgress(getCurrentLevel(), true);
|
|
};
|
|
|
|
return {
|
|
'current': getCurrentLevel,
|
|
'levels': getLevels,
|
|
'get': getProgress,
|
|
'mark': markProgress,
|
|
'show': showProgress
|
|
};
|
|
}); |