neighbour.html 6.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta name="mobile-web-app-capable" content="yes">
  5. <meta name="viewport" content="user-scalable=no, width=device-width, initial-scale=1, maximum-scale=1"/>
  6. <meta charset="UTF-8">
  7. <link rel="stylesheet" href="../../script/semantic/semantic.min.css">
  8. <script src="../../script/jquery.min.js"></script>
  9. <script src="../../script/semantic/semantic.min.js"></script>
  10. <script src="../arsm/js/moment.min.js"></script>
  11. <style>
  12. .hidden{
  13. display:none;
  14. }
  15. </style>
  16. </head>
  17. <body>
  18. <div class="ui container">
  19. <div class="ui basic segment">
  20. <div class="ui header">
  21. <i class="server icon"></i>
  22. <div class="content">
  23. Cluster Neightbourhood
  24. <div class="sub header">Automatic Cluster Discovery Services</div>
  25. </div>
  26. </div>
  27. </div>
  28. <div class="ui divider"></div>
  29. <div class="ui red message" id="errbox" style="display:none;">
  30. <div class="header">
  31. Cluster Scan Error
  32. </div>
  33. <p id="errormsg">An unknown error has occurred. Please try again later.</p>
  34. </div>
  35. <h4 class="ui header">
  36. This Host
  37. <div class="sub header">The broadcasting information sent out by this host server.</div>
  38. </h4>
  39. <div class="ui basic segment" id="thisHost">
  40. </div>
  41. <div class="ui divider"></div>
  42. <h4 class="ui header">
  43. Nearby Hosts
  44. <div class="sub header">The ArozOS broadcast receiver from the Local Area Network.</div>
  45. </h4>
  46. <div class="ui basic segment" id="nearybylist">
  47. </div>
  48. <div class="ui divider"></div>
  49. <p>Last Updates: <span id="lastUpdateTime"></span> seconds ago</p>
  50. <br><br><br>
  51. </div>
  52. <script>
  53. initClusterScannerList();
  54. function initClusterScannerList(){
  55. $.get("../../system/cluster/scan", function(data){
  56. if (data.error !== undefined){
  57. $("#errormsg").text(data.error);
  58. $("#errbox").show();
  59. }else{
  60. //Render this Host info
  61. if (data.ThisHost != null){
  62. var host = data.ThisHost
  63. $("#thisHost").append(`<div class="ui icon green message">
  64. <i class="server icon"></i>
  65. <div class="content">
  66. <div class="header">
  67. <a href="//${host.HostName}:${host.Port}" target="_blank">${host.HostName}</a>
  68. </div>
  69. <div class="ui list">
  70. <div class="item">
  71. <i class="disk icon"></i>
  72. <div class="content">
  73. ${host.Model} (${host.Vendor})
  74. </div>
  75. </div>
  76. <div class="item">
  77. <i class="paperclip icon"></i>
  78. <div class="content">
  79. ${host.MinorVersion} (${host.BuildVersion})
  80. </div>
  81. </div>
  82. <div class="item">
  83. <i class="marker icon"></i>
  84. <div class="content">
  85. ${host.IPv4.join(" / ")}
  86. </div>
  87. </div>
  88. <div class="item">
  89. <i class="tag icon"></i>
  90. <div class="content">
  91. ${host.UUID}
  92. </div>
  93. </div>
  94. </div>
  95. </div>
  96. </div>`);
  97. }
  98. //Render remote host info
  99. $("#nearybylist").html("");
  100. data.NearbyHosts.forEach(host => {
  101. var iplinks = [];
  102. host.IPv4.forEach(ip => {
  103. iplinks.push(`<a href="//${ip}:${host.Port}" target="_blank">${ip}</a>`);
  104. })
  105. var ipDOM = iplinks.join(" / ");
  106. $("#nearybylist").append(`<div class="ui icon teal message">
  107. <i class="server icon"></i>
  108. <div class="content">
  109. <div class="header">
  110. <a href="//${host.HostName}:${host.Port}" target="_blank">${host.HostName}</a>
  111. </div>
  112. <div class="ui list">
  113. <div class="item">
  114. <i class="disk icon"></i>
  115. <div class="content">
  116. ${host.Model} (${host.Vendor})
  117. </div>
  118. </div>
  119. <div class="item">
  120. <i class="paperclip icon"></i>
  121. <div class="content">
  122. ${host.MinorVersion} (${host.BuildVersion})
  123. </div>
  124. </div>
  125. <div class="item">
  126. <i class="marker icon"></i>
  127. <div class="content">
  128. ${ipDOM}
  129. </div>
  130. </div>
  131. <div class="item">
  132. <i class="tag icon"></i>
  133. <div class="content">
  134. ${host.UUID}
  135. </div>
  136. </div>
  137. </div>
  138. </div>
  139. </div>`);
  140. });
  141. //Update the update time
  142. $("#lastUpdateTime").text(Math.floor(Date.now() / 1000) - data.LastUpdate);
  143. }
  144. });
  145. }
  146. </script>
  147. </body>
  148. </html>