home.js 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258
  1. start();
  2. user_role = '';
  3. data = '';
  4. obj = '';
  5. // 之後透過 fetch 取得fastapi後端資料!
  6. function start(){
  7. var xhr = new XMLHttpRequest();
  8. var url = "home/show";
  9. obj = "";
  10. xhr.open("GET",url);
  11. xhr.onload = function(){
  12. obj = JSON.parse(xhr.responseText);
  13. data = obj ;
  14. console.log(data);
  15. document.getElementById('company_text').innerHTML=data[1][0].company;
  16. document.getElementById('factory_text').innerHTML=data[1][0].factory;
  17. document.getElementById('department_text').innerHTML=data[1][0].department;
  18. if(data[0].user_role==1){
  19. company_show();
  20. }
  21. else if(data[0].user_role==2){
  22. factory_show(data[1][0].company);
  23. }
  24. else if(data[0].user_role==3){
  25. department_show(data[1][0].company,data[1][0].department);
  26. department_change();
  27. }
  28. else{
  29. towerGroup_show();
  30. }
  31. //insertHTML();
  32. };
  33. xhr.send();
  34. console.log('Start');
  35. }
  36. function get_user_role(){
  37. user_role = data[0].user_role
  38. }
  39. function clear(){
  40. document.getElementById('company').innerHTML='';
  41. document.getElementById('towergroup').innerHTML='';
  42. document.getElementById('company_name').innerHTML='';
  43. document.getElementById('factory_select').innerHTML='';
  44. document.getElementById("map").style.display="none";
  45. document.getElementById('department_show').innerHTML="";
  46. document.getElementById("department_list").style.display="none";
  47. }
  48. function company_show(){
  49. //顯示company按鈕
  50. var inner='';
  51. var company_arr = new Array();
  52. for(var i=0;i<obj[1].length;i++){
  53. if(company_arr.indexOf(obj[1][i].company)==-1){
  54. inner+="<button class='btn text-white' id='company " +obj[1][i].company+ "' onclick=\"factory_show(\'"+obj[1][i].company+"\');\"";
  55. inner += ">公司"+obj[1][i].company+"</button>";
  56. company_arr.push(obj[1][i].company);
  57. console.log(obj[1][i].company);
  58. }
  59. }
  60. clear();
  61. document.getElementById('company').innerHTML=inner;
  62. company_health(company_arr);
  63. }
  64. function company_health(company_arr){
  65. //使公司按鈕變色
  66. for(var i=0;i<company_arr.length;i++){
  67. //初始化(健康)
  68. document.getElementById('company ' + company_arr[i]).style.background="green";
  69. }
  70. for(var i=0;i<obj[1].length;i++){
  71. if(obj[1][i].health!=1 && obj[1][i].company==document.getElementById('company_text').innerHTML){
  72. //有不健康的就改色
  73. document.getElementById('company ' + obj[1][i].company).style.background="red";
  74. }
  75. }
  76. }
  77. // function factory_show(company){
  78. // var inner='<p class="fw-bold">廠區資訊:</p>';
  79. // var factory_arr = new Array();
  80. // for(var i=0;i<obj[1].length;i++){
  81. // if(factory_arr.indexOf(obj[1][i].factory)==-1 && obj[1][i].company==company){
  82. // inner+="<button class='btn text-white m-1' id='factory " +obj[1][i].factory+ "' onclick=\"department_show(\'"+obj[1][i].company+"\',\'"+obj[1][i].factory+"\');\"";
  83. // inner += ">廠區"+obj[1][i].factory+"</button><br>";
  84. // factory_arr.push(obj[1][i].factory);
  85. // }
  86. // }
  87. // //測試用
  88. // inner+="<button class='btn btn btn-outline-success m-1' id='factory B' onclick=\"department_show(\'"+obj[1][0].company+"\',\'B\');\"";
  89. // inner += ">廠區B</button><br>";
  90. // inner+="<button class='btn btn btn-outline-success m-1' id='factory C' onclick=\"department_show(\'"+obj[1][0].company+"\',\'C\');\"";
  91. // inner += ">廠區C</button><br>";
  92. // document.getElementById('company').innerHTML="";
  93. // document.getElementById('company_name').innerHTML="<button type='button' class='btn btn-primary m-1' onclick=\"company_show();\">返回</button> 公司"+ company + "";
  94. // document.getElementById('factory_select').innerHTML=inner;
  95. // factory_health(factory_arr);
  96. // document.getElementById("map").style.display="";
  97. // }
  98. function factory_show(company){
  99. var inner='<p class="fw-bold">廠區資訊</p>';
  100. var factory_arr = new Array();
  101. for(var i=0;i<obj[1].length;i++){
  102. if(factory_arr.indexOf(obj[1][i].factory)==-1 && obj[1][i].company==company){
  103. inner+="<button type='button' class='btn text-white m-1' id='factory " +obj[1][i].factory+ "' onclick=\"department_show(\'"+obj[1][i].company+"\',\'"+obj[1][i].factory+"\');\"";
  104. inner += ">廠區"+obj[1][i].factory+"</button>";
  105. factory_arr.push(obj[1][i].factory);
  106. }
  107. }
  108. //測試用
  109. inner+="<button type='button' class='btn btn btn-outline-success m-1' id='factory B' onclick=\"department_show(\'"+obj[1][0].company+"\',\'B\');\"";
  110. inner += ">廠區B</button>";
  111. inner+="<button type='button' class='btn btn btn-outline-success m-1' id='factory C' onclick=\"department_show(\'"+obj[1][0].company+"\',\'C\');\"";
  112. inner += ">廠區C</button>";
  113. document.getElementById('company').innerHTML="";
  114. document.getElementById('company_name').innerHTML="<button type='button' class='btn btn-primary m-1' onclick=\"company_show();\">返回</button> 公司"+ company + "";
  115. document.getElementById('factory_select').innerHTML=inner;
  116. factory_health(factory_arr);
  117. document.getElementById("map").style.display="";
  118. }
  119. function factory_health(factory_arr){
  120. //使工廠按鈕變色
  121. for(var i=0;i<factory_arr.length;i++){
  122. //初始化(健康)
  123. document.getElementById('factory ' + factory_arr[i]).style.background="green";
  124. }
  125. for(var i=0;i<obj[1].length;i++){
  126. if(obj[1][i].health!=1){
  127. //有不健康的改色
  128. document.getElementById('factory ' + obj[1][i].factory).style.background="red";
  129. }
  130. }
  131. }
  132. function department_show(company,factory){
  133. var inner='';
  134. var department_arr = new Array();
  135. for(var i=0;i<obj[1].length;i++){
  136. if(department_arr.indexOf(obj[1][i].department)==-1 && obj[1][i].company==company&& obj[1][i].factory==factory){
  137. inner+='<option selected value="'+obj[1][i].department+'">課'+obj[1][i].department+'</option>';
  138. department_arr.push(obj[1][i].department);
  139. }
  140. }
  141. document.getElementById('company_text').innerHTML=company;
  142. document.getElementById('factory_text').innerHTML=factory;
  143. document.getElementById('department_list').innerHTML=inner;
  144. console.log("click");
  145. if(factory==='A'){
  146. newLocation(25.0339031,121.5623212);
  147. }
  148. else if(factory==='B'){
  149. newLocation(24.42,121.42);
  150. }
  151. else if(factory==='C'){
  152. newLocation(24.12,121.42);
  153. }
  154. document.getElementById("department_list").style.display="";
  155. department_change();
  156. }
  157. function department_change(){
  158. console.log("change");
  159. var inner='<table style="font-size: 16px;" class="table text-center"><thead><tr><th>機組</th><th>健康狀態</th><th>機組狀態</th></tr></thead>';
  160. var tower_group_arr = new Array();
  161. for(var i=0;i<obj[1].length;i++){
  162. if(tower_group_arr.indexOf(obj[1][i].group)==-1 && obj[1][i].company==document.getElementById('company_text').innerHTML&& obj[1][i].factory==document.getElementById('factory_text').innerHTML&& obj[1][i].department==document.getElementById("department_list").value){
  163. inner+='<tr><td>' + obj[1][i].group + '</td><td>健康</td><td><button class="btn btn-primary m-1" onclick=\"towerGroup_show();\">查看</button></td></tr><tr><td>2</td><td>健康</td><td><button class="btn btn-primary m-1" onclick=\"towerGroup_show();\">查看</button></td></tr><tr><td>3</td><td>健康</td><td><button class="btn btn-primary m-1" onclick=\"towerGroup_show();\">查看</button></td></tr>' ;
  164. tower_group_arr.push(obj[1][i].group);
  165. }
  166. }
  167. inner += '</table>'
  168. document.getElementById('department_text').innerHTML=document.getElementById("department_list").value;
  169. document.getElementById('department_show').innerHTML=inner;
  170. }
  171. function towerGroup_show(){
  172. var inner= '';
  173. var tower_group_arr = new Array();
  174. for(var i=0;i<obj[1].length;i++){
  175. if(tower_group_arr.indexOf(obj[1][i].group)==-1 && obj[1][i].company==document.getElementById('company_text').innerHTML&& obj[1][i].factory==document.getElementById('factory_text').innerHTML&& obj[1][i].department==document.getElementById("department_text").innerHTML){
  176. inner += tower(obj[1][i].group);
  177. tower_group_arr.push(obj[1][i].group);
  178. }
  179. }
  180. document.getElementById('towergroup').innerHTML=inner;
  181. }
  182. function tower(tower_group){
  183. //顯示tower
  184. var inner= '<p class="fw-bold">機組'+tower_group +'</p><table style="font-size: 16px;" class="table text-center"><tr><th>設備</th><th>馬達效能</th><th>機組狀態</th></tr>';
  185. for(var i=0;i<obj[1].length;i++){
  186. if(obj[1][i].company==document.getElementById('company_text').innerHTML&& obj[1][i].factory==document.getElementById('factory_text').innerHTML&& obj[1][i].department==document.getElementById("department_text").innerHTML&&obj[1][i].group==tower_group){
  187. inner+='<tr><td>' + obj[1][i].tower + '</td><td>健康</td><td><button class="btn btn-primary m-1">查看</button></td></tr>';
  188. }
  189. }
  190. inner += '</table>'
  191. return inner;
  192. }
  193. function newLocation(newLat,newLng)
  194. {
  195. map.setCenter({
  196. lat : newLat,
  197. lng : newLng
  198. });
  199. addmarker(newLat,newLng);
  200. }
  201. var map;
  202. function initMap() {
  203. var position = {
  204. lat: 25.0339031,
  205. lng: 121.5623212
  206. };
  207. map = new google.maps.Map(document.getElementById('map'), {
  208. center: position,
  209. zoom: 14
  210. });
  211. var marker = new google.maps.Marker({
  212. position: position,
  213. map: map
  214. });
  215. }
  216. function addmarker(lat,lng){
  217. var myLatlng = new google.maps.LatLng(lat,lng);
  218. var marker = new google.maps.Marker({
  219. position: myLatlng,
  220. });
  221. console.log("yes");
  222. // To add the marker to the map, call setMap();
  223. marker.setMap(map);
  224. }
  225. function clearMarkers(lat,lng) {
  226. var myLatlng = new google.maps.LatLng(lat,lng);
  227. marker = google.maps.Marker({
  228. position: myLatlng,
  229. title:"Hello World!"
  230. });
  231. markers.setMap(null);
  232. }
  233. function hide(){
  234. document.getElementById("map").style.display="none";//隱藏
  235. }