multibar.js 1.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. var multimeter = require('multimeter');
  2. var multi = multimeter(process);
  3. multi.on('^C', process.exit);
  4. multi.charm.reset();
  5. var bars = [];
  6. var progress = [];
  7. var deltas = [];
  8. multi.write('Progress:\n\n');
  9. for (var i = 0; i < 5; i++) {
  10. var s = 'ABCDE'[i] + ': \n';
  11. multi.write(s);
  12. var bar = multi(s.length, i + 3, {
  13. width : 20,
  14. solid : {
  15. text : '|',
  16. foreground : 'white',
  17. background : 'blue'
  18. },
  19. empty : { text : ' ' },
  20. });
  21. bars.push(bar);
  22. deltas[i] = 1 + Math.random() * 9;
  23. progress.push(0);
  24. }
  25. multi.write('\nbeep boop\n');
  26. var pending = progress.length;
  27. var iv = setInterval(function () {
  28. progress.forEach(function (p, i) {
  29. progress[i] += Math.random() * deltas[i];
  30. bars[i].percent(progress[i]);
  31. if (p < 100 && progress[i] >= 100) pending --;
  32. if (pending === 0) {
  33. multi.write('\nAll done.\n');
  34. multi.destroy();
  35. clearInterval(iv);
  36. pending --;
  37. }
  38. });
  39. }, 100);