index.html 7.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227
  1. <html>
  2. <head>
  3. <!-- Font Awesome -->
  4. <link
  5. href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.1/css/all.min.css"
  6. rel="stylesheet"
  7. />
  8. <!-- Google Fonts -->
  9. <link
  10. href="https://fonts.googleapis.com/css?family=Roboto:300,400,500,700&display=swap"
  11. rel="stylesheet"
  12. />
  13. <!-- MDB -->
  14. <link
  15. href="https://cdnjs.cloudflare.com/ajax/libs/mdb-ui-kit/3.3.0/mdb.min.css"
  16. rel="stylesheet"
  17. />
  18. <link rel="stylesheet" type="text/css" href="reset.css">
  19. <link rel="stylesheet" type="text/css" href="main.css">
  20. <!-- MDB -->
  21. <script
  22. type="text/javascript"
  23. src="https://cdnjs.cloudflare.com/ajax/libs/mdb-ui-kit/3.3.0/mdb.min.js"
  24. ></script>
  25. <script src="https://unpkg.com/axios/dist/axios.min.js"></script>
  26. <script src="echarts.min.js"></script>
  27. </head>
  28. <body class="color__grey">
  29. <!-- Navbar -->
  30. <nav class="navbar navbar-expand-lg navbar-light bg-white">
  31. <!-- Container wrapper -->
  32. <div class="container-fluid">
  33. <!-- Navbar brand -->
  34. <a class="navbar-brand" href="#">Googo Website Traffic</a>
  35. <!-- Toggle button -->
  36. <button class="navbar-toggler" type="button" data-mdb-toggle="collapse"
  37. data-mdb-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false"
  38. aria-label="Toggle navigation">
  39. <i class="fas fa-bars text-light"></i>
  40. </button>
  41. <!-- Collapsible wrapper -->
  42. <div class="collapse navbar-collapse" id="navbarSupportedContent">
  43. <!-- Left links -->
  44. <ul class="navbar-nav me-auto d-flex flex-row mt-3 mt-lg-0">
  45. <li class="nav-item text-center mx-2 mx-lg-1">
  46. <a class="nav-link active" aria-current="page" href="/">
  47. <div>
  48. <i class="fas fa-home fa-lg mb-1"></i>
  49. </div>
  50. Home
  51. </a>
  52. </li>
  53. <li class="nav-item text-center mx-2 mx-lg-1">
  54. <a class="nav-link" href="http://news.google.com">
  55. <div>
  56. <i class="fas fa-globe-americas fa-lg mb-1"></i>
  57. <!-- <span class="badge rounded-pill badge-notification bg-success">11</span> -->
  58. </div>
  59. News
  60. </a>
  61. </li>
  62. </ul>
  63. <!-- Right links -->
  64. </div>
  65. <!-- Collapsible wrapper -->
  66. </div>
  67. <!-- Container wrapper -->
  68. </nav>
  69. <!-- Navbar -->
  70. <div class="container">
  71. <div class="row">
  72. <!-- <div class="col-1 col-lg-1"></div> -->
  73. <div class="col-12 col-12">
  74. <!-- Search form -->
  75. <form id="searchform" class="d-flex input-group search__form">
  76. <input type="search" class="form-control search__bar" placeholder="Search" aria-label="Domain Name" id="search_query"/>
  77. <button class="btn btn-primary search__btn" type="button" data-mdb-ripple-color="dark" id="search__btn">
  78. Search
  79. </button>
  80. </form>
  81. <h3 class="h3 text-center" id="sitename">Website Traffic</h3>
  82. <div class="card card__grback mb-5">
  83. <div class="card-body card__left">
  84. <!-- 根據搜尋內容顯示網站標題及網站內容簡介 -->
  85. <h5 class="card-title card__url" id="sitetitle"><i class="fas fa-chart-bar card__url__icon"></i>Example.com</h5>
  86. <p class="card-text card__intro" id="descriptions">
  87. Lorem ipsum dolor sit amet consectetur adipisicing elit. Ut ipsa totam maxime pariatur iure
  88. suscipit nihil possimus deserunt esse blanditiis. Quidem aliquid, voluptas quae tenetur quaerat
  89. iure explicabo repellat ad.
  90. </p>
  91. <!-- <a href="#" class="btn btn-primary" id="globalrank2"></a> -->
  92. </div>
  93. </div>
  94. <div class="text-muted mb-2">TRAFFICS</div>
  95. <div class="row g-5">
  96. <div class="col-sm-4">
  97. <div class="card p-3">
  98. <div class="card-body text-center">
  99. <h5 class="card-title card__rank__title mb-2">Global Ranks</h5>
  100. <p class="card-text" >
  101. </p>
  102. <span href="#" class="rank__mark"># <strong id="globalrank" class="rank_num">1000</strong></span>
  103. </div>
  104. </div>
  105. </div>
  106. <div class="col-sm-4">
  107. <div class="card p-3">
  108. <div class="card-body text-center">
  109. <h5 class="card-title card__rank__title mb-2">Country Ranks</h5>
  110. <p class="card-text">
  111. </p>
  112. <span href="#" class="rank__mark"># <strong id="countryrank" class="rank_num">100</strong></span>
  113. </div>
  114. </div>
  115. </div>
  116. <div class="col-sm-4">
  117. <div class="card p-3">
  118. <div class="card-body text-center">
  119. <h5 class="card-title card__rank__title mb-2"><i class="fas fa-tags"></i>Category</h5>
  120. <p class="card-text card__rank__cat" id="category">
  121. Lorem
  122. </p>
  123. </div>
  124. </div>
  125. </div>
  126. </div>
  127. <div class="text-muted mt-5 mb-2">Global Website Traffic Rankings</div>
  128. </div>
  129. </div>
  130. </div>
  131. <div class="container mb-5">
  132. <div class="row">
  133. <div class="col-12 col-12">
  134. <!--
  135. <button type="button" class="btn btn-primary btn-block mb-4 ripple-surface">Place order</button>
  136. -->
  137. <div class="card card__notHover">
  138. <div id="main" class="chart"></div>
  139. </div>
  140. </div>
  141. </div>
  142. </div>
  143. <footer class="footer text-center p-4 bg-white">
  144. <div class="text-muted"> © 2021 Copyright: Googo Website Traffic</div>
  145. </footer>
  146. <script>
  147. const input = document.getElementById("search_query");
  148. const search__btn = document.getElementById("search__btn");
  149. search__btn.addEventListener("click", function(e) {
  150. e.preventDefault();
  151. check_form();
  152. })
  153. input.addEventListener("keyup", function(event) {
  154. // Number 13 is the "Enter" key on the keyboard
  155. if (event.keyCode === 13) {
  156. check_form();
  157. event.preventDefault();
  158. // document.getElementById("myBtn").click();
  159. }
  160. });
  161. const myChart = echarts.init(document.getElementById('main'));
  162. let option;
  163. function check_form(){
  164. const qry = document.getElementById('search_query').value;
  165. axios.get('http://www.googo.org:8080/domain/' + qry)
  166. .then((response) => {
  167. const sitename = document.getElementById('sitename');
  168. const sitetitle = document.getElementById('sitetitle');
  169. const descriptions = document.getElementById('descriptions');
  170. const globalrank = document.getElementById('globalrank');
  171. const countryrank = document.getElementById('countryrank');
  172. const category = document.getElementById('category');
  173. console.log(response.data);
  174. // alert(response.data.SiteName);
  175. // var obj = JSON.parse(response.data);
  176. // alert(obj);
  177. itename.textContent =response.data.SiteName;
  178. descriptions.textContent=response.data.Description;
  179. globalrank.textContent=response.data.GlobalRank.Rank;
  180. sitetitle.textContent=response.data.Title;
  181. countryrank.textContent=response.data.CountryRank.Rank;
  182. category.textContent=response.data.Category;
  183. const key_ary=[];
  184. const val_ary=[];
  185. for (const [key, value] of Object.entries(response.data.EstimatedMonthlyVisits)) {
  186. key_ary.push(key);
  187. val_ary.push(value);
  188. }
  189. option = {
  190. xAxis: {
  191. type: 'category',
  192. boundaryGap: false,
  193. data: key_ary
  194. },
  195. yAxis: {
  196. type: 'value'
  197. },
  198. series: [{
  199. data: val_ary,
  200. type: 'line',
  201. areaStyle: {}
  202. }]
  203. };
  204. myChart.setOption(option);
  205. // sitename.innerHTML =response.data
  206. console.log(response.status);
  207. console.log(response.statusText);
  208. console.log(response.headers);
  209. console.log(response.config);
  210. });
  211. }
  212. </script>
  213. </body>
  214. </html>