ui.js 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. import "./style.css";
  2. import "./connection";
  3. import * as globals from "./globals";
  4. const app = document.querySelector('#app');
  5. if (app) {
  6. app.innerHTML = `
  7. <div id="connect" style="text-align: center"><table style="display: inline-block">
  8. <tr><td><span>Host: </span></td><td><input id="host" /></td></tr>
  9. <tr><td><span>Key: </span></td><td><input id="key" /></td></tr>
  10. <tr><td><span>Id: </span></td><td><input id="id" /></td></tr>
  11. <tr><td></td><td><button onclick="connect();">Connect</button></td></tr>
  12. </table></div>
  13. <div id="password" style="display: none;">
  14. <input type="password" id="password" />
  15. <button id="confirm" onclick="confirm()">Confirm</button>
  16. <button id="cancel" onclick="cancel();">Cancel</button>
  17. </div>
  18. <div id="status" style="display: none;">
  19. <div id="text" style="line-height: 2em"></div>
  20. <button id="cancel" onclick="cancel();">Cancel</button>
  21. </div>
  22. <div id="canvas" style="display: none;">
  23. <button id="cancel" onclick="cancel();">Cancel</button>
  24. <canvas id="player"></canvas>
  25. <canvas id="test-yuv-decoder-canvas"></canvas>
  26. </div>
  27. `;
  28. let player;
  29. window.init();
  30. document.body.onload = () => {
  31. const host = document.querySelector('#host');
  32. host.value = localStorage.getItem('custom-rendezvous-server');
  33. const id = document.querySelector('#id');
  34. id.value = localStorage.getItem('id');
  35. const key = document.querySelector('#key');
  36. key.value = localStorage.getItem('key');
  37. player = YUVCanvas.attach(document.getElementById('player'));
  38. // globals.sendOffCanvas(document.getElementById('player'));
  39. };
  40. window.connect = () => {
  41. const host = document.querySelector('#host');
  42. localStorage.setItem('custom-rendezvous-server', host.value);
  43. const id = document.querySelector('#id');
  44. localStorage.setItem('id', id.value);
  45. const key = document.querySelector('#key');
  46. localStorage.setItem('key', key.value);
  47. const func = async () => {
  48. const conn = globals.newConn();
  49. conn.setMsgbox(msgbox);
  50. conn.setDraw((f) => {
  51. /*
  52. if (!(document.getElementById('player').width > 0)) {
  53. document.getElementById('player').width = f.format.displayWidth;
  54. document.getElementById('player').height = f.format.displayHeight;
  55. }
  56. */
  57. globals.draw(f);
  58. player.drawFrame(f);
  59. });
  60. document.querySelector('div#status').style.display = 'block';
  61. document.querySelector('div#connect').style.display = 'none';
  62. document.querySelector('div#text').innerHTML = 'Connecting ...';
  63. await conn.start(id.value);
  64. };
  65. func();
  66. }
  67. function msgbox(type, title, text) {
  68. if (!globals.getConn()) return;
  69. if (type == 'input-password') {
  70. document.querySelector('div#status').style.display = 'none';
  71. document.querySelector('div#password').style.display = 'block';
  72. } else if (!type) {
  73. document.querySelector('div#canvas').style.display = 'block';
  74. document.querySelector('div#password').style.display = 'none';
  75. document.querySelector('div#status').style.display = 'none';
  76. } else if (type == 'error') {
  77. document.querySelector('div#status').style.display = 'block';
  78. document.querySelector('div#canvas').style.display = 'none';
  79. document.querySelector('div#text').innerHTML = '<div style="color: red; font-weight: bold;">' + text + '</div>';
  80. } else {
  81. document.querySelector('div#password').style.display = 'none';
  82. document.querySelector('div#status').style.display = 'block';
  83. document.querySelector('div#text').innerHTML = '<div style="font-weight: bold;">' + text + '</div>';
  84. }
  85. }
  86. window.cancel = () => {
  87. globals.close();
  88. document.querySelector('div#connect').style.display = 'block';
  89. document.querySelector('div#password').style.display = 'none';
  90. document.querySelector('div#status').style.display = 'none';
  91. document.querySelector('div#canvas').style.display = 'none';
  92. }
  93. window.confirm = () => {
  94. const password = document.querySelector('input#password').value;
  95. if (password) {
  96. document.querySelector('div#password').style.display = 'none';
  97. globals.getConn().login(password);
  98. }
  99. }
  100. }