tracker.js 724 B

12345678910111213141516171819202122232425262728293031323334
  1. 'use strict'
  2. const TrackerBase = require('./tracker-base.js')
  3. class Tracker extends TrackerBase {
  4. constructor (name, todo) {
  5. super(name)
  6. this.workDone = 0
  7. this.workTodo = todo || 0
  8. }
  9. completed () {
  10. return this.workTodo === 0 ? 0 : this.workDone / this.workTodo
  11. }
  12. addWork (work) {
  13. this.workTodo += work
  14. this.emit('change', this.name, this.completed(), this)
  15. }
  16. completeWork (work) {
  17. this.workDone += work
  18. if (this.workDone > this.workTodo) {
  19. this.workDone = this.workTodo
  20. }
  21. this.emit('change', this.name, this.completed(), this)
  22. }
  23. finish () {
  24. this.workTodo = this.workDone = 1
  25. this.emit('change', this.name, 1, this)
  26. }
  27. }
  28. module.exports = Tracker