index.html 6.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset='utf-8'>
  5. <meta http-equiv='X-UA-Compatible' content='IE=edge'>
  6. <title>TPA</title>
  7. <!-- https://electronjs.org/docs/tutorial/security#csp-meta-tag -->
  8. <meta http-equiv="Content-Security-Policy" content="script-src 'self' 'unsafe-inline';" />
  9. <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
  10. <link rel="stylesheet" href="lib/bootstrap.min.css">
  11. <style>
  12. body {
  13. width: 100%;
  14. min-height: 100vh;
  15. padding: 1em;
  16. }
  17. #main {
  18. width: 100%;
  19. }
  20. .row {
  21. margin: 0;
  22. }
  23. #settOAuthToken {
  24. display: inline-block;
  25. width: calc( 100% - 170px )
  26. }
  27. #settGetToken {
  28. width: 100px;
  29. float: right;
  30. }
  31. #settShowToken {
  32. width: 60px;
  33. float: right;
  34. margin-right: 5px;
  35. }
  36. #alerts > form {
  37. margin-bottom: 1em;
  38. }
  39. .btn-remove {
  40. width: 85px;
  41. }
  42. .btn-test {
  43. width: 55px;
  44. }
  45. .custom-file {
  46. width: calc( 100% - 155px )
  47. }
  48. #filepath {
  49. overflow: hidden;
  50. }
  51. .form-btns {
  52. float:right;
  53. width: 145px;
  54. }
  55. </style>
  56. </head>
  57. <body>
  58. <div id="main">
  59. <div class="row">
  60. <h3>Settings</h3>
  61. <a id="hideButton" data-toggle="collapse" data-target="#sett" style="padding: 5px">
  62. </a>
  63. <form id="sett" class="col-12 collapse">
  64. <div class="form-row">
  65. <div class="form-group col-12">
  66. <label for="settClientToken">Twitch Client ID</label>
  67. <input type="text" class="form-control" id="settClientToken">
  68. </div>
  69. <div class="form-group col-12" style="margin-bottom: 0;">
  70. <label for="settOAuthToken" style="display: block;">Twitch OAuth Token</label>
  71. </div>
  72. <div class="form-group col-12 align-items-center">
  73. <input type="password" class="form-control" id="settOAuthToken" readonly>
  74. <button class="btn btn-primary" id="settGetToken">Get token</button>
  75. <button class="btn btn-danger" id="settShowToken">Show</button>
  76. </div>
  77. <div class="form-group col-12">
  78. <label for="settChannel">Channel</label>
  79. <input type="text" class="form-control" id="settChannel">
  80. </div>
  81. <div class="form-group col-12">
  82. <label for="settWSPort">WS Port</label>
  83. <input type="text" class="form-control" id="settWSPort">
  84. </div>
  85. <div class="form-group col-12">
  86. <label for="settHTTPPort">HTTP Port</label>
  87. <input type="text" class="form-control" id="settHTTPPort">
  88. </div>
  89. </div>
  90. <div class="form-group">
  91. <button type="button" class="btn btn-primary" id="settSave">Save</button>
  92. </div>
  93. </form>
  94. </div>
  95. <div>
  96. <p>
  97. Twitch Connection: <span id="twitchStatus"></span> <button id="twitchstartstop" class="btn btn-primary">Start/Stop</button> <span id="twitchError" class="error-mesage"></span>
  98. </p>
  99. <p>
  100. WebSocket Server Connection: <span id="wssStatus"></span> <button id="wssstartstop" class="btn btn-primary">Start/Stop</button> <span id="clientsAmount">Clients: <span id="clientsAmountNumber">test2</span></span>
  101. </p>
  102. </div>
  103. <h3>Alerts</h3>
  104. <div class="row" id="alerts">
  105. </div>
  106. <button id="addAlert" class="btn btn-success">Add</button>
  107. <button id="saveAlert" class="btn btn-primary">Save</button>
  108. <button id="skipAlert" class="btn btn-danger">Skip</button>
  109. <button id="abortAlert" class="btn btn-danger">Abort</button>
  110. <h3>Queue length: <span id="queueCounter"></span></h3>
  111. </div>
  112. <script src="lib/feather.min.js"></script>
  113. <script src="lib/jquery-3.4.1.slim.min.js"></script>
  114. <script>
  115. let col2 = $("#sett");
  116. col2.submit(e => {
  117. e.preventDefault();
  118. })
  119. let isSettingsHidden = localStorage.getItem("isSettingsHidden") == "true";
  120. let button = document.getElementById("hideButton");
  121. let svgOptions = {
  122. class: "align-middle"
  123. };
  124. // Showing token
  125. let oauthFormInput = document.getElementById("settOAuthToken");
  126. let showButton = document.getElementById("settShowToken");
  127. showButton.addEventListener("click", ()=>{
  128. return false;
  129. })
  130. showButton.addEventListener("mousedown", ()=>{
  131. oauthFormInput.setAttribute("type", "text");
  132. return false;
  133. })
  134. showButton.addEventListener("mouseup", ()=>{
  135. oauthFormInput.setAttribute("type", "password");
  136. return false;
  137. })
  138. showButton.addEventListener("mouseleave", ()=>{
  139. oauthFormInput.setAttribute("type", "password");
  140. return false;
  141. })
  142. if(!isSettingsHidden){
  143. col2.addClass("show");
  144. }
  145. if(isSettingsHidden){
  146. button.innerHTML = feather.icons['chevron-down'].toSvg(svgOptions);
  147. }else{
  148. button.innerHTML = feather.icons['chevron-up'].toSvg(svgOptions);
  149. }
  150. col2.on("show.bs.collapse", ()=>{
  151. console.log("Show 2");
  152. localStorage.setItem("isSettingsHidden", "false");
  153. button.innerHTML = feather.icons['chevron-up'].toSvg(svgOptions);
  154. })
  155. col2.on("hide.bs.collapse", ()=>{
  156. console.log("Hide 2");
  157. localStorage.setItem("isSettingsHidden", "true");
  158. button.innerHTML = feather.icons['chevron-down'].toSvg(svgOptions);
  159. })
  160. feather.replace()
  161. </script>
  162. <script src="lib/popper.min.js"></script>
  163. <script src="lib/bootstrap.min.js"></script>
  164. <!-- <script src="../dst/web/main.js"></script> -->
  165. </body>
  166. </html>