summaryrefslogtreecommitdiffstats
path: root/lib/utils/progress.js
diff options
context:
space:
mode:
Diffstat (limited to 'lib/utils/progress.js')
-rw-r--r--lib/utils/progress.js47
1 files changed, 47 insertions, 0 deletions
diff --git a/lib/utils/progress.js b/lib/utils/progress.js
new file mode 100644
index 0000000..b66aea9
--- /dev/null
+++ b/lib/utils/progress.js
@@ -0,0 +1,47 @@
+var _ = require("lodash");
+
+// Returns from a navigation and a current file, a snapshot of current detailed state
+var calculProgress = function(navigation, current) {
+ var n = _.size(navigation);
+ var percent = 0, prevPercent = 0, currentChapter = null;
+ var done = true;
+
+ var chapters = _.chain(navigation)
+ .map(function(nav, path) {
+ nav.path = path;
+ return nav;
+ })
+ .map(function(nav, i) {
+ // Calcul percent
+ nav.percent = (i * 100) / Math.max((n - 1), 1);
+
+ // Is it done
+ nav.done = done;
+ if (nav.path == current) {
+ currentChapter = nav;
+ percent = nav.percent;
+ done = false;
+ } else if (done) {
+ prevPercent = nav.percent;
+ }
+
+ return nav;
+ })
+ .value();
+
+ return {
+ // Previous percent
+ prevPercent: prevPercent,
+
+ // Current percent
+ percent: percent,
+
+ // List of chapter with progress
+ chapters: chapters,
+
+ // Current chapter
+ current: currentChapter
+ };
+}
+
+module.exports = calculProgress;