1
0

index.js 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. let device = require('./device');
  2. let blessed = require('blessed');
  3. let screen = blessed.screen({
  4. smartCSR: true
  5. });
  6. screen.title = 'OpenPrepPad';
  7. let container = blessed.box({
  8. top: 'center',
  9. left: 'center',
  10. width: 50,
  11. height: 17,
  12. border: {
  13. type: 'line'
  14. },
  15. style: {
  16. bg: 'cyan-bg'
  17. }
  18. })
  19. let box = blessed.BigText({
  20. top: 0,
  21. right: 0,
  22. width: 'shrink',
  23. height: 'shrink',
  24. tags: true,
  25. style: {
  26. fg: 'white'
  27. }
  28. });
  29. container.append(box);
  30. screen.append(container);
  31. let statusLine = blessed.Text({
  32. bottom: 0,
  33. width: '100%',
  34. height: 'shrink',
  35. content: 'Connecting...',
  36. style: {
  37. fg: 'white',
  38. bg: 'blue'
  39. }
  40. });
  41. screen.append(statusLine);
  42. let helpBox = blessed.box({
  43. top: 0,
  44. left: 0,
  45. width: 'shrink',
  46. height: 'shrink',
  47. content: 'q - Quit\nz - Zero/Tare'
  48. });
  49. screen.append(helpBox);
  50. screen.key(['escape', 'q', 'C-c'], function(ch, key) {
  51. process.exit(0);
  52. });
  53. screen.key(['z'], function(ch, key) {
  54. device.button$.onNext('');
  55. });
  56. // Focus our element.
  57. box.focus();
  58. // Render the screen.
  59. screen.render();
  60. device.weight$.subscribe(w => {
  61. box.setContent(w+'g');
  62. screen.render();
  63. })
  64. device.connStatus$.subscribe(s => {
  65. if(s.state == 'connected') {
  66. statusLine.setContent('Connected to Prep Pad '+s.serial);
  67. }
  68. else {
  69. statusLine.setContent('Connecting...');
  70. }
  71. screen.render();
  72. })