multirel.js 1.1 KB

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