npm
Version:
a package manager for JavaScript
35 lines (28 loc) • 724 B
JavaScript
'use strict'
const TrackerBase = require('./tracker-base.js')
class Tracker extends TrackerBase {
constructor (name, todo) {
super(name)
this.workDone = 0
this.workTodo = todo || 0
}
completed () {
return this.workTodo === 0 ? 0 : this.workDone / this.workTodo
}
addWork (work) {
this.workTodo += work
this.emit('change', this.name, this.completed(), this)
}
completeWork (work) {
this.workDone += work
if (this.workDone > this.workTodo) {
this.workDone = this.workTodo
}
this.emit('change', this.name, this.completed(), this)
}
finish () {
this.workTodo = this.workDone = 1
this.emit('change', this.name, 1, this)
}
}
module.exports = Tracker