home.js 14 KB

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