tower.js 25 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552
  1. console.log(1);
  2. var xhr = new XMLHttpRequest();
  3. var url = "tower/org";
  4. obj = "";
  5. xhr.open("GET", url);
  6. xhr.onload = function () {
  7. obj = JSON.parse(xhr.responseText);
  8. //insertHTML();
  9. start();
  10. onChangeColumn1();
  11. onChangeColumn2();
  12. onChangeColumn3();
  13. click_button();
  14. };
  15. xhr.send();
  16. function insertHTML(data) {
  17. var tower_select = document.getElementById('tower');
  18. //aria.innerHTML=data[0].tower_name;
  19. var inner = '';
  20. for (var i = 0; i < data.length; i++) {
  21. if (i >= 3) {
  22. inner = inner + '<button type="button" style="padding:15px 30px; background:#fff; color:#002e86; border: 1px solid #002E86; border-radius: 10px; font-size:18px;" class="tower-btn me-3" onclick="tower_info(\'' + data[0].tower_name + '\');">' + data[i].tower_name + '</button>';
  23. }
  24. else {
  25. inner = inner + '<button type="button" style="padding:15px 30px; background:#fff; color:#002e86; border: 1px solid #002E86; border-radius: 10px; font-size:18px;" class="tower-btn me-3" onclick="tower_info(\'' + data[i].tower_name + '\');">' + data[i].tower_name + '</button>';
  26. }
  27. console.log(inner);
  28. }
  29. tower_select.innerHTML = inner;
  30. }
  31. obj2 = "";
  32. function click_button() {
  33. //alert("click");
  34. companySelect = document.getElementById("company-list");
  35. factorySelect = document.getElementById("factory-list");
  36. departmentSelect = document.getElementById("department-list");
  37. towerGroupSelect = document.getElementById("towerGroup-list");
  38. if (companySelect.value != 0 && factorySelect.value != 0 && departmentSelect.value != 0 && towerGroupSelect.value != 0) {
  39. var url2 = "tower/?company=" + companySelect.value + "&factory=" + factorySelect.value + "&department=" + departmentSelect.value + "&towerGroup=" + towerGroupSelect.value;
  40. var xhr2 = new XMLHttpRequest();
  41. xhr2.open("GET", url2);
  42. xhr2.onload = function () {
  43. obj2 = JSON.parse(xhr2.responseText);
  44. insertHTML(obj2);
  45. tower_info(obj2[0].tower_name);
  46. };
  47. xhr2.send();
  48. }
  49. }
  50. function tower_info(tower_str) {
  51. $(document).on("click", ".tower-btn", function (event) {
  52. $(this).addClass("tower-active");
  53. $(".tower-active").siblings().removeClass('tower-active');
  54. });
  55. tower = tower_str;
  56. console.log(tower);
  57. inner = "";
  58. for (var i = 0; i < obj2.length; i++) {
  59. if (obj2[i].tower_name == tower) {
  60. // inner = '<p> DCS </P> '+
  61. // '<p> 入水溫度 = '+ obj2[i].tower_data.DCS.hotTemp + ' </P> ' +
  62. // '<p> 出水溫度 = '+ obj2[i].tower_data.DCS.coldTemp + ' </P> ' +
  63. // '<p> 水流量 = '+ obj2[i].tower_data.DCS.waterFlow + ' </P> ' +
  64. // '<p> 風扇馬達電流 = '+ obj2[i].tower_data.DCS.fanMotorCur + ' </P> ' +
  65. // '<p> 風扇馬達轉速頻率 = '+ obj2[i].tower_data.DCS.fanMotorSpeedFreq + ' </P><br> ' +
  66. // '<p> 風扇震動 </P> '+
  67. // '<p> 馬達震動 = '+ obj2[i].tower_data.Moter.ch01.Vrms + ' </P> ' +
  68. // '<p> 減速機震動 = '+ obj2[i].tower_data.Fan.reducer + ' </P> ' +
  69. // '<p> 靜壓機 = '+ obj2[i].tower_data.Fan.staticPressure + ' </P> ' +
  70. // '<p> 水流量 = '+ obj2[i].tower_data.Fan.waterFlow + ' </P> ' +
  71. // '<p> 濕求溫度 = '+ obj2[i].tower_data.Fan.wetTemp + ' </P> ' +
  72. // '<p> 水冷槽溫度1 = '+ obj2[i].tower_data.Fan.coldTempData1 + ' </P> ' +
  73. // '<p> 水冷槽溫度2 = '+ obj2[i].tower_data.Fan.coldTempData2 + ' </P><br> ' +
  74. // '<p> 馬達震動 </P> '+
  75. // '<p> ch001,通道1'+ obj2[i].tower_data.Moter.ch01.Vrms + ',' + obj2[i].tower_data.Moter.ch01.CV+' </P> ' +
  76. // '<p> ch002,通道2'+ obj2[i].tower_data.Moter.ch02.Vrms + ',' + obj2[i].tower_data.Moter.ch02.CV+' </P> '
  77. // ;
  78. inner = '<div style="padding:15px;"><h1 style="color:#002e86">中控室DSC訊號</h1>\
  79. <div class="row px-0 mx-0">\
  80. <div class="card col-lg-2">\
  81. <p class="data-title fw-bold pt-3">入水溫度</p>\
  82. <div>\
  83. <h2 class="data-content text-center mt-3 pb-3">'+ obj2[i].tower_data.DCS.hotTemp + '<span style="font-size:20px;">&ensp;°C</span></h2>\
  84. </div>\
  85. </div>\
  86. <div class="card col-lg-2">\
  87. <p class="data-title fw-bold pt-3">出水溫度</p>\
  88. <div>\
  89. <h2 class="data-content text-center mt-3 pb-3">'+ obj2[i].tower_data.DCS.coldTemp + '<span style="font-size:20px;">&ensp;°C</span></h2>\
  90. </div>\
  91. </div>\
  92. <div class="card col-lg-2">\
  93. <p class="data-title fw-bold pt-3">水流量</p>\
  94. <div>\
  95. <h2 class="data-content text-center mt-3 pb-3">'+ obj2[i].tower_data.DCS.waterFlow + '<span style="font-size:20px;">&ensp;M³/H</span></h2>\
  96. </div>\
  97. </div>\
  98. <div class="card col-lg-2">\
  99. <p class="data-title fw-bold pt-3">風扇馬達電流</p>\
  100. <div>\
  101. <h2 class="data-content text-center mt-3 pb-3">'+ obj2[i].tower_data.DCS.fanMotorCur + '<span style="font-size:20px;">&ensp;A</span></h2>\
  102. </div>\
  103. </div>\
  104. <div class="card col-lg-2">\
  105. <p class="data-title fw-bold pt-3">風扇馬達轉速頻率</p>\
  106. <div>\
  107. <h2 class="data-content text-center mt-3 pb-3">'+ obj2[i].tower_data.DCS.fanMotorSpeedFreq + '<span style="font-size:20px;">&ensp;Hz</span></h2>\
  108. </div>\
  109. </div>\
  110. </div>\
  111. </div>\
  112. <div class="mt-5">\
  113. <div>\
  114. <div class="row px-0 mx-0">\
  115. <div class="col-lg-6">\
  116. <div class="card">\
  117. <h1 style="color:#002e86">風扇震動</h1>\
  118. <div style="padding:15px">\
  119. <table style="font-size: 16px; border-color:#4c6caa; border-top:1px solid #4c6caa;" class="table text-center">\
  120. <thead style="background:#e4f8ff; color:#4c6caa;">\
  121. <tr>\
  122. <th class="border-0" scope="col">數據名稱</th>\
  123. <th class="border-0" scope="col">值</th>\
  124. <th class="border-0" scope="col">單位</th>\
  125. </tr>\
  126. </thead>\
  127. <tbody>\
  128. <tr>\
  129. <td>馬達震動</td>\
  130. <td>'+ obj2[i].tower_data.Moter[0].Vrms + '</td>\
  131. <td>mm/s</td>\
  132. </tr>\
  133. <tr>\
  134. <td>減速機震動</td>\
  135. <td>'+ obj2[i].tower_data.Fan.reducer + '</td>\
  136. <td>mm/s</td>\
  137. </tr>\
  138. <tr>\
  139. <td>靜壓機</td>\
  140. <td>'+ obj2[i].tower_data.Fan.staticPressure + '</td>\
  141. <td>pa</td>\
  142. </tr>\
  143. <tr>\
  144. <td>水流量</td>\
  145. <td>'+ obj2[i].tower_data.Fan.waterFlow + '</td>\
  146. <td>M³/H</td>\
  147. </tr>\
  148. <tr>\
  149. <td>濕求溫度</td>\
  150. <td>'+ obj2[i].tower_data.Fan.wetTemp + '</td>\
  151. <td>°C</td>\
  152. </tr>\
  153. <tr>\
  154. <td>水冷槽溫度1</td>\
  155. <td>'+ obj2[i].tower_data.Fan.coldTempData1 + '</td>\
  156. <td>°C</td>\
  157. </tr>\
  158. <tr>\
  159. <td>水冷槽溫度2</td>\
  160. <td>'+ obj2[i].tower_data.Fan.coldTempData2 + '</td>\
  161. <td>°C</td>\
  162. </tr>\
  163. </tbody>\
  164. </table>\
  165. </div>\
  166. </div>\
  167. </div>\
  168. <div style="margin-top:40px;" class="col-lg-6">\
  169. <div>\
  170. <h1 style="color:#002e86">馬達震動</h1>\
  171. <div class="row px-0 mx-0">\
  172. <div class="card col-lg-5">\
  173. <p class="fw-bold pt-4">ch001,通道1</p>\
  174. <div>\
  175. <p class="text-center pb-4">'+ obj2[i].tower_data.Moter[0].DataValue + ',' + obj2[i].tower_data.Moter[0].CVIndex + '</p>\
  176. </div>\
  177. </div>\
  178. <div class="card col-lg-5">\
  179. <p class="fw-bold pt-4">ch002,通道2</p>\
  180. <div>\
  181. <p class="text-center pb-4">'+ obj2[i].tower_data.Moter[1].DataValue + ',' + obj2[i].tower_data.Moter[1].CVIndex + '</p>\
  182. </div>\
  183. </div>\
  184. <div class="card col-lg-5">\
  185. <p class="fw-bold pt-4">ch003,通道3</p>\
  186. <div>\
  187. <p class="text-center pb-4">'+ obj2[i].tower_data.Moter[2].DataValue + ',' + obj2[i].tower_data.Moter[2].CVIndex + '</p>\
  188. </div>\
  189. </div>\
  190. <div class="card col-lg-5">\
  191. <p class="fw-bold pt-4">ch004,通道4</p>\
  192. <div>\
  193. <p class="text-center pb-4">'+ obj2[i].tower_data.Moter[3].DataValue + ',' + obj2[i].tower_data.Moter[3].CVIndex + '</p>\
  194. </div>\
  195. </div>\
  196. </div>\
  197. </div>\
  198. </div>\
  199. </div>\
  200. </div>\
  201. </div>';
  202. console.log(obj2[i].tower_data.Moter[3].Vrms);
  203. }
  204. }
  205. document.getElementById("tower_info").innerHTML = inner;
  206. console.log(inner);
  207. get_tower_perfrom('dev001');
  208. }
  209. //document就是這html文件。
  210. //getElementById是裡面的方法,參數給"college-list"抓到這id標籤列
  211. function start() {
  212. companySelect = document.getElementById("company-list");
  213. factorySelect = document.getElementById("factory-list");
  214. departmentSelect = document.getElementById("department-list");
  215. towerGroupSelect = document.getElementById("towerGroup-list");
  216. var inner = '';
  217. var company_arr = new Array();
  218. for (var i = 0; i < obj.length; i++) {
  219. if (company_arr.indexOf(obj[i].company) == -1 && obj[i].able == 1) {
  220. inner = inner + '<option value="' + obj[i].company + '">公司' + obj[i].company + '</option>';
  221. company_arr.push(obj[i].company);
  222. }
  223. }
  224. //innerHTML 賦值inner給這element屬性
  225. companySelect.innerHTML = inner;
  226. }
  227. //製造一個字串,以html的語法填入院的陣列
  228. function onChangeColumn1() {
  229. companySelect = document.getElementById("company-list");
  230. factorySelect = document.getElementById("factory-list");
  231. departmentSelect = document.getElementById("department-list");
  232. towerGroupSelect = document.getElementById("towerGroup-list");
  233. factorySelect.innerHTML = '';
  234. let factory_arr = new Array();
  235. let factory_inner = '';
  236. for (var i = 0; i < obj.length; i++) {
  237. if (companySelect.value == obj[i].company) {
  238. if (factory_arr.indexOf(obj[i].factory) == -1 && obj[i].able == 1) {
  239. factory_inner = factory_inner + '<option value="' + obj[i].factory + '">廠區' + obj[i].factory + '</option>';
  240. factory_arr.push(obj[i].factory);
  241. }
  242. }
  243. //alert(companySelect.value);
  244. }
  245. factorySelect.innerHTML = factory_inner;
  246. }
  247. function onChangeColumn2() {
  248. companySelect = document.getElementById("company-list");
  249. factorySelect = document.getElementById("factory-list");
  250. departmentSelect = document.getElementById("department-list");
  251. towerGroupSelect = document.getElementById("towerGroup-list");
  252. departmentSelect.innerHTML = '';
  253. let department_arr = new Array();
  254. let department_inner = '';
  255. for (var i = 0; i < obj.length; i++) {
  256. if (companySelect.value == obj[i].company && factorySelect.value == obj[i].factory) {
  257. if (department_arr.indexOf(obj[i].department) == -1 && obj[i].able == 1) {
  258. department_inner = department_inner + '<option value="' + obj[i].department + '">課' + obj[i].department + '</option>';
  259. department_arr.push(obj[i].department);
  260. }
  261. }
  262. }
  263. document.getElementById("department-list").innerHTML = department_inner;
  264. }
  265. function onChangeColumn3() {
  266. companySelect = document.getElementById("company-list");
  267. factorySelect = document.getElementById("factory-list");
  268. departmentSelect = document.getElementById("department-list");
  269. towerGroupSelect = document.getElementById("towerGroup-list");
  270. towerGroupSelect.innerHTML = '';
  271. let towerGroup_inner = '';
  272. for (var i = 0; i < obj.length; i++) {
  273. if (companySelect.value == obj[i].company && factorySelect.value == obj[i].factory && departmentSelect.value == obj[i].department) {
  274. if (obj[i].able == 1) {
  275. for (var ii = 0; ii < obj[i].group.length; ii++) {
  276. towerGroup_inner = towerGroup_inner + '<option value="' + obj[i].group[ii] + '">機組' + obj[i].group[ii] + '</option>';
  277. }
  278. }
  279. }
  280. }
  281. document.getElementById("towerGroup-list").innerHTML = towerGroup_inner;
  282. }
  283. function get_tower_perfrom(tower_id) {
  284. var xhr3 = new XMLHttpRequest();
  285. var url3 = "tower/performance/" + tower_id;
  286. console.log("sss");
  287. obj3 = "";
  288. xhr3.open("GET", url3);
  289. xhr3.onload = function () {
  290. obj3 = JSON.parse(xhr3.responseText);
  291. console.log(obj3);
  292. tower_perform_show(obj3);
  293. };
  294. xhr3.send();
  295. }
  296. function tower_perform_show(obj_tmp) {
  297. inner = "<div class='mt-5'>\
  298. <div>\
  299. <div class='row px-0 mx-0'>\
  300. <div class='col-lg-6'>\
  301. <div class='card h-100'>\
  302. <h1 style='color:#002e86'>設計條件</h1>\
  303. <div style='padding:15px'>\
  304. <table style='font-size: 16px; border-color:#4c6caa; border-top:1px solid #4c6caa;' class='table'>\
  305. <thead style='background:#e4f8ff; color:#4c6caa;'>\
  306. <tr>\
  307. <th class='border-0' scope='col'>數據名稱</th>\
  308. <th class='border-0' scope='col'>值</th>\
  309. <th class='border-0' scope='col'>單位</th>\
  310. </tr>\
  311. </thead>\
  312. <tbody>\
  313. <tr>\
  314. <td>水流量</td>\
  315. <td>" + obj_tmp[0].designWFR + "</td>\
  316. <td>M³/H</td>\
  317. </tr>\
  318. <tr>\
  319. <td>風車馬力</td>\
  320. <td>" + obj_tmp[0].designHP + "</td>\
  321. <td>mm/s</td>\
  322. </tr>\
  323. <tr>\
  324. <td>額定電流</td>\
  325. <td>" + obj_tmp[0].designCurrent + "</td>\
  326. <td>A</td>\
  327. </tr>\
  328. <tr>\
  329. <td>入水溫度</td>\
  330. <td>" + obj_tmp[0].designHWT + "</td>\
  331. <td>°C</td>\
  332. </tr>\
  333. <tr>\
  334. <td>出水溫度</td>\
  335. <td>" + obj_tmp[0].designCWT + "</td>\
  336. <td>°C</td>\
  337. </tr>\
  338. <tr>\
  339. <td>濕求溫度</td>\
  340. <td>" + obj_tmp[0].designWBT + "</td>\
  341. <td>°C</td>\
  342. </tr>\
  343. </tbody>\
  344. </table>\
  345. </div>\
  346. </div>\
  347. </div>\
  348. <div class='col-lg-6'>\
  349. <div class='card h-100'>\
  350. <h1 style='color:#002e86'>測試狀態</h1>\
  351. <div style='padding:15px'>\
  352. <table style='font-size: 16px; border-color:#4c6caa; border-top:1px solid #4c6caa;' class='table'>\
  353. <thead style='background:#e4f8ff; color:#4c6caa;'>\
  354. <tr>\
  355. <th class='border-0' scope='col'>數據名稱</th>\
  356. <th class='border-0' scope='col'>值</th>\
  357. <th class='border-0' scope='col'>單位</th>\
  358. </tr>\
  359. </thead>\
  360. <tbody>\
  361. <tr>\
  362. <td>水流量</td>\
  363. <td>" + obj_tmp[0].testWFR + "</td>\
  364. <td>M³/H</td>\
  365. </tr>\
  366. <tr>\
  367. <td>風車馬力</td>\
  368. <td> " + obj_tmp[0].testBHP + "</td>\
  369. <td>mm/s</td>\
  370. </tr>\
  371. <tr>\
  372. <td>運轉電流</td>\
  373. <td>" + obj_tmp[0].testCurrent + "</td>\
  374. <td>A</td>\
  375. </tr>\
  376. <tr>\
  377. <td>入水溫度</td>\
  378. <td>" + obj_tmp[0].testHWT + "</td>\
  379. <td>°C</td>\
  380. </tr>\
  381. <tr>\
  382. <td>出水溫度</td>\
  383. <td>" + obj_tmp[0].testCorrectCWT + "</td>\
  384. <td>°C</td>\
  385. </tr>\
  386. <tr>\
  387. <td>濕求溫度</td>\
  388. <td>" + obj_tmp[0].testWBT + "</td>\
  389. <td>°C</td>\
  390. </tr>\
  391. <tr>\
  392. <td>風速</td>\
  393. <td>" + obj_tmp[0].testWindSpeed + "</td>\
  394. <td>°C</td>\
  395. </tr>\
  396. <tr>\
  397. <td>補充水量</td>\
  398. <td>" + obj_tmp[0].testMakeupWFR + "</td>\
  399. <td>°C</td>\
  400. </tr>\
  401. <tr>\
  402. <td>補充水溫</td>\
  403. <td>" + obj_tmp[0].testMakeupCWT + "</td>\
  404. <td>°C</td>\
  405. </tr>\
  406. <tr>\
  407. <td>CORRECT CWT</td>\
  408. <td> " + obj_tmp[0].testCorrectCWT + "</td>\
  409. <td>°C</td>\
  410. </tr>\
  411. <tr>\
  412. <td>COLLING RANGE</td>\
  413. <td> " + obj_tmp[0].testCoolingRange + "</td>\
  414. <td>°C</td>\
  415. </tr>\
  416. </tbody>\
  417. </table>\
  418. </div>\
  419. </div>\
  420. </div>\
  421. </div>\
  422. </div>\
  423. </div>" ;
  424. // "測試狀態<br> " +
  425. // "水流量: " + obj_tmp[0].testWFR + "<br>" +
  426. // "風車馬力: " + obj_tmp[0].testBHP + "<br>" +
  427. // "運轉電流: " + obj_tmp[0].testCurrent + "<br>" +
  428. // "入水溫度: " + obj_tmp[0].testHWT + "<br>" +
  429. // "出水溫度: " + obj_tmp[0].testCorrectCWT + "<br>" +
  430. // "濕球溫度: " + obj_tmp[0].testWBT + "<br>" +
  431. // "風速: " + obj_tmp[0].testWindSpeed + "<br>" +
  432. // "補充水量: " + obj_tmp[0].testMakeupWFR + "<br>" +
  433. // "補充水溫: " + obj_tmp[0].testMakeupCWT + "<br>" +
  434. // "CORRECT CWT: " + obj_tmp[0].testCorrectCWT + "<br>" +
  435. // "COLLING RANGE: " + obj_tmp[0].testCoolingRange + "<br>";
  436. document.getElementById('tower_perfrom').innerHTML = inner;
  437. }
  438. // function tower_perform_show(obj_tmp){
  439. // inner = "設計條件<br>" +
  440. // "水流量: " + obj_tmp[0].designWFR + "<br>" +
  441. // "風車馬力: " + obj_tmp[0].designHP + "<br>" +
  442. // "額定電流: " + obj_tmp[0].designCurrent + "<br>" +
  443. // "入水溫度: " + obj_tmp[0].designHWT + "<br>" +
  444. // "出水溫度: " + obj_tmp[0].designCWT + "<br>" +
  445. // "濕求溫度: " + obj_tmp[0].designWBT + "<br>" +
  446. // "測試狀態<br> " +
  447. // "水流量: " + obj_tmp[0].testWFR + "<br>" +
  448. // "風車馬力: " + obj_tmp[0].testBHP + "<br>" +
  449. // "運轉電流: " + obj_tmp[0].testCurrent + "<br>" +
  450. // "入水溫度: " + obj_tmp[0].testHWT + "<br>" +
  451. // "出水溫度: " + obj_tmp[0].testCorrectCWT + "<br>" +
  452. // "濕球溫度: " + obj_tmp[0].testWBT + "<br>" +
  453. // "風速: " + obj_tmp[0].testWindSpeed + "<br>" +
  454. // "補充水量: " + obj_tmp[0].testMakeupWFR + "<br>" +
  455. // "補充水溫: " + obj_tmp[0].testMakeupCWT + "<br>" +
  456. // "CORRECT CWT: " + obj_tmp[0].testCorrectCWT + "<br>" +
  457. // "COLLING RANGE: " + obj_tmp[0].testCoolingRange + "<br>" ;
  458. // document.getElementById('tower_perfrom').innerHTML=inner;
  459. // }
  460. get_predict();
  461. function get_predict() {
  462. var xhr = new XMLHttpRequest();
  463. var url = "channel_predict/dev001/ch01";
  464. obj3 = "";
  465. xhr.open("GET", url);
  466. xhr.onload = function () {
  467. obj3 = JSON.parse(xhr.responseText);
  468. labels = new Array();
  469. for (var i = 0; i < obj3.data.length; i++) {
  470. labels.push(i);
  471. }
  472. console.log(obj3);
  473. var Data = {
  474. labels: labels, //顯示區間名稱
  475. datasets: [{
  476. label: "predict", // tootip 出現的名稱
  477. lineTension: 0, // 曲線的彎度,設0 表示直線
  478. backgroundColor: "#ea464d",
  479. borderColor: "#ea464d",
  480. borderWidth: 5,
  481. data: obj3.data, // 資料
  482. fill: false, // 是否填滿色彩
  483. },]
  484. };
  485. var ctx = document.getElementById("channel_predict").getContext("2d");
  486. drawLineCanvas(ctx, Data);
  487. };
  488. xhr.send();
  489. }
  490. function drawLineCanvas(ctx, data) {
  491. window.myLine = new Chart(ctx, { //先建立一個 chart
  492. type: 'line', // 型態
  493. data: data,
  494. showSymbol: false,
  495. options: {
  496. responsive: true,
  497. legend: { //是否要顯示圖示
  498. display: true,
  499. },
  500. tooltips: { //是否要顯示 tooltip
  501. enabled: true
  502. },
  503. scales: { //是否要顯示 x、y 軸
  504. xAxes: [{
  505. display: true
  506. }],
  507. yAxes: [{
  508. display: true
  509. }]
  510. },
  511. }
  512. });
  513. };