index.html 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172
  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="settPort">Port</label>
  83. <input type="text" class="form-control" id="settPort">
  84. </div>
  85. </div>
  86. <div class="form-group">
  87. <button type="button" class="btn btn-primary" id="settSave">Save</button>
  88. </div>
  89. </form>
  90. </div>
  91. <div>
  92. <p>
  93. Twitch Connection: <span id="twitchStatus"></span> <button id="twitchstartstop" class="btn btn-primary">Start/Stop</button> <span id="twitchError" class="error-mesage"></span>
  94. </p>
  95. <p>
  96. WebSocket Server Connection: <span id="wssStatus"></span> <button id="wssstartstop" class="btn btn-primary">Start/Stop</button>
  97. </p>
  98. </div>
  99. <h3>Alerts</h3>
  100. <div class="row" id="alerts">
  101. </div>
  102. <button id="addAlert" class="btn btn-success">Add</button>
  103. <button id="saveAlert" class="btn btn-primary">Save</button>
  104. <button id="skipAlert" class="btn btn-danger">Skip</button>
  105. <button id="abortAlert" class="btn btn-danger">Abort</button>
  106. <h3>Queue length: <span id="queueCounter"></span></h3>
  107. </div>
  108. <script src="lib/feather.min.js"></script>
  109. <script src="lib/jquery-3.4.1.slim.min.js"></script>
  110. <script>
  111. let col2 = $("#sett");
  112. col2.submit(e => {
  113. e.preventDefault();
  114. })
  115. let isSettingsHidden = localStorage.getItem("isSettingsHidden") == "true";
  116. let button = document.getElementById("hideButton");
  117. let svgOptions = {
  118. class: "align-middle"
  119. };
  120. // Showing token
  121. let oauthFormInput = document.getElementById("settOAuthToken");
  122. let showButton = document.getElementById("settShowToken");
  123. showButton.addEventListener("click", ()=>{
  124. return false;
  125. })
  126. showButton.addEventListener("mousedown", ()=>{
  127. oauthFormInput.setAttribute("type", "text");
  128. return false;
  129. })
  130. showButton.addEventListener("mouseup", ()=>{
  131. oauthFormInput.setAttribute("type", "password");
  132. return false;
  133. })
  134. showButton.addEventListener("mouseleave", ()=>{
  135. oauthFormInput.setAttribute("type", "password");
  136. return false;
  137. })
  138. console.log(isSettingsHidden);
  139. if(!isSettingsHidden){
  140. col2.addClass("show");
  141. }
  142. if(isSettingsHidden){
  143. button.innerHTML = feather.icons['chevron-down'].toSvg(svgOptions);
  144. }else{
  145. button.innerHTML = feather.icons['chevron-up'].toSvg(svgOptions);
  146. }
  147. col2.on("show.bs.collapse", ()=>{
  148. console.log("Show 2");
  149. localStorage.setItem("isSettingsHidden", "false");
  150. button.innerHTML = feather.icons['chevron-up'].toSvg(svgOptions);
  151. })
  152. col2.on("hide.bs.collapse", ()=>{
  153. console.log("Hide 2");
  154. localStorage.setItem("isSettingsHidden", "true");
  155. button.innerHTML = feather.icons['chevron-down'].toSvg(svgOptions);
  156. })
  157. feather.replace()
  158. </script>
  159. <script src="lib/popper.min.js"></script>
  160. <script src="lib/bootstrap.min.js"></script>
  161. <script src="../dst/web/main.js"></script>
  162. </body>
  163. </html>