summaryrefslogtreecommitdiffstats
path: root/assets/javascript/progress.js
diff options
context:
space:
mode:
Diffstat (limited to 'assets/javascript/progress.js')
-rw-r--r--assets/javascript/progress.js59
1 files changed, 59 insertions, 0 deletions
diff --git a/assets/javascript/progress.js b/assets/javascript/progress.js
new file mode 100644
index 0000000..c8ac355
--- /dev/null
+++ b/assets/javascript/progress.js
@@ -0,0 +1,59 @@
+define([
+ "lodash",
+ "jQuery",
+ "utils/storage"
+], function(_, $, storage) {
+ // Get current level
+ var getCurrentLevel = function() {
+ return $(".book").data("level");
+ };
+
+ // Return all levels
+ var getLevels = function() {
+ var levels = $(".book-summary li[data-level]");
+ return _.map(levels, function(level) {
+ return $(level).data("level");
+ });
+ };
+
+ // 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;
+ };
+
+ // Show progress
+ var showProgress = function() {
+ var progress = getProgress();
+ var $summary = $(".book-summary");
+
+ _.each(progress, function(value, level) {
+ $summary.find("li[data-level='"+level+"']").toggleClass("done", value > 0);
+ });
+ };
+
+ return {
+ 'current': getCurrentLevel,
+ 'levels': getLevels,
+ 'get': getProgress,
+ 'mark': markProgress,
+ 'show': showProgress
+ };
+}); \ No newline at end of file