summaryrefslogtreecommitdiffstats
path: root/assets/javascript/progress.js
blob: c8ac3555d238b40c991927aef470f80349c7c894 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
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
    };
});